楊元原博士國密課堂 · 第一期 | 商用密碼應用安全性評估:Part1. 密碼算法概述
本期主講人
楊元原 博士,國家網絡與信息系統安全產品質量監督檢驗中心(公安部第三研究所)商用密碼應用安全性評估負責人
什么是密碼算法?
密碼學(Cryptology)是研究密碼編制、密碼破譯和密碼系統設計的的一門綜合性科學,其包括密碼編碼學和密碼分析學。密碼編碼學(Cryptography)主要研究對信息進行編碼,實現對信息的隱蔽。密碼分析學(Cryptanalytics)主要研究加密消息的破譯或消息的偽造。
在密碼編碼學理論中,密碼算法是研究的核心。常見的密碼算法包括對稱密碼算法、公鑰密碼算法和密碼雜湊算法三個類別。習慣上,對稱密碼算法簡稱為“對稱密碼”,公鑰密碼算法簡稱為“公鑰密碼”,密碼雜湊算法簡稱為“雜湊算法”。
商用密碼是經我國密碼管理機構認可的、用于對不涉及國家秘密內容的信息進行加密保護或者安全認證所使用的密碼技術和密碼產品。目前發布的商用密碼算法涵蓋了對稱密碼算法、公鑰密碼算法和密碼雜湊算法三大類。
(1)對稱密碼算法
對稱密碼算法加密過程與解密過程使用相同的或容易相互推導得出的密鑰,即加密和解密兩方的密鑰是“對稱”的。對稱密碼算法還可以細分為分組密碼算法和流密碼算法。
分組密碼算法(block cipher):分組密碼首先對明文消息根據分組大小進行分組,再將明文分組、密鑰和初始向量(如果有)一起作為輸入,通過分組加密算法直接輸出密文分組(摘自《商用密碼應用與安全性評估》)。
流密碼算法(stream cipher):又稱序列密碼。序列密碼將密鑰和初始向量作為輸入,通過密鑰流生成算法輸出密鑰流(也稱擴展密鑰序列),然后將明文序列和密鑰流進行異或,得到密文序列(摘自《商用密碼應用與安全性評估》)。
常用的對稱密碼算法包括:
(2)公鑰密碼算法
公鑰密碼算法又稱非對稱密碼算法,既可用于加密和解密,也可用于數字簽名,打破了對稱密碼算法加密和解密必須使用相同密鑰的限制,很好地解決了對稱密碼算法中存在的密鑰管理難題。公鑰密碼算法包括公鑰加密和私鑰簽名(數字簽名)兩種主要用途。
常用的公鑰密碼算法包括:

(3)雜湊算法
密碼雜湊算法也稱作“散列算法”或“哈希算法”,現在的密碼行業標準統稱其為密碼雜湊算法,簡稱“雜湊算法”或“雜湊函數”。密碼雜湊算法對任意長度的消息進行壓縮,輸出定長的消息摘要或雜湊值。
常用的雜湊算法包括:

哪些是密碼學常用術語?
密碼學中經常用到以下幾個術語:
明文:被隱蔽的消息稱作明文,通常用m表示。其英文為Message和Plaintext。明文就是沒有被加密的消息。
密文:將明文隱蔽后的結果稱作密文或密報,通常用c表示。其英文為Ciphertext。密文就是加密后的結果。
加密(Encryption):將明文變換成密文的過程稱作加密,該過程表示為。
解密(Decryption):由密文恢復出明文的過程稱作脫密,該過程表示為。
密鑰(key) :控制或參與密碼變換的可變參數稱為密鑰。密鑰又分為加密密鑰和解密密鑰。
加密密鑰是加密時用的密鑰。
解密密鑰是解密時用的密鑰。加、解密密鑰與成對使用。
加密函數與解密函數互為逆函數,即對所有明文,都有

一個密文只能有一個解密結果。
如何設計密碼算法?
(1)密碼算法即使達不到理論上是不可破的,也應當是實際上不可破的;
(2)密碼算法的安全性不依賴于對加密體制或算法的保密,而依賴于密鑰,即滿足柯克霍夫斯(Kerckhoff)假設;
(3)加密算法和解密算法適用于密鑰空間中的所有元素,弱密鑰除外;
(4)密碼算法應易于實現和使用。
關注下期:《商用密碼應用安全性評估:Part2. 商用密碼算法》
(來源:國家網安檢測中心)