Processing math: 100%

认证相关

  • 782 字

认证

Hash与MAC

Hash

  • Hash函数是一种单向函数,在可承受时间内无法逆向破解。
  • Hash函数只用来做摘要,来验证数据的完整性。

    MAC

    MAC主要分为两种,CMAC(基于块密码)和HMAC(基于Hash函数)。

    CMAC

    CMAC往往使用AES作为对称密码,在这个过程中,往往将原数据分为若干个大小相同的块(通常为128位),然后对每个块进行加密。在一种算法下,我们可能会通过对所有的块进行异或操作得到最终的MAC,而在其他的情况下我们可能通过其他方式来获取MAC值。

    HMAC

    HMAC是一种基于Hash函数的MAC.在一些算法下,我们会使用一个双方共享的秘钥K分别与内外两层填充值进行异或操作,将内层填充值接在元数据之后,然后对其进行HASH运算,得到内部哈希值。随后,将外层填充值接在内部哈希值之后,再次进行HASH运算,得到最终的MAC值。即:HMAC(K,m)=H((Kopad)||H((Kipad)||m))

区别

MAC是用来做消息认证的,即验证数据的完整性和真实性,即接收方可以确认消息是由真正的发送方所发出。而Hash函数只用来做摘要,来验证数据的完整性。但是这依然无法避免接收方伪造消息,并声称这是由发送方发出的,以及发送方声称消息不是由自己发出的情况,因此,我们就引出了签名的概念。

数字签名

发送方使用自己的私钥来对消息进行签名,接收方使用发送方的公钥来验证签名。
由于私钥只由发送方持有,而任何人都可以用公钥来验证签名,因此发送方无法抵赖,相似的,接收方也无法伪造签名。
在保密程度最高的情况下,我们采取: 认证 + 签名 + 保密的方式来维护数据的私有性:
即先计算摘要,随后对摘要进行签名,附在元数据之后,最后再对整个数据进行对称或者非对称的加密。

Ek(M||EKRa(H(M)))
打赏
打赏提示信息
分享
分享提示信息
加载中