一种标识和密钥的映射方法

文档序号:7967259阅读:225来源:国知局
专利名称:一种标识和密钥的映射方法
技术领域
本发明涉及组合密钥管理技术领域,尤其涉及基于标识的组合密钥管理技术领域,具体来讲是一种标识和密钥的映射方法。
背景技术
现代密码学的安全是建立在密钥保密而不是算法保密的基础上的,因此密钥的管理保护成了信息保密的关键。密钥和密钥拥有者标识之间的绑定是现代网络安全研究的最重要内容之一。目前将密钥和密钥拥有者标识绑定有两种方式,一种是通过密钥来生成密钥拥有者的标识,CGA(Cryptographically Generated Address)是这种方式的典型代表;另一种方式是通过标识来确定出该标识对应的密钥,即基于标识的密码体制。1984年,Shamir提出了基于标识的签名设想,2001年Don Boneh和Matthew Franklin根据Shamir的设想,提出了以Weil配对方式实现的基于标识的密钥管理体制。组合公钥(CPK)密码体制也是一种基于标识的密钥管理体制,它可以根据通信对方的标识直接计算出对方的公钥,在CPK体制中实现标识到密钥的映射是一个关键问题。在一般的公钥体制中,各用户的公钥是直接公布的,有多少用户,就公布多少个公钥,而在组合公钥技术中,各用户的公钥不直接公布,而只公布公钥因子矩阵,各用户的公钥则通过公钥因子矩阵和相关标识计算出来。
在基于标识的组合密钥管理体制中,文献([1]南湘浩,陈钟;网络安全技术概论;北京,国防工业出版社,2003.7;[2]唐文,南相浩,陈钟;基于椭圆曲线密钥系统的组合公钥技术;计算机工程与应用,2003年21期)给出的由标识到密钥的映射算法如下所述
首先是计算行标给定行密钥RowKey,它是系统中一个公开的常量。首先通过一种HASH函数(比如MD5、SHA-1等),将不定长度的标识ID变换成一个固定长度的变量Data1。
即,HASH(ID)=Data1;然后,通过加密算法(如AES)将中间变量Data1作为数据,用行密钥RowKey加密后得到MAP0;将MAP0作为数据,再用密钥RowKey加密得出MAP1;类似的直到得出所需的MAP值为止。为了便于说明,设密钥因子矩阵的大小为32×32。则AESRowKey(Data1)=MAP0;AESRowKey(MAP0)=MAP1;接着,MAP0的16个字节分别用M(本例中M=32)模,得出16个小于M的行标,以MAP
~MAP[15]表示,MAP1的16个字节分别模M后得出16个小于M的行标,以MAP[16]~MAP[31]表示;MAP0[i]mod M=MAP[i](i=0,1...,15);MAP1[i]mod M=MAP[i](i=16,17...,31);至此得出了32个行标,用于行的32次选择。
在行标计算后,进行列标的计算为了避免列标的顺序取用,设置列变量的置换算法PMT,其结果是(0,1,2,...,31)的全排列的一种,计算方法如下所示。
首先计算PMT算法所用的密钥PMT_KEY;AESColKey(ID)=PMT_KEY,ColKey是系统中一个公开的常量。
用PMTPMT_KEY(原序)=PERMUT;原序是0,1,......31的自然序。PERMUT是新的置换。
上述的方法是针对各种类型的标识做出的一种通用的映射方法,该方法计算量大,计算复杂,而且可能存在映射冲突问题。现有方案中,没有针对象IPv4、IPv6地址这类具有一定特殊性的标识给出一个特定的映射算法,而在实际的场景中,这一类的标识有着非常广泛的应用。

发明内容
鉴于现有技术中的上述问题,本发明提供了一种标识和密钥的映射方法,简化了标识到密钥的映射计算,映射方法简洁高效,而且对于具有特殊性的标识可以实现标识到密钥的无冲突映射。
本发明提供了一种标识和密钥的映射方法应用于基于标识的组合密钥管理系统中,在所述系统中已经生成密钥因子矩阵,所述方法包括步骤步骤1,根据定长二进制标识或由非定长二进制标识转换的定长二进制标识的长度值检验密钥因子矩阵的大小;步骤2,根据所述定长二进制标识计算出密钥因子在密钥因子矩阵中相应的行标组和列标组;步骤3,利用所述行标组和列标组对应的密钥因子计算与所述定长二进制标识对应的密钥。
所述步骤1包括对定长二进制标识的长度值进行因子分解;根据因子分解的结果判断密钥因子矩阵的大小是否合适;若判断结果为合适,则执行步骤2。
所述步骤1还包括若判断结果为不合适,则重新生成密钥因子矩阵。
所述密钥因子矩阵的大小表示为M×2n,所述对定长二进制标识的长度值进行因子分解按照公式进行,该公式的表达式为S=M×r+k;其中,S定长二进制标识的长度值;M密钥因子矩阵的行数;2n密钥因子矩阵的列数;k≥0且k<M;S、M、k、r、n均为整数。
判断密钥因子矩阵的大小是否合适是指判断r是否大于n;若判断结果为r≤n<S,则该密钥因子矩阵的大小合适;若判断结果为r>n,则所述密钥因子矩阵的大小不合适;其中,S定长二进制标识的长度值;n、r均为整数。
所述的步骤2包括计算与所述定长二进制标识相应的列标组;对密钥因子矩阵的所有行标进行置换,得到与所述定长二进制标识相应的行标组。
所述计算与定长二进制标识相应的列标组,包括判断k<n-r是否成立;如果判断结果为是,则按照公式计算列标组Ci(ID),该公式的表达式为Ci(ID)=[ID>>(i×r)]&(2n-1),i=0…M-1;其中,>>表示循环移位运算,ID为所述定长二进制标识;如果判断结果为否,则按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r)]&(2n-1),i=0...M-[k-(n-r)]-1,和Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=M-[k-(n-r)]…M-1;其中,>>表示循环移位运算,ID为所述定长二进制标识;M、k、n、r、i为整数。
所述计算与定长二进制标识相应的列标组,包括按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=0...M-1;其中,>>表示循环移位运算;ID为定长二进制标识;n、r、i为整数。
所述计算与定长二进制标识相应的列标组,包括按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r’)]&(2n-1),i=0...M-1;其中,>>表示循环移位运算,S>r’>r,r’不是S的因子,ID为定长二进制标识;S为定长二进制标识的长度值;r、r’、n、i为整数。
所述对密钥因子矩阵的所有行标进行置换,包括直接选取数据序列作为行标组,该数据序列为0,1,......,M-1,其中,M为密钥因子矩阵的行数。
所述对密钥因子矩阵的所有行标进行置换,包括将数据序列顺序存放、逆序存放或以随机的顺序存放在数组R[i]中,该数据序列为0,1,......,M-1;其中i=0,1,......,M-1;M为密钥因子矩阵的行数。
所述对密钥因子矩阵的所有行标进行置换,还包括步骤步骤11,设置i=0;步骤12,判断ID mod(M-i)<M-i-1是否成立;步骤13,如果步骤12的判断结果为是,则将R[ID mod(M-i)]和R[M-i-1]交换位置;如果步骤12的判断结果为否,则执行步骤14;步骤14,设置i=i+1,判断i是否等于M-2;步骤15,如果步骤14的判断结果为否,则重复步骤12至步骤15;如果步骤14的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
所述对密钥因子矩阵的所有行标进行置换,还包括步骤步骤21,设置i=0;步骤22,判断ID mod(M-i)≠0是否成立;步骤23,如果步骤22的判断结果为是,则将R[(ID mod(M-i))+i]和R[i]交换位置;如果步骤22的判断结果为否,则执行步骤24;步骤24,设置i=i+1,判断i是否等于M-2;步骤25,如果步骤24的判断结果为否,则重复步骤22至步骤25;如果步骤24的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
所述密钥因子矩阵的大小表示为2m×N;对定长二进制标识的长度值进行因子分解按照公式进行,该公式的表达式为S=N×r+k;其中,S定长二进制标识的长度值;2m密钥因子矩阵的行数;N密钥因子矩阵的列数;k≥0且k<N;S、N、k、r、m为整数。
判断密钥因子矩阵的大小是否合适是指判断r是否大于m;若判断结果为r≤m<S,则该密钥因子矩阵的大小合适;若判断结果为r>m,则所述密钥因子矩阵的大小不合适;其中,S定长二进制标识的长度值;m、r为整数。
所述的步骤2包括计算与所述定长二进制标识相应的行标组;对密钥因子矩阵的所有列标进行置换,得到与所述定长二进制标识相应的列标组。
所述计算与定长二进制标识相应的行标组,包括判断k<m-r是否成立;若判断结果为是,则按照公式计算行标组Ci(ID),该公式的表达式为Ci(ID)=[ID>>(i×r)]&(2m-1),i=0…N-1;若判断结果为否,则按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r)]&(2m-1),i=0…N-[k-(m-r)]-1,和Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=N-[k-(m-r)]…N-1;其中,>>表示循环移位运算,ID为所述的定长二进制标识;N、k、r、m、i为整数。
所述计算与定长二进制标识相应的行标组,包括按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=0...N-1;其中,>>表示循环移位运算,ID为所述的定长二进制标识;N、r、m、i为整数。
所述计算与定长二进制标识相应的行标组,包括按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r’)]&(2m-1),i=0...N-1;其中,>>表示循环移位运算,S>r’>r,r’不是S的因子,ID为所述的定长二进制标识;r’、r、m、i为整数。
所述对密钥因子矩阵的所有列标进行置换,包括直接选取数据序列作为列标组,该数据序列为0,1,......,N-1,其中,N为密钥因子矩阵的列数。
所述对密钥因子矩阵的所有列标进行置换,包括将数据序列顺序存放、逆序存放或以随机的顺序存放在数组R[i]中,该数据序列为0,1,......,N-1;其中i=0,1,......,N-1;N为密钥因子矩阵的列数。
所述对密钥因子矩阵的所有列标进行置换,还包括步骤步骤31,设置i=0;步骤32,判断ID mod(N-i)<N-i-1是否成立;步骤33,如果步骤32的判断结果为是,则将R[ID mod(N-i)]和R[N-i-1]交换位置;如果步骤32的判断结果为否,则执行步骤34;步骤34,设置i=i+1,判断i是否等于N-2;步骤35,如果步骤34的判断结果为否,则重复步骤32至步骤35;如果步骤34的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
所述对密钥因子矩阵的所有列标进行置换,还包括步骤步骤41,设置i=0;步骤42,判断ID mod(N-i)≠0是否成立;步骤43,如果步骤42的判断结果为是,则将R[(ID mod((N-i)+i))和R[i]交换位置;如果步骤42的判断结果为否,则执行步骤44;步骤44,设置i=i+1,判断i是否等于N-2;步骤45,如果步骤44的判断结果为否,则重复步骤42至步骤45;如果步骤44的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
所述的步骤3包括从密钥因子矩阵中选取与所述的行标组和列标组对应的密钥因子;利用所述密钥因子计算与所述定长二进制标识对应的密钥。
在离散对数密码系统中,利用密钥因子按照公式计算密钥;其中,按照公式SKID=Σi=0MS[Ri,Ci]modp]]>计算私钥SKID;按照公式PKID=gSKIDmodp]]>计算公钥PKID;其中,p和g为离散对数密码系统的参数,Ri为列标,Ci为行标,S[Ri,Ci]为与标识对应的私钥因子。
在椭圆曲线密码系统中,利用密钥因子按照公式计算密钥;其中,按照公式SKID=Σi=0MS[Ri,Ci]modn]]>计算私钥SKID;按照公式SKID=SKID×G计算公钥PKID;其中,n和G为椭圆曲线密码系统的参数Ri为列标,Ci为行标,S[Ri,Ci]为与标识对应的私钥因子。
采用哈希函数或消息鉴别码函数将所述非定长二进制标识转换为定长二进制标识。
本发明的有益效果在于,简化了标识到密钥的映射计算,映射算法简洁高效,而且对于具有特殊性的标识可以实现标识到密钥的无冲突映射。


图1A和图1B分别为本发明的公钥因子矩阵和私钥因子矩阵的示意图;图2为本发明一实施例的方法流程图;图3为本发明一实施例的方法流程图;图4为本发明一实施例的方法流程图;图5为本发明另一实施例的方法流程图。
具体实施例方式
以下结合附图详细说明本发明。
本发明提供了一种标识和密钥的映射方法,应用于基于标识的组合密钥管理系统中,在所述系统中已经生成密钥因子矩阵,所述的方法包括根据定长二进制标识或由非定长二进制标识转换的定长二进制标识的长度值检验密钥因子矩阵的大小;根据所述定长二进制标识计算出密钥因子在密钥因子矩阵中相应的行标组和列标组,以定位密钥因子;利用所述行标组和列标组对应的密钥因子计算与所述定长二进制标识对应的密钥。
其中,所述的标识可以是像IPv4、IPv6地址这类具有一定特殊性的标识,对于像IPv4、IPv6地址这类标识,其特殊性在于,标识本身即为S比特(bit)的二进制标识;对于原始标识是一个由字母、数字等混合元素组成的标识,可以先通过哈希(HASH)或加密算法处理生成一个定长的二进制标识后再进行相应的映射计算,其中,将变长标识变换为定长值的方法可以采用消息鉴别码(MACMessage Authentication Code)函数或普通的HASH算法。
总之,对于任意一种标识,均能通过本发明提供的标识和密钥的映射方法实现密钥和密钥拥有者标识之间的绑定。
在本发明的实施例中,密钥因子矩阵包括公钥因子矩阵和私钥因子矩阵,密钥包括公钥和私钥,密钥因子包括公钥因子和私钥因子。而且,在实施本发明的映射方法时,系统中已生成了大小为M×N的密钥因子矩阵,其中N=2n,M=2m。公、私钥因子矩阵是基于标识的组合密钥管理体制的基础。私钥是在私钥因子矩阵中按照一定的映射规则在每行(或列)各选取一个私钥因子通过相应运算计算出;相应的,公钥是在公钥因子矩阵中按照一定的映射规则在每行(或列)各选取一个公钥因子通过相应运算计算出。设私钥因子矩阵为SKM=[Sij],其中i=0...M-1,j=0...N-1;如果私钥是从私钥因子矩阵中每行各选取一个私钥因子计算出,则对N做限定,要求N=2n,n为正整数;如果私钥是从私钥因子矩阵中每列各选取一个私钥因子计算出,则对M进行限定,要求M=2m,m为正整数。
公私钥因子无论是按行选取还是按列选取其计算都是类似的。其区别仅在于如果是按行选取,则先计算列标组;再对所有的行标进行置换,即所得到的行标是所有行标的全排列的一种;如果是按列选取,则先计算行标组;再对所有的列标进行置换,即所得到的列标组是所有列标的全排列的一种。
下面结合附图对本发明进行详细说明。
实施例一在本实施例中,以公私钥因子是按行选取为例进行介绍。
如图1A和图1B所示分别为私钥因子矩阵和公钥因子矩阵示意图。如图所示,私钥因子矩阵为SKM=[Sij],其中i=0...M-1,j=0...N-1;相应的公钥因子矩阵为PKM=[Pij],其中i=0...M-1,j=0...N-1。
在椭圆曲线密码系统中,设G是某椭圆曲线的基点,则Pij=Sij×G,即PKM=SKM×G。
在离散对数密码系统中,T={g,p},其中p是素数,g是有限域Fp生成元,g小于p,则Pij=gSijmodp.]]>通常密钥因子矩阵的大小关系到系统的安全性,同时也和系统的规模(即用户数)是相关的,而标识的长度决定了系统中最大的用户数。
下面,结合图2至图4说明本实施例,在图2至图4的流程图中,在实施本发明的映射方法之前,系统中已经生成了大小为M×N的密钥因子矩阵,其中N=2n,M=2m。将本发明的映射方法分为三个过程密钥因子矩阵的检验过程、行标组和列标组的计算过程和密钥的计算过程。
需要说明的是,因为对于像IPv4、IPv6地址这类具有S bit的定长二进制标识和包含有由字母、数字等混合元素组成的标识,本发明的映射方法都可以应用。
因此,对于使用类似于DNS域名的通用标识的系统,如图2所示,在进行密钥因子矩阵的检验之前,需要将通用标识转换为定长二进制标识,并将其直接作为以下过程中使用的定长二进制标识(见步骤S101)。
对于标识为S bit的定长二进制标识,如图4所示,可将其直接作为以下过程中使用的定长二进制标识(见步骤S301)。
另外,如图3所示,还可以选取上述定长二进制标识的一部分作为以下过程中使用的定长二进制标识(见步骤S201)。例如如果密钥生成中心所管理的范围是IPv6的一个子网,其子网前缀是n bit,那么系统在取标识时可以只考虑128-n bit的接口标识部分来决定密钥因子矩阵的大小以及标识和密钥间的映射。同理,对于一个使用类似于DNS域名的通用标识的系统,在将通用标识转换为定长标识时,可以根据系统的规模而只取经过哈希(HASH)函数或消息鉴别码(MACMessage Authentication Code)函数计算得出的值的一部分进行映射计算即可。
一、密钥因子矩阵的检验过程密钥因子矩阵的检验过程为根据定长二进制标识或由非定长二进制标识转换的定长二进制标识的长度值检验密钥因子矩阵的大小。
检验密钥因子矩阵的大小包括对定长二进制标识的长度值进行因子分解;根据因子分解的结果判断密钥因子矩阵的大小是否合适;如果所述的判断步骤的结果为是,则进行行标组和列标组的计算过程。如果所述的判断步骤的结果为否,则重新生成密钥因子矩阵。
如图2、图3和图4所示,对密钥因子矩阵的检验过程具体如下将定长二进制标识的长度值按照S=M×r+k进行因子分解,其中k≥0且k<M(见步骤S102);如果r≤n<S,则密钥因子矩阵可用(见步骤S103);如果r>n,则所述密钥因子矩阵太小,需要重新生成密钥因子矩阵(见步骤S109),其中M为密钥因子矩阵的行数,S为定长二进制标识的长度值,k为0或正整数,r、n为正整数。
举一个特例进行说明将系统中的定长的S bit的二进制标识表示为S=M×r(此时取k=0),依然假定公私钥是在公私钥因子矩阵中按照一定的映射规则在每行各选取一个公私钥因子通过相应运算计算出,则密钥因子矩阵的大小可以取M×2n’,n’≥n。例如在以IPv6地址为标识的系统中,IPv6地址是128bit,128=32×4,则密钥因子矩阵的大小可以取为32×24。
二、行标组和列标组的计算过程为了计算一个标识对应的公私钥,需要找出计算公私钥的密钥因子,要定位密钥因子,则需要根据标识计算出密钥因子在密钥因子矩阵中相应的行标组和列标组。
首先,进行列标组的计算。
在上述的密钥因子矩阵的检验过程中,已经将定长二进制标识ID的长度值按照S=M×r+k进行因子分解,其中k≥0且k<M,M为密钥因子矩阵的行数,S为定长二进制标识的长度值。因为已经经过了上述密钥因子矩阵的检验过程,因此,该公式中的r≤n<S。
下面提供了三种方法通过所述定长二进制标识ID来计算列标组的方法。
第一种方法如图2所示,计算过程如下如果k<n-r,则计算列标组Ci(ID)=[ID>>(i×r)]&(2n-1),i=0...M-1;其中,>>表示循环移位运算(见步骤S104、S105);如果k≥n-r,则按照下述公式计算列标组Ci(ID)(见步骤S110)Ci(ID)=[ID>>(i×r)]&(2n-1),i=0...M-[k-(n-r)]-1,Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=M-[k-(n-r)]...M-1其中,>>表示循环移位运算。
第二种方法如图3所示,按下述公式计算列标组Ci(ID)(见步骤S205)Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=0...M-1
其中,>>表示循环移位运算。
第三种方法如图4所示,按下述公式计算列标组Ci(ID)(见步骤S305)Ci(ID)=[ID>>(i×r’)]&(2n-1),i=0...M-1其中,>>表示循环移位运算,S>r’>r,要求r’不是的S因子。
其次,进行行标组的计算。
密钥因子从密钥因子矩阵的每一行选取一个,因此行标组是(0...M-1)的一个置换,如图2所示,最简单的方式就是直接选取0...M-1(见步骤S106)。
此外,还可以通过下述两种方法进行行标置换第一种方法如图3所示,见步骤S206~S212,把0...M-1顺序放在数组R
...R[M-1]。然后执行下面的运算步骤1)设置i=0;2)判断ID mod(M-i)<M-i-1是否成立;3)如果2)的结果为是,则将R[ID mod(M-i)]和R[M-i-1]交换位置;如果2)的结果为否,则执行4);4)设置i=i+1,重复步骤2)至4),直到i=M-2时结束。
经过上面处理后的数组R
...R[M-1]存放的是(0...M-1)的一个置换。则置换后的数组存放的数据序列为行标组。
第二种方法如图4所示,见步骤S306至步骤S312,把0...M-1逆序放在数组A
...A[M-1]。然后执行下面的运算步骤1’)设置i=0;2’)判断ID mod(M-i)≠0是否成立;3’)如果2’)的判断结果为是,则将A[ID mod(M-i)]和A[i]交换位置;如果2’)的判断结果为否,执行4’);
4’)设置i=i+1,重复步骤2’)至4’),直到i=M-2时结束。
经过上面处理后的数组A
...A[M-1]存放的是(0...M-1)的一个置换。则置换后的数组存放的数据序列为行标组。
在图3所示的步骤S206和图4所示的步骤S306中,把0...M-1放在数组中的顺序可以是顺序存放、逆序存放、也可以是以随机的顺序存放。
三、密钥的计算过程在计算出所述标识对应的列标组和行标组后,从密钥因子矩阵中选取与所述的行标组和列标组对应的密钥因子(见步骤S107)。例如设密钥因子矩阵的大小为16×64,即M=16,N=64,组成公私钥的密钥因子是按行从密钥因子矩阵中选取的。假如对于一个标识ID,根据上面给出的映射方法,可以计算出作为列标16个值为(8,2,62,......,33),相应的行标置换(3,8,1,......,12),于是在私钥因子矩阵中取S3,8,S8,2,S1,62,......,S12,33计算出ID对应的私钥;相应的标识ID对应的公钥从公钥因子矩阵中取P3,8,P8,2,P1,62,......,P12,33计算出。
在得到标识对应的行标组和列标组后,再进行公私钥对的计算(见步骤S108)。
由于私钥是需要保密的,只有密钥管理中心才能保存私钥因子矩阵,私钥的生成只能在密钥管理中心进行,生成后发放给相应的实体,系统中的每个实体并不知道用于计算自身私钥的每个私钥因子;每个标识的公钥在整个密钥管理中心所管理的域内是公开的,所以公钥因子矩阵是需要公开的。
在离散对数密码系统,系统参数T={g,p},其中p是素数,g是有限域Fp生成元,g小于p。一个标识ID对应的列标为C0,C1~CM-1,相应的行标为R0,R1~RM-1,S[Ri,Ci]为与标识对应的私钥因子,则标识ID对应的私钥SKID=Σi=0MS[Ri,Ci]modp;]]>对应的公钥
PKID=Πi=0MP[Ri,Ci]modp=(gS[R0,C0]×gS[R1,C1]...×gS[R31,C31])modp]]>=(gS[R0,C0]+S[R1,C1]...+S[R31,C31])modp=gSKIDmodp;]]>如果是椭圆曲线密码系统,系统参数T(a,b,G,n,p),其中p是正整数,Fp是有限域,a,b是Fp上的正整数,G是椭圆曲线E(Fp)上的基点,n是素数,是基点G的阶。一个标识ID对应的列标为C0,C1~CM-1,相应的行标为R0,R1~RM-1,则标识ID对应的私钥SKID=Σi=0MS[Ri,Ci]modn;]]>对应的公钥SKID=Σi=0MP[Ri,Ci]modp=SKID×G.]]>实施例二在本实施例中,根据图5对公私钥因子按列选取进行说明。公私钥因子无论是按行选取还是按列选取,其计算都是类似。
同样采用如图1A和图1B的私钥因子矩阵和公钥因子矩阵。执行本实施例的方法之前,系统中已经生成了大小为M×N的密钥因子矩阵,其中N=2n,M=2m。在本实施例中将密钥因子矩阵的大小表示为S=2m×N。本实施例的映射方法也分为三个过程密钥因子矩阵的检验过程、行标组和列标组的计算过程和密钥的计算过程。
同样对于向IPv4、IPv6地址这类具有S bit的定长二进制标识和包含有由字母、数字等混合元素组成的非定长的二进制标识,本发明的映射方法都可以使用。在图5的流程图中,在实施本发明的映射方法之前,系统中已经生成了大小为M×N的密钥因子矩阵,其中N=2n,M=2m,m为正整数。如图5所示的标识为通用标识,需要将标识转换为二进制标识,并选取一部分作为下述步骤中的定长二进制标识(见步骤S401)。
一、密钥因子矩阵的检验过程密钥因子矩阵的检验过程与实施例一相同,只是在因子分解时,以密钥因子矩阵的列数N代替密钥因子矩阵的行数M。具体过程如图5的步骤S402、步骤S403和步骤S409将定长二进制标识的长度值S按照S=N×r+k进行因子分解,其中k≥0且k<N;如果r≤m<S,则密钥因子矩阵可用;如果r>m,则所述密钥因子矩阵太小,需要重新生成密钥因子矩阵。
二、行标组和列标组的计算过程在本实施例申由于是按列选取密钥因子,因此,需要现进行行标组的计算,再对列标组进行置换。
首先,进行行标组的计算。
在上述的密钥因子矩阵的检验过程中,已经将定长二进制标识ID按照S=N×r+k进行因子分解,其中k≥0且k<N,N为密钥因子矩阵的列数。因为已经经过了密钥因子矩阵的检验过程,因此,该公式中的r≤m<S。通过所述的定长二进制标识ID来计算行标组同样有三种方法第一种方法(图中未示出)是按照如下的公式计算行标组Ci(ID)如果k<m-r,Ci(ID)=[ID>>(i×r)]&(2m-1),i=0...N-1其中,>>表示循环移位运算;如果k≥m-r,Ci(ID)=[ID>>(i×r)]&(2m-1),i=0...N-[k-(m-r)]-1,Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=M-[k-(m-r)]...N-1,其中,>>表示循环移位运算。
第二种方法(图中未示出)按照如下的公式计算行标组Ci(ID)Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=0...N-1其中,>>表示循环移位运算。
第三种方法,见图5中的步骤S405,按照如下的公式计算行标组Ci(ID),Ci(ID)=[ID>>(i×r’)]&(2m-1),i=0...N-1其中,>>表示循环移位运算,S>r’>r,要求r’不是S的因子。
接着,进行列标组的计算。
密钥因子从密钥因子矩阵的每一列选取一个,因此列标组是(0...N-1)的一个置换,最简单的方式就是直接选取0...N-1(图中未示出)。此外,同样进行置换也可以通过实施例一中的两种方法稍作变化即可第一种方法(图中未示出),把0...N-1顺序存放、逆序存放或以随机的顺序存放在数组R
...R[N-1]。然后执行下面的运算步骤1)设置i=0;2)判断ID mod(N-i)<N-i-1是否成立;3)如果2)的结果为是,则将R[ID mod(N-I)]和R[N-i-1]交换位置;如果2)的结果为否,则执行4);4)设置i=i+1,重复步骤2)至4),直到i=N-2时结束。
经过上面处理后的数组R
...R[N-1]存放的是(0...N-1)的一个置换。则置换后的数组存放的数据序列为列标组。
如图5的步骤S406至步骤S412所示为第二种方法,把0...N-1顺序存放、逆序存放或以随机的顺序存放在数组A
...A[N-1]。然后执行下面的运算步骤1’)设置i=0;2’)判断ID mod(N-i)≠0是否成立;3’)如果2’)的结果为是,则将A[ID mod(N-I)]和A[i]交换位置;如果2’)的结果为否,则执行4’);4’)设置i=i+1,重复步骤2’)至4’),直到i=N-2时结束。
经过上面处理后的数组A
...A[N-1]存放的是(0...N-1)的一个置换。则置换后的数组存放的数据序列为列标组。
三、密钥的计算过程与实施例一相同,在此不再赘述。
通过本发明,简化了标识到密钥的映射方法,映射方法简洁高效,易于实现,而且对于IPv4、IPv6这类的标识可以实现标识到密钥的无冲突映射。
上述实施例仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种标识和密钥的映射方法,应用于基于标识的组合密钥管理系统中,在所述系统中已经生成密钥因子矩阵,其特征在于,所述方法包括步骤步骤1,根据定长二进制标识或由非定长二进制标识转换的定长二进制标识的长度值检验密钥因子矩阵的大小;步骤2,根据所述定长二进制标识计算出密钥因子在密钥因子矩阵中相应的行标组和列标组;步骤3,利用所述行标组和列标组对应的密钥因子计算与所述定长二进制标识对应的密钥。
2.根据权利要求1所述的标识和密钥的映射方法,其特征在于,所述步骤1包括对定长二进制标识的长度值进行因子分解;根据因子分解的结果判断密钥因子矩阵的大小是否合适;若判断结果为合适,则执行步骤2。
3.根据权利要求2所述的标识和密钥的映射方法,其特征在于,所述步骤1还包括若判断结果为不合适,则重新生成密钥因子矩阵。
4.根据权利要求2或3所述的标识和密钥的映射方法,其特征在于,所述密钥因子矩阵的大小表示为M×2n,所述对定长二进制标识的长度值进行因子分解按照公式进行,该公式的表达式为S=M×r+k;其中,S定长二进制标识的长度值;M密钥因子矩阵的行数;2n密钥因子矩阵的列数;k≥0且k<M;S、M、k、r、n均为整数。
5.根据权利要求4所述的标识和密钥的映射方法,其特征在于,判断密钥因子矩阵的大小是否合适是指判断r是否大于n;若判断结果为r≤n<S,则该密钥因子矩阵的大小合适;若判断结果为r>n,则所述密钥因子矩阵的大小不合适;其中,S定长二进制标识的长度值;n、r均为整数。
6.根据权利要求4所述的标识和密钥的映射方法,其特征在于,所述的步骤2包括计算与所述定长二进制标识相应的列标组;对密钥因子矩阵的所有行标进行置换,得到与所述定长二进制标识相应的行标组。
7.根据权利要求6所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的列标组,包括判断k<n-r是否成立;如果判断结果为是,则按照公式计算列标组Ci(ID),该公式的表达式为Ci(ID)=[ID>>(i×r)]&(2n-1),i=0…M-1;其中,>>表示循环移位运算,ID为所述定长二进制标识;如果判断结果为否,则按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r)]&(2n-1),i=0...M-[k-(n-r)]-1,和Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=M-[k-(n-r)]…M-1;其中,>>表示循环移位运算,ID为所述定长二进制标识;M、k、n、r、i为整数。
8.根据权利要求6所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的列标组,包括按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)={ID>>[i×(r+1)]}&(2n-1),i=0...M-1;其中,>>表示循环移位运算;ID为定长二进制标识;n、r、i为整数。
9.根据权利要求6所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的列标组,包括按照公式计算列标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r’)]&(2n-1),i=0...M-1其中,>>表示循环移位运算,S>r’>r,r’不是S的因子,ID为定长二进制标识;S为定长二进制标识的长度值;r、r’、n、i为整数。
10.根据权利要求6所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有行标进行置换,包括直接选取数据序列作为行标组,该数据序列为0,1,......,M-1,其中,M为密钥因子矩阵的行数。
11.根据权利要求6所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有行标进行置换,包括将数据序列顺序存放、逆序存放或以随机的顺序存放在数组R[i]中,该数据序列为0,1,......,M-1;其中i=0,1,......,M-1;M为密钥因子矩阵的行数。
12.根据权利要求11所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有行标进行置换,还包括步骤步骤11,设置i=0;步骤12,判断ID mod(M-i)<M-i-1是否成立;步骤13,如果步骤12的判断结果为是,则将R[ID mod(M-i)]和R[M-i-1]交换位置;如果步骤12的判断结果为否,则执行步骤14;步骤14,设置i=i+1,判断i是否等于M-2;步骤15,如果步骤14的判断结果为否,则重复步骤12至步骤15;如果步骤14的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
13.根据权利要求11所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有行标进行置换,还包括步骤步骤21,设置i=0;步骤22,判断ID mod(M-i)≠0是否成立;步骤23,如果步骤22的判断结果为是,则将R[(ID mod(M-i))+i]和R[i]交换位置;如果步骤22的判断结果为否,则执行步骤24;步骤24,设置i=i+1,判断i是否等于M-2;步骤25,如果步骤24的判断结果为否,则重复步骤22至步骤25;如果步骤24的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
14.根据权利要求2或3所述的标识和密钥的映射方法,其特征在于,所述密钥因子矩阵的大小表示为2m×N;对定长二进制标识的长度值进行因子分解按照公式进行,该公式的表达式为S=N×r+k;其中,S定长二进制标识的长度值;2m密钥因子矩阵的行数;N密钥因子矩阵的列数;k≥0且k<N;S、N、k、r、m为整数。
15.根据权利要求14所述的标识和密钥的映射方法,其特征在于,判断密钥因子矩阵的大小是否合适是指判断r是否大于m;若判断结果为r≤m<S,则该密钥因子矩阵的大小合适;若判断结果为r>m,则所述密钥因子矩阵的大小不合适;其中,S定长二进制标识的长度值;m、r为整数。
16.根据权利要求14所述的标识和密钥的映射方法,其特征在于,所述的步骤2包括计算与所述定长二进制标识相应的行标组;对密钥因子矩阵的所有列标进行置换,得到与所述定长二进制标识相应的列标组。
17.根据权利要求16所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的行标组,包括判断k<m-r是否成立;若判断结果为是,则按照公式计算行标组Ci(ID),该公式的表达式为Ci(ID)=[ID>>(i×r)]&(2m-1),i=0…N-1;若判断结果为否,则按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r)]&(2m-1),i=0…N-[k-(m-r)]-1,和Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=N-[k-(m-r)]…N-1;其中,>>表示循环移位运算,ID为所述的定长二进制标识;N、k、r、m、i为整数。
18.根据权利要求16所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的行标组,包括按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)={ID>>[i×(r+1)]}&(2m-1),i=0...N-1;其中,>>表示循环移位运算,ID为所述的定长二进制标识;N、r、m、i为整数。
19.根据权利要求16所述的标识和密钥的映射方法,其特征在于,所述计算与定长二进制标识相应的行标组,包括按照公式计算行标组Ci(ID),该公式表达式为Ci(ID)=[ID>>(i×r’)]&(2m-1),i=0...N-1其中,>>表示循环移位运算,S>r’>r,r’不是S的因子,ID为所述的定长二进制标识;r’、r、m、i为整数。
20.根据权利要求16所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有列标进行置换,包括直接选取数据序列作为列标组,该数据序列为0,1,......,N-1,其中,N为密钥因子矩阵的列数。
21.根据权利要求16所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有列标进行置换,包括将数据序列顺序存放、逆序存放或以随机的顺序存放在数组R[i]中,该数据序列为0,1,......,N-1;其中i=0,1,......,N-1;N为密钥因子矩阵的列数。
22.根据权利要求21所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有列标进行置换,还包括步骤步骤31,设置i=0;步骤32,判断ID mod(N-i)<N-i-1是否成立;步骤33,如果步骤32的判断结果为是,则将R[ID mod(N-i)]和R[N-i-1]交换位置;如果步骤32的判断结果为否,则执行步骤34;步骤34,设置i=i+1,判断i是否等于N-2;步骤35,如果步骤34的判断结果为否,则重复步骤32至步骤35;如果步骤34的判断结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
23.根据权利要求21所述的标识和密钥的映射方法,其特征在于,所述对密钥因子矩阵的所有列标进行置换,还包括步骤步骤41,设置i=0;步骤42,判断ID mod(N-i)≠0是否成立;步骤43,如果步骤42的判断结果为是,则将R[(ID mod((N-i)+i))和R[i]交换位置;如果步骤42的判断结果为否,则执行步骤44;步骤44,设置i=i+1,判断i是否等于N-2;步骤45,如果步骤44的结果为否,则重复步骤42至步骤45;如果步骤44的结果为是,则置换结束,且经上述步骤处理后的数组R[i]存放的是(0…M-1)的一个置换。
24.根据权利要求1所述的标识和密钥的映射方法,其特征在于,所述的步骤3包括从密钥因子矩阵中选取与所述的行标组和列标组对应的密钥因子;利用所述密钥因子计算与所述定长二进制标识对应的密钥。
25.根据权利要求24所述的标识和密钥的映射方法,其特征在于,在离散对数密码系统中,利用密钥因子按照公式计算密钥;其中,按照公式SKID=Σi=0MS[Ri,Ci]modp]]>计算私钥SKID;按照公式PKID=gSKIDmodp]]>计算公钥PKID;其中,p和g为离散对数密码系统的参数,Ri为列标,Ci为行标,S[Ri,Ci]为与标识对应的私钥因子。
26.根据权利要求24所述的标识和密钥的映射方法,其特征在于,在椭圆曲线密码系统中,利用密钥因子按照公式计算密钥;其中,按照公式SKID=Σi=0MS[Ri,Ci]modn]]>计算私钥SKID;按照公式SKID=SKID×G计算公钥PKID;其中,n和G为椭圆曲线密码系统的参数Ri为列标,Ci为行标,S[Ri,Ci]为与标识对应的私钥因子。
27.根据权利要求1所述的标识和密钥的映射方法,其特征在于,采用哈希函数或消息鉴别码函数将所述非定长二进制标识转换为定长二进制标识。
全文摘要
本发明提供了一种标识和密钥的映射方法,该方法应用于基于标识的组合密钥管理系统中,在所述系统中已经生成密钥因子矩阵,该方法包括根据定长二进制标识或由非定长二进制标识转换的定长二进制标识的长度值检验密钥因子矩阵的大小;根据所述定长二进制标识计算出密钥因子在密钥因子矩阵中相应的行标组和列标组,以定位密钥因子;利用所述行标组和列标组对应的密钥因子计算与所述定长二进制标识对应的密钥。本发明简化了标识到密钥的映射方法,本发明的映射方法简洁高效,易于实现,而且对于像IPv4、IPv6这类的标识可以实现标识到密钥的无冲突映射。
文档编号H04L9/12GK1909445SQ200610115440
公开日2007年2月7日 申请日期2006年8月9日 优先权日2006年8月9日
发明者李春强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1