NIST 的隨機信標對加密使用有多大用處?
NIST 剛剛推出了一項名為NSA **NIST Randomness Beacon**的新服務。它遭到了一些初步的懷疑。也許密碼學社區會在 2013 年 6 月之前使用它,當時 NIST 擁有值得信賴的聲譽。起初我以為這是一個不合時宜的愚人節玩笑,但實際上它似乎是一個正在進行的嚴肅項目。
我對這種隨機信標的潛在用途以及該服務可以合法提供的嚴重加密應用程序的潛在用途很感興趣,因為該服務可能具有敵意並且可能處於敵對控制之下。我假設將它用於私有加密密鑰是不可能的。
我將在“使用”部分的規範中引用一些讓我大吃一驚的東西:
首先,Beacon 生成的數字在發布之前無法預測。其次,Beacon 的公共、有時限和經過身份驗證的特性允許使用者應用程序向任何人證明它使用了在某個時間點之前未知的真正隨機數。
但是,此功能不能成立,因為:
信標將每 60 秒以 512 位塊的形式廣播全熵位串。
因此,雖然普通使用者無法預測隨機數,但在這 60 秒的視窗中,擁有 NIST(或 NSA)內部特權訪問權限的人可以輕鬆地在下一個隨機位串之前 60 秒訪問它被“發布”了。如果這個具有內部訪問權限的對手成為使用此信標的應用程序的正常使用者之一,他們將在其他使用者之前了解隨機數,從而根據應用程序的類型提供顯著優勢。
鑑於這些資訊,這個潛在受損的信標可以提供哪些實際安全、公平和有用的加密用途?
我將該服務描述為類似於受信任的時間戳服務。除了他們不做時間戳,而只是提供“密鑰”。這允許使用者決定如何處理它,例如使用它作為私鑰來簽署某些東西,或使用 HMAC 密鑰,證明簽名“不早於”時間戳。如果簽名發佈到可驗證的記錄中,則可以證明它“不比記錄日期更新”。如果間隔足夠短,則具有可證明創建時間段的簽名或雜湊的應用程序很多。它也可以用作雙因素身份驗證系統的附加輸入(我認為這是最有用的)。
其他真正隨機性的來源是可用的,但如果您不需要將其用於加密目的,則免費擁有一個會更好。從商業或政治角度來看,有一種方法來證明或審計您的隨機源是有益的,如*不可預測的採樣*應用程序連結的範例。
隨機值的其他非加密用途可用於防止對航空公司乘客的“隨機篩選”、陪審團選擇和人口普查數據收集等事情的偏見。我懷疑這是否會實施,但可以希望。
服務安全
我們可以從詭計的角度做出三種假設。
- 這些數字確實是隨機的,但會提前提供給 NSA(或者只是延遲以供公眾查看)。
- NSA 或 NIST 可以修改歷史記錄,因為它們可以訪問私鑰。
- 這些數字並不是真正隨機的。
不隨機是需要審計或某種分析來證明的。我懷疑它們不是隨機的,但這並不意味著可以將非隨機值用於單個輸出。
第二個不太可能發生,因為只有當您可以驗證來自其他方的記錄時,才有可能接受服務,而其他方確實相信該記錄未被修改。此外,由於輸出基於先前的輸出,因此需要篡改整個鏈。
第一個更有可能,輸出可能會延遲很長一段時間,甚至幾天,除非熵源可以由受信任的一方審計,否則你不會知道。由於簽名是使用已知的未來時間碼加上目前值和先前值生成的,因此無需檢測就可以輕鬆做到這一點。種子可能會被隨機選擇並測試以提供具有特定偏差的輸出,但可能需要測試大量種子以提供適當的輸出,而攻擊者的成本很高(每個都需要 RSA 符號和雜湊,以及保證目標將使用一個特定的值)。
鑑於此,人們可能會將這些數字僅用於極不可能發生的用途。大多數應用程序都屬於該類別。任何需要這些類型的數字來用於可能被情報機構操縱的用途的人都會建構自己的熵發生器,這並不太難。如果沒有人將服務用於 NSA 想要篡改的東西,那麼 NSA 就不會篡改它,這太昂貴了,而且沒有任何收益。
從密碼學的角度來看,我唯一擔心的是這些數字是如何生成的。該頁面確實說輸出是全熵並且輸出是 512 位。可以安全地假設“種子值”實際上是熵源/DRBG 的散列輸出,因為XML 模式文件說“輸出值”是簽名的 SHA-512 散列,我已經驗證到就是這樣。這意味著在沒有所有輸入值和私鑰的情況下,輸出值在計算上是無法預測的。
具體的種子編號沒有列出,只能假設樣本是通過SHA-512來給出的,但是樣本的大小沒有列出。由於 Beacon 頁面**專門列出了符合SP800-90**的情況,因此熵樣本至少應為 888 位,但沒有什麼可以確認的,也沒有詳細說明實際的輸出生成方法,例如使用的 DRBG(非常非常重要),以及重新播種間隔。
其他安全問題
在這一點上,我將假設該服務仍處於beta原型,因為它們的 XML 模式文件引用了未給出的值,例如randomValue和previousHashValue,它們很可能是種子值和先前的輸出。
另一個未知數是簽名是如何生成的,因為必須有某種方式來驗證它,但沒有列出任何公鑰或任何關於簽名類型的細節。這是一個 2048 位的值,因此 RSA 很可能,甚至可能由其 SSL 流量的相同私鑰生成。我希望不是這樣,當密鑰在今年晚些時候到期時,可能很難驗證以前的輸出,因為需要找到舊的公鑰。
此外,該頁面使用 TLS 1.0 使用 CBC 模式進行加密,這意味著連接在傳輸過程中可能容易受到第三方的篡改。這種類型的服務應該盡可能不受目前技術和標準的篡改,但事實並非如此。這不是服務本身的問題,只是服務訪問方式的問題。該頁面使用同一伺服器上的 AJAX 訪問 XML 格式的條目,並使用相同的協議和密鑰進行保護。
接受度還取決於公眾對 SHA-512 安全性的信任、用於測量量子行為不可預測性的方法以及 SP800-90A 中描述的將這些測量值轉換為隨機位的方法。SP800-90A 是描述 Dual EC DRBG 的出版物……
截至 2018 年 3 月的服務更新
如上所述,他們的 SSL 流量的私鑰在 2014 年到期,此時他們獲得了新證書,並發布了用於簽署信標數據的特定證書。該證書(2048 位 RSA,SHA256 雜湊)有效期為 3 年,並於 2017 年 5 月 7 日到期。可下載以驗證先前的數據,它們列出了用於簽署目前信標數據的新公鑰,但它不是證書,因此未使用根證書籤名。
新的公鑰是 2048 位 RSA,指數為 65537,與之前的證書相同。
他們的 SSL 流量現在使用 TLS 1.2 保護,使用的特定密碼套件是 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA。該證書的有效期為 1 年,也是 2048 位 RSA。
他們的架構已更新,不再引用randomValue或previousHashValue。信標中的 XML 記錄與架構正確匹配。
該服務仍被列為原型,他們注意到信標的新版本正在開發中,但自 2014 年 5 月 13 日最後一次頁面編輯以來沒有更新。
截至 2019 年 10 月的服務更新
2018 年 6 月,該服務正式離開原型狀態,進入 beta 階段,使用的是我之前提到的“新版本”,現在稱為 2.0 版本。新的XML Schema 文件有很好的文件記錄。新的信標似乎於 2018 年 7 月 23 日上線。
我能夠確定用於簽署信標輸出的證書在 2019 年 8 月 16 日發生的脈衝 502025上發生了更改。脈衝的狀態正確地指定了信標輸出中發生的間隙(為 3 分鐘),並帶有程式碼6 用於證書更改,儘管 XML Schema 文件中未列出此程式碼。之前的證書實際上已於 2019 年 1 月 11 日到期,並額外使用了 7 個月 5 天。
可以從服務介面輕鬆獲得目前和以前的證書。兩者均由DigiCert Global CA G2頒發。新的公鑰是 4096 位 RSA,以 65537 為指數。
他們的 SSL 流量仍然在我的系統上使用 TLS 1.2 保護,使用的特定密碼套件現在是 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。該證書的有效期為 1 年(11 月到期),並且仍然是 2048 位 RSA。它也由 DigiCert 頒發,但它是用於 14 個獨立 NIST 子域(包括NVD和CSRC )的通用 Web 伺服器證書。
2019 年 5 月,他們發布了隨機信標的參考草案,其中 2.0 版服務是其實現,作為內部報告 8213。這是一份關於信標系統設計和實施的極其詳細的報告,其中包括具有多個威脅評估的安全分析。
2.0 版有一些重要的變化值得一提,首先是他們現在已經發布了系統工作原理的框圖,請注意雖然 RNG3 被列為量子,但信標項目網站指定*“我們可能很快集成在 NIST Beacon 中,PML 開發的基於光子檢測的量子 RNG(在圖中標識為 #3)”*,暗示 RNG3 目前未啟動:
下一個重要的變化是雜湊鏈的建構方式,以及跳過列表的添加。我還沒有驗證跳過列表的完整操作,但它似乎使用第一個小時/天/月/年作為雜湊鏈的錨點,因此審核目前信標到開始的速度要快得多鏈條,可能長達數年。
現在,您無需返回 50 萬個雜湊值以返回一年,而是簡單地返回到小時的開始,然後按小時返回到一天的開始,依此類推,直到鏈被驗證返回到第一分鐘一年的第一天的第一個小時,最多可進行 124 次驗證以返回當年年初。
因此,為了驗證脈衝502025 (2019 年 8 月 16 日,14:14 Z)與479573的月初脈衝,您跳回 15 分鐘到502013,然後在一小時的 14 次跳(60 個脈衝)回到501173,然後在一天中跳過 15 次(1440 次脈衝)到 479573,總共 44 次驗證,相比之下,沒有跳過列表功能的為 22453。
最後一點要注意的是,這不是 2.0 版信標技術的唯一實現,智利大學和巴西政府運營著一些服務。除了硬體 RNG 之外,智利信標還使用從智利的地震測量中收集的熵源、來自當地廣播電台的流、精選的 Twitter 文章以及來自乙太坊區塊鏈的數據。巴西實際上執行多個信標,包括使用光子量子 TRNG 的主要信標,以及還包括智利和 NIST 信標的輸出作為熵源的組合信標。智利信標的輸出也是Cloudflare 自己的信標的幾個輸入之一,它不是基於 NIST 設計或 API。
在這一點上,設計似乎是合理的,如果他們修復了證書問題並啟動了 RNG3(可能已經啟動了),這個和其他類似的東西似乎確實有很多用途,儘管加密用途可能不是其中之一,除了作為熵的額外來源而不是主要來源。