📜  Internet协议身份验证标头

📅  最后修改于: 2021-08-24 08:21:02             🧑  作者: Mango

先决条件:Internet协议版本6(IPv6)标头
IP身份验证标头用于提供无连接完整性和数据源身份验证。身份验证标头提供了两个主要优点,

  • 消息完整性–
    这意味着,来自源的消息不会被修改。
  • 源身份验证–
    这意味着,源正是我们所期望的数据源。

当数据包从源A发送到目的地B时,它由我们需要发送的数据和报头组成,报头由有关数据包的信息组成。身份验证标头验证数据的来源以及有效载荷,以确认在源和目标之间的传输期间是否在两者之间进行了修改。

但是,在传输过程中,某些IP标头字段的值可能会发生变化(例如跃点数,选项,扩展标头)。因此,无法从Authentication标头保护此类字段的值。身份验证标头不能保护IP标头的每个字段。它为必须保护的字段提供保护。

认证头:
可能会出现一个问题,即IP头如何知道相邻的扩展头是身份验证头。好吧,IP报头中有一个协议字段,它告诉数据包中存在的报头类型。因此,IP标头中的协议字段应具有值“ 51”,以便检测身份验证标头。

  1. 下一个标题–
    下一个报头是8位字段,用于标识身份验证报头之后的报头类型。如果是TCP,UDP或目标标头或其他扩展标头,它将存储对应的IP协议号。同样,此字段中的数字4将指示IPv4,数字41将指示IPv6,数字6将指示TCP。
  2. 有效负载长度–
    有效负载长度是Authentication标头的长度,在这里我们使用比例因子4。无论标头的大小是多少,将其除以4,然后再减去2。我们减去2,因为我们没有计算Authentication标头的前8个字节,这是上面给出的图片的前两行。这意味着在计算有效载荷长度时,我们不包括“下一个报头”,“有效载荷长度”,“保留”和“安全参数”索引。例如,假设有效载荷长度为X。那么(X + 2)* 4将是原始身份验证标头长度。
  3. 预订的 –
    这是一个16位字段,发送方将其设置为“零”,因为该字段保留供将来使用。
  4. 安全参数索引(SPI)–
    它是任意的32位字段。这是一个非常重要的字段,用于标识属于当前连接的所有数据包。如果我们正在将数据从源A发送到目标B。A和B都已经知道它们将要使用的算法和密钥。因此,对于身份验证,将需要仅源和目的地知道的哈希函数和密钥。 A和B之间的秘密密钥通过Diffie Hellman算法进行交换。因此,用于连接的安全性参数索引的哈希算法和秘密密钥将得到修复。在数据传输开始之前,需要建立安全性关联。

    安全协会中,双方需要在数据交换之前进行通信。安全关联告诉正在使用的安全参数索引,哈希算法和秘密密钥。

  5. 序列号 –
    这个无符号的32位字段包含计数器值,该值对于每个发送的数据包增加1。每个数据包都需要序列号。它将从0开始,直到232 – 1,并且没有回绕。说,如果所有序列号都结束了,并且所有序列号都没有剩下,但是由于不允许使用,我们无法回绕。因此,我们将终止连接并再次重新建立连接,以恢复序列号0中剩余数据的传输。基本上,序列号用于停止重放攻击。

    在重播攻击中,如果同一封邮件发送两次或更多次,则接收方将无法知道这两种邮件是否都是从同一来源发送的。说,我要从接收者和入侵者之间索要100美元,并要求另外100美元。接收方将无法知道两者之间有入侵者。

  6. 验证数据(完整性检查值)–
    身份验证数据是可变长度字段,其中包含数据包的完整性检查值(ICV)。使用散列算法和密钥,发送方将创建消息摘要,并将其发送给接收方。另一方面,接收方将使用相同的哈希算法和秘密密钥。如果两个消息摘要均匹配,则接收方将接受数据。否则,接收方将说这之间的消息已被修改,则将其丢弃。因此,基本上,认证数据用于验证传输的完整性。身份验证数据的长度还取决于您选择的哈希算法。

结论 :
身份验证标头如何有用?

  • 消息完整性也称为无连接完整性
  • 源认证
  • 重播攻击防护