密码学概况
密码学主要由密码编码和密码分析两个部分组成。密码编码学研究信息等变换处理以实现信息等安全保护,密码分析学研究通过密文获取对应的明文信息。
密码安全性分析
密码分析攻击类型分为五种:
- 唯密文攻击(ciphertext-only attack)。密码分析者只拥有一个或多个用一个密钥加密等密文。
- 已知明文攻击(known-plaintext attack)。密码分析者仅知道当前密钥下的一些明文及所对应的密文。
- 选择明文攻击(chosen-plaintext attack)。密码分析者能够得到当前密钥下自己选定的明文所对应的密文。
- 密文验证攻击(ciphertext verification attack)。密码分析者对于任何选定的密文,能够得到该密文“是否合法”的判断。
- 选择密文攻击(chosen-ciphertext attack)。除了挑战密文外,密码分析者能够得到选定的密文所对应的明文。
密码体制分类
私钥密码体制
又称为对称密码体制,加解密使用相同密钥。n个使用者,则共有n(n-1)/2个密钥。
缺点:密钥分配问题、密钥管理问题以及无法认证源。
典型算法:DES、IDEA、AES
公钥密码体制
又称为非对称密码体制,公钥加密,私钥解密。
优点:分发方便,密钥保管量少,支持数字签名。
公钥密码:RSA体制、ELGamal体制以及椭圆曲线密码体制。
混合密码体制
利用公钥密码体制分配私钥密码体制密钥,双方共用此密钥,然后按私钥密码体制加解密。工作原理如图:
常见密码算法
DES
分组长度64位,秘钥为64比特,实际使用56比特,另外8位用作奇偶校验。进行16轮加密,得到64比特的密文串。三重DES(TDEA)执行3次DES。
计算:设输入为b1b2b3b4b5b6,则以b1b6组成的二进制位行号,b2b3b4b5组成的二进制位列号。行列交点处对应的值转换为二进制作为输出。则当S1盒输入为”111000”时,则第1位和第6位组成二进制串”10”(十进制2),中间四位组成二进制“1100”(十进制12)。查询S1盒的2行12列,得到数字3,得到输出二进制数是0011。需要注意行号和列号从0开始。
IDEA
国际数据加密算法。明文密文64比特,密钥128比特。在PGP中IDEA接受64比特分组加密。
进行 8 轮迭代操作,每轮需要 6 个子密钥,另外还需要 4 个额外子密钥输出变换,所以总共需要 52 个子密钥(从 128 比特密钥中扩展)。
AES
AES明文分组长度至少是128位;秘钥长度也可以是128位,192位,256位。
新版中未作解读,需要了解详情的可以看这篇文章:密码学基础:AES加密算法
RSA
非对称算法。应用于SSH、OpenPGP、S/MIME、SSL/TLS等
步骤:
- 生成两个大素数p和q。
- 计算两个素数的乘机n=pq。
- 计算小于n并且与n互素的整数的个数,即欧拉函数$φ(n)=(p-1)(q-1)$。
- 选取一个随机数e,且满足$1<e<φ(n)$,并且e和$φ(n)$互素,即$gcd(e,φ(n))=1$。
- 计算$d=e^{-1}mod(φ(n))$,即ed=1(modφ(n)),即$d=\frac{kφ(n)+1}{e}$,k为p-1和q-1的最大公约数。
- 保密d、p和q,而公开n和e,即d作为私钥,而n和e作为公钥。
明文M,密文C加解密算法如下
国产密码算法
Hash函数与数字签名
Hash函数
杂凑函数简称Hash函数。用h表示Hash函数:
- h的输入可以是任意长度的消息或文件M
- h的输出的长度是固定的
- 给定h和M,计算h(M)是容易的
- 给定h的描述,找两个不同的消息M1和M2,使h(M1)=h(M2)是计算上不可行的。
Hash算法
将任意长的比特串映射到一个固定长的比特串。
算法:MD5算法、SHA算法、SM3国产算法
数字签名
确认数据的完整性、真实性和抗抵赖性。
满足三个条件:1. 非否认。2. 真实性。3. 可鉴别性。
- 数字签名流程:
- A用Hash函数加密文件形成摘要
- A用自己私钥将消息摘要加密,形成数字签名。
- A将加密摘要和原文一并发给B
- 验证签名流程:
- B使用A相同Hash算法计算文件摘要
- B使用A公钥解密数字签名,恢复A的消息摘要
- 比较两个消息摘要,一致则未被篡改
密码管理与数字签名
密码管理
- 密钥管理
生命周期:密钥生成、密钥存储、密钥分发、密钥使用、密钥更新、密钥撤销、密钥备份、密钥恢复、密钥销毁、密钥审计。
密码管理政策
《商用密码管理条例》:商用密码的科研生产管理、销售管理、使用管理、安全保密管理。
《中华人民共和国密码法》:密码分为核心密码、普通密码、商用密码。
密码测评
对相关密码产品即系统安全行、合规性评估。
机构:商用密码检测中心
数字证书
公钥证书,由认证机构(CA)签名包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
类别:个人证书、机构证书和设备证书
用途:签名证书和加密证书
CA:提供证书的申请、审核、签发、查询、发布以及证书吊销等全生命周期的管理服务。
认证系统主要有目录服务器、OCSP服务器、注册服务器、签发服务器等。
典型的PKI系统由5个基本部分组成:证书申请者、RA注册中心、CA认证中心、证书库和证书信任方。
安全协议
Diffie-Hellman密钥交换协议
在已知C和P的前提下,由d求M很容易,由M求d需指数级次计算。
操作步骤:
- A与B确定一个素数p和整数a,并使a是p的原根,a,p可公开
- A秘密选取整数$a_A$,计算$y_A=a^{a_A}mod(p)$,并把$y_A$发送给B
- B密码选取整数$a_B$,计算$y_B=a^{a_B}mod(p)$,并把$y_B$发送给A,$y_A$和$y_B$即公开值
- A和B双方分别计算出共享密钥K
A:$K=(y_B)^{a_A}mod(p)$
B:
SSH
组成:SSH传输层协议、SSH用户认证协议和SSH连接协议三个子协议。
SSH工作机制7个步骤:
认证服务器的公钥真实性:
- 随身携带含有服务器公钥的拷贝,进行密钥交换前,读入客户端
- 从公开信道下载公钥和指纹,通过电话验证公钥指纹的真实性,用HASH软件生成公钥指纹,进行比较
- 通过PKI技术来验证服务器