TWI546731B - 輸入-相依隨機數產生裝置及其方法 - Google Patents
輸入-相依隨機數產生裝置及其方法 Download PDFInfo
- Publication number
- TWI546731B TWI546731B TW104142103A TW104142103A TWI546731B TW I546731 B TWI546731 B TW I546731B TW 104142103 A TW104142103 A TW 104142103A TW 104142103 A TW104142103 A TW 104142103A TW I546731 B TWI546731 B TW I546731B
- Authority
- TW
- Taiwan
- Prior art keywords
- random number
- input
- random numbers
- output
- bytes
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Description
本案一般而言係關於隨機數產生,特別是關於利用記憶體陣列產生隨機數的方法和系統。
隨機數的產生係使用於各式各樣的應用。各種隨機數產生技術係為已知的現有技術。例如,美國專利申請案公開號2005/0097153,在此引述該內容並作為參考,該案描述一種虛擬隨機數產生器,其包括具有非線性回饋特徵的第一基本移位暫存器、第二基本移位暫存器和組合器,組合器用於組合在第一基本移位暫存器和第二基本移位暫存器的輸出訊號以獲得代表一虛擬隨機數的組合訊號。
美國專利號 6763363,其公告內容在此引述並作為參考,其描述了一種虛擬隨機數產生器包括線性回饋移位暫存器(LFSR),線性回饋移位暫存器具有分割成M字位長度的w字位的N位元二進制數據儲存在N個儲存元件中的一狀態。至少兩個源頭提供二進制數據,具有為M的倍數之若干位元的各源頭。線性回饋移位暫存器還包括連接源頭的線性回饋函數和提供從該源頭提供的二進制數據的線性函數的臨時值,例如按位互斥或運算。線性回饋移位暫存器的狀態係由轉移在儲存元件中M位元的倍數的二進制數據來推進,並且提供臨時值填充儲存元件否則在轉移時會放空。
其他隨機數產生架構如日本專利JP2567681B2所描述,或在德國專利申請案DE19921852A1,其公開內容在此引入並作為參考。
本案一實施例提供一種輸入-相依隨機數產生裝置包含:一輸入電路;複數個第一記憶體陣列;一分配電路;複數個第二記憶體陣列;以及一輸出電路。輸入電路經配置用以分割一輸入值為複數個第一位元組。複數個第一記憶體陣列經配置各自以複數個第一隨機數填充,經配置各自從該輸入電路接收該複數個第一位元組的一相應第一位元組,從該相應第一位元組指示的一第一位址擷取和輸出該複數個第一隨機數之其中一第一隨機數。分配電路經配置用以將該複數個第一記憶體陣列輸出的各該複數個第一隨機數分割為複數個第二位元組,並且分配該複數個第二位元組。複數個第二記憶體陣列經配置各自以複數個第二隨機數填充,透過該分配電路從各該複數個第一記憶體陣列接收該複數個第二位元組的一相應的第二位元組,用以串接所接收的該複數個第二位元組的以便形成一位址指示碼,並用以從該位址指示碼所指示的一第二位址擷取和輸出該複數個第二隨機數之其中一第二隨機數。輸出電路經配置用以至少將該複數個第二記憶體陣列輸出的相應該複數個第二隨機數組合成為基於該輸入值的一輸出隨機數。
在某些實施例中,該輸出電路經配置透過對該複數個第二隨機數施行一可逆變換來組合該複數個第二隨機數。該可逆變換包括一或複數個按位互斥或(XOR)運算和有限場乘法(finite-field multiplication)。在一實施例中,各該複數個第一記憶體陣列中,該複數個第一隨機數沒有重複且以隨機順序涵蓋整個數值範圍。在一實施例中,輸入-相依隨機數產生裝置進一步包括一加密電路,經配置用以加密或透過對一數據字位施行一可逆變換來解密該數據字位。在一實施例中,該輸入值係指示儲存該數據字位的一記憶位址。
根據本案的一實施例提供一種輸入-相依隨機數產生方法,其包含:分割一輸入值成為複數個第一位元組;在複數個第一記憶體陣列分別填充複數個第一隨機數,接收該輸入值的該複數個第一位元組的一相應第一位元組,並擷取和輸出所接收的該相應第一位元組指示的一第一位址中的該複數個第一隨機數之其中一第一隨機數;分割由各該複數個第一記憶體陣列輸出的各該複數個第一隨機數為複數個第二位元組;在複數個第二記憶體陣列分別填充複數個第二隨機數,接收來自各該複數個第一記憶體陣列的該複數個第二位元組的一相應第二位元組,串聯所接收的該複數個第二位元組以便形成一位址指示碼,並擷取和輸出該位址指示碼指示的一第二位址中的該複數個第二隨機數之其中一第二隨機數;以及組合由該複數個第二記憶體陣列輸出的相應該複數個第二隨機數成為基於該輸入值的一輸出隨機數。
根據本案的一實施例提供一種輸入-相依隨機數產生裝置,其包含:一輸入電路,配置用以分割一輸入值為複數個第一位元組;複數個第一確定性隨機數產生器(RNG)模組,經配置各自從該輸入電路接收該複數個第一位元組的一相應第一位元組,用以產生且輸出基於所接收的該相應第一位元組的一第一確定性隨機數;一分配電路,配置用以將該複數個第一確定性隨機數產生器模組輸出的各該些第一確定性隨機數分割為複數個第二位元組,並且分配該複數個第二位元組;複數個第二確定性隨機數產生器模組,經配置透過該分配電路從各該複數個第一確定性隨機數產生器模組接收該複數個第二位元組的一相應第二位元組,用以串接所接收的該複數個第二位元組以便形成一位址指示碼,並用以產生基於該位址指示碼的一第二確定性隨機數;以及一輸出電路,配置用以至少將該複數個第二確定性隨機數產生器模組輸出的相應該些第二確定性隨機數組合成為基於該輸入值的一確定性輸出隨機數。
在一實施例中,至少一該複數個第一或第二確定性隨機數產生器模組包括以隨機數填充的一記憶體陣列。至少一該複數個第一或第二確定性隨機數產生器模組包括一有限場乘法器。
前文已頗為廣泛地概述本發明之特徵及技術優勢以便可更好地理解隨後的本發明之詳細描述。本發明之額外特徵及優勢將在下文中加以描述,且形成本發明之申請專利範圍的主題。熟習此項技術者應瞭解,所揭示之概念及特定實施例可易於用作修改或設計其他結構或程序以用於進行本發明之同樣目的之基礎。熟習此項技術者亦應認識到,此等等效構造並不脫離如隨附申請專利範圍中所闡明之本發明之精神及範疇。
在此描述之本案實施例提供隨機數產生的改進方法和裝置。在所揭露的實施例中,一隨機數產生器(Random Number Generator, RNG)產生對應於個別輸入值的隨機數。該些隨機數確定地與輸入值呈現相依。然而,隨機數同時具有隨機統計特性,並且輸入值無法由輸出隨機數來推演或是實施反向工程得知。這樣的機制在此被稱為「輸入-相依的隨機數產生」,並且適用於例如:儲存於安全記憶體中的數據或代碼之串流加密和串流解密。
在某些實施例中,隨機數產生器包含兩組記憶體陣列。第一組總共有
n個記憶體陣列,第二組總共有
l個記憶體陣列。兩組內的各記憶體陣列事先由隨機數填充。
為了從一給定輸入值產生一隨機數,該輸入值分成
n組位元(標示為位元-組)。各位元-組作為位址指示碼提供給第一組的相應記憶體陣列。第一組的各記憶體陣列藉由已接收的位址指示碼所指示的位址中擷取一相應的隨機數。
藉由第一組的相應記憶體陣列擷取並且輸出的各隨機數被分成
l組位元(標示為位元-組),各位元-組傳送到第二組的一相應記憶體陣列。因此,第二組的各記憶體陣列接收到各來自於第一組的各記憶體陣列的
n組位元。第二組的各記憶體陣列串聯從第一組的
n個記憶體陣列所接收的
n組位元,用以形成一位址指示碼,並且藉由已接收的位址指示碼所指示的位址中擷取隨機數 。
由第二組的
l個記憶體陣列提供的隨機數被組合並且產生確定地與給定輸入值相依的一輸出隨機數,組合方式例如使用按位互斥或(XOR)運算或是有限場乘法運算。
本揭露的隨機數產生器組態容易實施,並且有低延遲時間與低功率耗損的功效。此外,藉由在此描述將隨機數產生架構分散到多個小記憶體陣列中的方式,本揭露的技術所需要的記憶體空間遠低於使用單一記憶體陣列的同類型解決方案。
由此產生的隨機數具有較高度隨機的統計數據。此外,當本揭露的隨機數產生器從連續輸入值的序列產生隨機數序列時,所述序列中的隨機數彼此是不相關的。
原則上有可能利用其他方法執行輸入-相依的隨機數產生,例如使用安全雜湊演算法SHA1、SHA2(Secure Hash Algorithm)或進階加密標準散列函數(Advanced Encryption Standard, AES;Harsh function散列函數,又稱雜湊函數)。然而,這樣的解決方案使用相較於本揭露技術更少的種源,並且涉及更複雜的計算使得增加延遲時間和功耗耗損。
在一些實施例中,本文描述的隨機數產生器組態用於串流加密或解密,在這種情況下,輸入值包含遞增計數值或記憶位址。本揭露的隨機數產生器可以實現,例如,作為安全地儲存數據和/或程序代碼的記憶體系統之介面的一部分。
圖1A和1B是根據本案的一實施例示意性地說明一安全記憶體系統20的方塊圖。系統20包括一記憶體28,例如一隨機存取記憶體(RAM)或是快閃記憶體,用以儲存數據。在本文中,「數據」指的是使用者數據、程序代碼或其它適當的訊息。
作為在系統20中安全措施的一部分,該數據以加密的形式儲存在記憶體28,並且從記憶體28提取時解密。藉由使用隨機數產生器24(Random Number Generator, RNG)產生的隨機數來執行加密和解密。
圖1A說明數據加密並將其儲存在記憶體28的過程。在本實施例中,各數據字位儲存在記憶體28中相應的位址。該位址也作為在儲存之前用於加密數據字位所產生隨機數的輸入值。
典型地,對於儲存在記憶體28中各數據字位,系統20的位址產生電路(未繪出)產生相應的位址值。除了作為儲存在記憶體28中的一位址,相同的位址值也作為隨機數產生器24的輸入值。隨機數產生器24根據位址值產生一隨機數。系統20藉由使用互斥或(XOR)運算單元32計算所述數據字位和確定地隨機數之間的按位互斥或(XOR)函數來加密所述數據字位(在圖中代表明文PLAINTEXT)。加密的數據字位(在圖中代表密文CIPHERTEXT)儲存在記憶體28中相應的位址。
上述加密處理的密碼技術性質源自於互斥或(XOR)是可逆轉換的事實。在一可逆轉換中,當輸入呈現對稱時(即,如果輸入彼此交換,轉換輸出不變化),如果一輸入數據是隨機的,則所述轉換輸出和另一輸入數據之間沒有相關性。可逆轉換的另一個實例係為有限場乘法運算,例如滿足伽羅瓦場(Galois Field)的乘法運算。因此,在另一實施例中,互斥或運算單元32可以由有限場乘法器(例如,伽羅瓦場乘法器)所替換,或是由執行其它任何適當的可逆轉換的加密電路所替換。
圖1B說明從記憶體28擷取時的解密數據過程。當從某個位址擷取加密數據字位時,位址產生電路產生一適當的位址值。位址值提供給記憶體28,用以擷取所述加密數據字位,並且提供給隨機數產生器24。隨機數產生器24根據該位址值產生確定性隨機數。所述加密數據字位透過使用加密數據字位和輸入-相依隨機數產生器24的輸出之間的按位互斥或運算來進行解密。
在實施例中,互斥或運算單元32替換為一有限場乘法器,有限場的附加往復運算(A轉化成A
-1)應該在隨機數產生器24的輸出和乘法器之間來實現。往復運算必須只在加密期間施行於隨機數產生器24的輸出,或是只在解密期間施行(但不是同時在兩期間施行)。
往復運算可以用任何適當的方式來實現,例如使用查找表或適當的邏輯電路。在一些實施例中,有限場乘法器可以使用兩個或多個具有較小字位寬度的乘法器來實現。在這些實施例中,在乘法器之前,往復運算也可以分拆成具有較小字位寬度的兩個或多個往復運算。這種解決方案是有利的,例如因為查找表需要相當小的整體記憶體尺寸。
為了使加密和解密過程正確運行,用於加密一給定數據字位的隨機數應該與隨後將用於解密它的隨機數相同。換句話說,藉由隨機數產生器24產生的隨機數應該確定地基於個別的輸入值。同時,從隨機數推導出輸入值應該是不可能的,或者至少是不可行的。這種輸入值和相應的隨機數之間的關係在本文中稱為「輸入-相依隨機數產生」。
以下的描述提供用於實現輸入-相依隨機數產生器的架構實例。這些架構可以用於實現系統20的隨機數產生器24。可替換地,所揭露的隨機數產生器組態可以應用在含有確定性隨機數產生的其他任何適當的主機系統或用途。
圖2是根據本案的一實施例示意性地說明一輸入-相依隨機數產生器36的方塊圖。隨機數產生器36的組態係用於論證所揭露技術的原理之簡化組態。更複雜的和廣義的組態如圖3所示。
圖2的隨機數產生器36包括輸入電路38;第一組40包括兩個記憶體陣列44A和44B; 分配電路46;第二組48包括兩個記憶體陣列52A和52B;以及輸出電路56。在本實施例中,記憶體陣列44A、44B、52A和52B包括並聯的隨機存取記憶體(Random Access Memory; RAM)元件。可替代地,然而,其它任何適當類型的記憶體都可使用,例如快閃記憶體;一次性編程(OTP)記憶體或唯讀記憶體(ROM)。
在本實施例中,記憶體陣列44A和44B各包括一個256*8的記憶體,例如,能保存256位元數據的記憶體。記憶體陣列44A也標示為RAM(0,0)和記憶體陣列44B也標示為RAM(0,1)。各記憶體陣列44A和44B事先用隨機數填充,亦即預載。各記憶體陣列44A和44B利用從0(b00000000)到255(b11111111)二進制數值整個範圍來填充,所述數值無遺漏且不重複,並且以隨機順序填充。(在記憶體陣列44的任何重複值會降低輸出的隨機性。)
記憶體陣列52A和52B各包括一個256 * k的記憶體,亦即,能保存256 k-位元數據字位的記憶體。記憶體陣列52A也標示為RAM(1, 0)和記憶體陣列52B也標示為RAM(1,
l)。 k代表輸出隨機數的字位寬度。各記憶體陣列52A和52B事先用隨機數填充,亦即預載。在本實施例中,各記憶體陣列52A和52B由256 k-位元的隨機數以隨機順序來填充。
輸入電路38接收來自於已確定地產生的相應隨機數之輸入值。如上所述,輸入值可包括,例如,計數值或位址。在本實施例中,各輸入值是一個16位元的二進制數值。
輸入電路38將輸入值分割成2組各8位元之位元組,亦即,分成兩個8位元二進制數值。分割可以實施為,例如,藉由將所述輸入匯流排的16個數據線分成兩組各8條線。一位元組提供給記憶體陣列44A,而另一位元組提供給記憶體陣列44B。
各記憶體陣列44A和44B使用所接收的位元組作為8位元的位址指示碼。各存記憶體陣列44A和44B擷取儲存在所接收位元組指向的位址中的8位元隨機數,並且輸出該隨機數給分配電路46。
分配電路46分割各8位元隨機數為2組各4位元之位元組,並分配4位元之位元組到第二組48的各記憶體陣列52A和52B。因此,各記憶體陣列52A和52B將所接收來自各記憶體陣列44A和44B的兩個4位元之位元組作為輸入。
各記憶體陣列52A和52B將所接收4位元之位元組串聯成用於位址指示碼的8位元字位。各記憶體陣列52A和52B擷取儲存在此位址指示碼指向的位址中的k位元隨機數,並且輸出該k位元隨機數給分配電路56。
輸出電路56將所接收的兩個k位元隨機數組合起來成為單一的k位元隨機數,並提供所得的k位元隨機數作為該隨機數產生器的輸出。此架構使得隨機數產生器36能產生高達2
16k位元的輸出隨機數。
在本實施例中,輸出電路56包括一計算其兩個k位元輸入的按位互斥或的互斥或(XOR)運算電路。可替代地,輸出電路56可以包括一個有限場乘法器,例如一個伽羅瓦場GF(2
K)乘法器。進一步可選擇地,輸出電路56可以包括執行其它適合轉換的任何適當的電路,只要轉換定義如上述是可逆的。所述轉換不一定需要其輸入具有對稱性。
可以從隨機數產生器36的組態看出,輸出隨機數確定地基於個別輸入值。同時,輸出隨機數確實隨機的,並且不能用以重現原始輸入值。
圖3是根據本案的另一實施例示意性地說明一輸入-相依隨機數產生器60的方塊圖。圖3概括圖2的架構到各自任何期望數量的兩組記憶體陣列。
隨機數產生器60包括輸入電路62;第一組64包括
n個記憶體陣列68並標示為RAM(0, 1)到RAM(0,
n);分配電路70;第二組72包括
l個記憶體陣列76並標示為RAM(1, 1)到 RAM(1,
l);以及輸出電路78。如前一實施例中,圖3的記憶體陣列透過舉例方式包括並聯隨機存取記憶體(Random Access Memory; RAM)元件,然而其它任何適當類型的記憶體都可使用,例如快閃記憶體;唯讀記憶體(ROM)或一次性編程(OTP)記憶體。
在本實施例中,輸入值的字位寬度(位元數)標示為Width_in。記憶體陣列68各包括2
( Width_in/
n )*Width_O個記憶體,也就是說,能保存2
( Width_in/
n )個字位數據的記憶體,每字位具有Width_O個位元。各記憶體陣列68事先用隨機數填充,亦即預載。記憶體陣列68各填充2
( Width_in/
n )個隨機數。各隨機數具有Width_O位元,並且所述隨機數以隨機順序且最少重複的方式儲存在記憶體陣列中。若是Width_O等於 Width_in/
n或Width_O 小於 Width_in/
n時,則隨機數沒有重複。
第二組72的記憶體陣列76各包括2
(( Width_O ) n /
l )*Width_out個記憶體,也就是說,能保存2
(( Width_O ) n /
l )個字位數據的記憶體,每字位具有Width_out個位元。 Width_out代表輸出隨機數的字位寬度(位元數)。各記憶體陣列76事先用隨機數填充,亦即預載。記憶體陣列76各填充2
(( Width_O ) n /
l )個隨機數。各隨機數具有Width_out位元,並且所述隨機數以隨機順序且無重複的方式儲存在記憶體陣列中。
輸入電路62接收輸入值,亦即,計數值或位址。如上所述,各輸入值具有Width_in位元。輸入電路62將各輸入值分拆成各自具有Width_in/
n位元的
n個位元組,亦即,透過分拆輸入匯流排的字線成為
n個組。如此的位元組提供給第一組64的一相應記憶體陣列68。
各記憶體陣列68運用所接收的位元組作為位址指示碼。各記憶體陣列68擷取儲存在所接收位元組指向的位址中的隨機數,並且輸出該隨機數給分配電路70。
分配電路70分割各隨機數為
l個位元組,各位元組具有Width_O/
l位元。分配電路分配位元組到第二組72的各記憶體陣列76。因此,各記憶體陣列76將所接收來自各記憶體陣列68的
n位元組作為輸入。
各記憶體陣列76將所接收
n位元組串聯為用於位址指示碼的單一字位(具有Width_O *
n/
l的字位尺寸)。各記憶體陣列76隨後擷取儲存在所位址指示碼指向的位址中的隨機數,並且輸出該隨機數給輸出電路78。各該隨機數的字位寬度為Width_out。
輸出電路78將所接收的隨機數結合起來成為Width_out位元的單一隨機數,並提供所得的隨機數作為該隨機數產生器的輸出。此架構使隨機數產生器36能產生無重複且高達2
Width_in輸出隨機數。
在本實施例中,輸出電路78包括設置在一個樹狀結構的多個互斥或電路80。在樹狀結構中,由記憶體陣列76所產生的成對隨機數由按位互斥或電路80組合,成對的組合結果由按位互斥或電路80再次組合,依此類推,直到產生Width_out位元的單一隨機數。
可替代地,輸出電路78可以包括多個有限場乘法器,例如,伽羅瓦場(Galois Field)乘法器。進一步可選擇地,輸出電路78可以包括互斥或電路和伽羅瓦場乘法器的組合。一般而言,輸出電路78可以具有任何其他適合的組態,如上述定義,只要是透過輸出電路78所執行的端到端轉換整體上為可逆的。
從隨機數產生器60的組態可以理解,輸出隨機數確定地基於個別輸入值。如果Width_O等於Width_in/
n,並且
l為
n的除數(或其他方式
n是
l的除數並且Width_O/
l≥1,然後數據重複不會發生且輸出隨機數不能用於重現原始輸入值。否則,數據重複可能會發生,這可能成為大數值Width_out的問題。如果Width_out遠小於Width_in,數據重複在統計學上係為罕見,Width_O小於Width_in /
n的解決方案可以提供充足的輸入相依隨機數據。
圖1A和1B的系統組態、圖2和3的隨機數產生器組態純粹是為了澄清概念的組態實例。在替代實施例,任何其他適當的系統和/或隨機數產生器組態都可以使用。例如,第一組和第二組的記憶體陣列可以具有任何期望數量的記憶體陣列。兩組記憶體陣列的數目不一定是相同的。
在上述實例中,各記憶體陣列是一個獨立且單獨的記憶裝置,但這種劃分並不是強制性的。在一些實施例中,在第一組和/或第二組中的兩個或多個記憶體陣列可以利用緩衝器在相同的記憶裝置中實施。這樣的實施方式可能產生額外的延遲時間,但是在許多實際實施方式中這種延遲時間是可以容忍的。
用於圖2實施例的特定字位寬度純粹是透過舉例方式來選擇。在替代實施例中,任何其他適當的字位寬度都可以使用。甚至更一般言之,在圖2和3的組態中,在一給定群組中不同的隨機存取記憶體可能具有不同字位寬度的運算。例如,輸入電路可以分割輸入值為不全然具有相同的位元數的位元組,因此在第一組中不同的記憶體陣列可以儲存具有不同字位寬度的隨機數。類似地,分配電路可以分割第一組記憶體陣列所提供的隨機數為不全然具有相同的位元數的位元組。第一組中不同記憶體陣列可以儲存具有不同字位寬度的隨機數。
在一些實施例中,在第二組中記憶體陣列的數目(
l)可能不是在第一組中記憶體陣列的數目(
n)的整數除數。此外或是替代地,
l和/或
n可能不是2的整數冪次。
在一些實施例中,在第一或第二組中的一或多個記憶體陣列(例如,一個或多個記憶體陣列44、52、68或76)可以由有限場乘法器代替,例如GF(2
m)伽羅瓦場乘法器。在這樣的實施方式中,乘法器的一輸入端連接到陣列的輸入端(記憶體陣列的第一組的情況下之一位元組,或記憶體陣列的第二組的情況下位元組的串聯集合)。乘法器的第二輸入端接收一定值,例如,有限場的常數元件。因此,在本案中,一個有限場乘法器或一個記憶體陣列在本文中稱為經配置用於產生和輸出基於提供給它的輸入值的隨機數的隨機數產生器模組。
如此基於乘法器的隨機數產生器模組的輸入-輸出的功能類似於不重複地以隨機數字0...2
m-1填充的尺寸2
m的記憶體陣列。然而,基於乘法器的解決方案的隨機性水準可能低於基於記憶體陣列的解決方案。
第一和/或第二組的記憶體陣列可以使用任何適合的方式以隨機數預載。在一實施例中,一摘要函數如安全雜湊演算法SHA1、SHA2或進階加密標準散列函數AES可以重複應用到隨機種子,以便產生一系列用於填充記憶體陣列的隨機數。這種隨機數產生通常是緩慢的,因此適合用於初始化或時間不敏感的設定目的。這樣的隨機數產生器可以用於設置載入到第一組中的記憶體陣列位址的數字的順序,或可直接載入隨機數到第二組中的記憶體陣列位址。在初始化期間,軟體代碼可以用來控制隨機數數據產生的過程,並且控制數據的儲存和在不同記憶體陣列中數據的用法。
為理解本案的原理,不必要的元件,例如各種介面、控制電路、位址電路、時序電路和除錯電路,為清楚起見已經從圖中省略。各種系統和隨機數產生元件可以用硬體實現,例如使用一或多個現場可程式閘陣列(Field-Programmable Gate Arrays)和/或特定用途積體電路(Application-Specific Integrated Circuits),或以軟體實現,或使用硬體或軟體元件的組合。
在一些實施例中,一些系統或隨機數產生元件可使用軟體已編程用來執行這裡描述的功能的通用處理器來實現。該軟體可以通過網路以電子形式下載到處理器,例如,替代地或附加地,可提供和/或儲存在非過渡有形介質,例如磁、光或電子記憶體。
雖然在此描述的實施例主要涉及用於安全數據儲存的隨機數,本文描述的方法和系統也可以運用在其他應用中,例如在橢圓曲線密碼(ECC)或RSA密鑰的產生,或在各種安全架構下用於對詰問 / 回應的隨機串流產生。
前述內容概述一些實施方式的特徵,因而熟知此技藝之人士可更加理解本申請案揭示內容之各方面。熟知此技藝之人士應理解可輕易使用本申請案揭示內容作為基礎,用於設計或修飾其他製程與結構而實現與本申請案所述之實施方式具有相同目的與/或達到相同優點。熟知此技藝之人士亦應理解此均等架構並不脫離本申請案揭示內容的精神與範圍,以及熟知此技藝之人士可進行各種變化、取代與替換,而不脫離本申請案揭示內容之精神與範圍。
<TABLE border="1" borderColor="#000000" width="_0006"><TBODY><tr><td> 20 系統 </td><td> 24 隨機數產生器 </td></tr><tr><td> 28 記憶體 </td><td> 32 互斥或運算單元 </td></tr><tr><td> 36 隨機數產生器 </td><td> 38 輸入電路 </td></tr><tr><td> 40 第一組 </td><td> 44A、44B 記憶體陣列 </td></tr><tr><td> 46 分配電路 </td><td> 48 第二組 </td></tr><tr><td> 52A、52B 記憶體陣列 </td><td> 56 輸出電路 </td></tr><tr><td> 60 隨機數產生器 </td><td> 62 輸入電路 </td></tr><tr><td> 64 第一組 </td><td> 68 記憶體陣列 </td></tr><tr><td> 70 分配電路 </td><td> 72 第二組 </td></tr><tr><td> 76 記憶體陣列 </td><td> 78 輸出電路 </td></tr><tr><td> 80 互斥或電路 </td><td> </td></tr></TBODY></TABLE>
由以下詳細說明與附隨圖式得以最佳了解本申請案揭示內容之各方面。注意,根據產業之標準實施方式,各種特徵並非依比例繪示。實際上,為了清楚討論,可任意增大或縮小各種特徵的尺寸。
圖1A和1B係根據本案的一實施例示意性地說明安全記憶體系統的方塊圖。
圖2和3是根據本案的一實施例示意性地說明輸入-相依隨機數產生器的方塊圖。
<TABLE border="1" borderColor="#000000" width="_0007"><TBODY><tr><td> 36 隨機數產生器 </td><td> 38 輸入電路 </td></tr><tr><td> 40 第一組 </td><td> 44A、44B 記憶體陣列 </td></tr><tr><td> 46 分配電路 </td><td> 48 第二組 </td></tr><tr><td> 52A、52B 記憶體陣列 </td><td> 56 輸出電路 </td></tr></TBODY></TABLE>
Claims (15)
- 一種輸入-相依隨機數產生裝置,其包含: 一輸入電路,配置用以分割一輸入值為複數個第一位元組; 複數個第一記憶體陣列,經配置各自以複數個第一隨機數填充,經配置各自從該輸入電路接收該複數個第一位元組的一相應第一位元組,從該相應第一位元組指示的一第一位址擷取和輸出該複數個第一隨機數之其中一第一隨機數; 一分配電路,配置用以將該複數個第一記憶體陣列輸出的各該複數個第一隨機數分割為複數個第二位元組,並且分配該複數個第二位元組; 複數個第二記憶體陣列,經配置各自以複數個第二隨機數填充,透過該分配電路從各該複數個第一記憶體陣列接收該複數個第二位元組的一相應的第二位元組,用以串接所接收的該複數個第二位元組的以便形成一位址指示碼,並用以從該位址指示碼所指示的一第二位址擷取和輸出該複數個第二隨機數之其中一第二隨機數;以及 一輸出電路,配置用以至少將該複數個第二記憶體陣列輸出的相應該複數個第二隨機數組合成為基於該輸入值的一輸出隨機數。
- 如申請專利範圍第1項所述之輸入-相依隨機數產生裝置,其中該輸出電路經配置透過對該複數個第二隨機數施行一可逆變換來組合該複數個第二隨機數。
- 如申請專利範圍第2項所述之輸入-相依隨機數產生裝置,其中該可逆變換包括一或複數個按位互斥或(XOR)運算和有限場乘法(finite-field multiplication)。
- 如申請專利範圍第1項所述之輸入-相依隨機數產生裝置,其中在各該複數個第一記憶體陣列中,該複數個第一隨機數沒有重複且以隨機順序涵蓋整個數值範圍。
- 如申請專利範圍第1項所述之輸入-相依隨機數產生裝置,進一步包括一加密電路,經配置用以加密或透過對一數據字位施行一可逆變換來解密該數據字位。
- 如申請專利範圍第5項所述之輸入-相依隨機數產生裝置,其中該輸入值係指示儲存該數據字位的一記憶位址。
- 一種輸入-相依隨機數產生方法,其包含: 分割一輸入值成為複數個第一位元組; 在複數個第一記憶體陣列分別填充複數個第一隨機數,接收該輸入值的該複數個第一位元組的一相應第一位元組,並擷取和輸出所接收的該相應第一位元組指示的一第一位址中的該複數個第一隨機數之其中一第一隨機數; 分割由各該複數個第一記憶體陣列輸出的各該複數個第一隨機數為複數個第二位元組; 在複數個第二記憶體陣列分別填充複數個第二隨機數,接收來自各該複數個第一記憶體陣列的該複數個第二位元組的一相應第二位元組,串聯所接收的該複數個第二位元組以便形成一位址指示碼,並擷取和輸出該位址指示碼指示的一第二位址中的該複數個第二隨機數之其中一第二隨機數;以及 組合由該複數個第二記憶體陣列輸出的相應該複數個第二隨機數成為基於該輸入值的一輸出隨機數。
- 如申請專利範圍第7項所述之輸入-相依隨機數產生方法,其中組合該複數個第二隨機數包括對該複數個第二隨機數施行可逆變換。
- 如申請專利範圍第8項所述之輸入-相依隨機數產生方法,其中該可逆變換包括一或複數個按位互斥或運算和有限場乘法。
- 如申請專利範圍第7項所述之輸入-相依隨機數產生方法,其中在各該複數個第一記憶體陣列中,該複數個第一隨機數沒有重複且以隨機順序涵蓋整個數值範圍。
- 如申請專利範圍第7項所述之輸入-相依隨機數產生方法,進一步包括,透過利用該輸出隨機值對一數據字位施行一可逆變換來加密和解密該數據字位。
- 如申請專利範圍第11項所述之輸入-相依隨機數產生方法,其中該輸入值係指示儲存該數據字位的一記憶位址。
- 一種輸入-相依隨機數產生裝置,其包含: 一輸入電路,配置用以分割一輸入值為複數個第一位元組; 複數個第一確定性隨機數產生器(RNG)模組,經配置各自從該輸入電路接收該複數個第一位元組的一相應第一位元組,用以產生且輸出基於所接收的該相應第一位元組的一第一確定性隨機數; 一分配電路,配置用以將該複數個第一確定性隨機數產生器模組輸出的各該些第一確定性隨機數分割為複數個第二位元組,並且分配該複數個第二位元組; 複數個第二確定性隨機數產生器模組,經配置透過該分配電路從各該複數個第一確定性隨機數產生器模組接收該複數個第二位元組的一相應第二位元組,用以串接所接收的該複數個第二位元組以便形成一位址指示碼,並用以產生基於該位址指示碼的一第二確定性隨機數;以及 一輸出電路,配置用以至少將該複數個第二確定性隨機數產生器模組輸出的相應該些第二確定性隨機數組合成為基於該輸入值的一確定性輸出隨機數。
- 如申請專利範圍第13項所述之輸入-相依隨機數產生裝置,其中至少一該複數個第一或第二確定性隨機數產生器模組包括以隨機數填充的一記憶體陣列。
- 如申請專利範圍第13項所述之輸入-相依隨機數產生裝置,其中至少一該複數個第一或第二確定性隨機數產生器模組包括一有限場乘法器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462092281P | 2014-12-16 | 2014-12-16 | |
US14/938,861 US9696965B2 (en) | 2014-12-16 | 2015-11-12 | Input-dependent random number generation using memory arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201624268A TW201624268A (zh) | 2016-07-01 |
TWI546731B true TWI546731B (zh) | 2016-08-21 |
Family
ID=56111213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104142103A TWI546731B (zh) | 2014-12-16 | 2015-12-15 | 輸入-相依隨機數產生裝置及其方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9696965B2 (zh) |
CN (1) | CN105824602B (zh) |
TW (1) | TWI546731B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI620119B (zh) * | 2017-02-21 | 2018-04-01 | 群聯電子股份有限公司 | 隨機資料產生電路、記憶體儲存裝置及隨機資料產生方法 |
CN108536423B (zh) * | 2017-03-03 | 2022-05-10 | 群联电子股份有限公司 | 随机数据产生电路、存储器存储装置及随机数据产生方法 |
US11294640B2 (en) | 2019-03-13 | 2022-04-05 | Ememory Technology Inc. | Random number generator |
TWI793429B (zh) * | 2019-07-25 | 2023-02-21 | 熵碼科技股份有限公司 | 加密金鑰生成器及傳輸系統 |
US11601120B2 (en) | 2021-02-03 | 2023-03-07 | Nuvoton Technology Corporation | Attack-resistant ring oscillators and random-number generators |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4161041A (en) * | 1978-10-06 | 1979-07-10 | The United States Of America As Represented By The Secretary Of The Air Force | Pseudo random number generator apparatus |
JP2567681B2 (ja) | 1988-09-30 | 1996-12-25 | 三洋電機株式会社 | 乱数発生装置 |
US5251165A (en) * | 1992-04-09 | 1993-10-05 | James Iii J Colin | Two phase random number generator |
DE19921852A1 (de) | 1999-05-11 | 2000-11-16 | Bosch Gmbh Robert | Pseudozufallszahlgenerator |
US6763363B1 (en) | 1999-12-02 | 2004-07-13 | Honeywell International Inc. | Computer efficient linear feedback shift register |
DE10339999B4 (de) | 2003-08-29 | 2005-07-14 | Infineon Technologies Ag | Pseudozufallszahlengenerator |
DE102007025780A1 (de) * | 2007-05-22 | 2008-11-27 | Atmel Germany Gmbh | Vorrichtung und Verfahren zur Erzeugung einer Zufallszahl |
CN102063285A (zh) * | 2010-12-24 | 2011-05-18 | 倍奥锐(北京)科技有限公司 | 一种软件实现的真随机数产生方法 |
KR20130134610A (ko) * | 2012-05-31 | 2013-12-10 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그것의 테스트 방법 |
US9542156B2 (en) * | 2013-05-15 | 2017-01-10 | Synopsys, Inc. | Automatic control system and method for a true random number generator |
US9424442B2 (en) * | 2013-11-27 | 2016-08-23 | Huawei Technologies Co., Ltd. | Nonvolatile memory and electronic device |
-
2015
- 2015-11-12 US US14/938,861 patent/US9696965B2/en active Active
- 2015-12-15 TW TW104142103A patent/TWI546731B/zh active
- 2015-12-16 CN CN201510943028.3A patent/CN105824602B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW201624268A (zh) | 2016-07-01 |
CN105824602B (zh) | 2019-03-12 |
US20160170711A1 (en) | 2016-06-16 |
US9696965B2 (en) | 2017-07-04 |
CN105824602A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10069622B2 (en) | Cryptographic operation by applying sub-keys to multiplication units in accordance with galois-field arithmetic | |
US8983063B1 (en) | Method and system for high throughput blockwise independent encryption/decryption | |
TWI546731B (zh) | 輸入-相依隨機數產生裝置及其方法 | |
JP5822970B2 (ja) | 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス | |
US7907723B2 (en) | Device, system and method for fast secure message encryption without key distribution | |
ES2247109T3 (es) | Generador de numeros pseudoaleatorios. | |
US7912213B2 (en) | Device, system and method for fast secure message encryption without key distribution | |
TWI761896B (zh) | 用於執行安全命令的記憶體裝置及方法 | |
US20150058639A1 (en) | Encryption processing device and storage device | |
US6961427B1 (en) | Methods and apparatus for keystream generation | |
CN116628776A (zh) | 存储器装置以及存储器芯片的存储器阵列信息的读取方法 | |
Ivanov et al. | Nonlinear transformations for the construction of the primitives of symmetric cryptoraphy | |
EP1232603B1 (en) | Methods and apparatus for keystream generation | |
KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
ES2293665T3 (es) | Metodo para la conversion criptografica de bloques de entrada de l bits de informacion de datos digitales en bloques de salida de l bits. | |
US11960769B2 (en) | High performance secure read in secure memory providing a continuous output of encrypted information and specific context | |
Abbas et al. | Dictionary Attack on TRUECRYPT with RIVYERA S3-5000 | |
CN115801227B (zh) | 一种生成置换表的方法及装置 | |
RU2743412C1 (ru) | Устройство для реализации алгоритма шифрования «кузнечик» стандарта гост р 34.12-2015 и алгоритма хэш-функции «стрибог» стандарта гост р 34.11-2012 | |
KR20230046921A (ko) | 랜덤 요소의 풀로부터의 고유 암호화 키 생성 | |
KR20210081908A (ko) | 암호화 알고리즘이 적용된 시스템에서의 데이터 처리 방법 | |
Nabil et al. | A NOVEL APPROACH FOR IMPLEMENTING RC4 STREAM CIPHER ALGORITHM |