对于动画版本ðð»
介绍
数据完整性是指在传输过程中未修改或损坏数据的验证。在解释TLS之前,这是一个重要的话题。让我现在说明它。
假设Jayp和Joe正在通过公共互联网进行交流。另外,假设他们俩都有一个对称键,他们已经决定使用的对称加密算法。
在这里,杰伊普(Jayp)发送了他的加密信息。加密意味着机密性,并且没有人能理解该消息,因为它是加密的。
但是,这并不意味着恶意的chady也不能干扰信息并更改信息,即使他不了解它。
轻弹攻击ð -
例如,有一种被称为Bit flipping攻击的攻击。
让我们有一个银行交易示例,以说明这种攻击的损害。
让我说杰伊普(Jayp)向乔发送了100美元。
Chady拦截了这一信息,尽管他不了解一件事,但他会翻转一些位,并将消息传递给银行。
当银行解密消息时,它可能显示为1000美元而不是100 $。
这就是为什么除了加密外,我们还需要确保数据尚未更改。
哈希的问题 -
回到我们以前的示例。
乔如何确保尚未修改该消息? ð昆
标准方法将是哈希。
让我们回想一下通常用于数据完整性的哈希。
-
产生哈希值:
- Jayp将对他打算发送的数据应用哈希函数,并生成固定的大小哈希值,通常称为digest或checkmus”,然后他将发送通过互联网的哈希数据数据。如果更改了一位消息,则将输出不同的哈希。
-
验证过程:
- 当Joe收到Jayp的消息时,他将对消息应用相同的哈希功能。然后,他将计算的哈希与接收的哈希进行了比较。如果两者都匹配,则表明数据尚未被恶意Chady更改。
但是,请考虑一秒钟。您认为这足够了吗?
您认为恶意Chady会做什么来更改数据并仍然通过完整性检查?
毕竟,黑客比这更聪明。
为什么不更改消息并发送更改的哈希?那么乔如何知道哈希和数据已经修改?
HMAC抢救ðChoumð»
这是HMAC的角色。
HMAC代表基于哈希的消息身份验证代码。这是一种使用哈希功能和秘密键的加密身份验证技术。
HMAC = hashFunc(secret key + message)
对于HMAC工作,Jayp和Joe都应就共享的秘密和哈希功能达成共识。
在TLS握手文章中,您将了解如何确定哈希功能以及如何通过密钥交换协议生成秘密密钥。
HMAC演示
让我们现在看到区别。
现在,哈希函数与加密文本和秘密一起应用。
之后,生成的Mac或消息身份验证代码将沿加密文本发送。
让我们说Chady拦截并更改消息及其Mac。
请记住,Chady没有秘密密钥,并且将在没有任何其他信息的情况下放置加密消息。
Joe收到消息后,将使用消息和秘密密钥应用HMAC功能。
消息身份验证代码将无法匹配,Joe将知道该消息已被篡改。
HMAC是许多Mac算法之一
所以,让我们解释有关Mac和HMAC的一些细节,因为我希望您熟悉所有术语,不要感到困惑。
HMAC是一种生成消息身份验证代码的算法。
如所述,消息身份验证代码除了完整性之外还提供了真实性,因为它使用了秘密密钥,并且它主要与常规哈希相差。
。存在许多用于计算消息身份验证代码的算法,而HMAC只是其中之一。
其他示例包括例如poly1305。
消息身份验证代码也用于身份验证的加密,我们将在单独的文章中谈论。
hmac优势在tlsðð»
HMAC在TLS握手中使用,尤其是在完成的消息中,在此消息中,整个握手的Mac都发送到了。
HMAC适用于其许多优点:
- 灵活性:HMAC可以使用各种哈希功能,例如SHA-256或SHA-3
- 标准化:HMAC已被广泛认可和标准化,它具有自己的RFC(RFC2104),于1997年2月发布。这使HMAC更易于在不同的环境中实施。它也可以在VPN和IPSEC,Web应用程序API和付款系统中使用。
- 安全性:由于秘密密钥引入的其他复杂性。
HMAC安全性
HMAC的安全性已在加密社区进行了广泛的分析。事实证明,HMAC结构提供了诸如伪随机的安全属性,这意味着HMAC的输出类似于随机序列,并且不可预测性,从而确保即使已知输入也很难预测输出。
。通过使用HMAC算法(称为iPad和OPAD)中定义的固定字符串来实现这种额外的随机性,用于修改密钥,以及一系列步骤,包括XOR操作,数据附加和应用Hash函数要实现最终Mac。
RFC特别强调了抵抗生日攻击的抵抗力,这是一项攻击,旨在查找两条消息。
HMAC为什么内部修改密钥
好吧,为什么HMAC究竟会在内部修改键?
好吧,在密码学中,键需要随机,以便攻击者可以检测任何模式,因为模式使黑客更容易弄清楚钥匙。
这就是为什么iPad和OPAD值是HMAC计算过程中的关键组成部分,以确保以特定方式混合和处理共享的秘密密钥,增强密钥的随机性并增强其安全性消息身份验证过程。
就是这样!希望您喜欢这个关于TLS的迷你系列。不要忘记还检查animated versionð