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