使用 MSP430 內部時鐘生成隨機數字
不管是生成隨機器件地址、強化加密算法還是創建獨立產品密鑰,可靠地生成隨機數字都變得日益重要。這些隨機數字對于日常嵌入式系統特別有用,比如車庫門接收機必須一一對應地正確識別遠程控制的隨機數字,以防止非授權訪問。為了生成隨機數字,開發人員可以使用高級 16 位 MCU 確保將所有信號都控制在 MCU 內部,而且與昂貴的模擬硬件相比,這種解決方案成本更低、安全性也更高。
雙時鐘芯片架構可以支持 TI 超低功耗MCU MSP430 的隨機數字生成能力。超低頻振蕩器 (VLO) 與數控振蕩器 (DCO) 是兩個獨立的時鐘系統,可以利用二者間的計時差生成隨機位流。一個 VLO 時鐘周期中的DCO 時鐘數量大致相同。然而,由于 VLO 與 DCO 時鐘源彼此獨立變化,無法預測生成的數字是奇數還是偶數,因此這種器件更安全。更重要的是,即使在前面生成的數字為已知的情況下,也不可能預測之后的結果。
由于 VLO 的靈活性很高,其速度可降至 DCO 以下。然后可以將定時器配置為升序計數,將 DCO 作為源時鐘,從而觸發對下一次 VLO 從低到高升序的采集。這次采集將記錄一個 VLO 時鐘周期中的 DCO 時鐘周期數。由于時鐘源的變化,每次采集將導致單位 VLO 周期內的 DCO 時鐘數略有差異。正是這種差異才產生了隨機數字。例如,為了生成 16 位隨機數字,需要進行 16 次采集,每個被采集數字的最低有效字節轉換成存儲器中的一個字。
設計人員可以使用定時器外設收集隨機 LSB,通過在每個采集周期中確保 CPU 處于關閉狀態,可以實現超低功耗。只需要短暫使用 CPU,即可將 LSB 轉換為存儲單元。
盡管上述方法是隨機數字的主要來源,但是,MSP430 時鐘系統還是允許設計人員結合使用反饋法。在要求進行 FIPS 140-2 測試的情況下,這些方法可提高算法性能。
第一個反饋機制是,在每個采樣位后使 DCO 略微加速。時鐘控制寄存器在每個位后加上數字 5。這種相加或額外變化導致在每個環路時 DCO 的速度均高于 VLO。雖然可以使用任何數字,但數字 5 可以產生足夠大的階躍變化,以至于 DCO 與 VLO 之間發生很大的差異。
另外,每次轉換 LSB 時,兩個以前采樣的隨機位被按位加至時鐘控制寄存器的除法器位。這些位在到達計時器之前將控制用于 VLO 的除法器,同時還改變了計時器測定的VLO 與 DCO 之間的關系。
最后,每個得出的位實際上是 5 個環路“多數原則”的結果。如前所述,每個環路都從 CCR 生成其自身的 LSB,但 5 的“多數原則”用于選擇最終位。
通過這種方式,MSP430 MCU 能夠以極低的功耗生成隨機位的連續流。這種位流可以用于創建隨機數字;如果不需要對運行的應用時鐘架構進行修改,將針對偽隨機數字生成器 (PRNG) 生成初始種子。
借助該技術,就可以生成通過 FIPS 140-2 隨機性測試的位流。這就是說,該技術可廣泛用于需要生成隨機數字的各種應用領域。特別是隨著無線技術的推廣,這種隨機數字生成技術將有很好的前景。另外,由于該技術采用目前的 MSP430 MCU 架構內部信號,具有成本低與安全性高等優勢。
評論