傳統的加密方法
傳統的加密方法是加密、解密使用同樣的密鑰,由傳送者和接收者分別保存,在加密和解密時使用,採用這種方法的主要問題是密鑰的生成、注入、存儲、管理、分發等很複雜,特別是隨著用戶的增加,密鑰的需求量成倍增加。在網路通信中,大量密鑰的分配是一個難以解決的問題。例如,若系統中有n個用戶,其中每兩個用戶之間需要建立密碼通信,則系統中每個用戶須掌握(n-1)個密鑰,而系統中所需的密鑰總數為n*(n-1)/2 個。對10個用戶的情況,每個用戶必須有9個密鑰,系統中密鑰的總數為45個。對100個用戶來說,每個用戶必須有99個密鑰,系統中密鑰的總數為4950個。這還僅考慮用戶之間的通信只使用一種會話密鑰的情況。如此龐大數量的密鑰生成、管理、分發確實是一個難處理的問題。
公開密鑰密碼體制
1976年美國史丹福大學的兩名學者迪菲和赫爾曼提出了公開密鑰密碼體制的概念。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密算法E和解密算法D也都是公開的。雖然秘密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK。
與傳統的加密方法不同,該技術採用兩個不同的密鑰來對信息加密和解密,它也稱為"非對稱式加密方法。每個用戶有一個對外公開的加密算法E和對外保密的解密算法D, 它們須滿足條件: (1)D是E的逆,即D[E(X)]=X; (2)E和D都容易計算。 (3)由E出發去求解D十分困難。 從上述條件可看出,公開密鑰密碼體制下,加密密鑰不等於解密密鑰。加密密鑰可對外公開,使任何用戶都可將傳送給此用戶的信息用公開密鑰加密傳送,而該用戶唯一保存的私人密鑰是保密的,也只有它能將密文復原、解密。雖然解密密鑰理論上可由加密密鑰推算出來,但這種算法設計在實際上是不可能的,或者雖然能夠推算出,但要花費很長的時間而成為不可行的。所以將加密密鑰公開也不會危害密鑰的安全。 數學上的單向陷門函式的特點是一個方向求值很容易,但其逆向計算卻很困難。許多形式為Y=f(x)的函式,對於給定的自變數x值,很容易計算出函式Y的值;而由給定的Y值,在很多情況下依照函式關係f(x)計算x值十分困難。例如,兩個大素數p和q相乘得到乘積n比較容易計算,但從它們的乘積n分解為兩個大素數p和q則十分困難。如果n為足夠大,當前的算法不可能在有效的時間內實現。
特點:
(1) 傳送者用加密密鑰 PK 對明文 X 加密後,在接收者用解密密鑰 SK 解密,即可恢復出明文,或寫為:
Dsk(Epk(X)) = X
解密密鑰是接收者專用的秘密密鑰,對其他人都保密。
此外,加密和解密的運算可以對調,即
Epk(Dsk(X)) = X
(2) 加密密鑰是公開的,但不能用它來解密,即
Dpk(Epk(X)) ? X
(3) 在計算機上可容易地產生成對的 PK 和 SK。
(4) 從已知的 PK 實際上不可能推導出 SK,即從 PK 到 SK 是“計算上不可能的”。
(5) 加密和解密算法都是公開的。