
現代密碼學的任務已不只限於傳統密碼學的“保密通信”,而是含義更廣的“信息安全”,其中包括“保密通信”、“數據加密”、“數字簽名”等重要的功能,並且其應用也遠遠突破了軍事、外交和捷報等傳統的範圍,開始全面進入經濟、商務、科學、教育等人類社會活動的各個領域,從而對人們的工作和生活有深遠的影響。現代密碼學已成為資訊時代無處不在且不可缺少的信息安全衛士。
與傳統密碼學不一樣,現代密碼學設計時,通常都假定密碼系統的結構是透明的,至少敵人是知道的。這一假設被稱為科考夫原則,是由19世紀荷蘭密碼專家Auguste Kerckhoffs第一时间提出的,該假設之所以在密碼學界被普遍接受,是因為它基本符合實際情況,並且據此能簡化密碼系統的分析、設計和實施。密碼系統的結構叫密碼算法,加密或解密用的關鍵參數叫密鑰。事實上,在日常社會活動領域中使用的密碼算法基本上都是公開的。現代密碼學的安全性主要由密鑰的設計和使用決定。
根據技術特徵,現代密碼學可分為三類。
1.對稱算法
對稱算法是指加密與解密密鑰一樣的密碼算法,又叫密碼密鑰算法或單密鑰算法。該類算法又分為流密碼算法與分組密碼算法。
流密碼算法又叫序列密碼算法,每次加密或解密一位或一字節的明文或密文。
分組密碼算法把明文(密文)分成了確定長度的數據塊(比特塊或字節塊),用同一密鑰和算法加密(解密)每一明文(密文)塊後得到等長的密文(明文)塊,然後把密文(明文)塊按順序組合起來最終得到密文(明文)。
常見的流密碼算法包括RC4;常見分組密碼算法有DES、IDEA、RC2、AES、SM4等。
2.非對稱算法
非對稱算法是指加密與解密密鑰不一樣的密碼算法,從一個密鑰推導出另一個密鑰很難,又叫公開密鑰算法或公鑰算法。該算法用一個密鑰加密,另一個密鑰解密,其中加密密鑰可公開,又叫公開密鑰或公鑰;解密密鑰一定得保密,又叫私有密鑰或私鑰。
常見的非對稱算法有RSA、DH、DSA、ECDSA、ECC、SM2等。
3.摘要算法
摘要算法是一種把隨意長的輸入數據轉換為確定長的輸出數據的密碼算法,又叫散列函數、哈希函數或雜湊函數、單向函數等。摘要算法產生的確定長度的輸出數據叫摘要值、散列值或哈希值。摘要算法沒有密鑰。
常見的摘要算法有MD5、SHA1、SM3等。
