《深入浅出HTTPS》读书笔记(16):消息验证码算法分类

MAC算法有两种形式,分别是CBC-MAC算法和HMAC算法。

CBC-MAC算法从块密码算法的CBC分组模式演变而来,简单地说就是最后一个密文分组的值就是MAC值。

HMAC(Hash-based Message Authentication Code)算法使用Hash算法作为加密基元,HMAC结合Hash算法有多种变种,比如HMAC-SHA-1、HMAC-SHA256、HMAC-SHA512。

AD加密模式

使用者结合对称加密算法和MAC算法,提供机密性和完整性的模式也叫作Authenticated Encryption(AE)加密模式。

主要有三种

1)Encrypt-and-MAC (E&M)

这种模式(图2-11)就是对消息分别进行加密运算和MAC运算,然后将两个运算结果结合起来发送给接收方。

2)MAC-then-Encrypt (MtE)

这种模式(图2-12)先对消息进行MAC计算,然后将消息和MAC值组合在一起再进行加密,最终的加密值再发送给接收方。在HTTPS中,一般使用这种模式进行处理,比如AES-128-CBC#PKCS7-HMAC-SHA256模式。

3)Encrypt-then-MAC (EtM)

这种模式(图2-13)先对消息进行加密得到密文,然后对密文再计算MAC值,最终将密文和MAC值组合在一起再发送给接收方。

目前建议使用Encrypt-then-MAC模式。需要强调的是,这三种模式使用者必须分别处理,一旦处理不当,就可能会存在安全风险。

那有没有一种方法在底层直接提供加密和MAC运算呢?无须使用者分别处理加密和MAC运算,这就是AEAD模式。

AEAD加密模式在底层组合了加密算法和MAC算法,能够同时保证数据机密性和完整性,减轻了使用者的负担。

主要有三种模式

1)CCM模式

这种模式使用CBC-MAC(一种MAC算法)算法保证完整性,使用块密码AES算法CTR模式的一种变种进行加密运算,底层采用的是MAC-then-Encrypt模式。

2)GCM模式

GCM(Galois/Counter Mode)是目前比较流行的AEAD模式。在GCM内部,采用GHASH算法(一种MAC算法)进行MAC运算,使用块密码AES算法CTR模式的一种变种进行加密运算,在效率和性能上,GCM都是非常不错的。

3)ChaCha20-Poly1305

ChaCha20-Poly1305是谷歌发明的一种算法,使用ChaCha20流密码算法进行加密运算,使用Poly1305算法进行MAC运算。

相关推荐
仪器科学与传感技术博士2 小时前
python:讲懂决策树,为理解随机森林算法做准备,以示例带学习,通俗易懂,容易理解和掌握
python·算法·决策树
歪歪1002 小时前
HTML 如何转 Markdown
开发语言·chrome·python·程序人生·html
小指纹2 小时前
cf--思维训练
c++·算法·macos·ios·objective-c·cocoa
小指纹2 小时前
河南萌新联赛2025第(四)场【补题】
数据结构·c++·算法·macos·objective-c·cocoa·图论
菜鸟555552 小时前
河南萌新联赛2025第四场-河南大学
c++·算法·思维·河南萌新联赛
小坏坏的大世界2 小时前
C++中多线程和互斥锁的基本使用
开发语言·c++
路由侠内网穿透2 小时前
本地部署 SQLite 数据库管理工具 SQLite Browser ( Web ) 并实现外部访问
运维·服务器·开发语言·前端·数据库·sqlite
王者鳜錸2 小时前
PYTHON从入门到实践-18Django模版渲染
开发语言·python·django
F_D_Z2 小时前
【感知机】感知机(perceptron)模型与几何解释
学习·算法·支持向量机
Hard but lovely3 小时前
C++ STL--> vector的模拟实现!
开发语言·c++