GM-T 0105-2021 軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南_第1頁
GM-T 0105-2021 軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南_第2頁
GM-T 0105-2021 軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南_第3頁
GM-T 0105-2021 軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南_第4頁
GM-T 0105-2021 軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

iCS35.030

CCSL80GM

中華人民共和國密碼行業(yè)標(biāo)準(zhǔn)

GM/T0105—2021

軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南

Designguideforsoftwarebasedrandomnumbergenerators

2021-10-18發(fā)布2022-05-01實(shí)施

罪加/T0105—2021

目次

前言.........................................................................................m

弓I言........................................................................................IV

1范圍.....................................................................................1

2規(guī)范性引用文件...........................................................................1

3術(shù)語和定義...............................................................................1

4縮略語....................................................................................3

5軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)....................................................................3

5.13

5.2瀛.....................................................................................................................................................................4

5.3融.................................................................................................5

5.4煽古計(jì)................................................................................5

5.5健康則試..............................................................................5

5.6DRNG.................................................................................................................................................................6

6安全分級(jí)方法.............................................................................7

6.1觸.................................................................................................7

6.2GB/T37092"題一級(jí)..............................................................8

6.3GB/T37092^...........................................................................................................................8

7實(shí)現(xiàn)......................................................................................8

7.1通用.................................................................................................8

7.2關(guān)鍵總...................................................................8

7.3嫡源獨(dú)占性...........................................................................8

附錄A(資料性)烯源和燧池結(jié)構(gòu)示例......................................................9

附錄B(規(guī)范性)基于SM3算法的RNG設(shè)計(jì).................................................11

附錄C(資料性)燧估計(jì)方法................................................................16

附錄D(規(guī)范性)連續(xù)健康測試方法..........................................................20

附錄E(規(guī)范性)基于SM4算法的RNG設(shè)計(jì)..................................................23

參考文獻(xiàn)....................................................................................29

I

罪加/T0105—2021

_1.

刖百

本文件按照GB/T1.1—2020《標(biāo)準(zhǔn)化工作導(dǎo)則第1部分:標(biāo)準(zhǔn)化文件的結(jié)構(gòu)和起草規(guī)則》的規(guī)定

起草。

請注意本文件的某些內(nèi)容可能涉及專利。本文件的發(fā)布機(jī)構(gòu)不承擔(dān)識(shí)別專利的責(zé)任。

本文件由密碼行業(yè)標(biāo)準(zhǔn)化技術(shù)委員會(huì)提出并歸口。

本文件起草單位:中國科學(xué)院數(shù)據(jù)與通信保護(hù)研究教育中心、中國科學(xué)院軟件研究所、浙江大學(xué)、深

圳技術(shù)大學(xué)、深圳市紐創(chuàng)信安科技開發(fā)有限公司、成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司、中國科學(xué)技術(shù)大

學(xué)網(wǎng)絡(luò)空間安全學(xué)院、成都信息工程大學(xué)、中國金融認(rèn)證中心、北京宏思電子技術(shù)有限公司、北京智芯微

電子科技有限公司、智巡密碼(上海)檢測技術(shù)有限公司。

域熬彈人:砥、呂娜、畔、沈徽猷儂、嘛宇、弓腰五匏舞、郴?缸螂、霞、

辣、弓出、踴皮、堿、艇。

m

嘏M/T0105—2021

引言

隨機(jī)數(shù)的質(zhì)量直接影響到密鑰生成、數(shù)字簽名以及其他密碼算法和協(xié)議的實(shí)際安全性。隨著軟件

密碼模塊使用越來越廣泛,其中的隨機(jī)數(shù)發(fā)生器設(shè)計(jì)備受關(guān)注。

本文件為軟件隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)提供了通用的基本模型,描述了其基本部件的設(shè)計(jì)指導(dǎo)和建議,

以指導(dǎo)軟件隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)者、開發(fā)者和測試者。

IV

GM/T0105—2021

軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)指南

1范圍

本文件給出了軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)的基本模型、基本部件的設(shè)計(jì)指南以及安全分級(jí)方法,并在附

錄中給出了基于SM3算法和基于SM4算法的設(shè)計(jì)實(shí)例。

本文件適用于軟件隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)、開發(fā)、檢測和評估。

2規(guī)范性引用文件

下列文件中的內(nèi)容通過文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用文

件,僅該日期對應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于

本文件o

GB/T15852.1信息技術(shù)安全技術(shù)消息鑒別碼第1部分:采用分組密碼的機(jī)制

GB/T17964信息安全技術(shù)分組密碼算法的工作模式

GB/T32905信息安全技術(shù)SM3密碼雜湊算法

GB/T32907信息安全技術(shù)SM4分組密碼算法

GB/T32915—2016信息安全技術(shù)二元序列隨機(jī)性檢測方法

GB/T37092—2018信息安全技術(shù)密碼模塊安全要求

GM/Z4001密碼術(shù)語

3術(shù)語和定義

和界定的以及下列術(shù)語和定義適用于本

GB/T32915—2016xGB/T37092—2018GM/Z4001

文件。

3.I

脩entropy

對一個(gè)封閉系統(tǒng)的無序性、隨機(jī)性或變化性等狀態(tài)的度量。

注:隨機(jī)變量金的帽是對通過觀測簿所獲得信息量的一個(gè)數(shù)學(xué)度量。

3,2

■entropysource

產(chǎn)生輸出的部件、設(shè)備或事件。當(dāng)該輸出以某種方法捕獲和處理時(shí),產(chǎn)生包含烯的比特串。

3,3

已酷麴試known-answertest

一種測試確定性機(jī)制的方法,即通過該機(jī)制處理給定的輸入,然后將所得到的輸出與已知值進(jìn)行

比較。

3.4

融entropypol

臨時(shí)保存椅的存儲(chǔ)區(qū)域。

1

GM/T0105—2021

最小埼minentropy

嫡的下界,是對確定樣本嫡最壞情況的估值。

注:如果抬最存值,使得凡需=物42-〃,/那么比特串翻:或更準(zhǔn)確地說,是形成此類隨機(jī)比特串的相應(yīng)的隨機(jī)變

量)的最小燧為Ko也就是說,煽至少包含此匕特的燧或隨機(jī)性。

3.6

WMrandomnumbergenerator;.

產(chǎn)生隨機(jī)二元序列的器件或程序。

[顆:GB/T32915-2016/2.2]

3.7

幗sed

用作隨機(jī)數(shù)發(fā)生器的輸入的比特串。

3.8

蠲譴resedfunction

一種特定的內(nèi)部狀態(tài)轉(zhuǎn)移函數(shù),該函數(shù)在提供新種子值的情況下更新內(nèi)部狀態(tài)。

3.9

關(guān)鍵安全參數(shù)criticalsecurityparameter

與安全相關(guān)的秘密信息,這些信息被泄露或被修改后會(huì)危及密碼模塊的安全性。

注:關(guān)鍵字全參數(shù)可以是明文形式的也可以是經(jīng)過加密的。

【顆:GB/T37092-2018,3.3]

3.10

確定性隨機(jī)數(shù)發(fā)生器deterministicrandomnumbergenerator;賺

一種隨機(jī)數(shù)生成器,通過將確定性算法應(yīng)用于適當(dāng)?shù)碾S機(jī)初始值(稱為"種子")產(chǎn)生隨機(jī)樣式的比

特序列O

3.11

瞬entropyrate

平均每比特?cái)?shù)據(jù)包含的燧的大小。

3.12,

cryptographicboundary

明確定義的邊線,該邊線建立了密碼模塊的物理和/或邏輯邊界,并包括了密碼模塊的所有硬件、軟

佛口/期曲箱的。

[顆:GB/T37092-2018/3.4]

3.13

軟件隨機(jī)數(shù)發(fā)生器softwarebasedRNG

軟件密碼模塊(或混合密碼模塊的軟件部件)中的隨機(jī)數(shù)發(fā)生器部件,可以單獨(dú)作為軟件密碼模塊,

也可以作為軟件密碼模塊(或混合密碼模塊的軟件部件)的一部分。

3.14

?cryptographicmodule

實(shí)現(xiàn)了安全功能的硬件、軟件和/或固件的集合,并且被包含在密碼邊界內(nèi)。

注:密碼模塊根據(jù)其組成,可分為硬件密碼模塊、固件密碼模塊、軟件密碼模塊以及混合密碼模塊。

[顆:GB/T37092-2018/3.5]

3.15

公開安全參數(shù)publicsecurityparameter

與安全性相關(guān)的公開信息,一旦被修改,會(huì)威脅到密碼模塊安全。

2

GM/T0105—2021

注:例如,公鑰、公鑰證書、自簽名證書、信任錨、與計(jì)數(shù)器和內(nèi)部保持日期和時(shí)間相關(guān)聯(lián)的一次性口令。公開安

全參數(shù)如果不能被修改或者修改后能夠被密碼模塊發(fā)現(xiàn),此時(shí)可以認(rèn)為該公開安全參數(shù)是受保護(hù)的。

[顆:GB/T37092-2018,3.14]

3.16

敏感安全參數(shù)sensitivesecurityparameter

包括關(guān)鍵安全參數(shù)和公開安全參數(shù)。

[顆:GB/T37092-2018,3.17]

3.17

1?鵬直resedcounter

一種內(nèi)部狀態(tài)計(jì)數(shù)器變量,表明自初始化或重播種期間獲得新的嫡輸入以來,請求隨機(jī)數(shù)生成的

次數(shù)。

3.18

上次重播種時(shí)間值timevalueoflastresed

軟件隨機(jī)數(shù)發(fā)生器上一次重播種的時(shí)間值,單位為秒。

3.19

■wtm器閾直resedcounterthreshold

在軟件隨機(jī)數(shù)發(fā)生器重播種前,能夠產(chǎn)生隨機(jī)數(shù)的最大請求次數(shù)。

3.20

WM醯resedtimethreshold

距離軟件隨機(jī)數(shù)發(fā)生器上一次重播種的最大時(shí)間間隔,單位為秒。

4縮略語

下列縮略語適用于本文件。

CPU:中蝴理器(centralprocessingunit)

RNG:隨機(jī)數(shù)發(fā)生器(Random順向Generator

SRNG:軟件隨機(jī)數(shù)發(fā)生器(soft^aeba$ed啊

DRNG:確定性隨機(jī)數(shù)發(fā)生器(DeterministicRandomNumberGenerator)

iv:初始向量(initialvector

5軟件隨機(jī)數(shù)發(fā)生器設(shè)計(jì)

5.1

本文件給出的軟件隨機(jī)數(shù)發(fā)生器基本模型見圖1,主要包含系統(tǒng)嫡源、牖估計(jì)、嫡池、DRNG和健康

測試等部分。其中,DRNG主要由內(nèi)部狀態(tài)、初始化函數(shù)、種函數(shù)、輸出函數(shù)、自測試等基本部件

組成。

3

嘏M/T0105—2021

費(fèi)

M

初始化的敢垂播神的數(shù)

物出函數(shù)

策諛指示機(jī)敏

圖1軟件隨機(jī)數(shù)發(fā)生器的基本模型

軟件隨機(jī)數(shù)發(fā)生器收集系統(tǒng)精源的隨機(jī)性作為其隨機(jī)性的來源(隨機(jī)性的來源也可以來自系統(tǒng)或

硬件隨機(jī)數(shù)發(fā)生器)。系統(tǒng)精源的數(shù)據(jù)進(jìn)入燧池進(jìn)行精累積,等待收集足夠的烯源數(shù)據(jù),在對精池中的

數(shù)據(jù)經(jīng)擴(kuò)展函數(shù)壓縮后,與系統(tǒng)或硬件隨機(jī)數(shù)發(fā)生器的輸出數(shù)據(jù)(可選)經(jīng)數(shù)據(jù)拼接后一同作為DRNG

的輸入產(chǎn)生種子。DRNG經(jīng)過初始化,開始內(nèi)部狀態(tài)的迭代以及必要的重播種操作,以產(chǎn)生所需數(shù)量

的隨機(jī)數(shù)。除精輸入外,DRNG輸入還包括nonee(必選)、個(gè)性化字符串(可選)和額夕解入(可選)。

為保證軟件隨機(jī)數(shù)發(fā)生器的安全性,需要對嫡源的燧進(jìn)行嫡估計(jì),以及對嫡源的狀態(tài)進(jìn)行必要的健

康測試。對于一個(gè)關(guān)鍵安全參數(shù),其收集的最小嫡值應(yīng)符合GB/T37092—2018的要求,本文件以256

比特的最小嫡值為基準(zhǔn)來給出軟件隨機(jī)數(shù)發(fā)生器的參數(shù)信息。

5.2播源

燧源是軟件隨機(jī)數(shù)發(fā)生器隨機(jī)性的來源。由于軟件密碼模塊運(yùn)行在通用操作系統(tǒng)上,因此其隨機(jī)

性的來源也一般依賴操作系統(tǒng)提供,包括系統(tǒng)時(shí)間、特定的系統(tǒng)中斷事件、磁盤狀態(tài)、人機(jī)交互輸入事件

(如按鍵、鼠標(biāo)移動(dòng)等動(dòng)作)等。為了保障軟件隨機(jī)數(shù)發(fā)生器的可靠性,建議隨機(jī)性來源不少于3種。

A.2以操作系統(tǒng)中的中斷事件為例,給出如何從中斷事件中提取隨機(jī)性。

此外,在特定的軟硬件平臺(tái)上,燧源也可以是平臺(tái)已有的隨機(jī)數(shù)發(fā)生器,包括硬件隨機(jī)數(shù)發(fā)生器和

系統(tǒng)隨機(jī)數(shù)發(fā)生器(見圖1),如基于CPU抖動(dòng)的隨機(jī)數(shù)發(fā)生器、CPU內(nèi)置的硬件隨機(jī)數(shù)發(fā)生器、外部

硬件隨機(jī)數(shù)發(fā)生器部件等。軟件隨機(jī)數(shù)發(fā)生器也可以用這些特定軟硬件平臺(tái)上的燧源作為嫡輸入來增

大隨機(jī)性,但仍然需要保證在沒有這些嫡源時(shí),輸入的帽仍然是充足的。不同的是,為了考慮效率和安

全性,圖1中的系統(tǒng)烯源的輸出數(shù)據(jù)需要在牖池中累積并經(jīng)過擴(kuò)展函數(shù)輸出后再作為DRNG的燧

輸入O

4

假M(fèi)/T0105—2021

5.3勵(lì)

燧池作為軟件隨機(jī)數(shù)發(fā)生器中保證睛采集的重要部件,在空閑時(shí),RNG可以把崎源輸出收集起來;

當(dāng)需要時(shí),可以及時(shí)從燧池中讀取所需的數(shù)據(jù),從而減少產(chǎn)生隨機(jī)數(shù)的延遲。此外,為增加精源數(shù)據(jù)混

淆、節(jié)省燧池空間,精池內(nèi)可采用迭代壓縮函數(shù)來增加燧率,如通過循環(huán)移位寄存器實(shí)現(xiàn)。如果熔池太

小會(huì)導(dǎo)致累積的精不足,如果燧池太大則浪費(fèi)內(nèi)存空間。出于以上考慮,嫡池大小應(yīng)大于或等于512字

節(jié),但不宜超過4096字節(jié)。A.3給出了一種基于循環(huán)移位寄存器的牖池結(jié)構(gòu)示例。

在收到DRNG初始化或重播種請求時(shí),在嫡池中的嫡值大于256比特后(根據(jù)5.4的燧估計(jì)結(jié)

果),所有燃池中的數(shù)據(jù)進(jìn)行壓縮后與圖1中的系統(tǒng)RNG(可選)或硬件RNG(可選)的輸出數(shù)據(jù)經(jīng)數(shù)據(jù)

拼接后一同作為DRNG的輸入。同時(shí),擴(kuò)展函數(shù)壓縮后的結(jié)果也反饋回燧池中,以保證后向安全性。

為保證燧池中的嫡率夠阜大限度的保持,可使用密鑰擴(kuò)展函數(shù)作為壓縮算法,僅使用密碼雜;塞去無法

保證j詢結(jié)果是滿熠(fiiILentropy)的。一種基于SM3密碼雜湊算法的密鑰擴(kuò)展函數(shù)(sM3_df)按附錄

B,輸出長度可設(shè)置為440比特。有關(guān)SM3密碼雜湊算法的計(jì)算方法按GB/T32905。

5.4斕古計(jì)

燧估計(jì)是保證隨機(jī)數(shù)發(fā)生器安全性的關(guān)鍵。系統(tǒng)精源一般屬于非物理嫡源,因此難以建立一個(gè)可

靠的數(shù)學(xué)模型對精源的隨機(jī)行為進(jìn)行刻畫,也難以進(jìn)一步通過理論建模的方法對燧源的楠進(jìn)行估計(jì)。

本文件給出了一種離線統(tǒng)計(jì)烯估計(jì)的方法,對系統(tǒng)燧源的最小燧進(jìn)行估計(jì)(見附錄C),其中包含了一種

較為通用的基于馬爾可夫預(yù)測器的燧估計(jì)器,更多的精估計(jì)器可以參考文獻(xiàn)此外,對使用外部

隨機(jī)數(shù)發(fā)生器作為燧輸入的情況(如系統(tǒng)RNG或硬件RNG),統(tǒng)計(jì)嫡估計(jì)也適用于對這些隨機(jī)數(shù)發(fā)生

器輸出的燧估計(jì)。

5.5式

健康測試用于監(jiān)測烯源的狀態(tài),以保證隨機(jī)數(shù)發(fā)生器運(yùn)行時(shí)的安全。健康測試包括上電健康測試、

連續(xù)健康測試和按需健康測試三種。

3)上電健康測試:

?在軟件隨機(jī)數(shù)發(fā)生器或其所在的密碼模塊上電或重啟,以及首次使用精源之前執(zhí)行;

.上電健康測試可以確保精源在正常運(yùn)行條件下使用前可以按預(yù)期工作,并且自上次上電

健康測試以來沒有發(fā)生任何故障;

?上電健康測試需要對至少1024個(gè)連續(xù)樣本執(zhí)行連續(xù)健康測試;

.在上電健康測試期間,燧源的輸出不能用于其他操作;

?在測試完成后且沒有發(fā)現(xiàn)任何故障或錯(cuò)誤,那么可以考慮使用測試期間的嫡源的輸出。

b)連續(xù)健康測試:

?連續(xù)健康測試關(guān)注嫡源的行為,在牖源工作時(shí),持續(xù)地檢測從嫡源得到的所有數(shù)字化的樣

本,目的是當(dāng)燧源輸出時(shí)能夠及時(shí)發(fā)現(xiàn)燧源潛在的多種故障,執(zhí)行該測試時(shí)無需禁止嫡源

的輸出;

?在精源正常運(yùn)行時(shí),該測試的誤警率應(yīng)非常低,在許多系統(tǒng)中,一個(gè)合理的誤警率策略可

以保證即便在很長的使用時(shí)間內(nèi)也幾乎不會(huì)發(fā)生故障報(bào)警;

.連續(xù)健康測試會(huì)受到資源限制,這個(gè)限制將影響檢測到燧源故障的能力,因此,連續(xù)健康

測試通常被設(shè)計(jì)成檢測嚴(yán)重故障。

C)按需健康測試:

?可以在任何時(shí)候被執(zhí)行;

.在按需健康測試的過程中,從嫡源收集的數(shù)據(jù)在測試完成前不應(yīng)使用,可以隨時(shí)丟棄,也

5

嘏M/轍0105—2021

可以在測試完成后且未發(fā)生任何錯(cuò)誤的情況下使用。

上述三種健康測試方法中,上電健康測試和連續(xù)健康測試是應(yīng)做的。附錄D給出了連續(xù)健康測試

方法,包含2個(gè)測試算法:重復(fù)計(jì)數(shù)測試和自適應(yīng)比例測試。除了附錄D中的兩種算法外,設(shè)計(jì)者也可

以遵循如下兩個(gè)要求,根據(jù)具體設(shè)計(jì)提出其他的連續(xù)健康測試方法。

3)如果一個(gè)樣本在嫡源采樣序列中連續(xù)出現(xiàn)超過I次(奉為通過附錄c估計(jì)的樣本最小

燧),那么連續(xù)健康測試方法應(yīng)至少以99%的概率檢測到該值;

b)令2.拿,如果燧源的行為發(fā)生了變化,使得觀察到特定樣本值的概率至少增繆戶?=

2Tl2,那么當(dāng)檢查來自該燧源的5萬個(gè)連續(xù)樣本時(shí),連續(xù)健康測試方法應(yīng)至少以50%的概率

檢測到這種變化。

5.6DRN嘏

5.6.1觸

本文件給出的DRNG架構(gòu)見圖1,對外接口包括初始化函數(shù)、重播種函數(shù)、輸出函數(shù)。DRNG還在

內(nèi)部維持了內(nèi)部狀態(tài),同時(shí)利用自測試模塊對自身進(jìn)行測試,確保DRNG在運(yùn)行過程中能夠及時(shí)檢測

出故障。本文件給出了兩種DRNG的設(shè)計(jì)實(shí)例,包括基于SM3算法(見GB/T32905)的DRNG和基

于SM4算法(見GB/T32907)的DRNG,分別見附錄B和附錄E。根據(jù)使用的密碼算法不同,其內(nèi)部狀

態(tài)組成、函數(shù)計(jì)算過程以及參數(shù)要求等不同,下面給出了DRNG中的內(nèi)部狀態(tài)以及相關(guān)函數(shù)的總體設(shè)

計(jì)說明,關(guān)于具體參數(shù)要求、賦值要求等按附錄B和附錄E。

5.6.2內(nèi)部燃

DRNG的內(nèi)部狀態(tài)可視為軟件隨機(jī)數(shù)發(fā)生器的內(nèi)部(臨時(shí))存儲(chǔ),由DRNG所使用或執(zhí)行的所有參

數(shù)、變量以及其他存儲(chǔ)的值組成。DRNG的內(nèi)部狀態(tài)包括:

8)敏感狀態(tài)信息:DRNG的燧輸入數(shù)據(jù)直接決定了DRNG的敏感狀態(tài)信息的初始值,DRNG根

據(jù)敏感狀態(tài)信息借助偽隨機(jī)數(shù)生成算法直接產(chǎn)生隨機(jī)數(shù),并在每次生成隨機(jī)數(shù)時(shí)按照一定規(guī)

則不斷迭代更新敏感狀態(tài)信息,由于敏感內(nèi)部狀態(tài)直接決定了當(dāng)前以及下一次重播種之前的

所有隨機(jī)數(shù),它應(yīng)看作GB/T37092—2018中的關(guān)鍵安全參數(shù)受到保護(hù),不能被非授權(quán)地訪

風(fēng)跳;?x修^蹴;

b)管理狀態(tài)信息:即與DRNG孽行相關(guān)的管理狀態(tài)信息,包括重播種計(jì)數(shù)器值、上次重播種時(shí)間

值,管理狀態(tài)信息應(yīng)看作GB/T37092—2018中的公開安全參數(shù)受到保護(hù),不能被非授權(quán)地修

改和替換;

C)常量值:重播種計(jì)數(shù)器閾值和重播種時(shí)間閾值,該常量值與安全等級(jí)有關(guān),不同安全等級(jí)的

SRNG,同S種計(jì)數(shù)器閾值和重播種時(shí)間閾值有所不同(見6.2和6.3)o

5.6.3豳援?dāng)?shù)

宋砥nonce木的囹nonce硼圄殿

據(jù)之外的額外安全保障,在軟件RNG的嫡源存在故障時(shí)提供額外的安全防護(hù),降低DRNG在多次實(shí)例

化過程中可能存在的風(fēng)險(xiǎn)。例如,一個(gè)存在故障的系統(tǒng)每次開機(jī)后在崎池中總是累積相同的燧源數(shù)據(jù),

止觸斛解nonce值,另陷每陶錠?圈朦,nonceBMWB-

緩解這一問題。個(gè)性化字符串的使用,可以降低不同平臺(tái)上同一個(gè)軟件RNG機(jī)制產(chǎn)生隨機(jī)數(shù)過程中

的安全風(fēng)險(xiǎn)。例如,存在故障的多個(gè)系統(tǒng)可能在精池中累積了相同的崎源數(shù)據(jù),如果沒有使用個(gè)性化字

符串,它們將會(huì)產(chǎn)生相同的隨機(jī)數(shù)。

DRNG自身的安全性應(yīng)不依賴于noncem性化字符串的保密性。對nonce和個(gè)性化字符串的設(shè)

6

嘏M/轍0105—2021

計(jì)建議如下。

9)nonee(必則:

?nonce應(yīng)至少具有128匕綢嫡,或者獺重復(fù)瞬不大于2心;

?nonce可以是隨機(jī)值、時(shí)間戳、單調(diào)遞增的計(jì)數(shù)器值^者它們的組合。

b)個(gè)性化字符串(可選輸入):

?如果使用個(gè)性化字符串,則個(gè)性化字符串與嫡源數(shù)據(jù)以及nonce一起生成DRNG的初始

種子;

?對于相同DRNG機(jī)制在不同平臺(tái)的各個(gè)實(shí)例,個(gè)性化字符串需要具有唯一性;

,個(gè)性化字符串可包含的內(nèi)容包括但不限于:設(shè)備序列號(hào)、公鑰信息、用戶標(biāo)識(shí)、時(shí)間戳、網(wǎng)

絡(luò)地址、應(yīng)用程序標(biāo)識(shí)符、協(xié)議版本標(biāo)識(shí)符。

5.6.4as腌數(shù)

重播種函數(shù)利用燧源數(shù)據(jù)、額外輸入(可選)對內(nèi)部狀態(tài)進(jìn)行更新。

額外輸入可以是秘密的,也可以是公開的,但DRNG自身的安全性應(yīng)不依賴于額外輸入的保密性。

額外輸入可以為DRNG提供更多精,如果額外輸入是非公開的并且有充足的燧,可以為DRNG提供更

多的安全保證。

除了可以在調(diào)用重播種函數(shù)時(shí)注入額外輸入外,也可以在每次調(diào)用輸出函數(shù)時(shí)注入額外輸入。

5.6.5輸出通

輸出函數(shù)利用DRNG的內(nèi)部狀態(tài)和額外輸入(可選)通過特定的密碼計(jì)算產(chǎn)生隨機(jī)數(shù)據(jù),同時(shí)更新

DRNG的內(nèi)部狀態(tài)??蛇x的額外輸入的要求與重播種函數(shù)中的額外輸入要求一致。

本文件建議輸出函數(shù)每次調(diào)用只能輸出一組隨機(jī)數(shù)據(jù),其中基于SM3算法的DRNG輸出一組隨

機(jī)數(shù)據(jù)的長度為256比特,基于SM4算法的DRNG輸出一組隨機(jī)數(shù)據(jù)的長度為128比特。

5.6.6DRN嘏自踴

類似于GB/T37092—2018中密碼模塊的自測試,DRNG也需要執(zhí)行自測試以確保設(shè)計(jì)的DRNG

能夠持續(xù)按照所設(shè)計(jì)和實(shí)現(xiàn)的方式正確運(yùn)行。

本文件給出的DRNG采用已知答案測試,即DRNG實(shí)例利用已知的輸入調(diào)用初始化函數(shù)、重播種

函數(shù)和輸出函數(shù),并確認(rèn)輸出與預(yù)期答案是否一致,如果一致,則通過自測試;否則DRNG需要進(jìn)入錯(cuò)

誤狀態(tài),并返回錯(cuò)誤指示信號(hào)。

對DRNG的自測試可以作為其所在軟件密碼模塊自測試的一部分,也可以單獨(dú)執(zhí)行。但無論以何

種形式進(jìn)行,對DRNG的自測試需要滿足與所在軟件密碼模塊的安全等級(jí)相對應(yīng)的自測試要求(按

GB/T37092—2018中7.10)。矽I行自測試時(shí),應(yīng)禁止從DRNG邊界內(nèi)輸出數(shù)據(jù);在DRNG正常運(yùn)行

期間,已知答案測試的結(jié)果不能作為隨機(jī)數(shù)據(jù)輸出。

6安全分級(jí)方法

6.1觸

由于不同級(jí)別的密碼模塊的安全防護(hù)要求不相同,本文件針對DRNG重播種機(jī)制,從種子的使用

時(shí)長和使用次數(shù)兩方面考慮,對滿足GB/T37092—2018安全等級(jí)一級(jí)和安全等級(jí)二級(jí)密碼模塊中的

軟件隨機(jī)數(shù)發(fā)生器給出分級(jí)方法。

7

嘏M/轍0105—2021

6.2嘏B/撤37092安全等級(jí)一級(jí)

在GB/T37092—2018安全等級(jí)一級(jí)的密碼模塊中,對于DRNG每一組新輸入的熔(通過初始化

或種子更新獲得),當(dāng)以下任意條件滿足時(shí),需要對DRNG執(zhí)行重播種操作:

3)距離上一次DRNG重播種時(shí)間超過600S(即,重播種時(shí)間閾值為600S);

b)輸出函數(shù)已被調(diào)用22。次(即,重播種計(jì)數(shù)器閾值為22。)。

6.34期/擻37092安鈣RZ級(jí)

在GB/T37092—2018安全等級(jí)二級(jí)的密碼模塊中,對于DRNG每一組新輸入的燧(通過初始化

或種子更新獲得),當(dāng)以下任意條件滿足時(shí),需要對DRNG執(zhí)行重播種操作:

3)距離上一次DRNG重播種時(shí)間超過了60s(即,重播種時(shí)間閾值為60S);

b)輸出函數(shù)已被調(diào)用2次(即,重播種計(jì)數(shù)器閾值為2i°)。

7實(shí)現(xiàn)

7.1M

軟件隨機(jī)數(shù)發(fā)生器既可以是單獨(dú)的軟件密碼模塊,也可以作為軟件密碼模塊(或混合密碼模塊的軟

件部件)的一部分,在實(shí)現(xiàn)時(shí)應(yīng)符合GB/T37092—2018的所有適用指標(biāo)。

7.2瘦^^^54

軟件隨機(jī)數(shù)發(fā)生器相關(guān)部件的關(guān)鍵安全參數(shù)見表1,包括嫡源、燧池和DRNG所涉及的關(guān)鍵安全

參數(shù)。

表1軟件隨機(jī)數(shù)發(fā)生器的關(guān)鍵安全參數(shù)

軟件隨機(jī)數(shù)發(fā)生器部件關(guān)鍵安全參數(shù)

施源燧源產(chǎn)生的燧

嫡池循環(huán)移位寄存器的狀態(tài)

內(nèi)部狀態(tài)中的敏感狀態(tài)信息

DRNG燧輸入

輸出的隨機(jī)數(shù)

7.3嫡凰蟲占

精源同一時(shí)刻只能被一個(gè)軟件隨機(jī)數(shù)發(fā)生器獨(dú)占訪問,以保證軟件隨機(jī)數(shù)發(fā)生器獨(dú)占過程中所讀

取的嫡源數(shù)據(jù)無法被其他實(shí)體(例如,同一運(yùn)行環(huán)境下的其他進(jìn)程)獲取,可以通過如下機(jī)制來保證燧源

獨(dú)占性:

一軟件隨機(jī)數(shù)發(fā)生器本身的機(jī)制,例如,煙源本身是軟件隨機(jī)數(shù)發(fā)生器的一部分,軟件隨機(jī)數(shù)發(fā)

生器自身的機(jī)制保證嫡源訪問的獨(dú)占性;

一睛源本身的機(jī)制,例如,燧源同一時(shí)刻只能為一個(gè)實(shí)例提供嫡,當(dāng)?shù)赵幢徽加脮r(shí),將拒絕其他實(shí)

體的訪問;

一運(yùn)行環(huán)境的安全機(jī)制,例如,操作系統(tǒng)通過互斥鎖的機(jī)制,保證只有一個(gè)實(shí)體可以訪問該崎源。

8

嘏M/轍0105—2021

附錄A

(資料性)

烯源和嫡池結(jié)構(gòu)示例

A.1觸

本附錄給出了一種基于操作系統(tǒng)中斷事件的楠源示例,以及一種基于循環(huán)移位寄存器實(shí)現(xiàn)燧池更

新的方案,供軟件隨機(jī)數(shù)發(fā)生器的設(shè)計(jì)者作為參考。

A.2燧麻例

這里選擇中斷事件發(fā)生的時(shí)間作為燧源,可以采用如下兩種模式對中斷事件發(fā)生時(shí)間的隨機(jī)性進(jìn)

行數(shù)字化。

—獲取中斷事件發(fā)生時(shí)的系統(tǒng)時(shí)間作為嫡源數(shù)據(jù):任何一個(gè)中斷事件的發(fā)生都會(huì)促使操作系統(tǒng)

生成兩個(gè)字符串,其中第一個(gè)字符串表示事件發(fā)生的時(shí)間(自從系統(tǒng)啟動(dòng)以來所經(jīng)過的毫秒

數(shù)),第二個(gè)字符串表示所發(fā)生事件的類型,可以將第一個(gè)字符串或同時(shí)將這兩個(gè)字符串輸入

燧池作為隨機(jī)數(shù)據(jù),在計(jì)算中斷事件燧值時(shí),只考慮中斷事件的發(fā)生時(shí)間,不關(guān)注事件的類型。

—通過CPU獲取中斷事件發(fā)生時(shí)的高精度時(shí)間值作為嫡源數(shù)據(jù):現(xiàn)代CPU-般會(huì)有高精度計(jì)

時(shí)部件,該部件以64位無符號(hào)整型數(shù)的格式,記錄了自CPU上電以來所經(jīng)過的時(shí)鐘周期數(shù)。

由于目前的CPU主頻都非常高,因此這個(gè)部件可以達(dá)到納秒級(jí)的計(jì)時(shí)精度,根據(jù)燧提取的方

式不同,有時(shí)可能僅處理高精度時(shí)間值的最低有效位而丟棄最高有效位,因?yàn)樽畹陀行皇强?/p>

速變化的位。

A.3燔也示例

一種基于循環(huán)移位寄存器實(shí)現(xiàn)楠池更新的方案如下:

隨機(jī)數(shù)發(fā)生器的精池更新基于一個(gè)本原多項(xiàng)式,本原多項(xiàng)式的階數(shù)為埔池的大?。ㄒ宰譃閱挝唬?。

假設(shè)燧池大小為128個(gè)字(512字節(jié)),其本原多項(xiàng)式為128階,即^+肥。3+疲6+皴1+皴5+數(shù)+1

嫡池更新的過程可以看作使用循環(huán)移位寄存器來加密輸△的嫡源數(shù)據(jù),嫡池結(jié)構(gòu)見圖A.1,其中,pOOl

代表燧池,J為燧池中當(dāng)前位置的索引(本示例力)為0-127)o假設(shè)g為被添加到燧池中的新的崎數(shù)據(jù)

(大小為1個(gè)字),則汨燧池的更新操作如下.

:emp.g+poolij]

fem中l(wèi)oo(+1)nod128]

temp.temp中POO+25)rnoc128]

:em)=tem)中POO+5i)rnoc128]

:em洪m)中POO+76)mod128]

tem)=temp中POOi+io3)mod128]

>>3)中'retemp&T]

期table為流耶)8伯繳組,示獨(dú)嚇:

tabe(o]=oXo

3)6[1]=OX320c8

‘a(chǎn)36[2]=OX76CC4190

labe(3]=oX4db26i58

9

嘏M/轍0105—2021

table[4]=oxecb8832o

able昨oxcLd6a3曾

:abe6)=oX9b64c2bo

tabep]=0X80086278

Q0

圖A.1一種基于循環(huán)移位寄存器的熔池結(jié)構(gòu)示例

10

罪加/T0105—2021

附錄B

(規(guī)范性)

基于釐M3算法的RN嘏設(shè)計(jì)

B.1參數(shù)娥說明

本附錄給出了基于SM3算法的DRNG設(shè)計(jì)實(shí)例的偽代碼,該發(fā)生器的實(shí)例為SM3_RNG,包括內(nèi)

部狀態(tài)、初始化函數(shù)、重播種函數(shù)和輸出函數(shù)等。SM3_RNG使用的符號(hào)及參數(shù)含義如下:

||'魏酬妾

V:比特串V,辨機(jī)數(shù)發(fā)生器的內(nèi)部狀態(tài)變量,在每次調(diào)用DRNG時(shí)更新值

c:那]seedlen匕褊的常量c,為隨機(jī)數(shù)發(fā)生器的內(nèi)部狀燃量,在初始俗□■閽鈍寸更新值

seedlen:種和雌i

reseecLcounter:重翻阻斷直,昌而榔?牖柳§位,棚哥脂儂闔翻頻我事斤

的燧輸入以來I請求隨年數(shù)生成的次數(shù)

reseedjntervaLin.counter:s?嘏翻!,在軟件隨機(jī)數(shù)發(fā)生器重播種前,能夠產(chǎn)生隨機(jī)數(shù)的

最大清求次數(shù)

lastreseed_timIC.:BS種時(shí)間值,指DRNG上一次重播種時(shí)間值,單位為秒

reseecLintervaul_rin.time:■?時(shí)間圜I,距離上一次DRNG重播種的最大時(shí)間間隔,單位為秒

entropvjnput:粉播,

personaiizatipn.stnng:做娜

ac.ditio.nalinput:可避嬲陶人的端串

adpitonaljnputJength:可選的額外輸入的比特串長度

min.entropy:則

min.entrdpvmput1.最小的輜入長度

max_entropyj叩ut1,孰蹦跳搬

nonce:

outien:輸出函數(shù)輸出的比特長度

seeQ:將&.?

seedijiatenal:府洲

workingstate:當(dāng)前腳態(tài)

newwking.state:醐腳椅

status:

temp:f雌t

inputstrinq:SM3派生函數(shù)(SM3_dt)的輸入字符串

numbeLof_pLts_to.return:S咐/生函數(shù)(SM3_df)返回的比特長度

requestecLbits:S性派生函數(shù)GM3_dt)返回的㈱串,

requested叱i.mbetofbits:輸出函數(shù)時(shí)_RNG_Generate)返回的隨機(jī)比特串的長度

refurnedbits:每調(diào)用i次輸出函數(shù)(sM3_RNG_Generate),返回的隨機(jī)比特串

表B.1、表B.2分別列出了SM3_RNG使用的參數(shù)要求和函數(shù)說明。

11

嘏M/T0105—2021

表B.1理M3_RN嘏使用的參數(shù)要求

參數(shù)名稱參數(shù)類型取值要求

V比特串seedlen

C比特串wiseeden

nutlpn整型256比特

中時(shí)即整型440比特

安全攀5-級(jí):600S

ervaLin.time整型

安全等級(jí)3:60S

一級(jí)不

整型:2

ervaLin.counter4:210

lastreseedtime整型取值為以秒為單位的時(shí)間值

加勃,每躺一;頻膽數(shù)自勃

整型1n,reseedJri-

reseed.counterterval.in.counter

逅少具有匕娥其長翻圍為國打,單位

entropyjnput比特串entropyjnput2567z2

為比特

min.entropy整型256比特

min.entroDv.inDutlenath整型256比特

max.entropv.inputlenqth整型23s比特

nonce具有128匕團(tuán),nonce可

nonce——以是隨機(jī)值、時(shí)間戳、單調(diào)遞增的計(jì)數(shù)器值或者它們的組合,長度范圍

為[128,2“)

35

additionaljnput比特串長度不大于2比特

additionaljnoutlenoth整型不大于2"比特

Dersonalization.strinq比特串長度不大于235比特

reauested.number.of.bits整型不大于256比特

numberofbitstoreturn整型叫seeden

表B.2釐M3_RN嘏使用的函數(shù)說明

函數(shù)名稱描述

leftmostN.a)比特串v從左邊起的3??比特

etentropy(min.entropy,從烯源獲取一串比特的函數(shù),要求返回的比特串

c(entropyjnput,軌有min.entropy麒,繼

min.entropy,input.lengtn,

加mitentropy.inputlengtn,,一

max.entropyjnputlengthi

max.entropyjnputlengtn㈱"

SM3(a)使用SM3對數(shù)據(jù)進(jìn)行雜湊運(yùn)算

SM3派年函數(shù)"對輸入字符串進(jìn)行雜湊運(yùn)算,返回長度

sMidfiinputstring,number.ofbits.to.return)為numbe〔ofbits_toietum的㈱串

12

罪加/T0105—2021

表B.2建M3_RN嘏使用的函數(shù)說明(續(xù))

函數(shù)名稱描述

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論