在密碼學領域,透明度和信任至關重要。長期以來,無暗藏數字(nothing-up-my-sleeve numbers)被認為是證明密碼演算法中不存在後門的黃金標準。然而,最近的社群討論揭示出人們對這些表面上透明的常數是否真正提供了它們所承諾的安全保證的擔憂日益增加。
常見的"無袖數字"(nothing-up-my-sleeve numbers)來源:
- 數學常數(π、e、φ)
- 三角函式(sin、cos、tan)
- 質數的平方根
- 著名常數的二進位制展開
- ASCII 字串
- 歷史文獻
透明性的假象
最初看似是確保密碼學完整性的萬無一失的方法,實際上可能會帶來虛假的安全感。社群專家指出,大量可能的數學常數選擇,再加上各種實現方式,會創造出意想不到的漏洞。正如一位評論者敏銳地觀察到:
可供選擇的方式還有很多。例如, Ron Rivest 使用了正弦函式。但其實也可以使用餘弦、正切、對數、自然對數等函式。[...] 也許我們應該為下一代雜湊函式採用類似的方法?
組合問題
挑戰在於可能性的組合爆炸。即使是看似透明的數學常數,如 π、e 或各種三角函式,密碼學家也有眾多方法來操作這些值。從不同的二進位制表示到各種雜湊函式,可能的排列組合數量為潛在的漏洞利用創造了足夠的熵。
值得注意的密碼學實現:
- MD2 雜湊:使用 π 進行 S-box 生成
- SHA-1 和 SHA-2 :使用前8個質數的平方根
- Blowfish :使用 π - 3 的二進位制表示
- AES 候選演算法 DFC :使用 e 的二進位制展開
- BLAKE 雜湊:使用 π 的小數部分
歷史教訓
密碼學社群的懷疑態度是有充分理由的,特別是考慮到歷史先例。 DES 演算法就是一個特別有趣的例子,其中 NSA 提供的常數最初看起來可疑,但後來證明是經過精心選擇的,目的是防範當時公眾尚不知曉的差分密碼分析技術。這種可疑常數實際上增強了安全性的雙重性質,為信任方程增添了另一層複雜性。
現代解決方案
討論已經超越了簡單的數學常數。現代方法,例如 Zcash 的分散式計算模型(多個參與者共同貢獻引數生成)代表了一種可能的前進方向。這種協作方式確保只要至少有一個參與者保持誠實,引數就能保持安全。
密碼學社群對這些問題的日益關注突顯了保持警惕的必要性,以及可能需要新的方法來生成真正可信的密碼學常數。展望未來,挑戰將在於找到既能保持透明度又能確保安全性的方法,而不必犧牲其中任何一個。