密碼學中,「我的袖子裏沒有東西」數(英語:Nothing-up-my-sleeve number)是指那些在構造上沒有隱藏屬性嫌疑的數字。它們用於建立密碼函數,例如密碼雜湊函數密碼。這些演算法通常需要隨機常數來進行混合或初始化。密碼學家希望以一種方式選擇這些值,以證明這些常數的選擇不是出於惡意目的的,例如為演算法建立一個後門[1] 使用一種幾乎沒有調整空間的方法生成數字可以消除這些擔憂。一個例子是使用圓周率π的初始數字作為這些常數。使用小數點後數百萬位的π的數字通常不被認為可信,因為演算法設計者可能會因為可以利用它而選擇小數點的特定起點,這創造了一個隱藏的弱點。[2]



實數(例如πe和無理根)在其進位制中的各個位上的數字被認為以相等的頻率出現(參見正規數)。這些數可以被視為柯氏亂數的對立極端,因為後者看起來是隨機的,但資訊熵非常低。使用這些數的動機源於1975年美國政府的資料加密標準早期引發的爭議。該標準因其S盒中使用的常數沒有提供解釋而受到批評(儘管後來發現它們經過精心選擇以防止當時尚未公開的差分密碼分析攻擊)。因此,人們需要一種更透明的方法來生成用於密碼學的常數。[3]

藏在袖子裏的紙牌

「我的袖子裏沒有東西」是一句和魔術師有關的習語,他們在表演魔術之前總會先展開袖子以展示其中沒有東西。

例子

反例

  • Streebog英語Streebog的雜湊函數S盒號稱是隨機生成的,但經過逆向工程後證明,它是透過演算法生成的,存在一些弱點。[15]
  • 資料加密標準的常數由美國國家安全域提供。但後來發現,這些常數並非隨機,而是讓加密演算法能夠抵禦當時尚未公開的差分密碼分析攻擊。[3]
  • 雙橢圓曲線確定性隨機位元生成器NIST推薦的密碼學安全偽亂數生成器,2007年受到批評,因為推薦用於該演算法的常數選擇方式可能允許其作者根據過去生成值的樣本預測未來的輸出。[1] 2013年9月,《紐約時報》報道:「美國國家安全域前承包商斯諾登泄露的內部備忘錄顯示,美國國家安全域介入了2006年NIST標準中使用的一種亂數生成器,其中包含一個供美國國家安全域使用的後門」。[16]
  • P曲線是NIST為橢圓曲線加密制定的標準。這些曲線的係數是透過雜湊無法解釋的隨機種子英語random seed生成的,例如:
    • P-224: bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5.
    • P-256: c49d3608 86e70493 6a6678e1 139d26b7 819f7e90.
    • P-384: a335926a a319a27a 1d00896a 6773a482 7acdac73.

儘管沒有直接關係,但在雙橢圓曲線確定性隨機位元生成器後門曝光後,P曲線常數[17]的可疑之處引起了人們的擔憂[18],美國國家安全域所選的值使他們在尋找私鑰時更具優勢。[19]此後,許多協定和程式開始使用Curve25519作為NIST P-256曲線的替代方案。

I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.

——Bruce Schneier,"The NSA Is Breaking Most Encryption on the Internet" (2013)[20]

局限性

伯恩斯坦和合作者證明,在生成橢圓曲線等密碼對象的複雜程式中,使用「我的袖子裏沒有東西」數字作為常數可能不足以防止插入後門。例如,有許多看似無害的簡單數學常數候選,如πe歐拉-馬斯刻若尼常數、√2、√3、√5、√7、log(2)、(1 + √5)/2、ζ(3)、ζ(5)、sin(1)、sin(2)、cos(1)、cos(2)、tan(1)或 tan(2)等都可能存在問題。對於這些常數,也有幾種不同的二進制表示方法可供選擇。如果使用常數作為隨機種子,還可以選擇大量雜湊函數候選值,如SHA-1、SHA-256、SHA-384、SHA-512、SHA3-256或SHA3-384。

如果對象選擇程式中有足夠多的可選參數,組合爆炸英語combinatorial explosion就能使可能的設計選擇和表面上簡單的常數的範圍足夠大,以便自動搜尋各種可能性,從而建造出具有所需後門特性的對象。[21]

參考資料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.