在密碼學中,「我的袖子裡沒有東西」數(英語:Nothing-up-my-sleeve number)是指那些在構造上沒有隱藏屬性嫌疑的數字。它們用於建立密碼函式,例如密碼雜湊函式和密碼。這些演算法通常需要隨機常數來進行混合或初始化。密碼學家希望以一種方式選擇這些值,以證明這些常數的選擇不是出於惡意目的的,例如為演算法建立一個後門。[1] 使用一種幾乎沒有調整空間的方法生成數字可以消除這些擔憂。一個例子是使用圓周率π的初始數字作為這些常數。使用小數點後數百萬位的π的數字通常不被認為可信,因為演算法設計者可能會因為可以利用它而選擇小數點的特定起點,這創造了一個隱藏的弱點。[2]
此條目翻譯自英語維基百科,需要相關領域的編者協助校對翻譯。 (2024年1月16日) |
實數(例如π、e和無理根)在其進位制中的各個位上的數字被認為以相等的頻率出現(參見正規數)。這些數可以被視為柯氏亂數的對立極端,因為後者看起來是隨機的,但資訊熵非常低。使用這些數的動機源於1975年美國政府的資料加密標準早期引發的爭議。該標準因其S盒中使用的常數沒有提供解釋而受到批評(儘管後來發現它們經過精心選擇以防止當時尚未公開的差分密碼分析攻擊)。因此,人們需要一種更透明的方法來生成用於密碼學的常數。[3]
「我的袖子裡沒有東西」是一句和魔術師有關的習語,他們在表演魔術之前總會先展開袖子以展示其中沒有東西。
例子
- 隆納·李維斯特使用三角正弦函式生成MD5雜湊值。[4]
- 美國國家安全局使用小整數的平方根生成「安全雜湊演算法」SHA-1中使用的常數。SHA-1也使用
0123456789ABCDEFFEDCBA9876543210F0E1D2C3
作為初始雜湊值。[5] - Blowfish加密演算法使用π的二進制表示(不含首位的3)來初始化其金鑰表。[2]
- RFC 3526描述了用於網際網路金鑰交換的質數,這些質數也是從π生成的。
- NewDES密碼的S盒源自美國獨立宣言。[6]
- 進階加密標準評選過程候選DFC的所有常數,包括S盒的所有條目,都來自e的二進制展開。[7]
- ARIA金鑰表使用1/π的二進制展開。[8]
- RC5密碼的金鑰表使用e和黃金分割率的二進制數字。[9]
- BLAKE雜湊函式是SHA-3競賽的入圍作品之一,它使用一個由16個常數字組成的表,這些常數字是π的小數部分的前512位元或1024位元。[10]
- KASUMI密碼的金鑰表使用
0x123456789ABCDEFFEDCBA9876543210
匯出修改後的金鑰。[11] - Salsa20系列密碼在塊初始化過程中使用 ASCII 字串
expand 32-byte k
作為常數。[12] - Bcrypt使用字串
OrpheanBeholderScryDoubt
作為初始字串。[13][14]
反例
- Streebog的雜湊函式S盒號稱是隨機生成的,但經過逆向工程後證明,它是透過演算法生成的,存在一些弱點。[15]
- 資料加密標準的常數由美國國家安全局提供。但後來發現,這些常數並非隨機,而是讓加密演算法能夠抵禦當時尚未公開的差分密碼分析攻擊。[3]
- 雙橢圓曲線確定性隨機位元生成器是NIST推薦的密碼學安全偽亂數生成器,2007年受到批評,因為推薦用於該演算法的常數選擇方式可能允許其作者根據過去生成值的樣本預測未來的輸出。[1] 2013年9月,《紐約時報》報道:「美國國家安全局前承包商史諾登洩露的內部備忘錄顯示,美國國家安全局介入了2006年NIST標準中使用的一種亂數生成器,其中包含一個供美國國家安全局使用的後門」。[16]
- P曲線是NIST為橢圓曲線加密制定的標準。這些曲線的係數是透過雜湊無法解釋的隨機種子生成的,例如:
- P-224:
bd713447 99d5c7fc dc45b59f a3b9ab8f 6a948bc5
. - P-256:
c49d3608 86e70493 6a6678e1 139d26b7 819f7e90
. - P-384:
a335926a a319a27a 1d00896a 6773a482 7acdac73
.
- P-224:
儘管沒有直接關係,但在雙橢圓曲線確定性隨機位元生成器後門曝光後,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。
如果對象選擇程式中有足夠多的可選參數,組合爆炸就能使可能的設計選擇和表面上簡單的常數的範圍足夠大,以便自動搜尋各種可能性,從而建造出具有所需後門特性的對象。[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.