商用密码 - 常见密码算法的总结 及扩展
2022-12-16 11:45:22 0 举报
AI智能生成
商用密码 - 常见密码算法的总结 及扩展
作者其他创作
大纲/内容
知识扩展
信息安全所面临的威胁与应对这些威胁的密码技术
窃听
(秘密泄露)
机密性
对称密码
公钥密码
篡改
(信息被修改)
完整性
单项散列函数
伪装
(伪装成真正发送者)
认证
消息认证码
否认
(事后称自己没有做)
不可否认性
数字签名
常见
消息认证码MAC
使用 MAC 验证消息完整性的具体过程是:假设通信双方 A 和 B 共享密钥 K,A用消息认证码算法将 K 和消息 M 计算出消息验证码 Mac,然后将 Mac 和 M 一起发送给 B。B 接收到 Mac 和 M 后,利用 M 和 K 计算出新的验证码 Mac*,若 Mac*和Mac 相等则验证成功,证明消息未被篡改。由于攻击者没有密钥 K,攻击者修改了消息内容后无法计算出相应的消息验证码,因此 B 就能够发现消息完整性遭到破坏。
基于 HASH的函数HMAC
利用杂凑算法将密钥、消息作为输入,生成一个消息摘要输出---RFC 2104中定义,由单项散列函数构成消息认证码
使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-384、HMAC-SHA-512。
图解
分支主题
数字签名
数字签名是基于公钥密码体制(非对称密钥密码体制)的。
数字指纹 明文用hash函数-获得一个摘要-——用私钥加密摘要
特征
报文鉴别——接收者能够核实发送者对报文的签名;
报文的完整性——接收者不能伪造对报文的签名或更改报文内容。
不可否认——发送者事后不能抵赖对报文的签名;
图解
分支主题
数字签名使用双钥密码加密和散列函数. 消息用散列函数处理得到消息搞要,再用双钥密码体制的私钥对其进行加密,称为数字签名.
数字签名的原理如下:消息M用散列函数H得到的消息摘要h1=H(M),然后发送方用自己的双钥密码体制的私钥KSA对这个消息摘要进行加密h’=EKSA(h1),形成发送方的数字签名.然后这个数字签名将作为消息M的附件随消息一起发送给消息的接收方,消息的接收方首先从接收方的原始消息M中计算出散列函数值h2=H(M),接着用发送双钥密码体制的公钥KPA对数字签名进行解密DKPA(h’),得h1,如果h1=h2,则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
用表达式表示如下:
发送方: h1=H(M)
h’=EKSA(h1)
接收方: h2=H(M)
h1= DKPA(h’)
如果h1=h2则表明接收方收到的消息确实是发送方发送的,而且还可以确定此消息没有被修改过.
数字信封
明文用对称加密 私钥用非对称加密,它结合了对称加密速度快和非对称加密安全性高的优点
数字信封中采用了单钥加密体制和公钥密码体制。信息发送者首先利用随机产生的【对称密码】加密信息(因为非对称加密技术的速度比较慢),再利用接收方的【公钥】加密对称密码,被公钥加密后的对称密钥被称之为数字信封。在传递信息时,信息接收方要解密信息时,必须先用自己的私钥解密数字信封,得到对称密码,才能利用对称密码解密所得到的信息。
应用示例
为了保证信息传送的真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名。其传送过程如下:
发送者A:
1) A准备要传送的数字信息(明文)
2) A对数字信息(明文)进行哈希(hash)运算,得到一信息摘要。
3) A用自己的【私钥(SK)】对信息摘要进行加密得到A的数字签名,并将其附在数字信息上。(数字签名)
4) A随机产生一个加密钥(DES密钥),并用此密钥对要发送的信息(明文)进行加密,形成密文。(对称加密)
5) A用B的【公钥(PK)】对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给B。(数字信封)
接收者B:
1) B收到A传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。
2) B然后用DES密钥对受到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。
3) B用A的公钥(PK)对A的数字签名进行解密,得到信息摘要。
4) B用相同的has算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。
5) B将收到的信息摘要和新生成的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
发送方用一个随机产生的DES密钥加密原始数据(消息),然后用接受方的公钥加密DES密钥,称为消息的“数字信封”。将数字信封同DES加密的消息一起发送给接受方,接受者在接收到消息后,先用其私钥对“数字信封”进行解密(打开数字信封),得到发送方的DES密钥,再用此密钥去解密消息。只有用接受方的RSA私钥才能打开数字信封,这样确保了接受者的身份。
用表达式表示如下:
发送方:C1=EKDES(M)
C2=EKPB(KDES)
接收方: KDES=DKSB(C2)
M= DKDES(C1)
数字信封既克服了两种加密体制的缺点,发挥了两种密码体制的优点,又妥善解决了密钥传送的安全问题。
分支主题
分支主题
数字证书
"证书 -- 为公钥加上数字签名"
基本证书域
tbsCertificate
版本号
序列号
签名算法
颁发者
有效日期
主体
主体公钥信息
颁发者唯一标识符
主体唯一标识符
扩展项
签名算法域
signatureAlgorithm
签名值域
signatureValue
图解
分支主题
一次性密码本
有一个若干二进制位的信息,我们需要一个跟它长度一样的秘钥。加密的时候,我们会认为信息就是一连串的二进制数,秘钥也是。加密的结果--密文,也是一样的,每一位都是对应的信息位和对应的秘钥位进行异或运算得到的结果。异或是一种常见的逻辑运算。
混合加密
混合密码系统,是将对称密码和公钥密码的优势相结合的方法,解决了公钥密码速度慢的问题,并通过公钥密码解决了对称密码的密钥配送问题。网络上的密码通信所用的SSL/TLS都运用了混合密码系统。
加密步骤
首先,消息发送者要拥有消息接收者的公钥
使用伪随机数生成器生成会话密钥,作为对称密码的密钥,加密消息
用消息接收者的公钥,加密会话密钥
将前2步生成的加密结果,一并发给消息接收者
发送出去的内容包括
用会话密钥加密的消息(加密方法:对称密码)
用公钥加密的会话密钥(加密方法:公钥密码)
解密步骤
消息接收者用自己的私钥解密出会话密钥
再用第1步解密出来的会话密钥,解密消息
图解
分支主题
现代密码
对称密码
分组密码
100
SM1
密钥长度 128
分组长度 128
算法标识符
1.2.156.10197.1.102
1.2 ISO成员团体
1.2.156 中国
1.2.156.197 中国国家密码管理局(又称OSCCA或SCA)
1.2.156.10197 中国密码学标准化技术委员会(CCSTC)
1.2.156.10197.1 密码算法
ESP-SM1
ESP协议的变换ID的定义
128
SM4
密钥长度 128
分组长度 128
加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
算法标识符
1.2.156.10197.1.104
ESP-SM4
ESP协议的变换ID的定义
127
SM7
密钥长度 128
分组长度 128
DES
DES的结构(Feistel 网络)
密钥长度 56
分组长度 64
DES(Data Encryption Standard)是一种单一密钥对称加解密算法。通信主体之间只有一个密钥,该密钥不对第三方公开。但由于密钥长度较短,导致安全性不高。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密,如果Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式作为DES的输出结果。在使用DES 时,双方预先约定使用的”密码”即Key,然后用Key去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输。
在Feistel网络中,加密的各个步骤称为轮( round ),整个加密过程就是进行若干次轮的循环。DES是一种16轮循环的Feistel 网络。
分支主题
3DES
密钥长度 112位或168位
分组长度 64
三重DES(TDEA,Triple Data Encryption Algorithm)算法,这种方法用两个密钥对明文进行三次加密,假设两个密钥是K1和K2,三个步骤:1. 用密钥K1进行DEA加密。 2. 用K2对步骤1的结果进行DES解密。 3. 用步骤2的结果使用密钥K1进行DES加密。这种方法的缺点,是要花费原来三倍时间,从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式了。
AES
密钥长度 128、192、256
分组长度 128
AES(Advanced Encryption Standard,高级加密标准),用于替代DES成为新一代的加密标准。具有128比特的分组长度,并支持128、192和256比特的密钥长度,可在全世界范围内免费得到。其前身为Rijndael(读作:Rain Doll)。Rijndael算法与AES的唯一区别在于各自所支持的分组长度和密码密钥长度的反胃不同。Rijndael是具有可变分组长度和可变密钥长度的分组密码,其分组长度和密钥长度均可独立地设定为32比特的任意倍数,最小值128bit,最大256bit。而AES将分组长度固定为128位,而且仅支持128、192和256位的密钥长度,分别称为AES-128,AES-192,AES-256。
IDEA算法
密钥长度 128
分组长度 64
IDEA(International Data Encryption Algorithm)国际数据加密算法。分组密码IDEA明文和密文的分组长度为64位,密钥长度为128位。该算法的特点是使用了3种不同的代数群上的操作。IDEA共使用52个16位的子密钥,由输入的128位密钥生成。加密过程由8个相同的加密步骤(加密轮函数)和一个输出变换组成。而解密过程与加密过程相同。解密与加密唯一不同的地方就是使用不同的子密钥。首先,解密所用的52个子密钥是加密的子密钥的相应于不同操作运算的逆元,其次,解密时子密钥必须以相反的顺序使用。
主要模式:
ECB--电子密码本(不安全)-将明文分组加密后的结果直接作为密文分组的模式
CBC--密码分组链接-将上一个密文分组先与明文分组求xOR后再进行加密的模式
CFB--密文反馈 ---与一次性密码本相似(明文、随机数比特序列、明文分组、密码算法输出)
OFB输出反馈
CTR计数器-将不断累加的计数器值加密生成密钥流的模式
分支主题
SMSF33分组密码算法
算法标识
1.2.156.10197.1.103
流密码算法
1.2.156.10197.1.200
ZUC
算法标识符
1.2.156.10197.1.201
RC4
现今最为流行的流密码,应用于SSL(Secure Sockes Layer)、WEP。RC4生成一种称为密钥流的伪随机流,它同明文通过异或操作相混合以达到加密的目的。解密时,同密文进行异或操作。其密钥流的生成有两部分组成:KSA(the Key-Scheduling Algorithm)和PRGA(the Pseudo-Random Generation Algorithm)。由于RC4算法加密采用XOR,所以一旦密钥序列出现重复,密文就有可能被破解。推荐使用RC4算法时,必须对加密密钥进行测试,判断其是否为弱密钥。
图解
分支主题
非对称密码
300
RSA (大整数分解)
大素数 p和q 、模数 n、 n的欧拉函数值φ(n)、加密指数e 、解密指数 d、明文 M、密文C
C=M^e mod n
M=C^d mod n
公钥 n,e
私钥 d
算法标识符
RSA算法标识
1.2.840.113549.1.1.1
SHA1的RSA签名
1.2.840.113549.1.1.5
SM3的RSA签名
1.2.156.10197.1.504
例子
分支主题
分支主题
分支主题
ECC椭圆曲线密码编码学
相比RSA等公钥算法,使用较短的密钥长度而能得到相同程度的安全性。预测未来ECC(Elliptic Curve Cryptography)将会取代RSA成为主流的密钥算法。
算法标识符
1.2.840.10045.2.1
ElGamal公钥算法
其完全依赖于在有限域上计算离散对数的困难性。ElGamal的一个不足之处是密文的长度是明文的两倍。而另一种签名算法,Schnorr签名系统的密文比较短,这是由其系统内的单向散列函数决定的。
SM2 (椭圆曲线)
特点
私钥为256比特,公钥是一个点,由两个256比特的坐标表示;密文比明文长96个字节;相对RSA优点:安全性高、密钥短(私钥256)、加解密速度快、签名速度快。
对象标识符
公钥密码算法
1.2.156.10197.1.300
SM2算法标识
1.2.156.10197.1.301
SM2-1签名算法
1.2.156.10197.1.301.1
SM2-2密钥交换协议
1.2.156.10197.1.301.2
SM2-3公钥加密算法
1.2.156.10197.1.301.3
基于SM3和SM2签名
1.2.156.10197.1.501
500后为混合密码
SHA1的SM2签名
1.2.156.10197.1.502
SHA256的SM2签名
1.2.156.10197.1.503
SHA224的SM2签名
1.2.156.10197.1.505
SHA384的SM2签名
1.2.156.10197.1.506
RMD160的SM2签名
1.2.156.10197.1.507
wireshark搜索字符串
algorithm id
快速搜索证书采用的签名算法 SM2 with SM3 1.2.156.10197.1.501
isakmp.exchangetype
快速搜索证书采用的交换类型
tcp.len > 1000
筛选大的流量数据包
ECDSA
椭圆曲线数字签名算法
为验证Alice对消息m的签名(r,s),Bob需要得到Alice所用的椭圆曲线参数D=(p,a,b,G,n,h)以及Alice的公钥Q
SM9
对象标识符
基于SM9身份的公钥算法
1.2.156.10197.1.302
SM9-1签名算法
1.2.156.10197.1.302.1
SM9-2密钥交换协议
1.2.156.10197.1.302.2
SM9-3公钥加密算法
1.2.156.10197.1.302.3
图解
分支主题
杂凑算法
400
完整性:监测数据是否被篡改
MD5
输出长度---128比特
输入长度无限制
算法标识
1.2.840.113549.2.5
SHA-1(160)
输出长度---160比特
2^64-1比特
算法标识
1.3.14.3.2.26
AH协议变换ID的定义
3
SHA-2
SHA-256
输出长度---256比特
2^64-1比特
算法标识
2.16.840.1.101.3.4.2.1
SHA-512
输出长度---512比特
2^128-1比特
算法标识
2.16.840.1.101.3.4.2.3
SM3(输出杂凑值256)
算法标识符
SM3哈希算法
1.2.156.10197.1.401
SM3哈希算法,无密钥
1.2.156.10197.1.401.1
SM3哈希算法,带密钥
1.2.156.10197.1.401.2
AH_SM3----AH协议变换ID的定义
(使用带256比特的SM3密码杂凑算法的HMAC)
20
HASH-哈希值、密码校验、指纹、消息摘要
算法标识符
1.2.156.10197.1.500
Digest signing
1.2.156.10197.1.400
Hash algorithm
单独使用杂凑算法并不能保证数据完整性(传输信道无法保证)
近代密码
机械加密
Enigema
古代密码
置换密码
明文和密文字符一致,仅仅是顺序发生变化
凯撒密码
playfair密码
替换密码
将明文中的单个字符或一组字符,映射为同一语言体系,或非同一语言体系中的单个字符或一组字符。
简单替换密码
栅栏密码
随机数
随机数的用途
生成密钥
生成密钥对
生成初始化向量(IV)
生成你once
生成盐
随机数的性质
随机性-不存在统计学偏差,是完全杂乱的数列。
不可预测性-不能从过去的数列推测出下一个出现的数
不可重现性-除非将数列本身保存下来,否则不能重现相同的数列。
随机序列的定义
满足以下三个条件的序列称之为随机序列
该序列服从均匀分布;
该序列的各个元素相互独立;
从任意的片段序列都不能推断出序列余下的部分
分类
分支主题
Sun-小丑面具
0 条评论
下一页