⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2412.txt

📁 很多RFC的中文文档
💻 TXT
📖 第 1 页 / 共 5 页
字号:
     Initiator                                           Responder
     ---------                                           ---------
     -> KEYID, INEWKRQ, Ni, prf(sKEYID, Ni)                ->
    <-  KEYID, INEWKRS, Nr, prf(sKEYID, 1 | Nr | Ni)      <-
     -> KEYID, INEWKRP, 0, prf(sKEYID,  0 | Ni | Nr)       ->

     The New KEYID, NKEYID, is Ni | Nr

     sNKEYID = prf(sKEYID, Ni | Nr )

身份,EHA值与NKEYID的绑定就像他们与KEYID绑定一样.

2.10 定义并使用预分配密鈅.
如果一个密鈅与一个绑定的密鈅标识符,状态信息已经由手工分配,则密鈅可以被
用于任何OAKLEY目的.这个密鈅必须与通常的状态信息:ID's,EHA算法绑定.

本地安全策略规定当一个手工密鈅在OAKLEY数据库中.例如,只有特权用户可以
访问与特权ID's绑定的密鈅.一个非特权用户只可以访问与他自己ID绑定的密鈅.

2.11 分配一个外部密鈅.
        一旦一个OAKLEY任务密鈅与辅助的算法建立起来之后,密鈅素材与H算法可以用来  
分配外部生成密鈅,并分配一个KEYID给他.

    如下,KEYID代表一个已经存在地,验证过的OAKLEY任务密鈅,sNEWKEYID代表一个 
外部生成的密鈅素材.

    密鈅交换标识符,是OAKLEY外部模式.密鈅交换有效载荷包含被保护的新密鈅.

Initiator                                                     Responder
  ---------                                                     ---------
  -> KEYID, IEXTKEY, Ni, prf(sKEYID, Ni)                               ->
  <-  KEYID, IEXTKEY, Nr, prf(sKEYID, 1 | Nr | Ni)                     <-
  -> KEYID, IEXTKEY, Kir xor sNEWKEYID*, prf(Kir, sNEWKEYID | Ni | Nr) ->

    Kir = prf(sKEYID, Ni | Nr)
*这个域由密鈅交换有效载荷携带.

每个部分在变换任何密鈅状态信息之前,必须使用KEYID状态中的H函数来确认散列值

响应者通过计算验证有效载荷中的Kir值得异或来恢复新密鈅.

新密鈅标识符,命名密鈅素材sNEWKEYID,是 prf(sKEYID, 1 | Ni | Nr).

要注意这个交换并无需要加密, Hugo Krawcyzk提出这个方法并说明它的优点.
2.11.1 需要考虑的加密强度.
        用来分配外部密鈅的密鈅的强度必须至少等价与外部密鈅的强度.一般的,这样意
味着sKEYID素材的长度必须大于或等sNEWKEYID素材的长度.

    外部密鈅的生成,它的强度,它特定的应用本协议中没有叙述;使用这个密鈅必须
使用一些其它方法来决定这些属性.

    在1996年初,90比特的加密强度必须使用2000比特的模指数群,128比特的加密强
度,必须使用3000比特的模指数群.
3.指定的生成安全联合.
         当一个安全联合定义后,只有KEYID需要给出,响应者将可以查看与KEYID绑定的
状态信息.并可以找到正确的密鈅素材,sKEYID.

     用于IPSEC协议如ESP,AH生成的密鈅是ISAKMP/Oakley解决方案文档的一个主题
 那个文档还描述了怎么样磋商可接受的参数集合与ESP,AH的标识符.以及怎么样精确
 计算密鈅素材用于每一个协议的实例.因为这定义的基本密鈅素材(g^xy),可以用来生
成用于几种ESP,AH实例的密鈅.使用单向函数将g^xy转换为几个唯一的密鈅的技巧
 是一种基本的正确用法.
4.ISAKMP的兼容性.
       OAKLEY使用ISAKMP头部与有效载荷格式,在附录B中有描述,比第四版的草案有明
显得扩展.
4.1 使用已存在的密鈅验证
       在各方都没有合适的公开密鈅机制用来验证对方的情况下,他们可以使用已经手工
分配过的密鈅.在建立了这些密鈅并与OAKLEY中的状态绑定后,他们可以用于验证依赖
    签名的验证模式,例如,野蛮模式.
        
       当一个已存在的密鈅出现在一个提议列表中时,它将由一个ISAKMP_EXISTING的验
证算法指出,这个值将在ISAKMP的RFC文档中被分配.

       当验证方法是ISAKMP_EXISTING,验证授权将有值ISAKMP_AUTH_EXISTING;这个域的
值必须在ISAKMP的RFC文档中定义过,并且不能与任何在IANA注册过的验证授权冲突.

        验证有效载荷将有两个部分:
     
        KEYID用于预存在的密鈅.

        用于被预存在密鈅验证的一方的标识符.

        对应KEYID的状态信息中的伪随机函数H将是签名算法,并且当生成或检测消息数
据的有效性的时候,它将使用对应密鈅(sKEYID)的密鈅素材.

     例如:
        如果已存在的密鈅有一个由KID指定的KEYID与128位的由sKID指定的密鈅素材.
  ,以及H算法命名的HMAC,则为一个数据块生成一个签名.HMAC(sKID,data)的输出将是相
  应的签名有效载荷.
        
        KEYID状态将有本地的及远程KEYID已被指定方的身份.它等于一个本地的安全策
略的实现,来决定何时可以用这样一个密鈅验证其它方.例如,一个已分配密鈅用于两台
    Internet主机A与B可以用来验证所有形如"alice@A,"bob@B "的身份.
4.2第三方验证.
       一个本地安全策略可以限制向信任方的密鈅流通.例如.运行在敏感标签相等的两台
机器上的OAKLEY守护进程.可能希望在与另一个具有相同敏感标签的用户的密鈅交换中成
为唯一的仲裁者.既然这样,就需要有某种途径获取密鈅交换的起源.也就是说,这两个守护
进程的身份将与一个密鈅绑定,并且这个密鈅将形成一个用于密鈅交换的签名
    
       签名有效载荷,在附录B中有叙述,就是用于这个目的的.这个有效载荷命名一个在
目前交换开始以前就存在地一个KEYID.用于这个KEYID的H算法用来计算一个完整性/
    验证值,为所有的前面所叙述的签名有效载荷计算.

       本地安全策略可以规定KEYID's适合于签名未来的交换.
4.3 新群模式.
             OAKLEY使用了一个新的KEI用于定义了一个新群的交换.
5 安全实现注意事项.
通过恢复DiffieHellman计算中使用的指数值得适时的攻击已由Paul Kocher描述.
见[Kocher].为了使这种攻击无效,实现时必须注意扰乱发出模指数的操作顺序.

  采用一个盲因子可以达成这个目标.一个群元素,x,随机的选取.当选定了一个元素
x同时计算出x^(-x)的值,这时,当计算(g^y)^x时,实现将按下列步骤计算"

           A = (rg^y)
           B = A^x = (rg^y)^x = (r^x)(g^(xy))
           C = B*r^(-x) = (r^x)(r^-(x))(g^(xy)) = g^(xy)

        只有当x使用超过100次的时候才有必要使用盲因子.(由Richard Schroeppe估算)
6.OAKLEY解析与状态机.
       有许多条状态路径通过OAKLEY,但他们都遵循从左向右的标准消息域序列模式.
   
      发起者按照如下的顺序决定一个初始化消息:
         
1.	提供一个cookie.这并不是必须得,但对于野蛮模式交换是有帮助的.

2.	选择一个群.具体选择一个著名的群还是选择一个私有群可以略过,
但在两个没有共同状态的OAKLEY守护进程之间的首次交换时一定要
选择一个著名的群(0,意味着没有群).要注意消息中使用的群的标识
符,而不是群的描述符.

3.	如果使用一个非空的群,它必须包含在EHAO中指定的第一个消息.在这
之前它不需要详细说明.

4.	提供加密,散列,验证列表.

5.	使用PFS来隐藏身份.
如果没有使用身份隐藏,则发起者有这个选项.

6.	命名这个身份并包含验证信息.
    
         在验证段的信息依赖于首次验证提议.在这个野蛮交换中,发起者希望响应者可以
接受所有的提议信息,与首次验证方法.验证方法决定了如下的验证有效载荷:

1.	签名方法. 签名将被用于所有的提议信息.

2.	一个公开密鈅加密方法.这个算法将被用来加密一个被请求的响应者的公开密
鈅身份中的随机值.有两种选择,取决于是否使用身份隐藏:

a.	不使用身份隐藏.ID's将以明文形式出现.
b.	使用身份隐藏.一个著名的ID,称为R',将以明文出现在验证有效载荷中.
将有两个ID's与一个随机数尾随其后,这些将用R'的公开密鈅加密.

3.	一个预存在密鈅方法.预存在密鈅将用来加密一个随机值.如果使用了身份隐藏,
则ID's将置于有效载荷中,使用绑定于预存在密鈅的E算法.

响应者可以接受所有的部分的或者完全不接受发起者的消息.

响应者接受了他想接受的所有域.使用与发起者相同的顺序.他可以在任何一步停止
   ,拒绝更进一步的域.(在他响应的消息中是空值.)最小的响应是一个cookie与GRP.

1.	接受cookie.响应者可以选择记录无状态信息直到发起者成功的使用响应者选用 
的cookie应答.如果成功,响应者使用一个cookie,GRP应答.

2.	接受GRP.如果群不被接受,响应者将不应答.响应者可以发送一个错误信息.指出
这个群不被接受.(模太小,未知的标识符.等等).注意" no group"在协议中有两
个不同含义.他可能意味着这个群没有说明.或者没有群可以使用(然而,PFS是不
可能的).
       
3.	接受g^x值.响应者声明他通过将他自己的g^y值包含在他的应答中来接受g^x 
值.他可以通过忽律g^x并在他的应答中赋予g^y值零长度来延迟这个过程.他
也可以发送一个错误消息拒绝g^x值
   
4.	接受每一个EHA列表中的一个元素,通过一个非零提议来说明接受.

5.	如果要求用PFS隐藏身份,则没有更进一步的数据跟随. 

6.	如果验证有效载荷存在,并且如果在提供的验证类中的第一个项目被接受,则响
应者必须确认/解密验证有效载荷以及签名有效载荷中的信息.响应者可以选取
一个随机值并使用与发起者相同的验证/散列算法来应答.

发起者要注意响应者已接受的信息.确认/解密的任何签名,散列,或者加密域并
且如果数据被接受,应答和响应者选择的EHA方法应该一致.发起者通过用于响应者的
cookie的非零值得存在使得他的应答与他初始化消息明显不同.

   签名或prf函数的输出将被编码为一个可变精度的整数见(附录C).KEYID将指出命
名密鈅素材与散列或者签名函数的KEYID.
7信任有效载荷.
       公开密鈅信息的证书可以与ISAKMP文档中定义的信任有效载荷中的OAKLEY消息
绑定.它将是著名的应用于信任状与身份的地设嫩保护选项.

安全考虑.

   本文档的主题就是安全,所以安全考虑在本文档中随处可见.


Author's Address

   Hilarie K. Orman
   Department of Computer Science
   University of Arizona

   EMail: ho@darpa.mil
     
附录A群描述符.

       OAKLEY中使用了三种截然不同的群表示法.每一个群使用它的群操作与表示群元
素的基本域来定义.这三种群表示法分别为,模指数群(称为MODP herein),基于有限域
GF[2^N]椭圆曲线群(称为EC2N herein),基于有限域GF[P]椭圆曲线群称为(ECP herein)
    对于每一种群的表示方法.根据选择的参数不同,有许多种实现方法都是可行的.

       有一些例外,所有的参数如果它们都是非负的多精度整数,使用本附录定义的地格式
发送(注意,要区别于附录C中的编码.).每个多精度的整数有一个前缀长度域,甚至在那
这个数据是多余的.

       对于EC2N类型的群来说,考虑参数为很多位的域才更加的合适,但是他们表示为一
多精度的整数,(正确的,带有长度域的).这是正常的编码方法.
   
       MODP意味着经典的模指数群,操作是计算G^x(mod P),使用数字参数P与G来定义
     群,.P必须是素数,G通常是2,但可以是一个更大的数字. 2 <=G<=P-2.

       ECP是一个椭圆曲线群,以素数P为模,这个定义等价于如下定义的群,Y^2=X^3+AX
    +B,群操作是乘以一个椭圆曲线点,这个群使用五个数字参数,素数P,两个曲线参数A与
B,与一个生成元(X,Y).A,B,X,Y都以P为模,而且必须是非负的小于P的整数.他们必须
    满足等价与以P为模的定义.

        EC2N是一个椭圆曲线群,基于有限群F[2^N].定义于如下的群等价.
    Y^2+XY=X^3+AX^2+B这个等式与上面的略有不同,它有XY项,AX^2项而不是AX项
    )
      
       我们必须说明表示域与椭圆曲线.这个域通过一个模2的N次不可约多项式来定义.
    如果使用U=2来对这个多项式求值,那么这个多项式以一个大小在2^N与2^(N+1)的整
数表示

        例如,这个域使用多项式U^155+U^62+1l来定义,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -