公鑰密碼學


意義:公鑰密碼學的發展是整個密碼學發展歷史中最偉大的一次革命,也許可以說是唯一的一次革命。輪轉機和DES是密碼學發展的重要標志,但是它們都是基於代替和置換這些初等方法上。

提出背景:為了解決傳統密碼中最困難的兩個問題而提出。1、密碼分配;2、數字簽名

特點:1、公鑰算法是基於數學函數而不是基於代替和置換;2、公鑰密碼是非對稱的,使用兩個獨立的密鑰。

傳統密碼和公鑰密碼的區別

   

幾個誤解:

  1、公鑰密鑰比傳統密碼安全

    任何加密方法的安全性依賴於密鑰長度和破譯密文所需要的計算量

  2、公鑰密碼將替代傳統密碼

    由於現有公鑰密碼計算量大,不太可能取代傳統密碼,主要用在密鑰管理和簽名中

 

公鑰密碼體制

  

公鑰算法依賴於一個加密密鑰和一個與之相關的解密密鑰,這些算法具有如下特點:

  1、僅根據密碼算法和加密密鑰來確定解密密鑰在計算上是不可行的;

  2、對於有些算法(如RSA)還滿足以下特點

    兩個密鑰中的任何一個都可用來加密,另一個用來解密。

 

公鑰密碼體制有6個組成部分:明文、加密算法、公鑰、私鑰、密文、解密算法

加密的主要操作步驟如下:

  1、每個用戶產生一對密鑰,其中一個存於公開的寄存器或文件中以供訪問,稱為公鑰。另一個則保持私密,稱為私鑰。每個用戶都可以擁有很多其他用戶的公鑰。

  2、若A要發消息給B,則AB的公鑰來加密消息,由於只有B有私鑰,故而也只有B可以對消息解密,其他任何接受者都不能解密消息。

 

此外公鑰體制還可以用於認證,具體操作如下:

  1、AB發送消息前,先用A的私鑰對消息加密,因為B只有用A的公鑰才能對消息解密,因此該消息可以用於認證源和數據完整性。

  由於對整個消息的認證加密過於耗費計算時間和存儲空間,可以對此進行改進。只對一個稱為認證符的小數據塊進行加密,該認證塊是整個消息的函數,對該消息的任何修改必然會引起認證符的變化,因此用發送方的私鑰對認證符進行加密,加密的結果可作為數字簽名,它能驗證消息源、消息和通信序列的有效性。

 

為了同時保證加密和認證,則需要先用發送方的私鑰進行數字簽名再用接收方的公鑰對整個消息進行加密。不過這種方法的缺點是每次通信中要執行四次復雜的公鑰算法。

 

公鑰密碼體制的應用

一般,公鑰密碼體制的應用分三類:

  1、加密/解密:發送方用接收方公鑰對信息加密

  2、數字簽名:發送方用自身的私鑰對消息“簽名”

  3、密鑰交換:通信雙方交換會話密鑰(傳統密碼的密鑰)

 

對公鑰密碼的要求

  1、接收方B產生一對密鑰在計算上是容易的

  2、已知公鑰和要加密的消息M,發送方A產生相應的密文在計算上是容易的  

    C = E(PUb,M)

  3、接收方B使用私鑰對接收的密文解密以恢復明文在計算上是容易的

    M = D(PRb,C) = D(PRb,E(PUb,M))

  4、已知公鑰PUb,攻擊者要確定私鑰PRb在計算上是不可行的

  5、已知公鑰PUb和密文C,攻擊者要恢復明文M在計算上是不可行的

  6、對於部分公鑰密碼應用,還應滿足加密和解密函數的順序可以交換

    M = D(PUb,E(PRb,M)) = D(PRb,E(PUb,M))

事實上,要滿足上述條件即是要找到一個單向陷門函數。單向陷門函數滿足下列性質:

  若kX已知,求Y = fk(X)  容易計算

  若kY已知,求X = fk-1(Y) 容易計算

  若Y已知但k未知,則求X = fk-1(Y)是不可行的

 

以上計算上容易是指:一個問題可以在輸入長度的多項式時間內得到解決,即若輸入長度為n位,計算的時間復雜度為naa為常數。

計算上不可行是指:解決一個問題所需時間比輸入規模的多項式增長更快。如輸入長度是n位,計算時間復雜度是2n

 

公鑰密碼分析

  1、窮舉攻擊:解決辦法是使用長密鑰,但是長密鑰將使加密/解密變慢(公鑰密碼加密/解密時間對密鑰長度的非線性增長),因此限制了公鑰密碼的應用。

  2、根據公鑰計算私鑰:目前未能做數學上的證明確定該攻擊不可行,但也沒有可行的辦法做這樣的攻擊。

  3、窮舉消息攻擊(公鑰體制特有):根據消息本身的特點(公鑰經常用來傳遞傳統密碼的密鑰)來進行對消息的窮舉攻擊,如發送56DES密鑰。解決辦法就是在要發送的消息后附加一個隨機數。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM