- 功能型密碼算法設計與分析
- 黃欣沂 賴建昌
- 9字
- 2023-11-07 17:24:05
第1章 傳統公鑰加密
1.1 引言
為了保障存儲和傳輸數據的機密性,需要對原始數據(稱為明文)進行加密處理,把明文轉換成無實際意義的亂碼(稱為密文)。在公鑰密碼體制以前的整個密碼學歷史中,所有的密碼算法,包括原始手工計算的、由機械設備實現的以及由計算機實現的,大多基于代換和置換兩個基本運算。在基于代換-置換網絡設計的加密算法中,加密數據使用的秘密值(加密密鑰)和解密密文使用的秘密值(解密密鑰)是相同的,這類算法體制稱為單密鑰體制或對稱密碼體制。對稱密碼體制具有加密和解密效率高的特點,但要求雙方在通信前,事先共享一個會話密鑰(也稱為數據加密密鑰),在跨域系統中存在密鑰分配的難題。同時,在多用戶的網絡中,任何兩個用戶之間都需要有共享的會話密鑰,當網絡中有很多用戶時,每個用戶需要管理的會話密鑰數量非常大,存在密鑰管理問題。此外,當接收方Bob收到發送方Alice的電子文檔時,無法向第三方證明此電子文檔來源于Alice,不能實現不可抵賴性。
為了解決對稱密碼體制存在的上述問題,美國斯坦福大學的Whitefield Diffie和Martin Hellman于1976年提出了公鑰密碼體制(Public Key Cryptosystem,PKC)的概念。公鑰密碼體制為密碼學的發展提供了新的理論和技術基礎,公鑰密碼算法的基本工具不再是代換和置換,而是陷門單向函數。在公鑰密碼體制中,采用兩個相關密鑰將加密和解密能力分開,其中一個密鑰是公開的,稱為公鑰,用于加密。另一個密鑰是用戶專用的,因而是保密的,稱為私鑰,用于解密。在已知公鑰的情況下,求解對應的私鑰在計算上是不可行的。公鑰密碼體制也稱為雙鑰密碼體制或非對稱密碼體制。公鑰加密體制的框架如圖1-1所示。

圖1-1 公鑰加密體制的框架圖
設用戶Alice的公私鑰對為(pkA,skA),用戶Bob的公私鑰對為(pkB,skB),其中pkA和pkB分別為Alice和Bob的公鑰,skA和skB分別為Alice和Bob的私鑰。如果Alice需要安全發送消息M給Bob,可利用Bob的公鑰pkB加密消息M并把密文C發送給Bob。當收到來自Alice的密文C后,Bob利用自己的私鑰skB對密文進行解密,進而恢復出明文數據M。一方面由于pkB是公開的,任何人都可以給Bob發送加密數據;另一方面skB只有Bob知道,因此只有Bob才能夠正確解密。公鑰密碼體制有效解決了對稱密碼體制中存在的密鑰管理和密鑰分配問題。
公鑰密碼算法是以非對稱的形式巧妙地使用兩個密鑰。兩個密鑰的使用對保密性、密鑰分配、認證等都有深刻的意義。公鑰密碼體制的出現在密碼學歷史上是一個偉大的革命,它在密鑰分配和數字簽名(數字簽字)領域起到重要作用。本章將著重介紹4個經典且具有代表性的公鑰加密算法并給出對應的安全性分析,包括RSA公鑰加密算法、ElGamal公鑰加密算法、Cramer-Shoup公鑰加密算法和我國自主設計的SM2公鑰加密算法。