《程序员密码学》之消息认证码算法
来源:互联网 发布:app用户行为数据采集 编辑:程序博客网 时间:2024/05/19 17:50
消息认证码(MAC)算法是许多在线协议中相当关键的一个组件。它用来保证交易的双方或多方之间消息的认证。
MAC算法的行为有点像散列哈数,它在一个不固定输入大小的基础上执行映射,并产生一个固定大小的输出,但散列和MAC不能互换,散列是一个基于离线环境下具有高强度的安全性的算法,就是说在离线环境下攻击者可以提前对不同消息进行预计算产生一个足够大的表来进行查找。而MAC是基于在线环境的,攻击者不能通过预计算攻击因为MAC中通信双方共享了一个密钥,这个密钥被混入状态,攻击者要进行攻击必须让受害者参加进来给出一些消息或者除非MAC本身被攻破。
带固定秘钥的MAC作为一个散列函数来使用是不安全,散列作为一个MAC去使用也是不安全的(一般情况下)
MAC的目标是保证共享一个密钥的双方或多方在通信时能够具有检测传输的消息是否被修改的能力。
MAC算法运作过程:
消息发送者使用一个共享密钥和要发送的消息经过MAC算法转换成一个tag(标记),然后将消息明文和标记发送给接收者,接收者使用共享的密钥再次使用MAC计算消息获得一个标记,根据这个计算的标记和发送者发送来的标记比对来确定消息是否被篡改。
其中有2种消息认证码分别为:分组消息认证码(CMAC) 散列消息认证码(HMAC)、
CMAC:
即CBC-MAC
首先用分组密码对消息进行加密,然后使用一个单独的秘钥以CBC模式对密文继续加密最终生成标记
然后有各种更改对CMAC的加强(例如根据最后一组分组是否填充的情况使用不同别的密钥进行加密)
HMAC:
即HASH-MAC
首先使用一个内散列对消息进行散列(内散列,隐藏内部状态),然后在结果前拼接密钥,再次进行散列(外散列),最终生成标记
- 《程序员密码学》之消息认证码算法
- Lauren与密码学8,消息认证码MAC
- 一些网上密码学资源(5)-消息认证
- 一些网上密码学资源(5)-消息认证
- 密码学之DES算法
- 《程序员密码学》之AES加密算法
- 密码学基础知识(六)Hash函数与消息认证
- 密码学之DES/AES算法
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- 密码学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
- JAVA加密解密之消息认证码算法(Message Authentication Code,MAC)
- 第四十七篇: JAVA加密解密之消息认证码算法(Message Authentication Code,MAC)
- [密码学]公开密钥体系之RSA算法
- 密码学之各种加解密算法比较
- 密码学之仿射加密解密算法
- 密码学之凯撒加密解密算法
- 密码学之各种加解密算法比较
- MAC消息认证码
- 基于jsp+java的团购网站毕业设计(优秀毕业论文)
- 图像匹配
- POJ 1001 Exponentiation
- Android 技巧:隐藏 System UI
- 图片渐出效果
- 《程序员密码学》之消息认证码算法
- HDU 1879 最小生成树 prim + kruskal
- 通过SQL语句设置或删除主键——CONSTRAINT用法
- 欧拉回路和哈密尔顿回路
- 图片显示文字效果
- SQLite剖析(9):动态内存分配
- Windows CE系统机制中的调度
- 调试寄存器 原理与使用:DR0-DR7
- 我的开源[不断扩充中]