Public-Key

實際私鑰和公鑰加密假設不同的原因

  • February 3, 2014

理論密碼學告訴我們,私鑰密碼學(CCA-安全對稱加密、消息驗證碼等)世界中的一切都可以由單向函式建構,而公鑰密碼學(例如,CCA-安全公共-密鑰加密)可以從更強的單向陷門排列概念建構。此外,眾所周知,單向函式和單向陷門置換都可以基於某些數論假設(例如整數分解的難度和離散對數假設)來建構。

然而,在實際私鑰密碼學的情況下,構造幾乎從不基於數論假設,而是基於更多“高級”假設,例如 AES 是偽隨機排列的假設(這裡我’我忽略了一些技術細節,例如必須為無限多的密鑰大小定義偽隨機排列,至少在漸近意義上是安全的)。

相比之下,所有已知的公鑰結構(包括在實踐中使用的那些)似乎都基於數論假設(例如RSADDH),或者在少數情況下,基於線性碼理想格的假設——所有與用於私鑰方案的 AES 或 DES 假設相比,這似乎相當“低級”。

這似乎解釋了為什麼今天在實踐中使用的公鑰加密方案比在實踐中使用的私鑰方案慢幾個數量級。

對於當今實踐中使用的私鑰和公鑰加密方案的假設水平差異,是否有任何解釋?這是由於歷史原因,還是有一些其他的(可能是數學的)原因導致今天沒有有效的公鑰方案基於與 AES 類似的高水平假設?我是否錯過了一些基於如此高水平假設的快速公鑰加密方案?

AES不是單向排列;當然,它是一個排列,但是任何可以應用它的人也可以應用它的逆。粗略地說,AES 解密密鑰與 AES 加密密鑰相同。單向排列就像一個散列函式:每個人都可以在一個方向上計算它,沒有秘密值,但沒有人知道如何在另一個方向上進行計算。

現在,我們不知道如何在不求助於數論的情況下進行單向陷門排列。並非不可能;只是我們沒有找到任何。另一方面,我們有一些非常有效的單向函式(實用雜湊函式)候選者;因此,對於只需要單向函式的系統的實際密碼學,我們使用散列函式,而不是數論。一個基於數論的雜湊函式已經被嘗試過了,但它的性能非常糟糕,以至於沒有人真正對它感興趣。

從歷史上看,整個世界都是只有密鑰的,沒有數論;算法已經演變為製造大量比特的方法。充其量,這些加擾系統中的一些被設計為排列:這些是現代分組密碼。我們似乎知道如何將比特混合在一起以使結果無法解開(即 AES 作為分組密碼似乎是安全的,這並不是因為沒有嘗試破解它);但我們不知道該怎麼做解除加密和解密的權力。換句話說,當我們設計分組密碼時,我們可以注入選擇實際排列的密鑰,但我們不知道如何注入它以使逆排列也不會暴露。我們發現的唯一工具涉及代數和數論,而且它們很慢。

另一方面,相同的代數工具開闢了額外的可能性,即非對稱加密和簽名。這些額外的功能非常有用,以至於我們可以容忍使用這些代數工具所隱含的性能問題。這就是歷史的觀點:問題不在於我們為什麼不用數論工具來製作對稱密碼學;相反,這就是我們使用緩慢、繁瑣的數論工具原因。答案是我們對非對稱加密一無所知。

引用自:https://crypto.stackexchange.com/questions/13266