Random-Number-Generator
典型的微控制器上是否有安全的熵源?
在沒有硬體 RNG 的設備上,熵的最佳來源是什麼?
一些選項和陷阱四處飄蕩:
- 使用 ADC 讀取模擬內容:如果可以訪問電源或某些 ADC 即使在 LSB 下也太穩定,則可能會變得確定。
- 使用 un-init SRAM:電源掉電攻擊?
- 使用晶體抖動:這裡的想法是採樣 RTC 和 MCU 晶體之間的差異並使用 LSB。
我見過的大多數適用於加密的微控制器都有一個帶有硬體 RNG 的變體。例如 Microchip 的 PIC32 系列。
但是,如果沒有,您可以做的是將一些感測器連接到 ADC。這取決於您的環境可以使用哪種感測器。它可以是任何不容易被操縱的東西(至少不是在 LSB(s) 中)。
然後,從 ADC 獲取 LSB,或者更好的是,使用隨機提取器。您可以多久獲取一次比特,以及一次可以獲取多少比特,取決於 ADC、感測器和環境,以及您想要達到的安全級別。
如果你能比你的微控制器走得更遠,還有一些小的硬體電路可以用來創造隨機性。一個例子是使用二極體的雪崩效應。
雪崩雜訊是結型二極體在雪崩擊穿開始時工作時產生的雜訊。當載流子在強電場的影響下獲得足夠的動能以通過與晶格中的原子碰撞產生額外的電子-空穴對時,就會發生這種情況。如果此過程碰巧溢出到雪崩效應中,則可能會觀察到隨機雜訊尖峰。
簡而言之,我們可以使用帶有一些外部電路的二極體來產生隨機雜訊尖峰。如果我們隨後放大該信號並將其饋送到比較器,我們會得到一個隨機位串。