信息技术安全技术-密钥管理第3部分:采用非对称技术的机制_第1页
信息技术安全技术-密钥管理第3部分:采用非对称技术的机制_第2页
信息技术安全技术-密钥管理第3部分:采用非对称技术的机制_第3页
信息技术安全技术-密钥管理第3部分:采用非对称技术的机制_第4页
信息技术安全技术-密钥管理第3部分:采用非对称技术的机制_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GB/TXXXX—XXXXPAGE7GB/TXXXX—XXXXPAGE8信息技术安全技术密钥管理第3部分:采用非对称技术的机制范围本部分定义了基于非对称密码技术的密钥管理机制,以达到如下目的:通过密钥协商建立一个共享密钥,用于实体A和实体B间的对称加密。在密钥协商机制中,密钥必须通过实体A和实体B交换的数据计算得到,任何实体一方不能预先确定共享密钥值。通过密钥传递建立一个共享密钥,用于实体A和实体B间的对称加密。在密钥传递机制中,密钥由实体A选择,采用非对称密码保护技术,传给实体B。通过密钥传递将实体A的公钥传给其它实体。在公钥传递机制中,实体A的公钥经鉴别后传给其它实体,但不需保密。本部分定义的一些机制基于GB/T15843.3[3]相对应的鉴别机制。本部分不包含以下密钥管理内容:密钥生存期管理产生或确定非对称密钥对机制密钥的存储、存档、删除等机制注意:该机制不涉及实体私钥的分发;可采用公钥签名系统对密钥交换消息进行签名操作。规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GB/T25069-2010信息安全技术术语GB/T32918.1-2016信息安全技术SM2椭圆曲线公钥密码算法第1部分:总则GB/T32918.2-2016信息安全技术SM2椭圆曲线公钥密码算法第2部分:数字签名算法GB/T32918.3-2016信息安全技术SM2椭圆曲线公钥密码算法第3部分:密钥交换协议GB/T32918.4-2016信息安全技术SM2椭圆曲线公钥密码算法第4部分:公钥加密算法GB/T32905-2016信息安全技术SM3密码杂凑算法GB/T17901.1-AAAA信息技术安全技术密钥管理第1部分:框架术语和定义下列术语和定义适用于本文件。非对称密钥对asymmetrickeypair一对相关密钥,其中私有密钥规定私有变换,公开密钥规定公开变换。非对称密码技术asymmetriccryptographictechnique一种采用两种相关变换,由公钥定义的公开变换和由私钥定义的私有变换的密码技术。这两个变换具有如下特性,即对给定的公钥导出私钥在计算上是不可行的。公开密钥/公钥publickey在某一实体的非对称密钥对中,能够公开的密钥。公钥证书publickeycertificate由证书权威机构对一个实体签发并不可伪造的、有关其公钥信息的数据结构。可信第三方trustedthirdparty在与安全相关的事件中,被其它实体信任的安全机构或代理。秘密密钥secretkey用于对称密码技术中的一种密钥,并仅由一组规定实体所使用。密钥建立keyestablishment为一个或多个实体产生一个可用的、共享的秘密密钥的过程。密钥建立包括密钥协商、密钥传送等。密钥派生函数keyderivationfunction通过作用于共享秘密和双方均知道的其它参数,产生一个或多个共享秘密密钥的函数。密钥权标keytoken在密钥建立机制执行期间,一个实体向另一个实体发送密钥建立的消息。密钥协商keyagreement在实体之间建立一个共享的秘密密钥的过程,其中任何实体都不能预先确定该密钥的值。签名系统signaturesystem一种基于非对称密码技术,其私有密钥用于签署变换,其公开密钥用于验证变换的系统。杂凑/杂凑函数hashfunction将比特串映射为固定长度的比特串的函数,该函数满足下列两特性:对于给定输出,找出映射为该输出的输入,在计算上是不可行的;对于给定输入,找出映射为同一输出的第二个输入,在计算上是不可行的。数字签名digitalsignature附加在数据单元上的数据,或对数据单元所作的密码变换,这种数据或变换允许数据单元的接收者用以确认数据单元的来源和完整性,并保护数据防止被人(如接收者)伪造或抵赖。私有密钥/私钥privatekey在某一实体的非对称密钥对中,只应由该实体使用的密钥。时间变量timevariantparameter(TVP)用于验证数据没有被重发的数据,例如一个随机数,一个序列号,或者时间戳。如果使用时间戳,则必须同步实体间的时钟。如果使用序列号,必须维持和验证两边的序列号计数器同步性。时间戳timestamp相对于一个共同时间基准的一个时间数据项。椭圆曲线密码算法EllipticCurvesCryptography一种公钥加密算法,它利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。消息鉴别码messageauthenticationcode(MAC)通过公开函数和密钥产生一个固定长度的值作为鉴别标识,用于鉴别消息的完整性。证书认证机构certificateauthority(CA)负责产生、签发和管理证书的、受用户信任的权威机构。用户可选择该机构为其创建特定密钥。符号和缩略语下列符号和缩略语适用于本文件。A,B,C实体A、B、C的区分标识BE加密的数据块BS带符号的数据块签名的数据块CA认证机构CertA实体A的公钥证书DA实体A的私有解密变换函数dA实体A的私有解密密钥E椭圆曲线,给定在域GF(p)上的方程Y2=X3+aX+b,当p>3并且m为正整数,给定在域GF(2m)上方程Y2+XY=X3+AX2+B,或者在域GF(3m)上的方程Y2=X3+AX2+B,有一额外的参考点OE称为无穷远点,分别记为E/GF(pm),E/GF(2m),或E/GF(3m)EA实体A的公开加密变换函数eA实体A的公开加密密钥F密钥协商函数FP基于对的密钥协商函数F(h,g)使用参数h和公共参数g作为输入的密钥协商函数G以n为顺序E上的点GF(pm),GF(2m),GF(3m)对素数p>3并且m为正整数pm,2m,3m的有限域g密钥协商函数F使用的所有实体共享的公共参数hash杂凑函数hA实体A的私钥协商密钥j用于余子式乘法中的余子式K对称加密系统的密钥KT密钥权标KTA实体A的密钥权标KTAi实体A处理第i次交互后发送的密钥权标KAB在实体A与B间共享的密钥kdf密钥派生函数l余子式乘法采用的值M数据消息MAC消息鉴别码MACK(Z)以密钥K和随机数据串Z作为输入的MAC算法输出n椭圆曲线E在有限域中的序列的素因数OE椭圆曲线的无限远点P椭圆曲线E上的点PX实体A在椭圆曲线E上的公开密钥协商密钥PKIA实体A的公开密钥信息parameter密钥派生数函数使用的参数pA,pB实体A,B的公开密钥协商密钥q素数p≠3且m≥1的素数幂pmr随机生成数rA实体A的密钥协商机制的随机数S1,S2,S3元素集合SA实体A的私有签名变换函数sA实体A的私有签名密钥T可信第三方TVP随时间变化的参数,如一随机数,一时间戳,或一序列号Texti包括在一数据块中第i个文本、数据或其它信息VA实体A的公开验证变换函数vA实体A的公开验证密钥w单向函数X(p)点P的x坐标Y(p)点P的y坐标√q一个正数q的平方根#E椭圆曲线E的顺序(或基数)‖两数据元素连接「x大于或等于实数x的最小整数∑数字签名π(p)(X(P)&(2「ρ/2-1))+2「ρ/2,其中,ρ=「log2n,X(p)为p点的x轴坐标要求本部分要求所涉及的实体彼此知道其所声称的身份,这可通过两个实体间信息交换时所包含的标识符来实现,或从该机制所使用的上下文明显看出。身份验证意味着检查一个收到的标识符与某个已知的(可信的)或预期值是否相同。如果一个公钥属于某实体,那么该实体必须确保它拥有相应的私钥(密钥注册参见GB/T17901.1-AAAA)。本部分涉及使用椭圆曲线签名验证、公钥加解密的算法见GB/T32918.2和GM/T0003.4。密钥派生函数第10章描述的对称密钥系统导出的共享密钥,建议对其做进一步处理。通过密钥派生函数可导出共享密钥,建议使用一个单向函数作为密钥派生函数,譬如使用杂凑函数。密钥派生函数产生的密钥与随机产生的密钥很难区分。但密钥派生函数需输入一个共享秘密和一组密钥推导参数,并产生输出所需长度的密钥。为了让参与同一个密钥建立机制的双方能够协商出共同的密钥,密钥派生函数应事先商定。达成这一协定的方法超出了本规范的范围。附录C提供了密钥派生函数的例子。余子式乘法这一章只适用使用椭圆曲线密码算法的机制。第11章描述的密钥协商机制和第12、13章描述的密钥传送机制都要求用户的私钥或者密钥权标和另一个实体的公钥或者密钥权标混合使用。在椭圆曲线密码算法中,如果另一个实体的公钥或者密钥权标不是有效的(即它不是椭圆曲线上的一个点,或者不在n阶子群中),那么该操作的执行可能会导致私钥中的某些位泄露给攻击者,例如,“小子群攻击”。“小子群攻击”可参阅[32]的描述。有两种选择方法,可防止“小子群攻击”和类似的攻击:一种方法是采用公钥鉴别法对从另一方接收到的公钥和密钥权标进行验证(参照本标准的规定)。另一种方法是采用余子式乘法对公钥进行验证,余子式乘法将在第11章中具体规范。下面定义的j和l的值,将在余子式乘法中用到。使用余子式乘法时有两种选择:如果不要求与未使用余子式相乘的实体兼容,则设j=#E/N和l=1。在这种情况下,要求参与双方都应同意使用该选项,否则该机制不起作用。如果要求与未使用余子式相乘的实体兼容,则设j=#E/N和l=j-1modn。由于要求n>4√qQUOTE,因此gcd(n,j)=1,所以j-1modn的值始终存在。如果不需要用到余子式相乘,则j=l=1。无论是否使用了余子式相乘法,如果共享密钥(或者共享密钥的一个组成部分)的计算结果为无穷远点(OE),则用户认为密钥协商过程失败。公钥验证法或余子式乘法特别适合下列情况:实体的公钥未经验证;密钥权标未经验证;用户的公钥希望长期使用。如果另一实体的公钥已被验证且余子式较小,可被泄露的信息相当有限,则可不需完成这些测试。密钥承诺第11章将描述一种密钥协商机制,通过单向函数及私钥协商密钥来建立密钥。然而,某实体可能在选择自己的私钥前就知道另一实体的公钥或密钥权标。所以,在该实体发现其它实体的公钥和选定自己私钥的间隔内,可以以生成2s个私钥协商密钥候选值为代价,控制其所要建立的密钥中s个二进制比特位的值。增加一个附加信息或协议传递的代价是使用密钥承诺方法。密码承诺的执行可以通过让第一实体对公钥或者密钥权标进行杂凑变换并将杂凑码送给第二实体;接着第二实体回复自己的公钥或者密钥权标,然后第一实体回复自己的公钥或者密钥权标给第二实体,第二个实体可对它进行杂凑变换并验证杂凑码是否等于之前第一实体所发送的值。密钥确认显式密钥确认过程是通过添加附加消息到一个提供隐式密钥鉴别的密钥建立协议中,因此提供了显式密钥鉴别和实体鉴别。显式密钥确认可以被添加到任何不包含它本身的方法中。密钥确认通常是通过交换一个值来实现,这个值在很大的概率下只有密钥建立计算成功时才能正确计算出来。从实体A到实体B的密钥确认是通过实体A计算一个值并发送给实体B以确认实体A的计算。如果要求相互密钥确认,则每个实体需发送一个不同的值给对方。隐式密钥确认是在已建立的密钥的后续使用中提供密钥确认,当发生某种错误时,就立即检测到。在这种情况下,不需显式密钥确认。如果一个实体不在线(如在单轮通信协议中,存储和转发(电子邮件)的场景),另一个实体就不可能获得密钥确认。然而,有时建立的密钥在后来才使用,或者密钥建立过程的实体并不知道所产生的密钥是否会被立即使用。在这些情况下,通常需使用显式密钥确认方法,否则一旦错误检测出来纠正它就可能太晚。显式密钥确认可看作是密钥建立过程中具有“坚固”安全属性的一种方式,且可认作为是一个保守的协议设计。使用MAC提供密钥确认的例子如下:实体A和B首先执行本规范中第11及12章中采用的其中一个密钥建立过程,期望共享一个的MAC密钥KAB,执行的步骤如下:实体B产生一个八位位组串的消息M,由几部分组成:消息标识符八位位组0x02,实体B的标识符,实体A的标识符,对应于实体B的密钥权标的八位位组串KTB(如不存在,省略),对应于实体A的密钥权标的八位位组串KTA(如不存在,省略),对应于实体B的密钥建立公钥pB(如不存在,省略),对应于实体A的密钥建立公钥pA(如不存在,省略),及可选的附加文本Text1(如存在的话),即:M=02||B||A||KTB||KTA||pB||pA||Text1,其中0x02是消息序号。实体B计算KB=kdf(KAB),采用共享密钥KB,用一个合适的MAC机制对消息M计算出MACKBQUOTEMACKB(M)。实体B将消息M和MACKBQUOTEMACKB(M)发送给实体A。实体A计算KA=kdf(KAB),用收到的消息M计算MACKAQUOTEMACKA(M),并验证MACKB(M)=MACKAQUOTEMACKA(M)。假设MAC验证,实体A已收到实体B的密钥确认(即实体A知道KA=KB)。如需相互密钥确认,则实体A继续执行协议,产生八位位组串的消息M',由几部分组成:消息标识符八位位组0x03,实体A的标识符,实体B的标识符,对应于实体A的密钥权标的八位位组串KTA(如不存在,省略),对应于实体B的密钥权标的八位位组串KTB(如不存在,省略),对应于实体A的密钥建立公钥pA(如不存在,省略),对应于实体B的密钥建立公钥pB(如不存在,省略),以及可选的附加文本Text2(如存在的话),即:M'=03||A||B||KTA||KTB||pA||pB||Text2,其中0x03是消息序号。实体A采用共享密钥KA,用一个合适的MAC机制计算MACKAQUOTEMACKA(M')。实体A将M'和MACKAQUOTEMACKA(M')发送给实体B。对消息M',实体B用KB验证MACKAQUOTEMACKA(M')。假设MAC验证,实体B已收到实体A的密钥确认(即实体B知道KA=KB)。也可采用其它确认密钥方法,如果共享密钥用于数据加密,那么一实体可将另一实体已知的一些特定的明文进行加密,并发送给该实体,如全0或全1的二进制块,但应注意后续使用该密钥时,不再加密用于密钥确认时使用过的同一明文。密钥管理框架概要本章包含了对密钥建立机制框架的高级描述,定义了四种机制(双方密钥协商,三方密钥协商,私钥传送以及公钥传送)以及各自的使用要求。双方密钥协商本节适用于本标准中第11.1-11.11部分描述的双方密钥协商的密钥协商机制。双方密钥协商是一个在A与B两实体间建立共享密钥的过程,任何一方不能预先确定共享密钥的值。密钥协商机制可以提供隐式密钥鉴别;在密钥建立的条件下,隐式密钥鉴别意味着机制实施后只有经确定的实体才可拥有正确的共享密钥。A与B两实体间的密钥协商发生在双方共享一段内容的条件下。该内容包括两个集合S1,S2和一个密钥协商函数F。函数F应满足以下规定:F:S1*S2->S2将元素(h,g)∈S1*S2映射到S2的元素,写成y=F(h,g)。F满足可交换:F(hA,F(hB,g))=F(hB,F(hA,g)).从F(h1,g),F(h2,g)和g计算得到F(h1,F(h2,g))是困难的,意味着F(••,g)是单向函数。实体A和B共享S2中的一个公共元素g,该元素是公开的。此设置下的实体可以高效计算函数值F(h,g),并有效地产生S1中的随机元素。在特定的密钥协商中,可进一步包括一些条件。1:附录D和附录E给出密钥协商函数F的例子。2:如第6章中描述,在密钥协商机制的实际实现中,需对共享密钥做进一步处理。3:一般来讲,必须检查收到的函数值F(h,g)是否为弱值。如果为弱值,该协议将终止。三方密钥协商本节适用于描述第11.12部分描述的三方之间密钥协商的密钥协商机制。三方密钥协商在三个实体A,B,C间建立一个共享密钥,三方中的任何一方不能预先确定共享密钥的值。三实体A,B,C间的密钥协商发生在三方共享一段内容的条件下,该内容包括三个集合S1,S2,S3,密钥协商函数F和FP。密钥协商函数F和FP应满足以下规定:F:S1*S2->S2将元素(h,g)∈S1*S2映射到S2的元素,写成y=F(h,g)。F满足可交换:F(hA,F(hB,g))=F(hB,F(hA,g))。从F(h1,g),F(h2,g)和g计算F(h1,F(h2,g))是困难的,意味着F(••,g)是单向函数。F:S1*S2*S2->S3将元素(hC,F(hA,g),F(hB,g))∈S1*S2*S2映射到S3的元素,写成:z=FP(hC,F(hA,g),F(hB,g))。FP满足可交换性:FP(hC,F(hA,g),F(hB,g))=FP(hC,F(hB,g),F(hA,g))=FP(hB,F(hA,g),F(hC,g))=FP(hA,F(hB,g),F(hC,g))=FP(hA,F(hC,g),F(hB,g))=FP(hB,F(hC,g),F(hA,g)).从F(hA,g),F(hB,g),F(hC,g)和g计算得到FP(hC,F(hA,g),F(hB,g))是困难的,意味着F(••,pA,pB)是单向函数。实体A,B,C共享一个S2中的一个公共元素g,该元素是公开的。此设置下的实体可以高效计算函数值F(h,g)和FP(hC,F(hA,g),F(hB,g)),并有效地产生在S1中的随机元素。在特定的密钥协商中,可进一步包括一些条件。:如第6章描述,在密钥协商机制的实际实现中,需对共享密钥做进一步处理,共享派生密钥应通过以下途径计算:直接从共享私钥KABC提取一些比特位;或将共享私钥KABC和选用一些非秘密数据经过一个单向函数计算,从输出中提取一些比特位。秘密密钥传送秘密密钥传送(也称密钥传递)是一个传递秘密密钥的过程,由一实体(或可信任中心)选择,传给另一实体,并通过非对称密码算法加密保护。公钥传送公钥传送使一实体的公钥可让其它实体以鉴别方式得到,公钥鉴别分发是一个基本的安全需求。分发主要通过以下两种方式:没有可信第三方的公钥分发;通过可信第三方的公钥分发,例如证书颁发机构。实体A的公钥是实体A公钥信息的一部分,公钥信息至少包括实体A的区分标识符和实体A的公钥。密钥协商密钥协商机制1该密钥协商机制以非交互方式在实体A和B间建立包含相互隐式密钥鉴别的共享密钥,应满足以下规定:每个实体X在S1中有一个密钥协商私钥hX和一个密钥协商公钥pX=F(hX,g)。每个实体可得到另一实体的已鉴别的密钥协商公钥副本,可用第13章描述的机制来实现。密钥协商机制1如图1所示。该机制用于以离线方式在两个实体之间协商共享密钥。密钥协商机制1密钥建立(A1):实体A用其私钥协商密钥hA和实体B的公钥协商密钥pB计算共享秘密密钥KAB=F(hA,pB)。密钥建立(B1):实体B用其私钥协商密钥hB和实体A的公钥协商密钥pA计算共享私钥KAB=F(hB,pA)。在第10章中对F进行了规定,以保证密钥KAB的两个计算值一致。1:交互次数为0。2:该机制提供了相互隐式密钥鉴别。该零交互协议将产生相同的密钥。解决该问题的方法是确保密钥只用一次。也可用唯一的初始化矢量与密钥一起使用来解决该问题。3:该机制不提供密钥确认。4:该机制是一个密钥协商机制,它建立的密钥是实体A和B的私钥hA和hB的单向函数。然而,一实体可能在选择私钥前就知道另一实体的公钥。因此,如第8章所描述,一实体可选择所建立密钥的s位,代价是在发现另一个实体的公钥和选择私钥的间隔中,为私钥产生2s个备选值。5:附录E.3给出该机制的例子。密钥协商机制2该机制适用于参与协商密钥的两个实体中仅有一方知道对方身份,且只需在线交互一次的场景,采用实体B到A的隐式密钥鉴别方式,在实体A和实体B间经一次交互建立一个共享私钥,但实体B不鉴别实体A(即实体B不知道和谁建立共享密钥)。该机制需满足以下规定:实体B在S1中有一个密钥协商私钥hB和一个密钥协商公钥pB=F(hB,g)。实体A可以通过第13章描述的机制获得实体B已鉴别的密钥协商公钥pB的副本。密钥协商机制2如图2所示。密钥权标创建(A1):实A随机并秘密产生r(r在S1中),计算F(r,g),并将密钥权标:KTA1=F(r,g)||Text发送给实体B。密钥创建(A2):实体A计算共享密钥KAB=F(r,pB)。密钥创建(B1):实体B从接收到的密钥权标KTA1中提取F(r,g),并计算共享密钥:KAB=F(hB,F(r,g))。在第10章中对F进行了规定,以保证密钥KAB的两个计算值一致。1:交互次数为1。2:该机制提供从实体B到实体A的隐式鉴别(实体B是除了实体A之外唯一可计算出共享密钥的实体)。3:该机制不提供密钥确认。4:该机制是一个密钥协商机制,它建立的密钥是实体A提供的随机值r和实体B的密钥协商私钥的单向函数。因此,如第8章所描述,实体A可在选取r的值之前就得到实体B的公钥,实体A可选择所建立密钥的s位,代价是在发现实体B的公钥和发送KTA的间隔中,为r产生2s个备选值。5:由于实体B是从未鉴别的实体A收到可计算出密钥KAB的信息,实体B对KAB的使用必须被限制在不需实体A鉴别的范围内,例如,解密和消息鉴别码的生成。密钥协商机制2及机制8密钥协商机制3该机制适用于参与协商密钥的两个实体彼此知道对方身份,且只需在线交互一次的场景,通过相互隐式密钥鉴别以及实体A到实体B的实体鉴别,在实体A和实体B间经一次交互建立共享秘密密钥。应满足以下要求:实体A拥有非对称签名系统(SA,VA)。实体B可得到已鉴别的公开验证变换VA的副本,可通过第13章所描述的机制实现。实体B有密钥(hB,pB)的密钥协商方案。实体A可获取已鉴别的实体B密钥协商公钥pB的副本,可通过第13章所描述的机制实现。(可选)如果被使用,TVP可为时间戳或序列号。如果使用时间戳,需有安全和同步的时钟;如果使用序列号,则需维护和校验双边计数器。实体A和B在MAC函数和使用KAB作为该MAC函数密钥的方法上应一致。MAC函数可参照ISO/IEC9797规范。密钥协商机制3如图3所示。密钥协商机制3密钥创建(A1.1):实体A随机并秘密产生r(r在S1中),计算F(r,g),按KAB=F(r,pB)计算共享秘密密钥。实体A使用共享秘密密钥KAB对发送者实体A的区分标识符及可选的TVP(时间戳或序列号)的级联,计算出MAC。密钥权标签名(A1.2):实体A用其私有签名转换SA对MAC进行签名。实体A形成密钥权标,它由发送者实体A的区分标识符、密钥输入F(r,g)、TVP(可选)、已签名的MAC和一些可选数据组成,即KTA1=A||F(r,g)||TVP||SA(MACKAB(A||TVP))||Text1然后将它发送给实体B。密钥创建(B1.1):实体B从接收到的密钥权标中提取出F(r,g),并用其私钥协商密钥hB计算共享秘密密钥,KAB=F(hB,F(r,g))。实体B使用共享秘密密钥KAB对发送者实体A的区分标识符和(可选)TVP计算出MAC。签名验证(B1.2):实体B使用发送者的公开验证转换VA验证实体A的签名以及接收到的密钥权标KTA1的完整性和来源。然后验证权标的及时性(通过检查(可选)TVP)。1:交互次数为1.2:该机制提供从实体A到实体B的显式密钥鉴别和从实体B到实体A的隐式密钥鉴别。3:该机制提供从实体A到实体B的密钥确认。注4:该机制是一个密钥协商机制,它建立的密钥是实体A提供的随机值r和实体B的私钥协商密钥的单向函数,如第8章所描述,实体A可在选取r的值之前就得到实体B的公钥,实体A可选择所建立密钥的s位,代价是在发现实体B的公钥和发送KTA的间隔中,为r产生2s个备选值。5:(可选)TVP防止从实体A向实体B的密钥权标重放。6:如果Text1被用来传送实体A的公钥证书,那么第11.3的要求2可放宽到实体B拥有一个已鉴别的CA公开密钥副本。密钥协商机制4该机制适用于参与协商密钥的两个实体彼此不知道对方身份,且在线交互两次的场景,实体A和B事先没有交换密钥信息,通过采用联合密钥控制方法,经两次交互建立共享秘密密钥。该机制既不提供实体鉴别也不提供密钥鉴别。密钥协商机制4如图4所示。密钥权标创建(A1):实体A随机并秘密产生rA(rA在S1中),计算F(rA,g),构造密钥权标KTA1=F(rA,g)||Text1,然后发给实体B。密钥权标创建(B1):实体B随机并秘密产生rB(rB在S1中),计算F(rB,g),构造密钥权标KTB1=F(rB,g)||Text2,然后发给实体A。密钥创建(A2):实体A从收到的密钥权标KTB1中提取F(rB,g),并计算共享密钥KAB=F(rA,F(rB,g))。密钥创建(B2):实体B从收到的密钥权标KTA1中提取F(rA,g),并计算共享密钥KAB=F(rB,F(rA,g))。1:交互次数为2.2:该机制不提供显式或隐式密钥鉴别,但该机制可用于通过其它方式核实密钥权标的真实性的情况。例如,可通过第二通信信道在实体间交换密钥权标的杂凑码。参见公钥传送机制2.3:可采用单独的信道或方法核实密钥权标。
4:该机制不提供密钥确认。5:该机制是一个密钥协商机制,它建立的密钥是实体A和实体B提供的随机值rA和rB的单向函数,如第8章所描述,实体B可在选择rB的值之前就得到F(rA,g),实体B可选择所建立密钥的s位,代价是在接收KTA1和发送KTB1的间隙中,为rB产生2s个备选值。密钥协商机制4如图4所示。密钥协商机制4,5,9密钥协商机制5该机制适用于参与协商密钥的两个实体彼此知道对方身份,且在线交互两次的场景,通过相互显式密钥别和联合密钥控制方法,经两次交互在实体A和B间建立一个共享秘密密钥。应满足以下条件:每个实体X有一个私钥协商密钥hX(hX在S1中),和一个公钥协商密钥pX=F(hX,g)。每个实体可获取其它实体的已鉴别的公钥协商密钥副本,可通过第13章所描述的机制实现两个实体有共同的单向函数w。密钥协商机制5如图4所示。密钥权标创建(A1):实体A随机和秘密地产生rA(rA在S1中),计算F(rA,g),并将密钥权标KTA1=F(rA,g)||Text1发送给实体B。密钥权标创建(B1):实体B随机和秘密地产生rB(rB在S1中),计算F(rB,g),并将密钥权标KTB1=F(rB,g)||Text2发送给实体A。密钥创建(B2):实体B从收到的密钥权标KTA1中提取F(rA,g),并计算共享秘密密钥:KAB=w(F(hB,F(rA,g))||F(rB,pA)),其中w为单向函数。密钥创建(A2):实体A从收到的密钥权标KTB1中提取F(rB,g),并计算共享秘密密钥:KAB=w(F(rA,pB)||F(hA,F(rB,g)))。1:交互次数为2。2:该机制提供相互隐式密钥鉴别。如果数据域Text2含有一个由密钥KAB对已知数据计算得到的MAC,则该机制提供实体B到实体A的显式密钥鉴别。3:如果数据域Text2含有一个由密钥KAB对已知数据计算得到,则该机制提供实体B到实体A的密钥确认。4:该机制是一个密钥协商机制,它建立的密钥是实体A和实体B提供的随机值rA和rB的单向函数。5:如果Text1和Text2分别包含实体A和实体B的密钥协商密钥的公钥证书,则第11.5的要求2替代为:每个实体拥有一个已鉴别的CA公开验证密钥副本。6:在某种情况下该机制可能会遭受源替换攻击,考虑到这种情况,可以这样来避免这种攻击:作为提交公钥给CA获得证书的一部分,提交者应证明其持有相应私钥。该类攻击对于基于椭圆曲线的协议更为严重。密钥协商机制6该机制适用于参与协商密钥的两个实体彼此鉴别对方身份,且在线交互两次的场景,基于同时使用非对称加密方案和签名系统,通过相互隐式密钥鉴别和联合密钥控制,经两次交互在实体A和B间建立一个共享密钥。应满足以下要求:实体A具有非对称加密系统及变换(EA,DA)。实体B具有非对称签名系统及变换(SB,VB)。实体A可得到经鉴别的实体B公钥验证变换VB副本,可使用第13章的机制来实现。实体B可得到经鉴别的实体A的公钥加密变换EA副本,可使用第13章的机制来实现。密钥协议机制6如图5所示。密钥协商机制6密钥权标创建(A1):实体A产生随机数rA,创建密钥权标KTA1=rA||Text1,并将其发送给实体B。密钥权标处理(B1):实体B产生随机数rB,使用其私有签名变换SB,对数据块签名,该数据块的组成是:实体A的区分标识符、随机数rA、随机数rB和可选数据文本Text2,得到BS=SB(A||rA||rB||Text2)。然后实体B用实体A的基于公钥加密变换EA对数据块加密,该数据块的组成是:区分标识符(可选)、签名块BS及可选的数据Text3,实体B将密钥权标KTB1=EA(||BS||Text3)||Text4返回给实体A,或实体B可包括其标识符B:KTB1=EA(B||BS||Text3)||Text4。密钥创建(B2): 经密钥派生函数,共享秘密密钥由签名块BS中实体B所有或其中一部分签名Σ组成(见第4章注2)。密钥权标处理(A2):实体A使用其私有解密变换DA解密密钥权标KTB1,检查发送者的标识(可选),并采用实体B的公钥验证变换VB验证签名块BS的数字签名。然后实体A检查接收者标识符和签名块BS中随机数rA是否等于在发送的权标KTA1中的随机数rA。如果所有检查都成功,实体A接受所有采用密钥派生函数的签名块BS中实体B所有或其中一部分签名作为共享秘密密钥。 1:交互次数为2。2:签名Σ部分作为实体A和B间建立的秘密密钥的基础需要事先商定。3:该机制提供从实体A与实体B的隐式密钥鉴别和从实体B向实体A的显式密钥鉴别。4:如果Text3包含用密钥KAB对已知数据计算出的MAC,则该机制提供实体B向实体A密钥确认。5:该机制是一个密钥协商机制,它建立的密钥是由实体A和实体B提供的随机值rA和rB的单向函数,如第8章所讨论,实体B可在选择rB的值之前就得到F(rA,g),实体B可选择所建立密钥的s位,代价是在接收KTA1和发送KTB1的间隙中,为rB产生2s个备选值。6:如果Text1和Text4分别包含有实体A加密密钥的公钥证书的和实体B验证密钥的公钥证书,则第11.6节的要求3和4可放宽到:每个实体拥有已鉴别的CA公开验证密钥副本。7:该机制有一个显著特征,实体B的身份可对窃听者匿名,这是无线通信环境中有潜在意义的属性。密钥协商机制7该机制适用于参与协商密钥的两个实体采用GB/T15843.3规定的三轮交互鉴别机制彼此鉴别对方身份,且在线交互两次的场景,通过相互鉴别在实体A和B间建立共享秘密密钥。应满足以下要求:每个实体X有一个非对称签名系统(SX,VX)。实体双方均可得到另一实体已鉴别的公开验证变换副本,可使用第13章的机制来实现。两实体使用同一MAC函数。密钥协商机制7如图6所示。密钥权标创建(A1):实体A随机及秘密生成rA(rA在S1中),计算F(rA,g),构建密钥权标KTA1=F(rA,g)||Text1,并将其发送给实体B。密钥权标处理及密钥创建(B1):实体B随机及秘密生成rB,(rB在S1中),计算F(rB,g),计算共享密钥:KAB=F(rB,F(rA,g)),并构建签名密钥权标KTB1=SB(DB1)||MACKAB(DB1)||Text3,其中DB1=F(rB,g)||F(rA,g)||A||Text2,并送回给实体A。通过在KTB1中包含MACKAB(DB1)提供密钥确认。如果双方有一个共同的对称加密系统,用KTB1=||EKAB(SB(DB1))取代KTB1提供密钥确认,其中E是对称加密函数。密钥权标处理(A2):实体A使用实体B的公开验证密钥验证实体B对密钥权标KTB1的签名,然后验证A的区分标识符以及步骤(A1)中F(rA,g)值。如果检查成功,实体A计算共享秘密密钥:KAB=F(rA,F(rB,g))。实体A使用KAB,验证MACKAB(DB1),构造经签名的密钥权标:KTA2=SA(DB2)||MACKAB(DB2)||Text5,其中DB2=F(rA,g)||F(rB,g)||B||Text4,并发送给实体B。通过在KTA2中包含MACKAB(DB2)提供密钥确认。也可用KTA2=EKAB(SA(DB2))取代KTA2提供密钥确认。密钥权标处理(B2):实体B使用实体A的公开验证密钥验证实体A对密钥权标KTA2的签名,然后验证实体B的区分标识符以及F(rA,g)和F(rB,g)的值是否与之前协商的一致。如果验证成功,实体B使用KAB=F(rB,F(rA,g))验证MACKAB(DB2)。1:交互次数为3。2:该机制提供相互显式密钥鉴别和相互实体鉴别。3:该机制提供相互密钥确认。4:该机制是一个密钥协商机制,它建立的密钥是实体A和实体B提供的随机值rA和rB的单向函数,如第8章所讨论,实体B可在选择rB的值之前就得到F(rA,g),实体B可选择所建立密钥的s位,代价是在接收KTA1和发送KTB1的间隙中,为rB产生2s个备选值。5:该机制符合GB/T15843.3[3]。KTA1,KTB1和KTA2与GB/T15843.3的第5.2.2描述的三轮交互鉴别机制的权标相同[3]。TVP也相同,在下列使用上做些改变:将TVPRA(GB/T15843.3的三个权标[3],5.2.2)设置为F(rA,g);以及将TVPRB(GB/T15843.3的三个权标[3],5.2.2)设置为F(rB,g)。6:如果数据域Text1和Text3(或Text5和Text3)分别包含实体A和B的公钥证书,则第11.7的第二个要求可放宽到:每个实体拥有一份已鉴别的CA公开验证密钥副本。7:如果使用带有文本杂凑的签名机制,则F(rA,g)及/或F(rB,g)不需在密钥权标KTB1中发送。同样,F(rA,g)和F(rB,g)不需在密钥权标KTA2中发送,但在各签名的计算中应包括随机数。8:密钥确认也可通过加密签名中的一部分来实现,在这种情况下,在第11.7中的第三要求可不采用。密钥协商机制7密钥协商机制8该机制适用于参与协商密钥的两个实体采用椭圆曲线密码算法且在线交互一次的场景,通过相互隐式密钥鉴别及一次交互在实体A和B间建立一个共享秘密密钥。应满足以下要求:每个实体X在S1中都有一个私钥协商密钥hX和一个公钥协商密钥pX=F(hX,g)。每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。密钥协商机制8如图2所示。l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,例如,函数π(P)=(X(P)mod2ρ/2)+2ρ/2,其中ρ=log2n,X(P)为点P的x坐标。密钥权标创建(A1): 实体A随机并秘密地产生rA(rA在S1中),计算F(rA,g),构建密钥权标KTA1=F(rA,g),并将其发送给实体B。密钥创建(A2):实体A计算共享秘密密钥:KAB=lj(1+π(pB))(F(rA,pB)+π(KTA1)F(hA,pB))密钥创建(B1):实体B计算共享秘密密钥:KAB=lj(1+π(pB))(F(hB,KTA1)+π(KTA1)F(hB,pA))1:交互次数为1。2:该机制提供相互隐式密钥鉴别。密钥协商机制9该机制适用于参与协商密钥的两个实体采用椭圆曲线密码算法且在线交互两次的场景,通过相互隐式密钥鉴别,经两轮交互在实体A和实体B间建立一个共享秘密密钥。应满足下面条件:每个实体X在S1中有一个私钥协商密钥hx和一个公钥协商密钥px=F(hx,g)。每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。密钥协商机制9如图4所示。l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,例如,函数π(P)=(X(P)mod2ρ/2)+2ρ/2,其中ρ=log2n,X(P)为点P的x坐标。密钥权标创建(A1):实体A随机及秘密地产生rA(rA在S1中),计算F(rA,g),构建密钥权标KTA1=F(rA,g),然后发给实体B。密钥权标创建(B1):实体B随机及秘密地产生rB(rB在S1中),计算F(rB,g),构建密钥权标KTB1=F(rB,g),然后发给实体A。密钥创建(A2):实体A计算共享密钥:KAB=lj(1+π(pB))F(rA,pB)+π(KTA1)F(hA,pB))密钥创建(B2):实体B计算共享密钥:KAB=lj(1+π(pB))F(hB,KTA1)+π(KTA1)F(hB,pA))1:交互次数为2。2:该机制提供相互隐式密钥鉴别。3:在某些情况下,该机制可能会受到源替换攻击,但可以通过增加延迟检测来避免这种攻击,其它对策,可参阅[21]。密钥协商机制10该机制适用于参与协商密钥的两个实体采用SM2椭圆曲线密码算法且在线交互三次的场景,见GB/T32918.3-2016。该密钥协商机制采用椭圆曲线密码体制,通过三次交互采用相互隐式密钥鉴别,在实体A和实体B间建立一个共享密钥。需满足下面条件:每个实体X在S1中有一个私钥协商密钥hx和一个公钥协商密钥px=F(hx,g)。每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。密钥协商机制10如图7所示。l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,函数π(P)=(X(P)&(2「ρ/2-1))+2「ρ/2,其中ρ=「log2n,X(P)为点P的x坐标。密钥协商机制10密钥权标创建(A1):实体A随机及秘密地产生rA(rA在S1中),计算F(rA,g),构建密钥权标KTA1=F(rA,g),然后发给实体B。密钥创建(B1):实体B随机及秘密地产生rB(rB在S1中),计算F(rB,g),构建密钥权标KTB1=F(rB,g),计算共享秘密密钥:KAB=((hB+π(KTB1)rB)l)(pA+π(KTA1)j(KTA1))实体B计算密钥K=kdf(KAB||ZA||ZB)。并进一步构建MACK(2||Y(KAB)||MACK(X(KAB)||ZA||ZB||KTA1||KTB1)),然后将KTB1及MACK(2||Y(KAB)||MACK(X(KAB)||ZA||ZB||KTA1||KTB1))发给实体A。密钥创建(A2):实体A计算共享秘密密钥:KAB=((hA+π(KTA1)rA)l)(pB+π(KTB1)j(KTB1)),计算密钥K=kdf(KAB||ZA||ZB)及MACK(2||Y(KAB)||MACK(X(KAB)||ZA||ZB||KTA1||KTB1))并验证实体B发送的内容。然后计算:MACK(3||Y(KAB)||MACK(X(KAB)||ZA||ZB||KTA1||KTB1)),然后将其发送给实体B。验证(B2):实体B计算MACK(3||Y(KAB)||MACK(X(KAB)||ZA||ZB||KTA1||KTB1))。1:交互次数为3。2:该机制提供相互显式密钥鉴别。3:附录E.3给出该机制的一个例子。密钥协商机制11该机制适用于参与协商密钥的两个实体中仅有一方知道对方身份,且在线交互四次的场景,通过四次交互在实体A和实体B间建立一个共享密钥,应满足下面条件:实体B有一个采用(EB,DB)变换的非对称加密系统。实体A可得到公开验证变换的一个已鉴别副本,用于验证CertB。双方实体使用同一密钥派生函数kdf。密钥协商机制11如图8所示。实体确认(A1):实体A选择一个随机整数rA,发送一个消息M1=(rA||Text1)给实体B。
实体确认(B1):实体B选择一个随机整数rB,发送一个消息M2=(rB||CertB||Text2)给实体A。
密钥权标和密钥创建(A2):实体A验证CertB以得到实体B公钥的可信副本,并产生一个随机整数r'A,计算共享密钥KAB=kdf(rA,rB,r'A)。然后发送密钥权标KTA2=EB(r'A)和MACKAB(M1||KTA2)给实体B。密钥创建(B2):实体B解密KTA2,计算共享密钥KAB=kdf(rA,rB,r'A)。计算MACKAB(M1||KTA2),并与接收到的MAC值进行比较。实体B把MACKAB(M2)发给实体A。密钥验证(A3):实体A计算MACKAB(M2),并与接收到的MAC值进行比较。1:交互次数为4。2:该机制提供实体B到A的隐式密钥鉴别。
3:该机制源于传输层安全协议(TLS),在TLS中密钥协商过程称为TLS握手阶段。在TLS中,每个实体有一个“密码套件”,即实体支持的一系列算法。作为“密码套件协商”过程的一部分,Text1和Text2用来交换这些密码套件。密钥协商机制11密钥协商机制12该机制用于以离线方式在三个实体之间协商共享密钥,非交互式地采用相互隐式密钥鉴别在实体A、B和C间建立一个共享密钥,应满足下列条件:每个实体X在S1中有一个密钥协商私钥hX和一个密钥协商公钥pX=F(hX,g)。每个实体可得到其它实体已鉴别的密钥协商公钥副本,可使用第13章的机制来实现。
密码协商机制12如图9所示。密钥协商机制12密钥创建(A1):实体A使用自己的私钥协商密钥hA、实体B的公钥协商密钥pB、实体C的公钥协商密钥pC计算共享秘密密钥KABC=FP(hA,pB,pC)。
密钥创建(B1):实体B用自己的私钥协商密钥hB、实体A的公钥协商密钥pA、实体C的公钥协商密钥pC计算共享秘密密钥KABC=FP(hB,pC,pA)。密钥创建(C1):实体C用自己的私钥协商密钥hC、实体A的公钥协商密钥pA、实体B的公钥协商密钥pB计算共享秘密密钥KABC=FP(hC,pA,pB)。
根据第10章中规定的函数F和FP条件,密钥KABC的三个计算值相等。1:交互次数为0。2:该机制提供相互隐式密钥鉴别。然而,这种零交互协议总是产生相同的密钥,一种消除该问题带来隐患的办法是确保该密钥只被使用一次。此外,每次使用该密钥时并用一个唯一初始向量也可以解决该问题。
3:该机制不提供密钥确认。
4:这是一个密钥协商机制,它建立的密钥分别是实体A、B、C私钥协商密钥的单向函数。密钥传递密钥传递机制1该机制适用于参与密钥传递的两个实体中仅有一方知道对方身份,且只需在线交互一次的场景,通过实体B到实体A的隐式密钥鉴别,经一次交互实体A将一个秘密密钥传给实体B,应满足以下几个要求:实体B有一个非对称加密系统(EB,DB)实体A能访问实体B已鉴别的公开加密变换EB副本,可使用第13章的机制来实现。
可选的TVP可为一时间戳或一序列号,如果使用时间戳,那么实体A和实体B必须保持时钟同步;如果使用序列号,那么实体A和实体B必须维护双边计数器。密钥传递机制1如图10所示。密钥传递机制1密钥权标创建(A1):假设K是实体A希望安全传递给实体B的一个秘密密钥。实体A创建一个密钥数据块,该数据块包含其可区分标识符(可选)、密钥K、一个可选的TVP和一个可选的数据域Text1。实体A使用接收者的公开加密变换EB对该密钥数据块加密,然后将密钥权标KTA1=EB(A||K||TVP||Text1)||Text2发送给实体B。密钥权标解构(B1):实体B使用自己的私有解密变换DB将接收到的密钥权标加密部分进行解密,恢复密钥K,检查可选的TVP,将恢复的密钥K与声称是发送方的实体A相关联。1:交互次数为1。2:由于只有实体B才能恢复密钥K,该机制提供从实体B到实体A的隐式密钥鉴别。3:该机制不提供密钥确认。4:实体A可选择密钥。5:由于实体B从未经鉴别的实体A接收到密钥K,实体B对密钥K的安全使用限于不需对实体A做鉴别的功能。例如,可执行解密和产生消息鉴别码,但不执行加密和验证消息鉴别码。

密钥传递机制2该密钥传递机制是GB/T15843.3[3]一次交互实体鉴别机制的扩展,它通过实体A到实体B的显式密钥鉴别,实体B到实体A的隐式密钥鉴别,从实体A传递一个经加密和签名的秘密密钥给实体B,应满足以下条件:实体A有一个非对称签名系统(SA,VA)。实体B有一个非对称加密系统(EB,DB)。实体A能够访问实体B已鉴别的公开加密变换EB副本,可使用第13章的机制来实现。实体B能够访问实体A已鉴别的公开验证变换VA副本,可使用第13章的机制来实现。可选的TVP是一时间戳或一序列号,如果使用时间戳,那么实体A和实体B必须保持时钟同步,或使用一可信第三方时间戳机构;如使用序列号,那么实体A和实体B必须维护双边计数器。密钥传递机制2如图11所示。

密钥加密(A1.1):假设K是实体A希望安全传递给实体B的一个密钥,实体A形成一个密钥数据块,该数据块包含发送方可区分识别符、密钥K、和一个可选数据域Text1。实体A用实体B的公开加密变换EB对密钥数据块进行加密,形成加密数据块BE=EB(A||K||Text1)。密钥权标创建(A1.2):实体A创建权标数据块,包括接收者的可区分识别符、可选的TVP(时间戳或序列号),经加密的数据块BE和可选的数据域Text2。实体A用其私有签名变换SA签署数据,附加上可选的Text3,然后形成密钥权标KTA1=SA(B||TVP||BE||Text2)||Text3,发送给实体B。密钥权标验证(B1.1):实体B用发送方的公开验证变换VA来验证接收的密钥权标中的数字签名,然后实体B检查KTA1中的识别符和可选的TVP。密钥解密(B1.2):实体B用其私有解密变换DB解密块BE,然后将包含在块BE中的实体A的识别符和签名实体的身份进行比较,如果所有的检查成功,那么实体B将接受密钥K。1:交互次数为1。
2:该机制提供了实体A到实体B的的实体鉴别,该机制还提供从实体B到实体A的隐式密钥鉴别。
3:该机制提供了实体A到实体B的密钥确认。实体B确信它与实体A分享正确的密钥,但实体A在它收到实体B用密钥K加密答复之后,才能确信实体B已经收到该密钥。
4:可选的TVP提供实体A到实体B的实体鉴别,并防止密钥权标重放。为了防止密钥数据块BE的重放,需在Text1中增加一个TVP。5:实体A可选择密钥KA,因为它是发起实体。类似的,实体B也能选择密钥KB。联合密钥控制可以通过将实体A和实体B的密钥KA和KB结合起来(可通过这个机制的两个例子传递),形成一个共享秘密密钥KAB。联合密钥控制需额外的一次交互。这种结合应是单向的,否则实体A就能够选择共享秘密密钥。这种机制可被分类为密钥协商机制。
6:实体A的可区分标识符包括在被加密的块BE中,以防止实体A的加密密钥块被另一实体盗用。抵抗该攻击的方法是要求实体B比较实体A的标识符和实体A对权标的签名。7:与GB/T15843.3[3]一致,采用公钥算法KTA1的实体鉴别和单次鉴别机制的权标发送兼容。通过使用BE||Text2取代GB/T15843.3机制中的Text1,该权标能够帮助密钥K的传送。8:数据域Text3可用来传递实体A的公钥证书,在这种情况下,第12.2的第四个要求可放宽为,实体B拥有CA一个已鉴别的公开验证密钥副本。密钥传递机制2密钥传递机制3该密钥传递机制中,实体A采用单边密钥确认通过一次交互将经签名及加密的秘密密钥传给实体B。应满足以下几个要求:实体A有一个非对称的签名系统(SA,VA)。实体B有一个非对称的加密系统(EB,DB)。实体A得到实体B已鉴别的公开加密变换EB副本,可使用第13章的机制来实现。实体B得到实体A已鉴别的公开鉴别变换VA副本,可使用第13章的机制来实现。可选的TVP是一时间戳或一序列号,如果使用时间戳,那么实体A和实体B必须保持同步时钟;如果使用序列号,那么实体A和实体B必须维护双边计数器。密钥传递机制3如图12所示。密钥传递机制3密钥块签名(A1.1):假设实体A希望将一个秘密密钥K安全传递给实体B,实体A形成一个密钥数据块,该数据块包含接收方的可区分识别符、密钥K、可选的TVP(序列号或时间戳)和可选数据,然后用其私有签名变换SA对密钥块进行签名,产生签名后的数据块BS=SA(B||K||TVP||Text1)。密钥权标创建(A1.2):实体A构建权标数据块,它包括已签名的块BS和可选项Text2。实体A用接收者的公开加密变换EB加密权标数据块,附上可选的Text3,然后形成密钥权标KTA1=EB(BS||Text2)||Text3,并送给实体B。密钥权标解密(B1.1):实体B使用其私有解密变换DB解出接收到的密钥权标加密部分。密钥块验证(B1.2):实体B使用发送方的公开验证变换VA验证BS的完整性和来源,确认它确实是权标的接收者(通过检查BS中的标识符),并可选择地确认TVP在可接受的范围内(验证权标的时间性),如所有的验证都成功,实体B将接受该密钥K。1:交互次数为1。2:该机制提供实体A到实体B的的实体鉴别和从实体B到实体A的隐式密钥鉴别。
3:该机制提供实体A到实体B的密钥确认,实体B确信它与实体A分享正确的密钥,但实体A在它收到实体B用密钥K加密答复之后,才能确信实体B已经收到该密钥。
4:实体A可选择密钥。5:实体B的可区分标识符包括在被签名的密钥块BS中,来明确表明密钥的接收者,从而防止由实体B签名的块BS被滥用。
6:数据域Text3能用来传递实体A的公钥证书,在这种情况下,第12.3的第四个要求可被放宽为实体B拥有CA已鉴别的公开验证密钥副本。7:如果将该密钥传递机制的两种实施方法结合起来(从实体A到实体B,从实体B到实体A),那么就可以提供相互实体鉴别和联合密钥控制(取决于可选项TVP的使用)。密钥传递机制4该机制适用于参与密钥传递的两个实体彼此鉴别对方身份,且在线交互两次的场景,基于GB/T15843.3中的两次交互鉴别机制,将密钥从实体B传递到实体A。应满足以下要求:实体A有一个非对称加密系统(EA,DA)。实体B有一个非对称签名系统(SB,VB)。实体A可得到实体B已鉴别的公钥验证变换VB副本,可使用第13章的机制来实现。实体B可得到实体A已鉴别的公钥加密变换EA副本,可使用第13章的机制来实现。密钥传递机制4如图13所示。密钥权标创建(A1):实体A产生一个随机数rA,将rA和可选的数据域Text1组成密钥权标KTA1,KTA1=rA||Text1并把它送给实体B。密钥块加密(B1.1):假设实体B希望将一个秘密密钥K安全传递到实体A,实体B构建一个由发送者的区分标识符、密钥K和一可选的数据域Text2组成的密钥数据块。,实体B用实体A的公钥变换EA将密钥数据块加密,构成加密块BE=EA(B||K||Text2)。密钥权标创建(B1.2):实体B可选地生成随机数rB,并形成权标数据块,该权标数据块由接收者的区分标识符、步骤A1中接收的随机数rA、新的随机数rB(可选)、加密块BE以及可选的数据域Text3组成,然后实体B用其私钥签名变换SB形成签名,附加可选的Text4,产生密钥权标KTB1=SB(A||rA||rB||BE||Text3),并送给实体A。密钥权标验证(A2.1):实体A使用发送者的公钥验证变换VB验证接收到的公钥权标KTB1中的数字签名,然后实体A检查KTB1中的区分标识符,并检查接收到的值rA与步骤A1发送的随机数是否一致。密钥块解密(A2.2):实体A用其私钥解密变换DA解密加密块BE,然后验证BE中的发送者区分标识符。如所有检查都成功,实体A接受该密钥K。1:交互次数为2。2:该机制提供从实体A到实体B的隐式密钥鉴别。3:该机制提供实体B到实体A的密钥确认,实体A确信它与实体B分享正确的密钥,但实体B在它收到实体A用密钥K加密答复之后,才能确信实体A已经收到该密钥。
4:实体B可选择密钥。5:权标KTA1和KTB1与GB/T15843.3的第5.1.2中所描述的两次交互鉴别机制里发送的权标一致(注意此时实体A和实体B的角色互换),通过使用BE||Text3取代GB/T15843.3机制中的Text2,该权标能够帮助密钥K的传送。6:如果该密钥传递机制在两个实体间并行执行两次,那么得到的相互密钥传递机制与GB/T15843.3中第5.2.3所描述的机制一致。7:为了与GB/T15843.3保持一致性,将数据域rB包含在内。但由于KTB1中存在BE,,rB在此机制中就不再是必须的,而是可选的。密钥传递机制4密钥传递机制5该机制适用于参与密钥传递的两个实体采用GB/T15843.3规定的三次交互鉴别机制彼此鉴别对方身份,且在线交互三次的场景,通过相互实体鉴别的和密钥确认传递两个共享密钥,一个从实体A传给实体B,另一个从实体B传给实体A。应满足以下条件:每个实体X有一个非对称的签名系统(Sx,Vx)。每个实体X有一个非对称的加密系统(Ex,Dx)。每个实体可得到其它实体已鉴别的公开验证变换副本,可使用第13章的机制来实现。每个实体可得到其它实体已鉴别的公开加密变换副本,可使用第13章的机制来实现。密钥传递机制5如图14所示。密钥传递机制5密钥权标创建(A1):实体A随机生成rA,构建密钥权标KTA1=rA||Text1。并将其发送给实体B。密钥块加密(B1.1):假设实体B希望将一个秘密密钥K安全传递到实体A,实体B构建一个由它自己的区分标识符、密钥KB以及可选的Text2组成的块,然后用接收者的公钥加密变换EA加密这个块:BE1=EA(B||KB||Text2)密钥权标创建(B1.2):实体B随机生成rB,构建一个包含rB、rA、接收者标识、加密的密钥块BE1以及可选的Text3数据块。实体B用其私钥签名变换SB签名这个数据块,附加可选的Text4,形成密钥权标块KTB1,KTB1=SB(rB||rA||A||BE1||Text3)||Text4,并发给实体A。密钥权标确认(A2.1):实体A使用实体B的公钥验证变换VB来验证实体B对密钥权标KTB1的签名。检查它在KTB1中的区分标识符,并检查接收到的rA是否与步骤A1发送的随机数一致。密钥块解密(A2.2):实体A使用其私钥解密变换DA解密加密块BE1,并检查实体B的区分标识符,如果所有的检查结果都成功,实体A接受密钥KB。密钥块加密(A2.3):实体A构建一个包含其区分标识符、其私钥KA及可选的Text5的数据块,并使用接收者的公开加密变换EB加密这个加密块:BE2=EB(A||KA||Text5)。密钥权标创建(A2.4):实体A构建一个包含随机数rA、随机数rB、接收者的区分标识符、加密的密钥块BE2和可选的Text6数据块。实体A用其私钥签名变换SA来签名这个数据块,附上可选的Text7,并发送这个密钥权标KTA2=SA(rA||rB||B||BE2||Text6||Text7)给实体B。密钥权标验证(B2.1):实体B使用实体A的公钥验证变换VA验证实体A的签名,检查KTA2中它自己的区分标识符,并检查接收到的rB是否与步骤B1.2发送的随机数一致,此外,B还检查接收到的rA是否与KTA1中的数值是一致。密钥块解密(B2.2):实体B用其私钥变换DB解密加密数据块BE2,验证实体A的区分标识符,如果所有的检查成功,那么实体B接受密钥KA,如果只是要求单方密钥传输,则BE1或BE2可省略。1:交互次数为3。2:该机制提供相互实体鉴别,即实体B到实体A的KA隐式密钥鉴别和实体A到实体B的KB隐式密钥鉴别。3:该机制对KA和KB都进行从发送端到接收端的密钥确认,此外如果实体A在KB中包含一个MAC,那么就KB而言,这种机制可以进行相互密钥确认。4:由于实体A是发送实体,它可选择密钥KA。类似的,实体B也可选择密钥KB。联合密钥控制可通过将两个密钥KA和KB组合在一起构成一个共享秘密密钥KAB来实现。组合函数应为单向的,否则实体A可选择共享秘密密钥。这种机制可分类为一种密钥协商机制。
5:KTA1、KTB1和KTA2与GB/T15843.3第5.2.2中描述的三次交互鉴别机制中发送的密钥权标兼容。通过使用BE1||Text3取代GB/T15843.3机制中的Text2,第二个权标能够帮助密钥KB的传送。通过使用BE2||Text6取代GB/T15843.3中的Text4,第三个权标能够帮助密钥KA的传送,第三个权标还能够帮助Text6里的MAC的传送。6:如果数据域Text1和Text4(或Text7和Text4)包含实体A和实体B的公钥证书,那么第12.5的第三条和第四条要求可以放宽为,两个实体都拥有CA经鉴别的公开验证密钥副本。密钥传递机制6该机制适用于参与密钥传递的两个实体采用以零知识技术为基础,且在线交互三次的场景,经三次交互安全传递两个密钥,一个从实体A到实体B,另一个从实体B到实体A。此外,该机制还实现相互实体鉴别及对各密钥分别进行相互密钥确认。该机制基于以下要求:每个实体X有一个非对称的加密系统(EX,DX)。每个实体可得到其它实体已鉴别的公开加密变换副本。可使用第13章的机制来实现。密钥传递机制6如图15所示。密钥传递机制6密钥权标创建(A1):实体A获得一个密钥KA,并希望把它安全地传送给实体B。实体A选择一个随机数rA并构造一个包含其区分标识符、密钥KA、随机数rA以及可选的数据块Text1的密钥数据块,然后用实体B的公钥加密变换EB将密钥块加密,产生加密数据块BE1=EB(A||KA||rA||Text1)。实体A构造一个密钥权标KTA1,它由加密数据块BE1及可选数据域Text2组成,KTA1=BE1||Text2,并发送给实体B。密钥权标创建(B1):实体B从接收到的密钥权标KTA1中提取加密密钥块BE1,并用其私钥解密变换DB来将它解密,然后检查解密后的密钥块BE1中包含的实体A标识符。实体B获得一个密钥KB,并希望把它安全地传送给实体A。实体B选择一个随机数rB,并构造一个包含其区分标识符、密钥KB、随机数rB、随机数r𝐴(从解密块提取)及可选的数据域Text3的密钥数据块。实体B用实体A的公钥加密变换EA将密钥块加密,构造加密数据块BE2=EA(B||KB||rA||rB||Text3)。实体B构造一个密钥权标KTB1,它由加密数据块BE2及可选数据域Text4组成,KTB1=BE2||Text4,并发送给实体A。密钥和实体确认(A2.1):实体A从接收到的密钥权标KTB1中提取加密密钥块BE2,并使用其私钥解密变换DA将它解密。实体A通过比较随机数rA与包含在加密块BE2中的随机数rA检查密钥权标的有效性。如果验证成功,那么实体A确认密钥KA已安全到达实体B。密钥权标响应(A2.2):实体A从解密的密钥块中提取随机数rB,并用随机数rB和可选的数据域Text5构建密钥权标KT𝐴2=rB||Text5。然后实体送给实体B。密钥和实体确认(B2):实体B验证从KT𝐴2提取的响应rB与KTB1中的随机数rB是否一致,如果验证成功,那么实体B就实现对实体A的鉴别,同时确认密钥KB已安全到达实体A。1:交互次数是32:该机制提供从实体B到实体A的KA隐式密钥鉴别,以及实体A到实体B的KB隐式密钥鉴别。3:由于实体A是发送实体,实体A可选择密钥KA。类似的,实体B也可选择密钥KB。联合密钥控制可通过将两个密钥KA和KB组合在一起构成一个共享秘密密钥KAB来实现。组合函数应为单向的,否则实体B可选择共享秘密密钥。这种机制可分类为一种密钥协商机制。4:该机制使用非对称技术相互传递两个秘密密钥,KA从实体A传到实体B,KB从实体B传到实体A。该机制可用于如下密钥功能分离:实体A用密钥KA加密传输给实体B的消息以及验证来自实体B的认证码。实体B使用得到的密钥KA解密A传来的消息并生成给实体A的认证码。密钥KB的密钥功能也采用类似的方式分离。这样,非对称密钥传递机制就可拓展为密钥使用。5:该机制以零知识技术为基础,通过使用该机制,双方实体除了自己能够计算得到的信息之外,不会了解到任何其它信息。公钥传递公钥传递机制1如果实体A经一个受保护通道到实体B,(例如提供数据源鉴别及数据完整性的通道),如速递,注册邮件等,那么实体A可将其公钥信息直接通过该受保护通道传递给实体B。这是传递公钥最基本的形式。该机制需满足以下要求:实体A的公钥信息PKIA至少要包含实体A的可区分标识符和实体A的公钥。此外,它还可以包含序列号,有效期,时间戳和其它数据元素。由于公钥信息不包含任何秘密数据,所以通信信道不需提供保密性。公钥传递机制1如图16所示。公钥传输机制1密钥权标创建(A1):实体A生成密钥权标KTA1,它包含实体A的公钥信息和可选的数据字段Text,并通过受保护的通道将KTA1=PKIA||Text传给实体B。密钥权标接收(B1):实体B得到从受保护通道传递的实体A的密钥权标,得到实体A的公钥PKIA并将实体A的公钥保存在有效的公钥列表中(该列表需防止被篡改)。1:该机制可用于传递公开验证密钥(对于非对称签名系统),或公开加密密钥(对于非对称加密系统),或公钥协商密钥。2:鉴别包括数据完整性和数据源鉴别(如ISO7498-2[1]所定义)。公钥传递机制2该传递机制通过不受保护的通道将实体A的公钥信息传递给实体B。为了确认完整性以及接收到公钥信息的来源,需使用另外一条鉴别通道。该机制有效地用于:当公钥信息PKI以电子形式通过高带宽通道传输,而公钥信息的鉴别经低带宽通道执行,如电话,速递或者注册邮件等。作为一种附加要求,如GB/T32905-2016所定义,实体间需共享通用的杂凑函数。需满足以下要求:实体A的公钥信息PKIA至少要包含实体A的可区分标识符和实体A的公钥。此外,它还可包含序列号,有效期,时间戳和其它数据元素。由于公钥信息不包含任何秘密数据,所以通信信道不需提供保密性。公钥传递机制2如图17所示。公钥传递机制2密钥权标创建(A1):实体A生成密钥权标KTA1,它包含实体A的公钥信息和可选的数据字段Text,并通过受保护的通道将KTA1=PKIA||Text传给实体B。密钥权标接收(B1):实体B得到从受保护信道传递的实体A的密钥权标,得到实体A的公钥PKIA并且将实体A的公钥保存并防止被篡改,以便接下来的鉴别和使用。验证权标创建(A2):实体A用其公钥计算检验杂凑值hash(PKIA),并将这个检验值和可选的实体A和B的可区分标识符通过第二条单独的已鉴别信道(如速递或注册邮件)传输给实体B,其中KTA2=A||B||hash(PKIA)||Text2密钥权标验证(B2):一旦收到验证权标KTA2,实体B选择性的检验实体A和B的可区分标识符,根据实体A收到的KTA1里的公钥信息计算出检验值,并于KTA2中的检验值做比较,如果校验成功,实体B将实体A的公钥保存在有效的公钥列表中(该列表需防止被篡改)。1:该机制可用于传递公开验证密钥(对于非对称签名系统),或公开加密密钥(对于非对称加密系统),或公钥协商密钥。2:鉴别包括数据完整性和数据源鉴别。3:如果传递的公钥用于非对称数字签名系统,而不是消息恢复,那么实体A可用相应的私有签名密钥对KTA1签名。这样,步骤B1中使用接收到的公开验证密钥进行的实体A的签名验证可确保实体A知道对应的私有签名密钥,因此可以推测,实体A是在权标创建时知道相应的私有签名密钥的唯一实体。如果PKIA中使用时间戳,那么验证可确保实体A当前知道相应的私有签名密钥。4:来自实体A的人工签名信可用于验证权标。公钥传递机制3该机制通过可信第三方的身份鉴别方式从实体A传递一个公钥到实体B。使用公钥证书形式交换公钥可确保证实体的公钥鉴别。实体A的公钥证书包括公钥信息以及可信第三方(证书认证机构)的数字签名。引入证书认证机构将减少鉴别用户公钥的分发问题,转为证书认证机构(CA)公钥分发问题,参阅GB/TAAAA.1-AAAA,也可参阅ISO/IEC9594-8[2]。该机制基于这样假设:一个带有实体A公钥信息PKIA的有效公钥证书CertA由某CA机构发布,且实体B可获取发布公钥证书的CA机构已鉴别的公开验证变换VCA副本。公钥传递机制3如图18所示。公钥传递机制3密钥权标创建(A1):实体A生成密钥权标KTA1,它包含A的公钥证书,并将KTA1=PKIA||Text传递给实体B。密钥权标验证(B1):实体B一旦接收到公钥证书,就通过CA的公开验证变换VCA验证公钥信息,并校验实体A公钥的有效性。如果实体B希望确认实体A的公钥证书最近是否被取消,那么实体B应通过某种可信途径咨询可信第三方(如CA机构)。1:交互次数为1,但实体B可以要求实体A传输公钥证书。这个额外的交互是可选的,这里不显示。实体A的公钥证书也可通过目录分发,在这种情况下,需在目录和实体B间执行公钥传输机制。2:该机制不提供实体鉴别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论