一、密码学的四个安全特性
机密性,完整性,认证,不可否认。
- 对称密码算法
加密与解密的密钥相同,分为分组密码算法与序列密码算法。
2.1 分组密码
对明文进行分块加密,优点是加密速度快,安全性高,但是密钥管理困难
常见的分组密码算法:DES,3DES,AES,SM4。
3DES的加密方式是使用DES对明文数据进行加密解密再加密,如果使用的三个密钥完全相同时,向下兼容DES。
DES算法 | AES算法 | SM4算法 | |
算法结构 | 替换后置换 | 替换后置换 | 基本轮函数加迭代 |
分组长度 | 64bit | 128bit | 128bit |
密钥长度 | 64bit | 128/192/256bit | 128bit |
计算轮数 | 16轮 | 10/12/14轮 | 32轮 |
安全性 | 较低(3DES较高) | 较高 | 高于3DES |
2.2分组密码加密模式
2.2.1 ECB模式
明文分组与密文分组是对应的关系,每个明文分组各自独立地进行加密和解密,将明文分组加密后结果直接成为密文分组。
优点:简单、快速,加密和解密都支持并行计算。
缺点:不能隐藏明文模式,攻击者可以通过改变密文分组的顺序,删除密文分组以及替换掉密文分组,就可以达到对明文主动攻击。
2.2.2 CBC模式
前一个密文分组与明文分组进行XOR之后进行加密处理。
优点:不容易主动攻击,适合传输长的报文;
缺点:加密不支持并行。
2.2.3 CTR模式
通过将逐次累加的计数器进行加密来生成密钥流,每个分组对应一个逐次累加的计数器,每次加密都会生成一个不同的值(nonce)作为计数器的初始值。
优点:不需要填充,密文与明文中的比特相对应,支持并行加解密;
缺点:主动攻击者反转密文分组的某些比特,明文中对应的比特受到干扰。
2.2.4 CFB模式
加密:对初始化向量IV进行加密后与第一个分组的明文进行异或操作得到第一组密文,之后对第一组密文进行加密后与第二组明文进行异或,获得第二组密文,以此类推进行明文数据的加密。
解密:对初始化向量IV进行加密后与第一个分组的密文进行异或操作得到第一组明文,同时第一组密文作为第二组数据的的IV进行加密后,与第二组密文进行异或获得第二组明文数据,以此类推得到明文数据。
2.2.5 OFB模式
加密:对初始化向量IV进行加密后与第一组明文数据进行异或处理得到第一组密文,之后对加密后的IV进行加密与第二组明文数据异或得到第二组密文数据,以此类推加密明文。
2.2.6 CCM模式和GCM模式
CCM模式的加密是CTR加密模式和CMAC认证算法的混合使用(MAC-then-Encrypt)方法构造的,加密和在MAC算法中共用一个密钥。计算消息的MAC值后,用CTR模式进行分组加密。
GCM消息在CTR模式下加密,GCM模式使用两个函数:带密钥的Hash函数GHASH,以及计数器每次增1 的CTR模式的GCTR。
2.3 序列密码算法
序列密码算法:通过伪随机数发生器生成密钥流,依次对明文的每个字节或者比特流进行异或加密。常见的序列密码算法有ZUC,RC4等。
与分组加密不同的是明文与密钥的长度可以为任何长度。
2.4 消息认证码
消息认证码的输入包括任意长度的消息和通信双方共享的密钥,输出固定长度的MAC值。
要计算MAC必须持有共享密钥,没有共享密钥的人就无法计算MAC值,消息认证正是利用这一性质来完成认证的。
三、哈希密码算法
使用哈希密码算法可以将任意长度的明文变成固定长度的字符串,主要作用是用于消息摘要和签名,对消息的完整性进行校验。
哈希密码算法的特点:
- 单向性
- 无碰撞性
算法 | 散列长度(单位:bit) | 输入长度(单位:bit) |
MD5 | 128 | 无限制 |
SHA-1 | 160 | 264 |
SHA3 | 无限制 | 无限制 |
SM3 | 256 | 264 |
SHA2(SHA-256) | 256 | 264 |
SHA2(SHA-224) | 224 | 264 |
SHA2(SHA-384) | 384 | 2128 |
SHA2(SHA-512) | 512 | 2128 |
四、公钥密码算法
使用公钥加密,使用私钥解密。公钥密码算法包括RSA,ECC,SM2。
4.1 RSA
RSA算法的本质是基于两个大素数的乘积分解的数学问题,密钥长度为1024bit,2048bit。
4.2 ECC
ECC算法基于的数学难题是,已知多倍点与基点求解倍数的椭圆曲线离散对数问题。
在有限域中,椭圆曲线的多倍点运算构成了一个单向的函数。
4.3 SM2
SM2椭圆曲线公钥密码算法是我国自主设计的椭圆曲线公钥密码算法,私钥长度为256bit,公钥长度为512bit。
4.4 公钥加密
公钥加密算法规定发送者使用接收者的公钥对消息进行加密,接收者使用自己的私钥对消息进行解密。
4.5 数字签名
数字签名算法由签名者使用私钥对数据哈希值进行签名,由验证者使用公钥对数据哈希值进行验签。
正常应用时提供以下服务:
- 数据来源的确认;
- 数据完整性的验证;
- 签名者有不可抵赖的保证
4.6 DH密钥协商
Diffie-Hellman密钥协商算法,并不是用来加密的,而是解决密钥配送问题。用户之间通过交互消息传递,使用自己的私钥和对方的公钥来商定一个密钥。
五、证书
5.1 概念
通过第三方的可信机构对发送者的公钥进行签名得到的。
最广泛使用的证书标准格式是由ITU(International Telecommunication Union)和ISO(International Organization for Standardization)制定的X.509规范。
5.2 PKI
PKI公钥基础设施就是为了有效的使用证书而制定的一系列规范和协议的总称。
PKI的组成主要有三部分:
5.2.1 用户
用户是PKI使用者,可以借助CA来发布自己的公钥和获取别人公钥。
5.2.2 认证机构
认证机构就是CA,对证书进行管理。
5.2.3 仓库
用户注册之后生成的证书都存在仓库中,供其他的用户获取使用。
5.3 对证书的攻击
- 在公钥注册之前替换公钥;
- 窃取认证机构的私钥;
- 伪装成认证机构;
- CRL时间差攻击。