MAC and HMAC


MAC


简介:通过密钥+算法生成digest(也叫MAC),传送给服务器

消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。

安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要【hash】所获得的一个值,可用于数据源发认证和完整性校验。

 

1. 发送者通过MAC算法计算出消息的MAC值,并和消息一起发给收信者

2. 收信者用同样的MAC算法计算收到的消息的MAC值,并对比两者。

 



HMAC


简介:通过密钥+算法(必须是hash算法,sha-1, md5 ..)生成digest (MAC), 传送给服务器认证。
在服务器认证的使用过程中,消息往往就是 nonce 。

介绍:

Hash-based message authentication code,利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

a specific construction for calculating a message authentication code (MAC) involving a cryptographic hash function in combination with a secret cryptographic key. As with any MAC, it may be used to simultaneously verify both the data integrity and the authenticity of a message.【主要是为了能让人对对方身份正确性和消息有效性进行验证,与消息摘要的最大不同,就是有签名密钥!】

方法:

HMAC(K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))

 

【opad重复0x36,ipad重复0x5C】

通过两次hash两个不同的key来生成。 还没有发现有任何的方法来产生碰撞。

步骤:

First-Hash: H(Ko XOR Ipad || (data to auth))

Second-Hash: H(Ko XOR Opad || First-Hash)

1. 字符含义

  H 代表所采用的HASH算法(如SHA-256) 

  K 代表认证密码

  B 代表H中所处理的块大小,这个大小是处理块大小,而不是输出hash的大小 【SHA-1和SHA-256 B = 64,SHA-384和SHA-512 B = 128 】

  Ko 代表HASH算法的密文 【在密钥K后面添加0来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节0x00) 

  Opad 用0x5a重复B次 
  Ipad 用0x36重复B次

2. Ko与ipad做异或运算。

3. 将数据流text填充至第2步的结果字符串中

4. 用H作用于第3步生成的数据流。 

5. Ko与opad做异或运算。

6. 再将第4步的结果填充进第5步的结果中。 

7. 用H作用于第6步生成的数据流,输出最终结果 

 

应用:

HMAC的一个典型应用是用在“挑战/响应”(Challenge/Response)身份认证中

 

 

1. 客户端向服务器发出一个验证请求

2. 服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为挑战)

3. 客户端将收到的随机数提供给ePass,由ePass使用该随机数存储在ePass中的密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给服务器(此为响应)。

4. 与此同时,服务器也使用该随机数存储在服务器数据库中的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户 

 

安全性:

HMAC算法更象是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的HASH算法

 

1. 使用的密钥是双方事先约定的,第三方不可能知道。能够得到的信息只有作为“挑战”的随机数和作为“响应”的HMAC结果,无法根据这两个数据推算出密钥。由于不知道密钥,所以无法仿造出一致的响应。

2. HMAC与一般的加密重要的区别在于它具有“瞬时”性,即认证只在当时有效




  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值