
早期的加密系統是基於對稱密碼術,其特點是加密和解密密鑰相同,對稱密碼技術的安全性依靠密鑰,泄露密鑰代表所有人均可以對信息加/解密。隨着對稱密碼技術的开展,出現了很多對稱密碼算法。對稱加密算法雖然實現了數據的機密傳輸,但對稱密碼技術的致命缺陷——安全性依靠密鑰,導致對稱加密處理密鑰分發和管理問題。
1976年提出了公鑰密碼技術,奠定了PKI技術的基礎。PKI是利用現代密碼學公鑰密碼理論和技術,在開放的網絡環境下建立的數據加密和數字簽名等信息安全服務的基礎。使用公鑰密碼技術的用戶同時擁有公鑰和私鑰。私鑰不能顺利获得公鑰計算出來,私鑰由用戶持有,公鑰可顺利获得明文的形式發給任意一個人。公鑰密碼技術克服了對稱密碼技術的密鑰交換問題。
由於公鑰密碼技術的實現速度比對稱密碼技術慢得多,且由於任何人均能得到公鑰,公鑰密碼技術對選擇明文攻擊非常脆弱,因此公鑰加密/私鑰解密不適用於數據的加密傳輸。為了實現數據的加密傳輸,公鑰密碼技術為對稱密碼技術给予了安全的密鑰交換機制,數據使用對稱密碼技術加密傳輸。在對稱密碼技術的密鑰協商過程中,密鑰數據使用公鑰加密,在保證私鑰中在安全的基礎上,攻擊者即使截獲信息也不會得到密鑰,這就保證了對稱密碼技術密鑰協商的安全性。
私鑰加密/公鑰解密也可以完成認證和给予數字簽名。公鑰密碼技術可做到進行通信雙方的身份驗證,還能實施數據的簽名和驗證。比如A需要對一個數據進行簽名並保密傳輸,A只需要用自己的私鑰加密該消息就可完成簽名,並用B的公鑰加密消息來實現保密傳輸。A把加密後的數據與簽名一起發送給B,B用A的公鑰解密簽名,然後與數據進行比較,如果相同,簽名確實是簽名,並用自己的私鑰解密密文消息。這樣既保證了消息的保密傳輸,又確保信息確實是由A發送來的。也因為公鑰密碼學的算法很慢。數據簽名通常不直接用私鑰加密數據。數據塊的散列值可顺利获得消息摘要算法計算得到。事實上,消息摘要算法是個單向散列函數。數據塊顺利获得單向散列函數得到一個定長的散列值,攻擊者不會使用哈希值編譯與原始數據塊的哈希值相同的數據塊。數據塊的簽名第一步是計算數據塊的散列值,之後,使用私鑰加密數據塊的哈希值以取得數據簽名。簽名的驗證是計算數據塊的哈希值,之後用公鑰解密數據簽名取得另一個散列值,比較兩個散列值則能斷定數據塊在簽名後是否被改動。
公鑰加密還存在公鑰分配、公鑰/私鑰對和用戶真正的身份綁定問題。PKI引進證書機制克服了此問題。證書是由認證中心,也叫證書组织頒發。CA頒發的證書與公安局頒發的身份證類似。CA頒發的證書上有CA的數字簽名,也就是用自己的私鑰加密的證書。用戶在取得自己的身份證書後,則可用證書表明自己的身份。接收方只需用CA的公鑰驗證用戶證書,若驗證成功,就能認為該證書上的用戶身份與證書上的公鑰的真實性。證書的發佈/驗證防止了冒充身份的可能性。
