RFC2085 具有重放预防的HMAC-MD5 IP 身份验证

553次阅读  |  发布于5年以前

组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:ouyang@china-pub.com 译者:() 译文发布时间:2001-11-7 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本 文档的翻译及版权信息。

Network Working Group                                         M. Oehler Request for Comments: 2085                                          NSA Category: Standards Track                                      R. Glenn                                                                    NIST February 1997

重复性攻击保护的HMAC-MD5 IP 认证 (RFC2085――HMAC-MD5 IP Authentication with Replay Prevention) 本文作用 本文详细说明了一种互联网标准传输协议,本文需要讨论和改进的建议。要得到规定和本协议 的状态,请参考最新版的"Internet Official Protocol Standards" (STD 1),本文的散布不受限制。 摘要 本文讲述了一种用在IP认证报头(IP Authentication Header)上的keyed-MD5转换,这种特殊 的转换基于[HMAC-MD5],另外还详细说明了一种防止重复攻击的选项。

目录     1. 绪论 1 1.1 术语 1 1.2 Keys 2 1.3 数据长度 2 2. 数据包格式 2 2.1重复攻击防护 3 2.2认证数据计算 3 3. 安全考虑 4 致谢 4 参考文献 4 作者地址 4

1. 绪论 认证报头(AH)[RFC-1826]提供了IP数据包的完整性检查和认证,本文中指出的变换使用一 种keyed-MD5机制[HMAC-MD5],本机制用到了一种 (key-less) MD5的散列函数,它能够产生报 文摘要。当它和认证报头密钥(AH 密钥)结合时,就能产生认证数据,此值放在AH的认证数据字 段,它也是AH协议提供的完整性检查的基础。 为了防止重复性攻击,必须含有一个重复性攻击防护字段作为变换式选项,此字段是用来防止 一种攻击的,在这种攻击中,消息会保存并且在后来还会被重复利用,代替或者重复原始消息。安 全参数索引(SPI)[RFC-1825]用来决定是否包含AH。 需要熟悉以下下文献:"Security Architecture for the Internet Protocol"(Internet协议安全结构)  [RFC-1825], "IP Authentication Header"(IP认证报头) [RFC-1826],以及"HMAC-MD5: Keyed-MD5  for Message Authentication"(HMAC-MD5:Keyed-MD5消息认证) [HMAC-MD5]。 所有要符合或同“IP认证报头”一致的应用必须(MUST)执行HMAC-MD5转换。 1.1 术语 本文中用来定义每一个需求的重要性的单词都用大写表示,包括:

      - SHOULD 它和"RECOMMENDED"表示在某些特定的环境下有有效的原因可以忽略此条款,但是必须知 道充足的含义,并且在采取不同的方法前必须慎重考虑。   1.2 Keys “认证报头(AH)密钥”是通讯双方共享的秘密,这种“密钥”不是传统意义上的“密钥”, 认证报头密钥同传输的数据一起进行散列运算,以确保侵犯者不能复制认证数据。 即使认证报头密钥不是一种密钥,但是仍然涉及了密钥的基本应用,考虑到算法和用以产生输 出的大部分数据是公开的,转换的强度就决定于密钥的独立映射(需要很健壮)以及认证数据IP 包,因此应用中就需要尽可能多次的改变认证报头密钥,密钥需要随机的选择或者由一个随机的种 子在一个强大的密钥随机发生器中产生。[HMAC-MD5] 所有的支持AH协议的应用都必须(MUST)支持128位或短一些地密钥长度,应用能够 (SHOULD)支持更长的密钥将会更好。推荐密钥长度选择为输出散列值长度,在MD5中是128 位,定为其它长度则必须考虑下面提到的相关的事项。 零长度的密钥是禁止使用的,应用中必须防止在变换式中使用它,因为零长度的密钥必能提供 有效的认证。密钥长度小于128位的也强烈被阻止使用,因为这会降低函数的安全性能,大于128 位的也可以使用,但是增长的部分不一定会增加函数的安全性能。在密钥产生的随机性有怀疑的情 况下推荐使用长于128位的密钥。MD5是在64字节的分组上操作的,长于64字节的密钥第一次 是通过MD5进行散列运算的,结果散列值用来计算认证数据。 1.3 数据长度 MD5产生一个128位的散列值用作认证数据,它自然的64位一行,这样对那些双字长的机器 就不需要任何的补位。 2. 数据包格式

     +---------------+---------------+---------------+---------------+      | Next Header   | Length        |           RESERVED            |      +---------------+---------------+---------------+---------------+      |                              SPI                              |      +---------------+---------------+---------------+---------------+      |                     Replay Prevention                         |      |                                                               |      +---------------+---------------+---------------+---------------+      |                                                               |      +                     Authentication Data                       |      |                                                               |      +---------------+---------------+---------------+---------------+       1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Next Header(下个报头), RESERVED(保留), 和SPI(安全参数索引) 字段在[RFC-1826]中讲 述了。Length(长度) 字段是Replay Prevention(重复防护)字段和32位字的认证数据的长度。 2.1重复攻击防护 Replay Prevention(重复攻击)字段是一个64位的字段,用以确保通讯双方交换的每个数据包 没有重复,每一个IPsec安全协会指定自己协会中是否使用重复性攻击防护,如果不用,那么 Authentication Data(认证数据)字段将直接跟在SPI字段后面。Replay Prevention字段是一个以1 开头的加法计数器。 共享密钥不能用太长的时间以至于计数器超值,也就是使用同一个密钥传输的超过2^64个数 据包,接收时,重复值会增长,应用程序可能会收到的杂乱的包,杂乱包的数量是一个应用细节, 如果支持“杂乱窗口”,应用程序会确定所有的包以前没有收到过,也就是,应用程序最多只会收 到一次数据包。 当目的地址是多点传送地址时,重复性攻击防护在使用,对此多点传送地址不只一个遵循同一 个IPsec安全协会规定的发送者,那么重复性攻击保护功能就不应该(SHOULD NOT)激活,在此 情况下如果要求重复性攻击保护,每个发送者应该有他自己的IPsec安全联盟。 [ESP-DES-MD5]中提供了一个执行32位包的重复窗口的例子的代码,并提供了展示了工作流 程。 2.2认证数据计算 认证数据是认证算法(MD5)的输出值,此值是在整个IP数据报上计算的结果,数据报在转 变中可变的字段和认证数据字段本身必须包含计算前的所有的0 [RFC-1826],如果重复性攻击字段 采用,那它就包含在计算中。MD5的定义和参考程序在[RFC-1321]中讲述了,用‘text’表示 HMAC-MD5要用到的数据,K表示通讯方共享的信息认证私钥,如果K长度超过64字节,那它 必须(MUST)先用MD5进行散列运算,这样,K就是最终的散列值。 我们定义两个固定的不同字符串ipad和opad,(‘i’,‘o’代表输入和输出)如下所示: ipad=字节0x36重复64次 opad=字节0x5C重复64次 为了计算‘text’的HMAC-MD5,我们执行 MD5(K XOR opad, MD5(K XOR ipad, text)) 即: (1) 在K后面补0,使得K的长度是64字节(如果K长16字节,那么       要补48 个0字节0x00) (2) 用ipad异或(XOR) 第一步中产生的64字节的值 (3) 在第二步中产生的64字节的字符串后面不上‘text’ (4) 对第三步产生的值进行MD5运算 (5) 用opad异或第一步中产生的64字节的字符串 (6) 第5步中产生的字符串后面补上第4步中的运算结果 (7) 对第6步中产生的结果进行MD5散列运算,输出结果 在[HMAC-MD5]中对此计算进行了很细致的描述,并带有例子程序代码和性能改进,执行者应 该参考[HMAC-MD5]以得到更多的加密散列函数的技术信息。 3. 安全考虑 此变换的安全性取决于MD5的强度,应用算法的正确性,密钥处理机制和它的应用的安全性, 关联的秘密密钥的强度,还取决于所有特殊系统中应用程序的强度,[HMAC-MD5]中对MD5的优 缺点进行了细致的讨论。    致谢 本文的完成很大程度地基于Hugo Krawczyk.写的文章,使用的格式来源于William Simpson 和  Perry的文章,重复性攻击保护直接引自Jim Hughes的文章。 参考文献    [RFC-1825]    Atkinson, R., "Security Architecture for the Internet                  Protocol", RFC 1852, Naval Research Laboratory,                  July 1995.    [RFC-1826]    Atkinson, R., "IP Authentication Header",                  RFC 1826, August 1995.    [RFC-1828]    Metzger, P., and W. Simpson, "IP Authentication using                  Keyed MD5", RFC 1828, August 1995.    [RFC-1321]    Rivest, R., "The MD5 Message-Digest Algorithm",                  RFC 1321, April 1992.    [HMAC-MD5]    Krawczyk, H., Bellare, M., and R. Canetti,                  "HMAC: Keyed-Hashing for Message Authentication",                  RFC 2104, February 1997.    [ESP-DES-MD5] Hughes, J., "Combined DES-CBC, MD5, and Replay                  Prevention Security Transform", Work in Progress. 作者地址    Michael J. Oehler    National Security Agency    Atn: R23, INFOSEC Research and Development    9800 Savage Road    Fort Meade, MD 20755    EMail: mjo@tycho.ncsc.mil    Robert Glenn    NIST    Building 820, Room 455    Gaithersburg, MD 20899    EMail: rob.glenn@nist.gov RFC2085――HMAC-MD5 IP Authentication with Replay Prevention      重复性攻击保护的HMAC-MD5 IP 认证

2 RFC文档中文翻译计划

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8