GD32 MCU的真隨機數發生器(TRNG)
文章目錄
真隨機數(True Random Numbers)是指 完全基于物理世界中的不可預測過程生成的隨機數序列,具有 本質上的不可重復性、不可預測性和統計獨立性。其核心特征和應用原理如下:
一、定義與核心特征
- 不可預測性
- 真隨機數的生成依賴于物理系統的固有隨機性(內稟隨機性),例如量子疊加態的坍縮、熱噪聲或光子行為。即使完全知曉物理系統的初始狀態和生成機制,也無法預測下一個輸出結果。
- 對比偽隨機數:偽隨機數由確定性算法(如線性同余法)生成,一旦知道種子值和算法,整個序列可完全復現。
- 無周期性與不可重復性
- 真隨機數序列沒有周期性,且無法重現相同的序列。例如,基于量子測量的隨機數,每次觀測結果都是獨立的隨機事件。
- 統計獨立性
- 序列中的每個數不僅服從均勻分布,且與其他數及外部變量(如環境溫度、設備狀態)完全無關,滿足密碼學安全的“獨立性”要求。
二、物理機制:量子與經典隨機性
- 量子隨機性(內稟隨機性)
- 量子過程:如單光子通過分束器時,透射或反射的概率各為50%,結果由量子力學的不確定性決定,與測量精度無關。
- 設備無關隨機數擴展:通過量子糾纏和貝爾不等式檢驗(如CHSH值>2),確保生成的隨機數與設備缺陷或供應商惡意操作無關。
- 經典物理過程的局限性
- 拋硬幣、電子噪聲等宏觀過程看似隨機,但本質是表面隨機性。若精確控制初始條件(如拋擲角度、風速),結果可預測。
- 此類方法生成的隨機數屬于偽隨機或弱隨機,僅適用于低安全場景(如游戲隨機化)。
三、生成方法
- 硬件隨機數發生器(HRNG/TRNG)
- 物理源:利用熱噪聲、放射性衰變、光量子效應等物理現象,通過傳感器和模數轉換器輸出隨機比特。
- 改進技術:因原始物理信號可能存在偏差,常結合算法(如哈希函數)優化統計分布,通過國家密碼管理局的隨機性檢測。
- 量子隨機數發生器(QRNG)
- 基于量子態測量(如單光子路徑選擇),是目前唯一被嚴格證明具備真隨機性的方法。
四、應用場景
- 密碼學:會話密鑰生成、數字簽名、加密算法初始化,依賴真隨機數防止密鑰被推測。
- 安全認證:智能卡與讀卡器之間的雙向認證,需真隨機數抵御重放攻擊。
- 高精度模擬:蒙特卡羅仿真、金融風險評估,要求輸入完全獨立。
五、與偽隨機數的對比
特性 | 真隨機數 | 偽隨機數 |
---|---|---|
來源 | 物理過程(量子噪聲、熱噪聲) | 數學算法(如梅森旋轉器) |
可預測性 | 完全不可預測 | 已知種子和算法即可預測 |
周期性 | 無周期 | 有長周期(如梅森旋轉器為2^19937-1) |
生成速度 | 較慢(依賴物理過程) | 極快(純計算) |
適用場景 | 密碼學、安全密鑰 | 游戲、仿真、一般隨機抽樣 |
六、局限性
- 生成效率低:物理過程需采樣和轉換,速率低于偽隨機數生成器。
- 成本高:需專用硬件(如量子光學設備),難以集成到普通計算機。
- 需后處理:原始物理信號可能含偏差,需算法優化分布均勻性。
GD32 MCU的真隨機數發生器(TRNG)通過物理噪聲源生成不可預測的隨機數,其核心原理和實現流程如下:
?? 七、物理熵源原理
- 模擬噪聲采集
TRNG依賴硬件電路中的??連續模擬噪聲??(如半導體熱噪聲、時鐘抖動)作為隨機性來源。這些噪聲源于量子級別的物理現象(電子熱運動),具有天然不可預測性。 - 熵源特性
- 真隨機 vs 偽隨機:相同輸入條件下,真隨機數輸出必然不同;偽隨機數依賴算法和種子,輸入相同時輸出固定。
- 不可重復性:噪聲的量子特性確保每次生成的隨機數獨立且無規律。
?? 八、硬件實現流程(以GD32F450 GD32L233為例)
GD MCU真隨機數發生器模塊(TRNG)能夠通過連續模擬噪聲生成一個32位的隨機數值。
8.1. 初始化與時鐘使能
-
GD32F450:直接使能TRNG時鐘:
rcu_periph_clock_enable(RCU_TRNG); // 開啟TRNG時鐘 trng_enable(); // 激活TRNG模塊
-
GD32L233:需額外啟動高頻時鐘源(IRC48M)支持噪聲采樣:
rcu_osci_on(RCU_IRC48M); // 啟動IRC48M時鐘 rcu_