基本概念
密码学(Cryptology)是一个研究信息保密的学科,可分为密码编制学(Cryptography)和密码分析学(Cryptanalysis)
- 密码编制学:研究密码编制的科学
- 密码分析学:研究密码破译的科学
密码技术的基本思想:对数据进行伪装以隐蔽信息,使未授权者不能理解它的真实含义。
一些名词定义:
伪装:对数据进行一组可逆的数学变换
密文:伪装后的数据
明文:伪装前的原始数据
加密:伪装的过程,在加密密钥的控制下进行
加密算法:用于对数据加密的一组数学变换
解密:合法收信者接收到密文后,实行与加密变换相逆的变换,去掉伪装恢复明文的过程
解密算法:用于解密的一组数学变换
发展阶段
- 古代加密方法、古典密码(手工阶段、机械阶段):1949年以前,在这个阶段算法和秘钥都是保密的,秘钥空间较小,信息的安全性主要依赖于对于加密和解密算法的保密。
- 近代密码(计算机阶段):1949年—1975年
- 现代密码:1976年至今
密码体制
一个密码系统,通常简称为密码体制,由五部分组成:
- 明文空间M:全体明文的集合
- 密文空间C:全体密文的集合
- 密钥空间K:全体密钥的集合。其中每一个密钥K由加密密钥Ke和解密密钥Kd组成,即K=<Ka,Kb>
- 加密算法E:一族由M到C的加密变换
- 解密算法D:一族由C到M的解密变换
注:解密变换就是加密变换的逆运算
衡量密码体制的安全性的基本准则:
- 计算是安全的
- 可证明是安全的
- 无条件安全的
密码体制的分类
- 根据Ke和Kd
(1) 传统密码/对称密码/单密钥密码:一个密码体制的Ke = Kd,或由其中一个很容易推出另一个
(2) 公钥密码/非对称密码/双密钥密码:Ke != Kd,或在计算上Kd不能由Ke推出,这样Ke公开也不会损害Kd的安全 - 根据明密文的划分和密钥的使用不同
(1) 分组密码体制
将明文M分为一系列明文块Mi,i=1,2,…,n,通常每块包含若干位或字符,并且对每一块Mi都用同一个密钥Ke进行加密。即
M = (M1,M2,……,Mn)
C = (C1,C2,……,Cn)
其中
Ci = E(Mi,ke) i == 1,2,…,n
(2) 序列密码体制
将明文和密文都划分为位或字符,并且对于明文序列中的每一个位或字符都用密钥序列中的对应分量来加密,即
M = (M1,M2,……,Mn)
Ke = (Ke1,Ke2,……,Ken)
C = (C1,C2,……,Cn)
其中
Ci = E(Mi,ke) i == 1,2,…,n
密码分析
如果能够根据密文系统地确定出明文或密钥,或能够根据明文—密文对来系统地确定出密钥,则我们说这个密码是可破译的。
密码分析者攻击密码的方法主要有一下三种:
- 穷举攻击:暴力破解,基本攻击,代价大
- 数学攻击:代价小,对技术要求高
- 物理攻击:硬件形式,侧信道攻击(旁路攻击)
根据密码分析者可利用的数据资源来分类,可将密码攻击类型分为四种:
- 仅知密文攻击(唯密文攻击):根据截取的密文进行破译,对密码分析者最不利根
- 已知明文攻击(有内奸):已经知道某些明文—密文对来破译密码,密文中有可推测或已知的部分明文
- 选择明文攻击(暂时控制加密机):密码分析者能够选择明文并获得相应的密文,对密码分析者最有利
- 选择密文攻击(暂时控制解密机):密码分析者能够选择密文并获得相应的明文,对密码分析者十分有利
理论基础
商农建议采用扩散、混淆和乘积迭代的方法来设计密码。
- 扩散:将每一位明文和密钥数字的影响扩散到尽可能多的密文数字中,理论下每一位明文和密钥数字都是一位密文的函数
- 混淆:使密文和密钥之间的关系复杂化。关系越复杂,密文和明文之间、密文和密钥之间的统计相关性就越小。