前言
目前,越來越多的重要信息是以電子的形式存儲和交換的,信息安全對密碼提出了越來越高的要求。作為密碼學重要組成部分的密碼體制,近十幾年來取得了長足的發展,特別是進入20世紀90年代以來,單鑰密碼新體制大量涌現,公鑰密碼標準化得到了迅速的發展。由于目前難以找到一本系統、全面介紹各種密碼算法的圖書,為使有關研究人員能夠及時掌握各種密碼算法,了解密碼算法的發展新動向,開闊視野、活躍思路,我們編著了《密碼算法應用實踐》。
本書共分4章。
第1章為分組密碼。
分組密碼是現代密碼學中的一個重要研究分支,其誕生和發展有著廣泛的實用背景和重要的理論價值。目前這一領域還有許多理論和實際問題有待繼續研究和完善。這些問題包括如何設計可證明安全的密碼算法、如何加強現有算法及其工作模式的安全性、如何測試密碼算法的安全性、如何設計安全的密碼組件等。
對于分組密碼,早期的研究基本上是圍繞DES進行的,推出了一些類似的加密算法,如LOKI、FEAL、GOST等加密算法。進入20世紀90年代,人們對DES的研究更加深入,特別是差分密碼分析(Differential Cryptanalysis)和線性密碼分析(Linear Cryptanalysis)的提出,使人們不得不研究新的密碼結構。IDEA加密算法打破了DES的壟斷局面,隨后出現了SQUARE、SHARK、SAFER-64等加密算法,從理論上給出了最大差分特征概率和最佳線性逼近優勢的界,證明了密碼對差分密碼分析和線性密碼分析的安全性。
AES的征集掀起了分組密碼研究的新高潮,15個AES候選加密算法反映了當前分組密碼設計的水平,也可以說是近幾年研究成果的一個匯總。
本章介紹的分組算法可以分為3類:第一類是采用菲斯特(Feistel)結構的分組密碼,包括采用非平衡Feistel結構的分組密碼和可看成Feistel結構擴展的SKIPJACK加密算法,以及采用Hash函數和其他密碼函數構建的基于Feistel結構的分組密碼;第二類是采用非Feistel結構的分組密碼;第三類是AES征集的15個候選的加密算法。
由本章給出的分組密碼的加密算法可以看出,分組密碼的基本編碼思想是由一些簡單的基本變換構成層變換,通過多層迭代來達到混亂和擴散的目的的,從而構成強的密碼變換。雖然加密的理論和技術又有了許多新發展,提出了一系列新思想、新技巧,但各種算法的研究和改進都是萬變不離其宗,都是根據使用需求和實現環境,以期使單位時間的計算取得更好的安全效益,是權衡加密算法密度和計算時間開銷的折中。
分組密碼加密的新思想和新發展表現為:一是在體系結構上更靈活多樣;二是在基本運算選擇上更多變快速;三是非線性變換的理論基礎更趨完善;四是層密鑰生成方法變化紛呈;五是分組密碼與其他密碼函數的內在聯系越來越清晰;六是在密碼中設置陷門的研究已深入到分組密碼。
第2章為Hash函數。
20世紀70年代以來,隨著網絡的逐步普及,人類社會步入信息化時代。自此,電子文件大量出現,其安全性一開始就令人擔憂。電子文件的安全問題之一是電子文件的完整性。所謂完整性,主要是指電子文件是否有部分改動、刪除或插入。在社會客觀需求推動下,經過包括密碼學家在內的大批學者的共同努力,創造性地設計出了可滿足消息完整性驗證的密碼算法——Hash函數。
本章主要介紹了典型的基于Hash函數的消息壓縮值算法。
第3章為序列密碼。
序列密碼也稱為流密碼(Stream Cipher),是對稱密碼算法的一種。序列密碼具有實現簡單、便于硬件實施、加解密處理速度快、沒有或只有有限的錯誤傳播等特點,因此在實際應用中,特別是在專用或機密機構中保持著優勢,典型的應用領域包括無線通信、外交通信。
分組密碼以一定大小作為每次處理的基本單元,而序列密碼則是以一個元素(一個字母或一個比特)作為基本的處理單元。序列密碼是一個隨時間變化的加密變換,具有轉換速度快、低錯誤傳播的優點,硬件實現電路更簡單;缺點是低擴散(意味著混亂不夠)、插入及修改的不敏感性。分組密碼使用的是一個不隨時間變化的固定變換,具有擴散性好、插入敏感等優點;缺點是加解密處理速度慢、存在錯誤傳播。
序列密碼涉及大量的理論知識,提出了眾多的設計原理,也得到了廣泛的分析,但許多研究成果并沒有完全公開。這也許是因為序列密碼目前主要應用于軍事和外交等機密部門的緣故。目前,公開的序列密碼加密算法主要有RC4、SEAL等。
本章主要介紹序列密碼體制以及由此反映出來的加密新思想,主要包括:基于Fibonacci序列和CA構建的亂源發生器,FISH加密算法和PIKE加密算法以模232的Fibonacci序列為亂源,是乘同余序列的推廣,CA是移位寄存器(或級間模二加移位寄存器)的推廣,可看成是一種特殊的自動機;采用擇多走/停的新步進方式的密碼體制,PIKE加密算法和A5加密算法的控制信息可來自亂源序列的某些位,也可來自信息的奇、偶校驗位;各種新穎的加密技術,如面向軟件實現的RC4加密算法,與常見的基于線性反饋移存器的序列密碼不同,以一個相對比較大的代替表為基礎,在自身的控制下,通過表中元素的對換進行緩慢的變化,同時生成隨機數序列;序列密碼許多比較成熟的密碼分析方法難以直接用于RC4的密碼分析;與RC4加密算法類似的ISAAC加密算法,但它不用對換,而是采用移位和算術加;TwoPrime加密算法吸取了分組密碼的加密方法,以線性和非線性變換交替復合,以塊為單位進行加亂,每一周期生成64比特的亂數序列;WAKE加密算法和SEAL加密算法是速度極快的序列密碼,用5條指令即可生成1字節的亂數。
第4章為P1363公鑰標準簡介。
公開密鑰加密(Public-Key Cryptography)也稱為非對稱加密(Asymmetric Cryptography),是密碼學發展史上的一次革命。公鑰密碼體制的編碼系統是基于數學中的單向陷門函數。更重要的是,公鑰密碼體制采用了兩個不同的密鑰,對在公開的網絡上進行保密通信、密鑰分配、數字簽名和認證有著深遠的影響。
本章簡要地介紹了P1363公鑰標準,主要包括RSA方案、共同密鑰生成方案、數字簽名方案和校驗方法,以及密鑰交換算法KEA。
本書在編寫過程中,參考了大量關于密碼算法的論文和標準,在此表示衷心的感謝。
鑒于筆者水平有限,加之時間倉促,本書難免會有不足和疏漏之處,敬請廣大讀者批評指正。
作者
2019年7月