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及控制晶片設計、銷售與服務。憑藉產品的高可靠性、高性價比和完善的服務,多個產品已經被廣泛應用於汽車電子、智能交通、物聯網、行動支付和生物識別等領域。