意義:公鑰密碼學的發展是整個密碼學發展歷史中最偉大的一次革命,也許能夠說是惟一的一次革命。輪起色和DES是密碼學發展的重要標誌,可是它們都是基於代替和置換這些初等方法上。算法
提出背景:爲了解決傳統密碼中最困難的兩個問題而提出。1、密碼分配;2、數字簽名安全
特色:1、公鑰算法是基於數學函數而不是基於代替和置換;2、公鑰密碼是非對稱的,使用兩個獨立的密鑰。函數
傳統密碼和公鑰密碼的區別加密
幾個誤解:spa
一、公鑰密鑰比傳統密碼安全blog
任何加密方法的安全性依賴於密鑰長度和破譯密文所須要的計算量數學
二、公鑰密碼將替代傳統密碼隨機數
因爲現有公鑰密碼計算量大,不太可能取代傳統密碼,主要用在密鑰管理和簽名中密碼
公鑰密碼體制方法
公鑰算法依賴於一個加密密鑰和一個與之相關的解密密鑰,這些算法具備以下特色:
一、僅根據密碼算法和加密密鑰來肯定解密密鑰在計算上是不可行的;
二、對於有些算法(如RSA)還知足如下特色
兩個密鑰中的任何一個均可用來加密,另外一個用來解密。
公鑰密碼體制有6個組成部分:明文、加密算法、公鑰、私鑰、密文、解密算法
其加密的主要操做步驟以下:
一、每一個用戶產生一對密鑰,其中一個存於公開的寄存器或文件中以供訪問,稱爲公鑰。另外一個則保持私密,稱爲私鑰。每一個用戶均可以擁有不少其餘用戶的公鑰。
二、若A要發消息給B,則A用B的公鑰來加密消息,因爲只有B有私鑰,故而也只有B能夠對消息解密,其餘任何接受者都不能解密消息。
此外公鑰體制還能夠用於認證,具體操做以下:
一、A向B發送消息前,先用A的私鑰對消息加密,由於B只有用A的公鑰才能對消息解密,所以該消息能夠用於認證源和數據完整性。
因爲對整個消息的認證加密過於耗費計算時間和存儲空間,能夠對此進行改進。只對一個稱爲認證符的小數據塊進行加密,該認證塊是整個消息的函數,對該消息的任何修改必然會引發認證符的變化,所以用發送方的私鑰對認證符進行加密,加密的結果可做爲數字簽名,它能驗證消息源、消息和通訊序列的有效性。
爲了同時保證加密和認證,則須要先用發送方的私鑰進行數字簽名,再用接收方的公鑰對整個消息進行加密。不過這種方法的缺點是每次通訊中要執行四次複雜的公鑰算法。
公鑰密碼體制的應用
通常,公鑰密碼體制的應用分三類:
一、加密/解密:發送方用接收方公鑰對信息加密
二、數字簽名:發送方用自身的私鑰對消息「簽名」
三、密鑰交換:通訊雙方交換會話密鑰(傳統密碼的密鑰)
對公鑰密碼的要求
一、接收方B產生一對密鑰在計算上是容易的
二、已知公鑰和要加密的消息M,發送方A產生相應的密文在計算上是容易的
C = E(PUb,M)
三、接收方B使用私鑰對接收的密文解密以恢復明文在計算上是容易的
M = D(PRb,C) = D(PRb,E(PUb,M))
四、已知公鑰PUb,攻擊者要肯定私鑰PRb在計算上是不可行的
五、已知公鑰PUb和密文C,攻擊者要恢復明文M在計算上是不可行的
六、對於部分公鑰密碼應用,還應知足加密和解密函數的順序能夠交換
M = D(PUb,E(PRb,M)) = D(PRb,E(PUb,M))
事實上,要知足上述條件便是要找到一個單向陷門函數。單向陷門函數知足下列性質:
若k和X已知,求Y = fk(X) 容易計算
若k和Y已知,求X = fk-1(Y) 容易計算
若Y已知但k未知,則求X = fk-1(Y)是不可行的
以上計算上容易是指:一個問題能夠在輸入長度的多項式時間內獲得解決,即若輸入長度爲n位,計算的時間複雜度爲na,a爲常數。
計算上不可行是指:解決一個問題所需時間比輸入規模的多項式增加更快。如輸入長度是n位,計算時間複雜度是2n。
公鑰密碼分析
一、窮舉攻擊:解決辦法是使用長密鑰,可是長密鑰將使加密/解密變慢(公鑰密碼加密/解密時間對密鑰長度的非線性增加),所以限制了公鑰密碼的應用。
二、根據公鑰計算私鑰:目前未能作數學上的證實肯定該攻擊不可行,但也沒有可行的辦法作這樣的攻擊。
三、窮舉消息攻擊(公鑰體制特有):根據消息自己的特色(公鑰常常用來傳遞傳統密碼的密鑰)來進行對消息的窮舉攻擊,如發送56位DES密鑰。解決辦法就是在要發送的消息後附加一個隨機數。