Lauren与密码学8,消息认证码MAC
来源:互联网 发布:李约瑟难题的答案 知乎 编辑:程序博客网 时间:2024/05/23 13:30
Haorui: Lauren, 还记得我们之前讲的手套订单问题吗?
Lauren: 记得里面有很多安全问题,比如否认、抵赖,伪造、篡改等等。
Haorui: 是的,我们学的Hash函数可以解决篡改问题。
Lauren: 是的,我们只要计算一下订单的Hash值就可以知道这个订单在传送的过程中是否被人篡改了。这样说来,如果传输过程出现错误,Hash函数也可以检测出来。功能强大呀!
Haorui: 我们己经学习了随机数,主要用来作密码使用;对称加密算法、非对称加密算法,用来解决消息的机密性;哈希函数,用来解决消息的完整性。从今天开始,基本上不会讲新的算法了,需是用我们己经学过的知识,互相配合使用,一套套组合拳,解决不同的安全问题。
Lauren: 原来我们学习这么多了!我们的电子邮件系统用上Hash函数就不用担心传输错误,或者被篡改的问题了。
Haorui: 回到手套订单问题,我们来看看伪造问题,某人伪造了一个订单发给工厂。Hash函数能解决吗?
Lauren: 不能,Hash只能解决订单的正确性,也就是完整性问题。也就是说,我们不知道订单是否是从一个合法的客户发出来的。如何确认客户的合法性是个问题。
Haorui: 这有个主意,我们先对消息计算Hash值,然后对Hash值进行加密,比如用DES加密算法进行加密码。再把密码事先告诉工厂。工厂收到订单及加密的Hash值后,对Hash值进行解密到得Hash值后就可以验证订单的完整性了。
Lauren: Good idea. 密码只有工厂与客户知道,所以第三者无法伪造订单了。
Haorui: 这就是我们今天要讲的消息认证码,一个带对称加密的Hash函数。与Hash函数对比一下,就多一个加密步骤。见图8.1:
我们再看看具体的流程,与Hash函数的流程相相似。见图8.2:
- 首先,双方要共享一个对称密钥。
- 客户生成订单,计算HASH值并加密得到MAC值,然后将订单与MAC值发给工厂。
- 工厂对订单计算MAC值并与接收到的MAC对比。
- 两个MAC值相同,则证明订单有效。
Lauren: 所以我们用Hash算法加对称密码系统解决了伪造与篡改两个安全问题。干嘛不直接加密订单发给工厂呢,订单的内容而且是加密的。其它人还看不到。
Haorui: 这个就要加密函数来保证订单的完整性了,它不定能做到。再者,HASH值是固定的,一般在1K字节左右,比较小,加密起来比较快。
Lauren: 明白了,消息认证码算法长啥样?
Haorui: 可以用Hash函数算法来作为消息认证码的算法,我们称之为HMAC。当然也有其它的算法,比如HMAC-MD5, HHAC-SHA1。从命名可以看出,其主体算法用的不同的Hash函数。当然也有基于分组密码的MAC。如数据认证算法(DAA,Dataauthentication Algorithm),基于密码的消息认证码(CMAC,CipherMAC)。DAA是基于DES-CBC算法。CMAC基于AES3DES。
- Lauren与密码学8,消息认证码MAC
- Lauren与密码学1,Who is Lauren?
- Lauren与密码学9,数字签名
- Lauren与密码学3,我是随机数。
- Lauren与密码学4,初识密码系统
- Lauren与密码学5,对称密码系统
- Lauren与密码学7,哈希函数
- Lauren与密码学2,什么是现代计算机密码学?
- 《程序员密码学》之消息认证码算法
- MAC消息认证码
- MAC --消息认证码
- Lauren与密码学6,非对称密码系统
- 密码学基础知识(六)Hash函数与消息认证
- 一些网上密码学资源(5)-消息认证
- 一些网上密码学资源(5)-消息认证
- MAC 码(消息认证码)
- 消息认证码(MAC)的实现原理
- 消息认证码MAC-Message Authentication Code
- spring data redis使用
- 算法竞赛 加速输入输出
- 晶振的应用
- 欢迎使用CSDN-markdown编辑器
- java socket解决半包、粘包问题
- Lauren与密码学8,消息认证码MAC
- 移动APP基于支付宝支付实现用户提现功能
- 管理技能
- Java 中几种修饰符的范围
- windows下mysql5.7.19的安装(压缩包方式)
- git commit 成功了但是push失败了
- 稀疏矩阵十字链表
- CodeForces
- 判断字母,空格,和其他字符个数的程序