本发明涉及信息安全领域的一种派生密钥生成方法,具体涉及一种基于多个共享密钥获得任意指定长度派生密钥的方法。
背景技术:
密码学在信息安全领域起着至关重要的核心作用,现代密码学普遍遵循的基尔霍夫原则(kerckhoff′sprinciple)指出“密码系统的安全性仅依赖于密钥的保密性,除密钥外其他所有因素均可公开”,而密钥的安全性取决于密钥空间的大小以及密钥的随机性。一次一密是目前已知的信息论意义安全的加解密方法,通信双方每次使用不同的与明文消息等长的共享密钥对数据进行加解密;而更普遍的数据加解密算法则使用固定长度的共享密钥对任意长度的数据进行加解密,比如流加解密算法中通过将固定长度的种子密钥扩展成任意长度的流密钥来加解密数据,而分组加解密算法中使用固定长度的分组密钥配合加密模式来加解密任意长度的数据。为简化对密钥的管理,实际应用中加解密双方常基于共享密钥使用密钥派生函数(keyderivationfunction,kdf)来生成多个固定长度的派生密钥或一个任意给定长度的派生密钥,并使用派生密钥应用于不同的数据加解密中。现有的密钥派生函数通常只基于单独的一个共享密钥进行密钥派生。由于派生密钥的安全强度不会超过其基于的共享密钥的安全强度,使用现有密钥派生函数得到的派生密钥的安全强度是固定的(若共享密钥的长度为分组密钥长度,则派生密钥的安全强度不超过一个分组密钥的安全强度)。因此,设计基于多个共享密钥的可按需获得给定安全强度的派生密钥的密钥派生方法具有重要应用价值。
经过对现有技术的文献检索发现,国际标准组织ietf(internetengineeringtaskforce,互联网工程任务组)的rfc8018标准“pkcs#5:password-basedcryptographyspecification,version2.1”(公钥密码第5号标准:基于口令的密码应用规范,版本2.1)提出的pbkdf2(password-basedkeyderivationfunction2,基于口令的密钥派生函数2),利用伪随机函数,从用户口令出发获得指定长度的派生密钥。这种方法使用单独的一个用户口令可获得任意指定长度的派生密钥,通过在算法中引入随机盐数据及进行多重迭代来增加攻击的计算复杂度,虽然从相同的用户口令出发可以获得不同的随机派生密钥,但获得的派生密钥安全性与用户口令的安全性相当。
中华人民共和国密码行业标准gm/t0003-2012“sm2椭圆曲线公钥密码算法”及gm/t0044-2016“sm9标识密码算法”中提出了一种密钥派生算法。这种方法利用密码杂凑函数,将共享密钥派生获得指定长度的派生密钥。与pbkdf2方法类似,这种方法使用单独的一个共享密钥获得的任意指定长度的派生密钥,所获派生密钥的安全性与共享密钥的安全性相当。
美国国家标准局(americannationalstandardinstitute,ansi)发布的ansix9.24-1:2009标准“retailfinancialservicesymmetrickeymanagementpart1:usingsymmetrictechniques”(零售金融服务中的对称密钥管理第1部分:使用对称技术)中提出的dukpt(deriveuniquekeypertransaction,一交易一密钥密钥派生)设计中,客户端使用固定个数的密钥寄存器,从单独的一个共享密钥开始,为每笔交易产生一个唯一的交易密钥,在确保交易密钥前向安全的同时,使得服务端可在不超过固定次数的伪随机函数调用的条件下获得相同的该笔交易密钥。该方法使用单独的一个共享密钥可获得固定数量的多个交易密钥,其产生的交易密钥具有前向安全性,即从后续编号的交易密钥出发无法获得前导编号的交易密钥,该方法所获的每个派生密钥的安全性与共享密钥的安全性相当。
briere等人在论文“aforward-securesymmetric-keyderivationprotocol:howtoimproveclassicdukpt”(一种前向安全对称密钥派生协议:如何改进经典dukpt)(asiacrypt2010,pp.250--267,2010)(2010年亚密会论文集250--267页)中提出的o-dukpt(optimalderiveuniquekeypertransaction,一交易一密钥最优密钥派生)的设计对ansix9.24-1:2009标准的dukpt进行了优化。该改进方法相对于原dukpt协议增加了可派生密钥的规模,产生的派生密钥具有前向安全性,所获的每个派生密钥的安全性与共享密钥的安全性相当。
技术实现要素:
为了克服上述问题,本发明给出了一种基于多个共享密钥获得任意指定长度派生密钥的方法。
在一种实施方式中,本发明提供一种基于多个共享密钥获得任意指定长度派生密钥的方法,所述方法包括下步骤:
步骤1:通信发起方和通信接收方双方确立派生密钥生成过程中使用的单向函数h:
步骤2:所述通信发起方和通信接收方双方实现批量的密钥共享,并将共享的密钥按索引进行组织;
步骤3:所述通信发起方和通信接收方双方根据安全要求确认所需的共享密钥个数,选取多个共享密钥,设置辅助输入,并设置输出派生密钥比特长度;其中所述辅助输入是指所述通信发起方加入的与共享密钥k1,k2,…,kn无关的可公开的任意信息,k1,k2,…,kn为各个所述共享密钥的比特串;
步骤4:所述通信发起方和通信接收方双方根据所述单向函数h,调用组合密钥派生函数,基于所选的多个共享密钥及辅助输入生成指定长度的派生密钥;所述组合密钥派生函数是指一种输入为单向函数h、正整数n、n个比特串k1,k2,…,kn、辅助输入aux、正整数l,输出为长度l的比特串的函数。
在一种实施方式中,所述单向函数h:
在一种实施方式中,所述通信发起方和通信接收方双方通过共享密钥预置、或量子密钥分发技术在线分发、或密钥协商,实现双方成批量的密钥共享。
在一种实施方式中,所述通信发起方和通信接收方双方以(idx,len,key)的逻辑方式对共享密钥进行组织,其中idx为密钥的索引,双方可通过该索引引用对应的共享密钥;len为对应密钥的比特长度;key为对应密钥的值,该值在实际存储实体中使用密码手段进行保护。
在一种实施方式中,所述辅助输入设置为通信发起方当前的时间戳数值。
在一种实施方式中,所述组合密钥派生函数使用不同的表示方法对同一数据对象进行表示,使得可以在任意的比特串或字节串上定义运算,其包括:根据单向函数输出的比特数v,获得
在一种实施方式中,所述对同一数据对象的多种表示方法包括定长字节串表示、8倍定长比特串表示、二进制表示、
在一种实施方式中,所述有限域
在一种实施方式中,所述迭代轮数
在一种实施方式中,所述以i为索引的密钥派生随机矩阵生成元素种子ti是指:对每个i=1,…,n,计算ti=h(ki||aux||(2m-1)),这里(2m-1)代表整数2m-1的m位比特串表示;所述密钥派生随机矩阵生成元素种子用于生成密钥派生随机矩阵元素;所述ki为第i个共享密钥比特串;所述aux为辅助输入;所述的m为索引值定长比特串表示位数。
在一种实施方式中,所述以i,j为索引的密钥派生随机矩阵元素tij是指:在
在一种实施方式中,所述以i,w为索引的轮种子密钥riw是指:对每个轮索引
在一种实施方式中,所述以i,w为索引的派生密钥分片siw是指:对每个轮索引
在一种实施方式中,所述派生密钥k是指:记
在一种实施方式中,本发明的方法还包括所述通信发起方和通信接收方双方根据应用需求,在应用中使用步骤4输出的全部派生密钥或派生密钥的一部分。
本发明方法可根据具体应用中密钥所需安全强度要求选择不同数量的共享密钥来进行密钥派生。本发明方法通过使用安全单向函数,基于所选的全部共享密钥构建密钥派生随机矩阵,根据所需派生密钥长度,基于共享密钥及序号信息获得多轮种子密钥,并使用密钥派生随机矩阵作用于每轮种子密钥而获得派生密钥分片,最终形成派生密钥。本发明方法获得的派生密钥具有如下特点:由于密钥派生随机矩阵的使用,派生密钥的每个比特与所基于的全部共享密钥相关;由于单向函数及密钥派生随机矩阵的使用,派生密钥的安全强度与基于的全部共享密钥安全强度相当;由于轮种子密钥可直接通过共享密钥及序号信息快速获得,本发明方法可快速获得部分派生密钥,使得应用可更灵活的使用派生密钥。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1本发明方法流程架构图;
图2本发明方法的组合密钥派生函数pkdf派生密钥生成的操作流程图。
具体实施方式
为了使本领域技术领域人员更好地理解本申请中的技术方案,下面将结合实施例对本发明作进一步说明,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都应当属于本申请保护的范围。下面结合附图及实施例对本发明作进一步描述。
实施例一本发明基于多个共享密钥获得任意指定长度派生密钥方法的基本流程
使用本发明方法生成及使用派生密钥的流程如图1所示。本发明方法主要涉及两个通信实体:通信发起方alice和通信接收方bob;通信双方alice及bob进行密钥派生并使用派生密钥的流程大致可分为5个阶段,分别为系统参数确立阶段、共享密钥分发阶段、派生密钥参数选择阶段、派生密钥生成阶段、及派生密钥使用阶段,其中前4个阶段与本发明方法有关。具体步骤如下:
步骤1:系统参数确认阶段。通信发起方alice和通信接收方bob确立派生密钥生成过程中使用的单向函数h:
步骤2:共享密钥分发阶段。通信双方通过共享密钥预置、或量子密钥分发技术在线分发、或密钥协商,实现双方成批量的密钥共享,并以(idx,len,key)的逻辑方式对共享密钥进行组织。
步骤3:派生密钥参数选择阶段。通信发起方alice和通信接收方bob根据安全要求确认所需的共享密钥个数n及派生密钥长度l,alice选取n个共享密钥,获得共享密钥对应的索引idx1,…,idxn,设置辅助输入aux,并通过认证信道将(n;idx1,…,idxn;aux;l)发送给bob。
步骤4:派生密钥生成阶段。通信双方alice及bob根据步骤3选择的参数,以步骤2所述的方法获得密钥索引idx1,…,idxn对应的n个共享密钥k1,k2,…,kn,连同步骤1所述单向函数h,步骤3选择的共享密钥个数n,辅助输入aux及派生密钥长度l作为参数,调用组合密钥派生函数pkdf(packagekeyderivationfunction),生成比特长度为l的派生密钥。
步骤5:派生密钥使用阶段。通信双方alice及bob根据应用需求,在实际应用中使用步骤4输出的全部派生密钥或派生密钥的一部分。
实施例二本发明方法中的组合密钥派生函数pkdf
本发明方法步骤4所述的组合密钥派生函数pkdf,该方法根据给定的n个共享密钥k1,k2,…,kn,辅助输入aux,利用单向函数h:
组合密钥派生函数记号:k=pkdf(h;n;k1,k2,…,kn;aux;l)
输入条件:
1.单向函数h:
2.共享密钥个数n
3.n个共享密钥比特串k1,k2,…,kn
4.辅助输入比特串aux
5.派生密钥的比特长度l
输出:比特长度为l的派生密钥k
符号说明与约定:
1.记
2.对比特串x,y,比特串x||y代表x后串联y形成的比特串。
3.同一数据对象的定长字节串表示、8倍定长比特串表示、二进制表示、
pkdf派生密钥生成过程说明:pkdf的操作流程如图2所示。pkdf基于给定的单向函数,多个共享密钥,辅助输入及派生密钥比特长度等输入进行派生密钥的生成流程大致可分为7个阶段,分别为有限域选定阶段、迭代轮数及索引值定长比特串表示位数确定阶段、密钥派生随机矩阵生成元素种子确定阶段、密钥派生随机矩阵元素确定阶段、轮种子密钥计算阶段、派生密钥分片计算阶段、派生密钥输出阶段。具体步骤如下:
步骤1.对于输入:单向函数h:
步骤2.根据单向函数h的输出比特长度v,设置有限域
步骤3.根据派生密钥比特长度l,共享密钥个数n,单向函数h的输出比特长度v,计算迭代轮数
步骤4.利用单向函数h,共享密钥ki,(i=1,…,n),辅助输入aux,及索引值定长比特串表示位数m,计算密钥派生随机矩阵生成元素种子ti:对每个i=1,…,n,计算密钥派生随机矩阵生成元素种子ti=h(ki||aux||(2m-1))。这里(2m-1)代表整数2m-1的m位比特串表示。
步骤5.利用密钥派生随机矩阵生成元素种子ti,(i=1,…,n),在
步骤6.轮序号w初始化:设置w=1。
步骤7.判断
步骤8.利用单向函数h,共享密钥ki,(i=1,…,n),辅助输入aux,当前轮序号w及索引值定长比特串表示位数m,计算第w轮的轮种子密钥riw:对每个i=1,…,n,计算轮种子密钥riw=h(ki||aux||(((w-1)n+(i-1))v))。这里(((w-1)n+(i-1))v)代表整数((w-1)n+(i-1))v的m位比特串表示。
步骤9.利用密钥派生随机矩阵元素tij,(i,j∈{1,…,n}),以及第w轮的轮种子密钥rjw,(j=1,…,n),在
步骤10.轮序号w自增:w=w+1。然后转到步骤7。
步骤11.将派生密钥分片
步骤12.输出派生密钥k,结束本次组合密钥派生函数的执行。
实施例三本发明基于多个共享密钥获得任意指定长度派生密钥的具体实例
本实施例采用的单向函数h为国密标准gm/t0004-2012中的sm3密码杂凑算法,此时v=256。本实例的其他输入条件如下:给定的n=3个共享密钥k1,k2,k3均具有16字节长度,辅助输入aux具有4字节长度,要求输出的派生密钥比特长度为l=1016。k1,k2,k3及aux的字节串16进制表示分别为
基于本实例的输入条件,pkdf派生密钥生成过程如下:
1.获得
2.计算迭代轮数
3.对每个i=1,…,n,计算密钥派生随机矩阵生成元素种子ti=h(ki||aux||(2m-1))。这里(2m-1)代表整数2m-1的m位比特串表示。即:
1)整数2m-1的m位比特串表示对应如下7字节串16进制表示
ffffffffffffff
2)以ki||aux||(2m-1)为输入调用h,即sm3密码杂凑算法,获得ti的32字节串16进制表示如下
4.在
1)t11=t12=t13=1
2)t21=t1,t22=t2,t23=t3
3)
5.对每个
1)对w=1及i=1,2,3,获得整数((w-1)n+(i-1))v的7字节串16进制表示,如下
2)对w=1及i=1,2,3,以ki||aux||(((w-1)n+(i-1))v)为输入调用h,即sm3密码杂凑算法,获得r11,r21,r31的32字节串16进制表示,如下
3)对w=1及i=1,2,3,在
4)对w=2及i=1,2,3,获得整数((w-1)n+(i-1))v的7字节串16进制表示,如下
5)对w=2及i=1,2,3,以ki||aux||(((w-1)n+(i-1))v)为输入调用h,即sm3密码杂凑算法,获得r12,r22,r32的32字节串16进制表示,如下
6)对w=2及i=1,2,3,在
6.记
7.则派生密钥k为
本领域的技术人员容易理解的是,在不冲突的前提下,上述各有利方式可以自由地组合、叠加。以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。