一次對“電報”開發人員的加密挑戰
這周早些時候,一家叫做“電報”的公司發布了一種“安全”移動信息產品。多安全呢?用他們在常見問題解答中的話來說,“非常安全”。出于好奇,為了 了解更多,我查看了他們的協議,然后立即產生了一些問題和擔憂。然而,當觸及技術細節時,他們用開發人員的學歷(數學博士)來回答,而不是進行一次更講道 理的對話。他們同時謝絕了我以任何形式與之合作的嘗試。
最近,他們選擇了用一次加密破解挑戰賽對安全社區的憂慮作出回應!
加密測試的謬誤
一如既往,這些東西都是不好的信號。通過用他們的方式設計的測試,“電報”開發人員正利用一個作弊的挑戰來欺騙公眾。他們沒有花費時間更新他們的常見問題解答,以說明他們舉辦的比賽是他們絕對安全的堅實證據,即便這基本上已毫無意義。
所以,“電報”開發人員們,作為一種回應,我為你們準備了我自己的加密破解測試。下面展示一個極差的“安全”協議,它在實際環境中面對攻擊連一秒都不能堅持,但是在與“電報”挑戰賽完全一樣的測試框架中卻變得“牢不可破”。
Alice
使用了一個美國國家安全局(NSA)有后門的隨機數生成器,叫做Dual_EC_DRBG,并用它生成一段隨機的32字節值作為超級密鑰,叫做super_secret
。Alice
向Bob發送一條消息請求他的公鑰。Bob
用bob_public
——一個896bit的RSA公鑰——來回復。沒有簽名,沒有驗證,我們僅寄希望于不會有中間人攻擊。Alice
用bob_public
作為公鑰,采用“教科書RSA”(譯者注:主要與生產環境中更安全的“部署用RSA”相比,這種RSA有明顯弱點)加密super_secret
,然后發送給Bob
。沒有任何隨機填充,僅僅是全零填充。e=65537。Alice
和Bob
現在用super_secret
計算出短信密碼message_key=MD2(super_secret)
(我們知道你們喜歡過時的加密方式,所以我們覺得你們應該會喜歡用MD2作哈希函數)。Alice
給Bob發信息時,這樣計算密文:ciphertext = message xor message_key
。陳舊到完美的方案,我們的異或加密方式甚至比你們的70年代加密方式更古老,那么現在會發生什么呢?
這樣,我們就構建了一個信息協議,它使用了NSA有后門的隨機數生成器(Dual_EC_DRBG),弱公鑰算法(896位RSA,沒有填充,沒有簽名,沒有認證),盡可能最差的加密哈希函數(MD2),以及用異或作為加密算法。Alice
和Bob
之間通信的全部副本在下面附錄中,Alice
每天都會把同一條信息發給Bob
一次(正如“電報”公司的測試一樣)。
測試框架完全與“電報”的一樣(沒有中間人攻擊,沒有已知明文攻擊,沒有選擇明文攻擊,沒有選擇密文攻擊,沒有篡改,沒有重放,等等)。如果“電報”想要證明他們的協議比這個絕對的垃圾協議更好,那么我質疑他們能否發布Alice
信息中的明文。如果他們使用他們建立的框架,不能在這個明顯殘缺的協議中展示一次破解,那么,我們就會明白他們的測試在胡說。
按照他們的邏輯,這個測試“證明”了這個殘缺協議令人費解的安全,盡管他所能證明的只是這樣的測試不過是用于騙人的工具。
對于我們其余的人
讓我們來把這件事做好,并且建立一個真正的開源安全異步信息傳輸解決方案,使它不只是騙人的萬靈油或營銷噱頭。
我們在OpenWhisperSystems開發了開源應用TextSecure,并使用了我們認為能夠代表當今安全異步信息傳輸解決方案的精髓。 我們已經與Cyanogen公司合作,將TextSecure協議,透明的集成到他們的產品CyanogenMod中,這給了我們1000萬脫離了像“電 報”這樣不誠信開發者的用戶。
請加入我們這次集體開源的努力。加入郵件列表并幫助開發,設計或者編寫文檔的工作。如果你想要贊助我們,你可以資助我們的BitHub實例,這會給任何無償貢獻者一個獲得贊助的機會,同時我們會提供機會讓你能夠精確的查看你的錢是怎么花的。
不論多少,任何你能提供的幫助都使我們向著一個真正的隱私信息傳輸解決方案更進一步,這會讓如“電報”這樣的騙子更容易消失于大眾視野。這需要我們所有人。
附錄——測試傳輸日志
- Alice: 7075 626c 6963 206b 6579 2070 6c7a
- Bob : 3081 8c30 0d06 092a 8648 86f7 0d01 0101
- 0500 037b 0030 7802 7100 acc3 ec17 9fea
- 0d19 b29d f347 cc62 423c 02d9 e49b ba54
- b9a7 4cea 7c82 0f99 dcf1 c221 fca2 7882
- 0b67 4c7e 8d67 b0e5 4a2b 8873 438d ef0b
- f5d1 6862 fecc ae0d 8736 5e69 cb5e 1346
- f612 49d2 e8ce 1463 8be0 8022 8ef2 01d9
- 6917 6a03 19fc 2a03 ddad aad4 eb28 d655
- 107c 52bf c1ae e800 a501 0203 0100 01
- Alice: 53ce e8e4 f6c4 b330 a6aa 0830 81f2 c5e3
- 00b2 c3ac 0e54 7cee c9a6 be0e 7a54 9bf0
- dbf2 11c2 853a 8443 da72 4dcf 96ad bc9a
- 9373 5f68 6a33 0f5b ea49 f40b 8324 3f8a
- 168a 7d78 3e08 85a1 f774 7c6a 10f9 646c
- a13e d6c3 00b3 670a 2af3 d2d6 b153 20b2
- 5b1c 2fd1 6599 989a 1938 2c18 1acf 68a5
- Alice: 12a6 077f 4625 5523 c23b 2c43 e60f dd39
原文鏈接:http://thoughtcrime.org/blog/telegram-crypto-challenge/