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

下载本文档

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

文档简介

GB/TXXXX—XXXX

信息技术安全技术密钥管理第3部分:采用非对称技术的机制

1范围

本部分定义了基于非对称密码技术的密钥管理机制,以达到如下目的:

a)通过密钥协商建立一个共享密钥,用于实体A和实体B间的对称加密。在密钥协商机制中,

密钥必须通过实体A和实体B交换的数据计算得到,任何实体一方不能预先确定共享密钥值。

b)通过密钥传递建立一个共享密钥,用于实体A和实体B间的对称加密。在密钥传递机制中,

密钥由实体A选择,采用非对称密码保护技术,传给实体B。

c)通过密钥传递将实体A的公钥传给其它实体。在公钥传递机制中,实体A的公钥经鉴别后传

给其它实体,但不需保密。

本部分定义的一些机制基于GB/T15843.3[3]相对应的鉴别机制。

本部分不包含以下密钥管理内容:

a)密钥生存期管理

b)产生或确定非对称密钥对机制

c)密钥的存储、存档、删除等机制

注意:

a)该机制不涉及实体私钥的分发;

b)可采用公钥签名系统对密钥交换消息进行签名操作。

2规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文

件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

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部分:框架

3术语和定义

下列术语和定义适用于本文件。

3.1

非对称密钥对asymmetrickeypair

一对相关密钥,其中私有密钥规定私有变换,公开密钥规定公开变换。

3.2

1

GB/TXXXX—XXXX

非对称密码技术asymmetriccryptographictechnique

一种采用两种相关变换,由公钥定义的公开变换和由私钥定义的私有变换的密码技术。这两个变换

具有如下特性,即对给定的公钥导出私钥在计算上是不可行的。

3.3

公开密钥/公钥publickey

在某一实体的非对称密钥对中,能够公开的密钥。

3.4

公钥证书publickeycertificate

由证书权威机构对一个实体签发并不可伪造的、有关其公钥信息的数据结构。

3.5

可信第三方trustedthirdparty

在与安全相关的事件中,被其它实体信任的安全机构或代理。

3.6

秘密密钥secretkey

用于对称密码技术中的一种密钥,并仅由一组规定实体所使用。

3.7

密钥建立keyestablishment

为一个或多个实体产生一个可用的、共享的秘密密钥的过程。密钥建立包括密钥协商、密钥传送等。

3.8

密钥派生函数keyderivationfunction

通过作用于共享秘密和双方均知道的其它参数,产生一个或多个共享秘密密钥的函数。

3.9

密钥权标keytoken

在密钥建立机制执行期间,一个实体向另一个实体发送密钥建立的消息。

3.10

密钥协商keyagreement

在实体之间建立一个共享的秘密密钥的过程,其中任何实体都不能预先确定该密钥的值。

3.11

签名系统signaturesystem

一种基于非对称密码技术,其私有密钥用于签署变换,其公开密钥用于验证变换的系统。

3.12

杂凑/杂凑函数hashfunction

将比特串映射为固定长度的比特串的函数,该函数满足下列两特性:

1)对于给定输出,找出映射为该输出的输入,在计算上是不可行的;

2

GB/TXXXX—XXXX

2)对于给定输入,找出映射为同一输出的第二个输入,在计算上是不可行的。

3.13

数字签名digitalsignature

附加在数据单元上的数据,或对数据单元所作的密码变换,这种数据或变换允许数据单元的接收者

用以确认数据单元的来源和完整性,并保护数据防止被人(如接收者)伪造或抵赖。

3.14

私有密钥/私钥privatekey

在某一实体的非对称密钥对中,只应由该实体使用的密钥。

3.15

时间变量timevariantparameter(TVP)

用于验证数据没有被重发的数据,例如一个随机数,一个序列号,或者时间戳。

如果使用时间戳,则必须同步实体间的时钟。如果使用序列号,必须维持和验证两边的序列号计数

器同步性。

3.16

时间戳timestamp

相对于一个共同时间基准的一个时间数据项。

3.17

椭圆曲线密码算法EllipticCurvesCryptography

一种公钥加密算法,它利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。

3.18

消息鉴别码messageauthenticationcode(MAC)

通过公开函数和密钥产生一个固定长度的值作为鉴别标识,用于鉴别消息的完整性。

3.19

证书认证机构certificateauthority(CA)

负责产生、签发和管理证书的、受用户信任的权威机构。用户可选择该机构为其创建特定密钥。

4符号和缩略语

下列符号和缩略语适用于本文件。

A,B,C实体A、B、C的区分标识

BE加密的数据块

BS带符号的数据块签名的数据块

CA认证机构

CertA实体A的公钥证书

DA实体A的私有解密变换函数

dA实体A的私有解密密钥

3

GB/TXXXX—XXXX

E椭圆曲线,给定在域GF(p)上的方程Y2=X3+aX+b,当p>3

并且m为正整数,给定在域GF(2m)上方程

Y2+XY=X3+AX2+B,或者在域GF(3m)上的方程

232

Y=X+AX+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的素数幂pm

r随机生成数

rA实体A的密钥协商机制的随机数

S1,S2,S3元素集合

SA实体A的私有签名变换函数

4

GB/TXXXX—XXXX

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的最小整数

∑数字签名

「ρ/2「ρ/2

π(p)(X(P)&(2-1))+2,其中,ρ=「log2n,

X(p)为p点的x轴坐标

5要求

本部分要求所涉及的实体彼此知道其所声称的身份,这可通过两个实体间信息交换时所包含的标识

符来实现,或从该机制所使用的上下文明显看出。身份验证意味着检查一个收到的标识符与某个已知的

(可信的)或预期值是否相同。

如果一个公钥属于某实体,那么该实体必须确保它拥有相应的私钥(密钥注册参见GB/T

17901.1-AAAA)。

本部分涉及使用椭圆曲线签名验证、公钥加解密的算法见GB/T32918.2和GM/T0003.4。

6密钥派生函数

第10章描述的对称密钥系统导出的共享密钥,建议对其做进一步处理。通过密钥派生函数可导出共

享密钥,建议使用一个单向函数作为密钥派生函数,譬如使用杂凑函数。

密钥派生函数产生的密钥与随机产生的密钥很难区分。但密钥派生函数需输入一个共享秘密和一组

密钥推导参数,并产生输出所需长度的密钥。

为了让参与同一个密钥建立机制的双方能够协商出共同的密钥,密钥派生函数应事先商定。达成这

一协定的方法超出了本规范的范围。

附录C提供了密钥派生函数的例子。

7余子式乘法

这一章只适用使用椭圆曲线密码算法的机制。第11章描述的密钥协商机制和第12、13章描述的密钥

传送机制都要求用户的私钥或者密钥权标和另一个实体的公钥或者密钥权标混合使用。在椭圆曲线密码

5

GB/TXXXX—XXXX

算法中,如果另一个实体的公钥或者密钥权标不是有效的(即它不是椭圆曲线上的一个点,或者不在n

阶子群中),那么该操作的执行可能会导致私钥中的某些位泄露给攻击者,例如,“小子群攻击”。

注:“小子群攻击”可参阅[32]的描述。

有两种选择方法,可防止“小子群攻击”和类似的攻击:

一种方法是采用公钥鉴别法对从另一方接收到的公钥和密钥权标进行验证(参照本标准的规定)。

另一种方法是采用余子式乘法对公钥进行验证,余子式乘法将在第11章中具体规范。下面定义的j

和l的值,将在余子式乘法中用到。

使用余子式乘法时有两种选择:

a)如果不要求与未使用余子式相乘的实体兼容,则设j=#E/N和l=1。在这种情况下,要求参与

双方都应同意使用该选项,否则该机制不起作用。

b)如果要求与未使用余子式相乘的实体兼容,则设j=#E/N和l=j-1modn。

注:由于要求n>4√q,因此gcd(n,j)=1,所以j-1modn的值始终存在。

如果不需要用到余子式相乘,则j=l=1。

无论是否使用了余子式相乘法,如果共享密钥(或者共享密钥的一个组成部分)的计算结果为无穷

远点(OE),则用户认为密钥协商过程失败。

公钥验证法或余子式乘法特别适合下列情况:

a)实体的公钥未经验证;

b)密钥权标未经验证;

c)用户的公钥希望长期使用。

如果另一实体的公钥已被验证且余子式较小,可被泄露的信息相当有限,则可不需完成这些测试。

8密钥承诺

第11章将描述一种密钥协商机制,通过单向函数及私钥协商密钥来建立密钥。然而,某实体可能在

选择自己的私钥前就知道另一实体的公钥或密钥权标。所以,在该实体发现其它实体的公钥和选定自己

私钥的间隔内,可以以生成2s个私钥协商密钥候选值为代价,控制其所要建立的密钥中s个二进制比特

位的值。

增加一个附加信息或协议传递的代价是使用密钥承诺方法。密码承诺的执行可以通过让第一实体对

公钥或者密钥权标进行杂凑变换并将杂凑码送给第二实体;接着第二实体回复自己的公钥或者密钥权

标,然后第一实体回复自己的公钥或者密钥权标给第二实体,第二个实体可对它进行杂凑变换并验证杂

凑码是否等于之前第一实体所发送的值。

9密钥确认

显式密钥确认过程是通过添加附加消息到一个提供隐式密钥鉴别的密钥建立协议中,因此提供了显

式密钥鉴别和实体鉴别。显式密钥确认可以被添加到任何不包含它本身的方法中。密钥确认通常是通过

交换一个值来实现,这个值在很大的概率下只有密钥建立计算成功时才能正确计算出来。从实体A到实

体B的密钥确认是通过实体A计算一个值并发送给实体B以确认实体A的计算。如果要求相互密钥确认,则

每个实体需发送一个不同的值给对方。

隐式密钥确认是在已建立的密钥的后续使用中提供密钥确认,当发生某种错误时,就立即检测到。

在这种情况下,不需显式密钥确认。如果一个实体不在线(如在单轮通信协议中,存储和转发(电子邮

件)的场景),另一个实体就不可能获得密钥确认。然而,有时建立的密钥在后来才使用,或者密钥建

立过程的实体并不知道所产生的密钥是否会被立即使用。在这些情况下,通常需使用显式密钥确认方法,

6

GB/TXXXX—XXXX

否则一旦错误检测出来纠正它就可能太晚。显式密钥确认可看作是密钥建立过程中具有“坚固”安全属

性的一种方式,且可认作为是一个保守的协议设计。

使用MAC提供密钥确认的例子如下:

实体A和B首先执行本规范中第11及12章中采用的其中一个密钥建立过程,期望共享一个的MAC密钥

KAB,执行的步骤如下:

a)实体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)实体B计算KB=kdf(KAB),采用共享密钥KB,用一个合适的MAC机制对消息M计算出MACKB(M)。

c)实体B将消息M和MACKB(M)发送给实体A。

d)实体A计算KA=kdf(KAB),用收到的消息M计算MACKA(M),并验证MACKB(M)=MACKA(M)。

e)假设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是消息序号。

f)实体A采用共享密钥KA,用一个合适的MAC机制计算MACKA(M')。

g)实体A将M'和MACKA(M')发送给实体B。

h)对消息M',实体B用KB验证MACKA(M')。假设MAC验证,实体B已收到实体A的密钥确认(即

实体B知道KA=KB)。

也可采用其它确认密钥方法,如果共享密钥用于数据加密,那么一实体可将另一实体已知的一些特

定的明文进行加密,并发送给该实体,如全0或全1的二进制块,但应注意后续使用该密钥时,不再加密

用于密钥确认时使用过的同一明文。

10密钥管理框架

10.1概要

本章包含了对密钥建立机制框架的高级描述,定义了四种机制(双方密钥协商,三方密钥协商,私

钥传送以及公钥传送)以及各自的使用要求。

10.2双方密钥协商

本节适用于本标准中第11.1-11.11部分描述的双方密钥协商的密钥协商机制。双方密钥协商是一个

在A与B两实体间建立共享密钥的过程,任何一方不能预先确定共享密钥的值。密钥协商机制可以提供隐

式密钥鉴别;在密钥建立的条件下,隐式密钥鉴别意味着机制实施后只有经确定的实体才可拥有正确的

共享密钥。

A与B两实体间的密钥协商发生在双方共享一段内容的条件下。该内容包括两个集合S1,S2和一个密

钥协商函数F。函数F应满足以下规定:

a)F:S1*S2->S2将元素(h,g)∈S1*S2映射到S2的元素,写成y=F(h,g)。

7

GB/TXXXX—XXXX

b)F满足可交换:

F(hA,F(hB,g))=F(hB,F(hA,g)).

c)从F(h1,g),F(h2,g)和g计算得到F(h1,F(h2,g))是困难的,意味着F(••,g)是单向函数。

d)实体A和B共享S2中的一个公共元素g,该元素是公开的。

e)此设置下的实体可以高效计算函数值F(h,g),并有效地产生S1中的随机元素。在特定的密钥

协商中,可进一步包括一些条件。

注1:附录D和附录E给出密钥协商函数F的例子。

注2:如第6章中描述,在密钥协商机制的实际实现中,需对共享密钥做进一步处理。

注3:一般来讲,必须检查收到的函数值F(h,g)是否为弱值。如果为弱值,该协议将终止。

10.3三方密钥协商

本节适用于描述第11.12部分描述的三方之间密钥协商的密钥协商机制。三方密钥协商在三个实体

A,B,C间建立一个共享密钥,三方中的任何一方不能预先确定共享密钥的值。三实体A,B,C间的密钥协商

发生在三方共享一段内容的条件下,该内容包括三个集合S1,S2,S3,密钥协商函数F和FP。密钥协商函

数F和FP应满足以下规定:

a)F:S1*S2->S2将元素(h,g)∈S1*S2映射到S2的元素,写成y=F(h,g)。

b)F满足可交换:

F(hA,F(hB,g))=F(hB,F(hA,g))。

c)从F(h1,g),F(h2,g)和g计算F(h1,F(h2,g))是困难的,意味着F(••,g)是单向函数。

d)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))。

e)FP满足可交换性:

f)FP(hC,F(hA,g),F(hB,g))=FP(hC,F(hB,g),F(hA,g))=FP(hB,F(hA,g),F(hC,g))

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)).

h)从F(hA,g),F(hB,g),F(hC,g)和g计算得到FP(hC,F(hA,g),F(hB,g))是困难的,意味着F(•

•,pA,pB)是单向函数。

i)实体A,B,C共享一个S2中的一个公共元素g,该元素是公开的。

j)此设置下的实体可以高效计算函数值F(h,g)和FP(hC,F(hA,g),F(hB,g)),并有效地产生在S1

中的随机元素。在特定的密钥协商中,可进一步包括一些条件。

注:如第6章描述,在密钥协商机制的实际实现中,需对共享密钥做进一步处理,共享派生密钥应通过以下途径

计算:

1)直接从共享私钥KABC提取一些比特位;或

2)将共享私钥KABC和选用一些非秘密数据经过一个单向函数计算,从输出中提取一些比特位。

10.4秘密密钥传送

秘密密钥传送(也称密钥传递)是一个传递秘密密钥的过程,由一实体(或可信任中心)选择,传

给另一实体,并通过非对称密码算法加密保护。

10.5公钥传送

公钥传送使一实体的公钥可让其它实体以鉴别方式得到,公钥鉴别分发是一个基本的安全需求。分

发主要通过以下两种方式:

a)没有可信第三方的公钥分发;

b)通过可信第三方的公钥分发,例如证书颁发机构。

实体A的公钥是实体A公钥信息的一部分,公钥信息至少包括实体A的区分标识符和实体A的公钥。

8

GB/TXXXX—XXXX

11密钥协商

11.1密钥协商机制1

该密钥协商机制以非交互方式在实体A和B间建立包含相互隐式密钥鉴别的共享密钥,应满足以下规

定:

a)每个实体X在S1中有一个密钥协商私钥hX和一个密钥协商公钥pX=F(hX,g)。

b)每个实体可得到另一实体的已鉴别的密钥协商公钥副本,可用第13章描述的机制来实现。

密钥协商机制1如图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给出该机制的例子。

11.2密钥协商机制2

该机制适用于参与协商密钥的两个实体中仅有一方知道对方身份,且只需在线交互一次的场景,采

用实体B到A的隐式密钥鉴别方式,在实体A和实体B间经一次交互建立一个共享私钥,但实体B不鉴别实

体A(即实体B不知道和谁建立共享密钥)。该机制需满足以下规定:

a)实体B在S1中有一个密钥协商私钥hB和一个密钥协商公钥pB=F(hB,g)。

b)实体A可以通过第13章描述的机制获得实体B已鉴别的密钥协商公钥pB的副本。

密钥协商机制2如图2所示。

密钥权标创建(A1):实A随机并秘密产生r(r在S1中),计算F(r,g),并将密钥权标:KTA1=F(r,g)||Text

发送给实体B。

9

GB/TXXXX—XXXX

密钥创建(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位,代价是

s

在发现实体B的公钥和发送KTA的间隔中,为r产生2个备选值。

注5:由于实体B是从未鉴别的实体A收到可计算出密钥KAB的信息,实体B对KAB的使用必须被限制在不需实体A鉴别的

范围内,例如,解密和消息鉴别码的生成。

图2密钥协商机制2及机制8

11.3密钥协商机制3

该机制适用于参与协商密钥的两个实体彼此知道对方身份,且只需在线交互一次的场景,通过相互

隐式密钥鉴别以及实体A到实体B的实体鉴别,在实体A和实体B间经一次交互建立共享秘密密钥。应满足

以下要求:

a)实体A拥有非对称签名系统(SA,VA)。

b)实体B可得到已鉴别的公开验证变换VA的副本,可通过第13章所描述的机制实现。

c)实体B有密钥(hB,pB)的密钥协商方案。

d)实体A可获取已鉴别的实体B密钥协商公钥pB的副本,可通过第13章所描述的机制实现。

e)(可选)如果被使用,TVP可为时间戳或序列号。如果使用时间戳,需有安全和同步的时钟;如果

使用序列号,则需维护和校验双边计数器。

f)实体A和B在MAC函数和使用KAB作为该MAC函数密钥的方法上应一致。MAC函数可参照ISO/IEC

9797规范。

密钥协商机制3如图3所示。

10

GB/TXXXX—XXXX

图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的公钥,

s

实体A可选择所建立密钥的s位,代价是在发现实体B的公钥和发送KTA的间隔中,为r产生2个备选值。

注5:(可选)TVP防止从实体A向实体B的密钥权标重放。

注6:如果Text1被用来传送实体A的公钥证书,那么第11.3的要求2可放宽到实体B拥有一个已鉴别的CA公开

密钥副本。

11.4密钥协商机制4

该机制适用于参与协商密钥的两个实体彼此不知道对方身份,且在线交互两次的场景,实体A和B

事先没有交换密钥信息,通过采用联合密钥控制方法,经两次交互建立共享秘密密钥。该机制既不提供

实体鉴别也不提供密钥鉴别。密钥协商机制4如图4所示。

密钥权标创建(A1):实体A随机并秘密产生rA(rA在S1中),计算F(rA,g),构造密钥权标

KTA1=F(rA,g)||Text1,然后发给实体B。

11

GB/TXXXX—XXXX

密钥权标创建(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和

s

发送KTB1的间隙中,为rB产生2个备选值。

密钥协商机制4如图4所示。

图4密钥协商机制4,5,9

11.5密钥协商机制5

该机制适用于参与协商密钥的两个实体彼此知道对方身份,且在线交互两次的场景,通过相互显式

密钥别和联合密钥控制方法,经两次交互在实体A和B间建立一个共享秘密密钥。应满足以下条件:

a)每个实体X有一个私钥协商密钥hX(hX在S1中),和一个公钥协商密钥pX=F(hX,g)。

b)每个实体可获取其它实体的已鉴别的公钥协商密钥副本,可通过第13章所描述的机制实现

c)两个实体有共同的单向函数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),并计算共享秘密密钥:

12

GB/TXXXX—XXXX

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获得证书的一部分,提交者应证明其持有相应私钥。该类攻击对于基于椭圆曲线的协议更为严重。

11.6密钥协商机制6

该机制适用于参与协商密钥的两个实体彼此鉴别对方身份,且在线交互两次的场景,基于同时使用

非对称加密方案和签名系统,通过相互隐式密钥鉴别和联合密钥控制,经两次交互在实体A和B间建立一

个共享密钥。应满足以下要求:

a)实体A具有非对称加密系统及变换(EA,DA)。

b)实体B具有非对称签名系统及变换(SB,VB)。

c)实体A可得到经鉴别的实体B公钥验证变换VB副本,可使用第13章的机制来实现。

d)实体B可得到经鉴别的实体A的公钥加密变换EA副本,可使用第13章的机制来实现。

密钥协议机制6如图5所示。

图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。

13

GB/TXXXX—XXXX

密钥创建(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的

s

间隙中,为rB产生2个备选值。

注6:如果Text1和Text4分别包含有实体A加密密钥的公钥证书的和实体B验证密钥的公钥证书,则第11.6节的要求

3和4可放宽到:每个实体拥有已鉴别的CA公开验证密钥副本。

注7:该机制有一个显著特征,实体B的身份可对窃听者匿名,这是无线通信环境中有潜在意义的属性。

11.7密钥协商机制7

该机制适用于参与协商密钥的两个实体采用GB/T15843.3规定的三轮交互鉴别机制彼此鉴别对方

身份,且在线交互两次的场景,通过相互鉴别在实体A和B间建立共享秘密密钥。应满足以下要求:

a)每个实体X有一个非对称签名系统(SX,VX)。

b)实体双方均可得到另一实体已鉴别的公开验证变换副本,可使用第13章的机制来实现。

c)两实体使用同一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章

14

GB/TXXXX—XXXX

所讨论,实体B可在选择rB的值之前就得到F(rA,g),实体B可选择所建立密钥的s位,代价是在接收KTA1和

s

发送KTB1的间隙中,为rB产生2个备选值。

注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中的第三要求可不采用。

图6密钥协商机制7

11.8密钥协商机制8

该机制适用于参与协商密钥的两个实体采用椭圆曲线密码算法且在线交互一次的场景,通过相互隐

式密钥鉴别及一次交互在实体A和B间建立一个共享秘密密钥。应满足以下要求:

a)每个实体X在S1中都有一个私钥协商密钥hX和一个公钥协商密钥pX=F(hX,g)。

b)每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。

密钥协商机制8如图2所示。

l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,例如,函数

/2/2

π(P)=(X(P)mod2ρ)+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:该机制提供相互隐式密钥鉴别。

11.9密钥协商机制9

15

GB/TXXXX—XXXX

该机制适用于参与协商密钥的两个实体采用椭圆曲线密码算法且在线交互两次的场景,通过相互隐

式密钥鉴别,经两轮交互在实体A和实体B间建立一个共享秘密密钥。应满足下面条件:

a)每个实体X在S1中有一个私钥协商密钥hx和一个公钥协商密钥px=F(hx,g)。

b)每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。

密钥协商机制9如图4所示。

l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,例如,函数

/2/2

π(P)=(X(P)mod2ρ)+2ρ,其中ρ=log2n,X(P)为点P的x坐标。

密钥权标创建(A1):实体A随机及秘密地产生r(ArA在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]。

11.10密钥协商机制10

该机制适用于参与协商密钥的两个实体采用SM2椭圆曲线密码算法且在线交互三次的场景,见GB/T

32918.3-2016。该密钥协商机制采用椭圆曲线密码体制,通过三次交互采用相互隐式密钥鉴别,在实体A

和实体B间建立一个共享密钥。需满足下面条件:

a)每个实体X在S1中有一个私钥协商密钥hx和一个公钥协商密钥px=F(hx,g)。

b)每个实体可得到另一个实体已鉴别的公钥协商密钥副本,可使用第13章的机制来实现。

密钥协商机制10如图7所示。

l和j值用于余子式乘法(见第7章)。还需采用一个函数将一椭圆点P转换为整数,函数π(P)=(X(P)&(2

「ρ/2「ρ/2

-1))+2,其中ρ=「log2n,X(P)为点P的x坐标。

图7密钥协商机制10

16

GB/TXXXX—XXXX

密钥权标创建(A1):实体A随机及秘密地产生r(ArA在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.11密钥协商机制11

该机制适用于参与协商密钥的两个实体中仅有一方知道对方身份,且在线交互四次的场景,通过四

次交互在实体A和实体B间建立一个共享密钥,应满足下面条件:

a)实体B有一个采用(EB,DB)变换的非对称加密系统。

b)实体A可得到公开验证变换的一个已鉴别副本,用于验证CertB。

c)双方实体使用同一密钥派生函数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用来交换这些密

码套件。

17

GB/TXXXX—XXXX

图8密钥协商机制11

11.12密钥协商机制12

该机制用于以离线方式在三个实体之间协商共享密钥,非交互式地采用相互隐式密钥鉴别在实体A、

B和C间建立一个共享密钥,应满足下列条件:

a)每个实体X在S1中有一个密钥协商私钥hX和一个密钥协商公钥pX=F(hX,g)。

b)每个实体可得到其它实体已鉴别的密钥协商公钥副本,可使用第13章的机制来实现。


密码协商机制12如图9所示。

图9密钥协商机制12

密钥创建(A1):实体A使用自己的私钥协商密钥hA、实体B的公钥协商密钥pB、实体C的公钥协商密钥

pC计算共享秘密密钥KABC=FP(hA,pB,pC)。


18

GB/TXXXX—XXXX

密钥创建(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私钥协商密钥的单向函数。

12密钥传递

12.1密钥传递机制1

该机制适用于参与密钥传递的两个实体中仅有一方知道对方身份,且只需在线交互一次的场景,通

过实体B到实体A的隐式密钥鉴别,经一次交互实体A将一个秘密密钥传给实体B,应满足以下几个要求:

a)实体B有一个非对称加密系统(EB,DB)

b)实体A能访问实体B已鉴别的公开加密变换EB副本,可使用第13章的机制来实现。


c)可选的TVP可为一时间戳或一序列号,如果使用时间戳,那么实体A和实体B必须保持时钟同

步;如果使用序列号,那么实体A和实体B必须维护双边计数器。

密钥传递机制1如图

温馨提示

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

评论

0/150

提交评论