📄 rfc2412.txt
字号:
现中,可能有不止一个预共享密鈅实现的方案在列表中.
因为KEYID持续存在于不同的OAKLEY启动情况.(在崩溃以后,等等),所以对于
双方来说它必须要占一个KEYID空间的保留部分.一些空间会在每个cookie空
间留出,以提供给它使用.
没有在预共享密鈅方面的证明权威,当一个预共享密鈅用来生成验证有效载荷,不
存在证明权威.验证类型是'预共享',并且有效载荷还有KEYID,以64位来编码,应
用伪随机散列函数于消息体形成了这个函数的密鈅.
b. DNS公开密鈅.
DNS的安全扩展机制(DNSSEC)提供了一种便利的途径来访问公开密鈅信息.特别
是公开密鈅与主机绑定时.RSA密鈅是实现DNS安全机制的必要条件.扩展至允
许选择DSS密鈅在近期可能实现.
DNS密鈅记录已经绑定签名记录,签名记录已被区域权威标记过.并且一个签名
的层级返回给已建立了信任基础的根服务器.SIG签名记录说明了用于形成签名
的算法.
OAKLEY协议的实现必须支持使用DNS密鈅与SIG签名记录用于验证关联的IPv4
,Ipv6以及全部的有资格的域名.然而,实现并不需要支持特定的算法(Rsa,DSS
等等).
c. RSA公开密鈅权威证明签名PGP
[Zimmerman]通过不不正式的方法建立信任来使用公开密鈅.PGP公开密鈅的格
式与命名方法经在另一个RFC文档中描述.RSA算法可以用于PGP密鈅来签名或
是加密.验证选项将分别说明RSA-SIG,RSA-ENC.对它的支持是可选的.
d.1 RSA公开密鈅证明有多种格式并且用于公开密鈅的命名惯例是被一个或多个
证明权威标记.公开密鈅互换协议讨论X.509编码与确认.对它的支持是可选
的
d.2 DSS,密鈅证明编码用于数字签名标准X.509 draft-ietf-ipsec-dss-cert-
00. txt.中有描述,对它的支持是可选的,一个ISAKMP验证类型将被分配.
2.5.3确认验证密鈅.
验证算法,授权证书,验证类型及一个密鈅(通常是公开的)的一个联合定义了怎么
样确认与已声明身份有关的消息.密鈅信息将接受来自一个预共享密鈅或是某种授权
证书的访问.
一般情况下,授权证书生成一个绑定公开密鈅实体名的证书.OAKLEY实现必须准
备好在使用用于OAKLEY验证目的的公开密鈅前,取得并确认证书.
ISAKMP验证有效载荷定义了验证授权域,用来指定必须出现在可信任的验证级别
的授权.
一旦获得适当地证书,选择那种确认方法将取决于验证类型.如果是PGP,则PGP签
名确认程序可以用来确保满足本地信任网的要求.如果是RSA X.509证书,证书必须
经过检验,检验授权证书的签名是否可以被确认,以及其级别是否已通过本地安全策的
检验.
2.5.4 获取身份对象.
除了解释包含在身份中的证书或其它数据结构.OAKLEY协议的用户必须要面对重
新获取随身份中公开密鈅绑定的证书以及重新获取辅助证书用来确认授权或是源签名
者(如果在PGP信任网中的情况.
ISAKMP信任有效载荷可以用来向OAELEY消息分配有用证书.信任有效载荷定义于
附录B.
2.6 加密变换的接口.
在密鈅交换后计算出的密鈅素材的熵至少为90比特,这样意味着它的长度至少为
90比特.熵可以多些或少些以用来调节加密或是伪随机函数变换.
随同OAKLEY协议使用的变换有辅助算法,辅助算法生成可变精度的证书并将它返回
给适当长度的密鈅素材.例如,一个DES算法可以获得低56比特,三重的DES算法使用
下列方法:
K1 = low 56 bits of md5(0|sKEYID)
K2 = low 56 bits of md5(1|sKEYID)
K3 = low 56 bits of md5(2|sKEYID)
密鈅素材调用的变换被编码为一个可变精度的整数,数据的长度,数据的存储块.
密鈅素材至变换密鈅的转换时变换的职责.
2.7重发,超时,与错误消息.
如果从响应者发回的应答没有在允许的时间内得到,则消息将会被发起者重发,
这些重发必须被双方优雅的处理;响应者必须保留重发的信息直到发起者移向协议中
的下一个消息,或是完成交换.
错误消息存在问题,原因在于他们不能仅仅用出现在未完成的交换中的信息来验
证.所以双方都希望为OAKLEY错误信息建立一个默认得密鈅.一个可行的方法建立一
个在附录B中描述的密鈅.是一红ISA_INIT 消息类型.
如下的消息类型OAKLEY错误,KEYID使用H算法与验证消息内容的密鈅;这些值
可以由SIG/PRF有效载荷来携带.
错误有效载荷包含错误码与拒绝消息的内容.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! !
~ Initiator-Cookie ~
/ ! !
KEYID +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ ! !
~ Responder-Cookie ~
! !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Domain of Interpretation !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Message Type ! Exch ! Vers ! Length !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! SPI (unused) !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! SPI (unused) !
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Error Payload !
~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
! Sig/prf Payload
~ ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
错误消息将包含出现在所提供消息的cookie,消息类型OAKLEY_ERROR,
出错原因,然后是拒绝消息.
错误消息仅仅用于报错,协议的正确性不依赖于他们.
错误原因:
TIMEOUT 交换时间过长,状态崩溃.
AEH_ERROR 出现在提议中的一种未知算法
GROUP_NOT_SUPPORTED 不支持GRP命名
EXPONENTIAL_UNACCEPTABLE 指数太大或太小或是1
SELECTION_NOT_OFFERED 提议中没有选择项.
NO_ACCEPTABLE_OFFERS 没有提议符合主机要求.
AUTHENTICATION_FAILURE 签名或散列函数失败.
RESOURCE_EXCEEDED 太多的交换或太多的状态信息.
NO_EXCHANGE_IN_PROGRESS 接受到的应答没有进一步请求.
2.8 私有密鈅的附加安全措施:私有群.
如果双方需要使用Diffie-Hellman密鈅决定方案时,该方案不依赖于标准群的定义,
他们可以选择建立一个私有群.验证不需要重复,因为协议的这个阶段将被一个已存在
的密鈅保护.作为一个附加的安全措施,双方将建立一个私有名用来共享密鈅素材.甚至
他们使用同一个群来同其它方通信.这种重复使用对被动攻击者不是显然的.
私有群又一种优势,通过增加必须很费力分析的群的数量来恢复大量的任务密鈅
这样做可以大大增加广泛分布的被动攻击者的攻击难度.这样就与只使用一个和两个
群形成对比,因为这个原因,所以可以认为年复一年的,任务密鈅的安全受到威胁.
有两个技术上的挑战需要面对:一个特定的用户怎么样创建一个唯一的合适的群,与
第二方怎么样确认提议的群是相对可靠的.
一个幂模群的安全性取决于群大小的最大素数分解.为了使其最大化,可以采用足
够强壮的素数,或是Sophie Germaine素数.P=2Q+1,P与Q都为素数.然而P=kQ+1,k较
小的,群的强度还是相当大的.这些群像著名的Schnorr子群,发现它们比发现Sophie
Germaine素数消耗的计算资源要少很多.
Schnorr子群通过使用近似素数测试可以被有效地确认.
相当容易就可以发现P,k,Q使得大素数因子可以很容易证实为Q
我们估计发现一个含有2~1024个元素的新群可能要用十分钟,并且可以按预定的
程序一天进行一次;确认一个远程方提供的群大约使用1分钟,在一台25mHZ的RISC计
算机或是一台66MHZ的CISC计算机.
我们声明确认只在已互相验证方之间展开,一个新群定义总是伴有一个密鈅,并被
该密鈅保护,该密鈅是用一个著名的群生成的.还有五点要牢记:
A新群的描述与公开的身份被一个著名的群保护.
B 响应者可以拒绝建立新群的企图,因为他太忙或是认为大素数因子不够充分的大.
C 新的模与生成元可以被长期隐藏, 他们不处于安全状态,所以不参与正在进行的活动
D 周期性的生成一个新的g^x值地代价是高昂的.例如果有很多隐藏的群,然而经常生
成新g^x值得重要性已经降低了,所以更换的周期时间可以相对的延长.
E 所有的幂模群都有必主群弱的子群.例如Sophie Germain素数,如果生成元是一个平
方数,则在子群中就只有两个元素,1,g^(-1),(等价于g^(P-1))我们已经声明了要避
免使用的.例如Schnorr子群如果k不等于2,子群通过检验指数是否与1同余
(e^K!=1 mod P)可以被消除.
2.8.1 定义一个新群.
本节描述怎么样来定义一个新群.群的描述对于窃听者是隐藏的,双方对群的身份
分配是唯一的.在下一节中将讲述使用deffie-Hellman密鈅交换的新群.
描述的隐秘性及检验者的存在给被动攻击者带来了更大的困难.因为如果攻击者不
知道群的描述,将没有直接有效的途径获取使用群计算出的密鈅的相关信息.
在这个交换中只有新群的描述需要加密,用该群来命名的OAKLEY任务将指出所需的
散列算法.加密时是使用的是OAKLEY任务中的加密函数.
新群的描述将被编码进入新群的有效载荷中,随机数将被编进验证有效载荷中.
加密边界外的数据将使用KEYID来命名的变换来加密.
下列消息使用ISAKMP密鈅交换OAKLEY新群标识符.
定义一个新的模指数群:
To define a new modular exponentiation group:
Initiator Responder
--------- ----------
-> KEYID, ->
INEWGRP,
Desc(New Group), Na
prf(sKEYID, Desc(New Group) | Na)
<- KEYID,
INEWGRPRS,
Na, Nb
prf(sKEYID, Na | Nb | Desc(New Group)) <-
-> KEYID,
INEWGRPACK
prf(sKEYID, Nb | Na | Desc(New Group)) ->
这些消息在加密边界使用提到过的密鈅来加密.散列值被放入数字签名域中(请查看
附录B).
新群的标识符
New GRP identifier = trunc16(Na) | trunc16(Nb)
(turn16意味着截断至16比特.发起者与响应者必须使用与目前使用的GRPID's
有着不同上部数据的随机数.)
Desc(G) 是这个群描述的描述符地编码结果.
2.8.2 使用一个私有群生成一个密鈅.
一旦一个私有群被建立,他的群id可以被用在密鈅交换消息中的GRP位置.这个协
议在这里没有变化.
2.9 快速模式:从旧密鈅中生成新密鈅.
当一个已经验证过的KEYID与联结的密鈅素材sKEYID已经存在,可以很容易的生成
另外的密鈅与KEYID's,他们共享一些类似的属性(GRP,EHA,等等)仅仅使用散列函数.
例如:KEYID可以是在主模式中生成的一员
另一方面,已验证的密鈅可以是一个手工分配的密鈅,发起者与响应者经由
OAKLEY以外的手段共享它.如果这个方法已经为(CKY-I,CKY-R)生成了使用唯一值
得KEYID,那么这种方法是可以使用的.
接着,密鈅交换标识符是OAKLEY快速模式.验证有效载荷携带随机数,prf值由验证
有效载荷携带,验证授权是none类型是"预共享".
协议是:
The protocol is:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -