Encrypt-then-Mac
来源:互联网 发布:赤峰市用友软件销售 编辑:程序博客网 时间:2024/06/05 06:48
Encrypt-then-Mac
本文约定如下:
M:明文数据
E:加密函数
H:hash函数
MAC:MAC函数
C:密文
标准密码学中,对 认证+加密 算法,有如下四种处理方式:
1:Hash-then-Encrypt
2:Mac-then-Encrypt
3:Encrypt-then-Mac
4:Encrypt-and-Mac
1:Hash-then-Encrypt,是先对数据进行hash运算,然后添加在数据末尾,最后使用加密算法进行加密,用公式就是 C = E(key, M || H(M)),显然他具有保密性和数据完整性。他需要一个key。
2:Mac-then-Encrypt,与 Hash-then-Encrypt 基本相同,不同点就是hash函数被替换为Mac函数,TLS协议中,指的的HMAC(没见过用CMAC的)。公示 C = E(key1, M || MAC(key2, M))。像HMAC这样的MAC,是需要key的,所以Mac-then-Encrypt是需要2个key的。对于熟悉TLS的人来说,这个应该是最熟悉的加密模式了。
3:Encrypt-then-Mac,与上面那个相反,先MAC后加密,先说公式,
C1 = E(key1, M)
C2 = MAC(key2, C1)
C = C1 || C2
这个模式普遍用于IPSEC中。
4:至于Encrypt-and-Mac,这个普遍用于SSH中,公式
C = E(key1, M) || MAC(key2, M)
他们各自对应的接收端的解密认证,逆过来曹组就可以了,这里不再赘述。
rfc7366 中规定了 Encrypt-then-Mac 在TLS、DTLS协议中的使用。
Once the use of encrypt-then-MAC has been negotiated, processing of
TLS/DTLS packets switches from the standard:
encrypt( data || MAC || pad )
to the new:
encrypt( data || pad ) || MAC
至于这么计算MAC,这么计算pad,一切如原先的协议规定一致,没有变化。当然,GCM模式加密本身自带了认证功能,所以一般只有CBC模式下,才会开启这个功能。所以,Encrypt-then-Mac在TLS协议中存在时间估计不会太长。
RFC中还规定,在renegotiation中,不能由当前的Encrypt-then-Mac降级到Mac-then-Encrypt,因为安全人员认为Encrypt-then-Mac比Mac-then-Encrypt安全的多,第一次我手都能使用更安全的Encrypt-then-Mac,renegotiation时肯定也会支持。
对于是否启用Encrypt-then-Mac,由两方hello报文中的拓展协商决定。
- Encrypt-then-Mac
- mac php 安装 encrypt 扩展
- Encrypt
- c# encrypt
- c# encrypt
- MD5 Encrypt
- my Encrypt
- MD5 Encrypt...
- perl encrypt
- RSA ENCRYPT
- encrypt apk
- Encrypt加密
- GreenDao Encrypt
- Lets Encrypt
- Lets Encrypt
- Openssl Encrypt
- decrypt与encrypt
- C# DES Encrypt
- jsp_ ServletContext对象
- 学习python第一步
- Windows在Anaconda下安装Tensorflow Keras 支持Python3.6
- client-go的使用及源码分析
- Javascript之DOM简单编程
- Encrypt-then-Mac
- mysql(5.7.17)字符集设置(character_set/collation)
- 《Spark SQL大数据实例开发》9.2 综合案例实战——电商网站搜索排名统计
- 让你看懂聚类分析
- web.xml 中的 servlet 和 servlet-mapping 标签
- httpClient入门到精通-------连接池的关闭
- kinect v2_bodyindex
- leetcode 525. Contiguous Array 统计1和0数量相等的最长子数组
- C++之cmath常用库函数一览