VPN 流量的完整性和身份验证由哈希算法来处理。 哈希通过确保未授权人员无法篡改传输的消息来提供数据完整性和身份验证。 哈希也称为消息摘要,是由一串文本生成的一个数字。 哈希比文本自身要小。 它是通过使用公式生成的,这种方式使一些其他文本几乎不可能生成同一哈希值。

原始发送方生成消息的哈希值,并将其随消息本身一起发送。 接收方解析消息和哈希值,根据收到的消息生成另一个哈希值,然后比较这两个哈希值。 如果它们相同,那么接收方就有理由确信原始消息的完整性。

在图中,Gail 向 Alex 发出了 100 美元的 EFT。 Jeremy 已拦截并篡改了此 EFT,将自己显示为收件人且金额为 1000 美元。 在此情况下,如果使用了数据完整性算法,则哈希值不匹配,交易无效。

VPN 数据在公共 Internet 上传输。 如图所示,数据被拦截并篡改的可能性是存在的。 为防范这种威胁,主机可以为消息添加哈希值, 如果传输的哈希值与收到的哈希值匹配,则表明消息的完整性得到了保持; 但如果不匹配,则表明消息已被篡改。

VPN 使用消息验证码来验证消息的完整性和真实性,并不使用任何额外的机制。

基于哈希的消息验证代码 (HMAC) 是使用哈希函数进行消息验证的机制。 使用密钥的 HMAC 是一种可确保消息完整性的数据完整性算法。 HMAC 有两个参数,一个消息输入和一个只有消息发送方和预期接收方知道的密钥。 消息发送方使用 HMAC 函数生成一个值(消息验证代码),该值通过压缩密钥和消息输入而形成。 该消息验证码随消息一并发送。 接收方使用与发送方所用的相同的密钥和 HMAC 函数计算收到的消息中的消息验证代码。 然后接收方将计算的结果与收到的消息验证代码进行比较。 如果两个值匹配,则表明消息已正确接收,接收方便可确信发送方是共享该密钥的用户社群的成员。 HMAC 的加密强度取决于底层哈希函数的加密强度、密钥的大小和质量以及哈希输出的长度(以位表示)。

常见的 HMAC 算法有以下两种:

注意:Cisco IOS 也支持 256 位、384 位 和 512 位的 SHA 实施。