低功耗MCU RJM8L303的真隨機數發生器設計原理和使用方法

2020-12-16 瑞納捷安全加密

RJM8L303晶片簡介

RJM8L303是武漢瑞納捷電子技術有限公司推出的一款採用增強型80C51內核,擁有8KB SRAM和128KB Flash存儲容量的低功耗安全MCU晶片。它具有快速中斷響應,休眠和深度休眠模式。

晶片支持UART、SPI、I2C、GPIO、ISO7816、JTAG等數字通信接口;還支持13.56MHz無線接口,符合IOS14443 typeA標準,能實現無線數據傳輸。晶片內置DES、3DES、國密SM4等三種加密算法,以及頻率安全探測器,用以保證晶片在非正常工作條件下的操作安全和數據安全。

另外,為了滿足某些應用中安全交易流程的需要,晶片還內嵌了一個8位隨機數發生器。該隨機數發生器是採用數字振蕩環方式設計的真隨機數發生器,符合國家密碼安全管理局《隨機性檢測規範》的相關要求,通過了隨機數測試國際標準 FIPS 140-2和NIST SP800-22標準測試。

真隨機數發生器的設計原理

我們知道,數字電路中的時鐘信號總會存在抖動現象,它是指在晶片的某一個給定點上時鐘周期發生的暫時變化,即時鐘周期在每個不同的周期上可以縮短或加長。抖動可以用許多方法來衡量和表徵,它是一個平均值為零的隨機變量。除了時鐘抖動以外,兩個獨立時鐘之間的相位漂移也具有隨機的特性。因而抖動信號和相位漂移適合於在數字電路中作為真隨機數發生器的噪聲源。

圖1 時鐘抖動的定義

圖1中用實線描繪的是嚴格的周期性信號的波形,每個沿的起始點在時間軸上間隔相等;虛線代表的就是實際的近似周期性信號,其周期有微小的變化。我們可以看到相應沿的起始點偏離了理想位置。此時稱後者的波形有抖動。不同的有效瞬間(時間軸上有間隔的不同位置),抖動的幅度是不同的。

圖2 基于振蕩器採樣的真隨機數發生器原理

圖2中帶有抖動的低頻振蕩器通過D觸發器採樣一個高頻振蕩器,輸出序列X。由於低頻振蕩器的抖動是不確定的,並且其抖動範圍遠遠大於高頻振蕩器的周期,因此輸出0和1的概率基本相等,從而輸出的序列X是隨機的。

高頻振蕩器採用數字振蕩環方式設計,其電路結構如下圖3所示。在數字邏輯內部,當2N+1個反相器組成一個閉合的環路時,可以得到一個高頻的振蕩時鐘。由於反相器的時間延遲是皮秒量級,因此反相器振蕩環的振蕩頻率高於GHz。該振蕩時鐘的周期與門延時以及反相器的個數有關,而與外部信號無關。該方法利用了振蕩器的頻率不穩定性,使得其電路相對簡單,佔晶片面積小,功耗也小,魯棒性好,對外界或是內部的幹擾不敏感。

圖3 三個反相器構成的高頻振蕩電路

如果將相同長度的兩組振蕩環的輸出相異或就可以得到一組由隨機信號構成的新波形,該波形包含了兩條振蕩環之間的時鐘抖動以及相位偏移。若將多組振蕩環信號相異或時,可以從輸出獲取更多的隨機信息。

低頻振蕩器採用RC振蕩電路設計。RC振蕩電路是指用電阻R、電容C組成選頻網絡的振蕩電路,一般用來產生低頻振蕩信號。輸出序列X的隨機性能取決於低頻振蕩器抖動的範圍及其分布。

本晶片隨機數發生器的使用方法

(1)配置控制寄存器DTRNGCON0

*設置model_sel信號為0或1,選擇RNG工作於mode0或mode1模式;

*設置trng_start信號為1,啟動RNG模塊工作;

(2)查詢狀態寄存器DTRNGSTS0

*等待trng_sts信號為1;

(3)讀取數據寄存器DTRNGDAT0~ DTRNGDAT3,讀出32位隨機數;

(4)循環步驟(2)和(3),可多次獲取隨機數。

瑞納捷是以嵌入式數據安全產品、技術和應用為核心的晶片設計公司及方案提供商。業務涵蓋了安全加密晶片、低功耗安全MCU、驅動晶片、NFC及控制晶片設計、銷售與服務。憑藉產品的高可靠性、高性價比和完善的服務,多個產品已經被廣泛應用於汽車電子、智能交通、物聯網、行動支付和生物識別等領域。

相關焦點

  • 真隨機數發生器在信息安全系統中的應用
    摘要:信息安全系統的安全核心是內置的隨機數發生器。本文分析了常用的兩類隨機數發生器,指出了並非硬體隨機數即為真隨機數,提出了硬體真隨機數發生器的實現原理和評測準則。  信息安全系統中的隨機數序列要求具有足夠的長度和周期,以及儘可能高的熵值,即具有高度的隨機性和不可預測性。  隨機數序列的產生方法不外乎兩種:偽隨機數和真隨機數。  作為常識,每個程式設計師在做入門學習時,都會被老師諄諄教導:我們用的程式語言中的隨機函數,只能產生出偽隨機數。
  • Excel生成隨機數的技巧,隨機數發生器,你用過嗎
    商業分析中的很多應用要求從特定的概率分布中隨機抽樣。例如,在財務模型中,當銷售額、銷量增長幅度、運營支出和通貨膨脹因子等全都不確定時,我們可能對累積的貼現現金流的分布感興趣,而這一分布可以用概率分布來描述。那些決策模型的結果變量,是隨機輸入變量的複雜函數。要理解這些變量的概率分布,只有藉助所謂蒙特-卡羅方法的抽樣流程才能實現這一抽樣流程。
  • 科學家提出量子隨機數的最快生成方法
    俄羅斯國家量子中心(NUST MISIS)與英國牛津大學等機構組成的國際研究小組開發出最快和最容易獲得的量子隨機數發生器,以每秒8.05GB的速度生成隨機數,並實時確認其隨機性。該技術為用於密碼學和複雜系統建模的商用隨機數發生器的生產奠定了基礎。
  • 量子保密通信迎新突破 隨機數發生器速率刷新高
    中國電子科技集團4日晚間發布了一款新型高速量子隨機數發生器,量子隨機數實時產生速率大於5.4G比特每秒,極限值突破117G比特每秒,刷新了此前中國科學技術大學團隊68G比特每秒的記錄,成為目前世界上產生速率最高的量子隨機數發生器。量子保密通信迎新突破按照密碼設計的基本原則——「一切秘密寓於密鑰之中」。
  • 偽隨機數發生器:你不知道,其實計算機並不能產生隨機數
    在生活中,我們需要用到隨機數的地方很多,例子也很好舉,比如我們買彩票的號碼就是一個隨機數。但是當計算機中需要產生隨機數的時候,絕大多數情況下並不是真的隨機數,我們把它稱為偽隨機數。雖然我們已經努力儘量讓產生的偽隨機數接近真實隨機數的概率,但是二者還是有本質區別的,最重要的一點區別是真實隨機數不能預測也沒有規律,而偽隨機數一定有規律(只是低級的規律好找,高級的規律不好找)而且可以被預測出來。
  • 超聲波發生器原理
    它的工作原理是什麼樣子的呢?超聲波電源按激勵方式的不同可分為自激式和它激式,而超聲波發生器指的就是它激式超聲波電源,由於它激式振蕩電路在輸出功率方面較自激式高出10%以上,因此目前大多數均採用的超聲波發生器作為驅動電源。
  • 負離子發生器原理
    導讀:本文主要講述的是負離子發生器的原理,感興趣的朋友們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/276916
  • 我的世界:還不懂什麼是隨機發生器?你out了!
    注意:此篇內容過於深奧,請心平氣和看完,或者收藏夾吃灰『隨機發生器』,又作隨機數發生器、隨機數生成器,是會產生隨機信號的紅石電路。它們能被應用在很多地方,從操縱一場燈光秀,到建造一個賭場。然後把有不同堆疊上限的物品放入投擲器中,如一把劍和一塊泥土。當你激活投擲器,它會把一個物品放入漏鬥,從而激活比較器。 由於物品佔用的空間不同,因此信號強度也會有所不同。看起來好像將物品數堆疊至16時會輸出強度為2的信號,但不幸的是除非漏鬥事先裝了物品,否則將物品數堆疊至16隻能得到強度為1的信號。
  • 超聲波焊接的電箱(發生器)設計
    用於超聲波焊接或者切割的電箱開發好壞,取決於如何有效精確控制參數和調整這些參數以適應特定需求的能力。超聲波發生器(電箱)則負責這樣的控制和調整(調諧)。 這次介紹的電箱設計結合了帶有浮點運算單元的32位CortexM4微控制器,允許使用現代信號處理方法實時計算超聲波三聯件的參數。
  • 進展|基於納米環磁性隧道結的自旋隨機數發生器
    在當今大數據時代,各行各業對隨機數的需求日益增加,例如,通信領域的信息加密、科學研究中的統計模擬、博彩行業的隨機分配、安全領域的隨機密鑰與身份驗證,都離不開隨機數的運用。在理想情況下,隨機數序列應該是一個彼此之間完全獨立的,「0」和「1」(二進位)以相同概率隨機分布的數字串。
  • 隨機和偽隨機 電腦隨機數是如何生成的?
    隨機和偽隨機 電腦隨機數是如何生成的?  對於隨機數的討論日漸升溫,許多人懷疑英特爾內置於各種硬體內的隨機數生成晶片是不是靠得住。要理解為什麼這種隨機數不太可靠,你必須理解隨機數的生成原理。  隨機數的作用  隨機數的使用歷史已經有數千年。無論是拋硬幣還是搖色子,目的是讓隨機概率決定結果。電腦中的隨機數生成器的目的也是如此——生成隨機不可預測的結果。  加密法要求數字不能被攻擊者猜到,不能多次使用同樣的數字。
  • STM32F407單片機使用攻略:中文手冊、實戰問答20篇
    STM32F4系列基於最新的ARM Cortex M4內核,在現有出色的STM32微控制器產品組合中新增了信號處理功能,並提高了運行速度;STM32F405x集成了定時器、3個ADC、2個DAC、串行接口、外存接口、實時時鐘、CRC計算單元和模擬真隨機數發生器在內的整套先進外設
  • 想要隨機聽音樂?你知道「真隨機」和「假隨機」的區別嗎
    在通勤路上可以戴著耳機聽聽自己最喜歡的音樂,應該是工作日最放鬆的時間了吧,當你按下隨機播放的按鈕,期待它能給你帶來不一樣的新鮮感之時,你有沒有想過,隨機也是分真假的。假隨機ShuffleShuffle是一種被稱為"洗牌算法"的機制,原理就像是洗撲克牌一樣。將不同數量的撲克牌進行隨機排列就能得到一個亂序的順序,隨機播放歌單也是如此,每次播放的時候會將這個列表中的歌曲進行洗牌,從而獲得一個亂序的播放,也就是"假隨機"算法。
  • 利用隨機數完成公司年會抽獎過程
    在統計學的不同技術中需要使用隨機數,比如在從統計總體中抽取有代表性的樣本的時候,或者在將實驗動物分配到不同的試驗組的過程中等等。產生隨機數有多種不同的方法。這些方法被稱為隨機數發生器。隨機數最重要的特性是:它所產生的後面的那個數與前面的那個數毫無關係。
  • 聊一聊網際網路基礎設施——隨機數
    其實這裡就要用到加密算法,簡單的來說我們看到的信息都是一個個加密和解密的過程,而這個過程中最重要的環節就是隨機數的加入。毫無疑問,cloudflare自然有專門產生隨機數的方法,那即是熔巖燈,但是這種方法相對來說,過程比較麻煩,而且出故障的概率也比較大,比如監視熔巖燈中的液體流動的高速相機出現故障,那麼就從最根本源頭來破壞cloudflare的服務。
  • 隨機數不隨機,那麼它們到底是怎麼產生的呢?
    遊戲抽籤的機制和賭博類似,我們每次抽籤,電腦就會生成一個隨機數,這個隨機數便決定了你抽到的是蝴蝶精還是大天狗(遊戲角色)。除了應用在遊戲中,隨機數也被用於安全加密方面。為了保證信息的安全,加密系統不能一直使用同一個密碼,而是使用一些毫無章法的數字,讓黑客根本無法猜測。
  • 優惠券的設計原理和方法
    那麼,如何來設計優惠券?優惠券的設計原理和方法是什麼?首先要考慮該優惠券所要觸及的用戶是哪些?如何來做?在什麼時候做?什麼方式來做?一、項目背景與需求分析由於公司推廣需求,現在需要設計一個針對新老用戶發送優惠券的H5界面,用於用戶自發的分享傳播。
  • DApp的隨機數為什麼會被黑客破解
    或許很多人對「隨機數攻擊」這個詞已經司空見慣了,因為在 DApp 遭遇黑客攻擊的事件中,隨機數攻擊佔了很大一部分,很多 DApp 的隨機數被黑客破解了。 你或許會問,隨機數不是隨機的嗎?隨機意味著不可預測,為什麼還會被黑客破解呢? 這還得從隨機數說起。 隨機數可以分為真隨機數和偽隨機數。
  • MIT提出了用隨機數生成隨機數的計算機算法
    眾所周知,計算機無法製造出隨機性,它們也不應該:計算機軟體和硬體運行在布爾邏輯,而非概率上。 目前,我們使用的真隨機數據,一般來自系統從物理環境中採集到的「隨機噪音」。 但是計算機科學家想要可以處理隨機性的程序,因為那有時候是解決問題所必須的。
  • python安全開發軍規之四:使用安全的隨機數生成器
    背景日常開發中,必然會碰到需要生成隨機數的需求,比如生成圖片驗證碼,簡訊驗證碼……隨機數生成既然是這麼簡單的一個功能,開發必然也很簡單,我們看看怎麼生成一個隨機數,這裡以隨機生成1-100的整數為例。一般情況下,偽隨機數的生成需要一個種子,如果沒有特別設置,種子就是系統的時鐘。簡而言之,由於偽隨機數算法固定,種子固定,那結果就是可推導和模擬的。那這裡的隨機也就不是真正的隨機,只要在隨機數生成過程中有一點偏差,破譯者就能夠利用偏差對保密信息進行破譯。實際上,在密碼學上對隨機性有三個分類:偽隨機序列,密碼學意義上的偽隨機序列,真隨機序列。