有什麼方法可以測試新密碼系統的安全性嗎?
我研究了橢圓曲線,之後我使用這種技術設計了一個密碼系統。與其他使用因子的密碼系統(如 RSA)相比,我如何測試我的方案的安全性?有辦法確保我的密碼系統可以在商業環境中使用嗎?
給所有初露頭角的密碼學家的一般答案是“不要”。您的系統不安全,如果有人開始使用它,您的系統就會被輕易破壞。
一般給出這個建議是因為它處理了 99% 的情況。99% 的情況下,認為自己有好的算法的人是完全錯誤的。
現在剩下的案例是那些有足夠動力去真正學習密碼學的人。這些人建立的第一個系統仍然很有可能存在重大漏洞,但他們與 99% 的人有很大的不同:他們願意花時間保持客觀並學習如何正確地做到這一點。
對於這些,我引用了一句名言:“任何白痴都可以設計一個他們自己無法破解的密碼系統。” 在其他人攻擊之前,您的系統不會被認為是安全的。理想情況下,大牌需要擊敗它。然而,其中存在一個難題。開發一個壞的密碼系統比證明它是壞的要容易得多。業務中的知名人士沒有時間花在您的算法上,直到他們有理由相信它不是微弱的。
這是雞和蛋的問題。如果沒有大人物同意它是安全的,你就無法讓你的算法被接受,而且大人物不會看它,直到你的算法得到一些認可。你要做什麼?
業界公認的標準答案是,如果有人說“嘿,我認為我有一個很好的密碼算法”,那意義不大,但如果有人為自己命名,那意義就更大了。社區有一種公認的方式來為自己樹立名聲:打破他人的算法。如果你想讓你的算法被認真對待,你首先要證明你是那種知道如何通過展示你可以如何破壞他人來粗暴地攻擊他們的算法的人。
布魯斯·施奈爾(Bruce Schneier)是這些“大人物”之一,他針對這個主題組織了一個線上自學課程。它的標題是A Self-Study Course in Block-Cypher Cryptanalysis。它由幾十個破碎的算法組成,他按照他認為的難度順序仔細排列了這些算法。對於他們中的大多數人來說,任務很簡單:
- 熟悉特定的(損壞的)算法。
- 閱讀有關該算法如何被破壞的論文。
- 按照論文提出的一般路徑,自己破解算法
這是一種“跟隨巨人的腳步”的方法。它向您介紹了各種各樣的攻擊,並鼓勵您不僅要知道它們的存在,還要有處理它們的經驗。這樣,您就可以很好地嘗試將這些攻擊應用於您自己的算法。
一旦你完成了這門課程,試著找到那些還沒有被打破的算法的出版物,但它們還沒有大牌追隨者所需要的惡名。打破這些,發布你的結果。這將開始建立你的名聲,最終當你提出自己的算法時,你會受到重視。
通往安全算法的道路漫長而艱鉅。考慮 SHA-3 採用的路徑:
NIST 雜湊競賽的送出於 2008 年被接受。送出的總數未知,因為有些甚至在進入第一輪之前就被拒絕了。共有 57 份公開送出,其中 6 份被直接拒絕,沒有進一步解釋。
2008 年 12 月 9 日,正式宣布了第一輪 51 份送出。2 月份召開了一次會議,介紹了算法,並公佈了 NIST 第 2 輪的接受標準。該回合於 2009 年 7 月 24 日結束,當時 NIST 公佈了晉級的算法列表:
- 10 種算法在其作者承認存在重大缺陷後正式退出比賽。NIST 認為所有這些算法都“在第一輪中被打破”
- 16 種算法沒有被官方承認,但發現了重大的密碼弱點。NIST 認為所有這些算法都“在第一輪中被打破”
- 11 種算法沒有進入第二輪。這些算法沒有被承認,也沒有明顯的弱點。然而,以競爭效率為名,他們被拒絕了。有些被拒絕是因為他們看起來比其他人更弱(但沒有被破壞)。有些因為性能問題被拒絕了。NIST 不認為這些算法“損壞”。
第 2 輪接受了 14 種算法,低於 53 種。
第二輪要求更高。現在這些算法得到了更多的關注。社區有一年半的時間來攻擊這些算法,並於 2010 年 12 月 10 日公佈了最後一輪的進步
- 9 種算法被拒絕,儘管 NIST 指出在此期間沒有一種算法被認為是“損壞的”。他們只是沒有成功。
- 5個算法被錄取進入決賽。
最後一輪持續了將近 2 年,2012 年 10 月 2 日宣布獲勝者。整個加密社區都在關注這一點,大牌試圖破解這 5 種算法中的每一種。最終,Keccak 被選為勝利者,現在被稱為 SHA-3
因此,當您將系統的安全性與 RSA 等“大牌”加密算法進行比較時,請注意。這是算法要經過的那種審查。如果您喜歡那種刺激,我強烈建議您參加 Schneier 的自學課程。誰知道呢。也許您的算法將是真正安全的百萬分之一!除非你嘗試,否則你永遠不會知道。
順便說一句,您提到您正在使用橢圓曲線。在該特定領域,請務必注意Dual EC DRBG帶來的後門問題。由於 Dual EC 問題的公開程度,這些算法尤其會受到後門的額外審查。您需要格外小心,以確保公眾知道您的號碼是以可接受的準隨機方式選擇的(使用 pi 或 e 的數字很受歡迎)