天天看點

第二十七個知識點:什麼是對稱密碼加密的AEAD安全定義?

第二十七個知識點:什麼是對稱密碼加密的AEAD安全定義?

AEAD

在之前的部落格裡,Luke描述了一種被廣泛使用的操作模式(ECB,CBC和CTR)對塊密碼。我們也可能會想我們加密方案的完整性,完整性意味着接收到的消息就是發送的消息,在信道中沒有意外修改或者惡意修改,真實性意味着接收者确實是收到了發送者的消息。為了使用這些特性,我們通常使用消息認證碼(MAC),那些基于hash的消息認證碼叫做HMAC。把這兩個密碼原語放在一起不是平凡的:為了獲得IND-CCA安全方案,我們需要遵循加密然後MAC的範式,使用安全的加密方案和一個強不可僞造的MAC,這意味着在密文上進行MAC。(這裡和這裡給出了更多的資訊關于“加密和MAC”,“MAC後加密”,關注為了我們要避免它們。“AD”指的是可變長度的相關資料(Associated Data),如標頭,我們通常期望真實性和完整性,但不希望這個可選元件具有保密性。更多的閱讀和例子,看Adam Langley's 部落格關于這個話題的。

實際上傳統的EtM,MtE,MaE都是有一些問題的,設計時要用真正的AEAD算法。
  • AES-128-GCM
  • AES-192-GCM
  • AES-256-GCM
  • ChaCha20-IETF-Poly1305
  • XChaCha20-IETF-Poly1305
在具備 AES 加速的 CPU(桌面,伺服器)上,建議使用 AES-XXX-GCM 系列,移動裝置建議使用 ChaCha20-IETF-Poly1305 系列。

IND-CCA

下周的部落格将會深入研究IND-CCA2安全在一個公鑰加密的上下文。在真随機數下的IND-CCA2(和IND-CCA1)安全定義是給攻擊者一個加密oracle的權利,加密oracle的密鑰是固定的。輸入消息m,傳回一個加密過的\(E_k(m)\)或者傳回一個\(E_k(\$^{|x|})\),同時也給一個解密oracle給出密文\(c\),然後傳回\(D_k(c)\)。然後攻擊者進行區分。在2004年,Shrimpton展示了一種新的被稱為IND-CCA3的概念,解密oracle對一個無法解密的oracle會傳回一個不合法的符号,與之前考慮過的AE概念相同,其中隐私和真實性/完整性的概念分别進行研究。這一觀察結果被納入羅格威和希姆普頓的論文中,研究密鑰包裝問題和确定性認證加密。有關關聯資料影響的更多資訊,請參見此處和此處。

CCM和GCM

實際上,大量組織使用CCM模式和GCM模式。CCM模式是一種計數模式和CBC-MAC使用MAC-then-Encrypt方法構造的。GCM是塊密碼的計數模式和基于多項式的哈希函數GHASH使用Encrypt-then-MAC構造的。CCM相對沒有效率,每次需要兩個塊密碼的調用,同時CCM也不是線上的(每次在處理消息之前需要知道消息的長度)。GCM在這篇文章裡也有一些缺點:http://eprint.iacr.org/2011/202

CAESAR competition

凱撒密碼競賽目前正在進行中,目的是在經過徹底的學術公衆審查的基礎上,選擇一組經過認證的密碼進行推薦。主要目标之一是讓更多的研究人員思考這樣一個重要的主題,而第一輪送出的大量論文(性質各異)表明,這一目标已經實作。第二輪的候選名單預計将于下周公布,送出的名單可以在AE Zoo(https://aezoo.compute.dtu.dk/doku.php)找到,由DTU的一些研究人員管理。

競賽已經結束。(2020年)

繼續閱讀