一种基于密码芯片的密钥的管理的方法

文档序号:10538510阅读:213来源:国知局
一种基于密码芯片的密钥的管理的方法
【专利摘要】本发明提供一种基于密码芯片的密钥管理的方法,其包括密钥的管理和重组分配的方法,其拆分和重组的执行效率高,包括了定义原始秘密、拆分原始秘密、以树结构存储、分发份额和恢复密码的方法。
【专利说明】
一种基于密码芯片的密钥的管理的方法
技术领域
[0001] 本发明涉及数据结构技术领域,具体为一种基于密码芯片的密钥管理的方法。
【背景技术】
[0002] 在密码芯片的等相关领域,为了实现信息的安全保密,人们主要采用加密的手段 来保密信息,而加密的核心是密钥的保密问题,密钥管理直接影响着通信的安全。秘密共享 是一种可以解决密钥管理问题的方法,秘密共享可以将原有秘密分成若干个份额,然后将 这些份额分给若干个个人或者组织保管。当需要重新恢复原始秘密的时候,所有必需的份 额被重新组合。如果这些份额在拆分和重组的时候可以部分份额先组合,然后组合得到的 新份额可以继续组合,从而形成层次型的组合方式。在这个过程中,对于这些份额的数据存 储,可以采用树形结构,但是传统的树的存储结构如孩子链表表示法、双亲表示法以及兄弟 孩子链表表示法等方式在这种应用场合显得效率不是很高,尤其在份额的数量比较多的情 况下比较突出。

【发明内容】

[0003] 针对上述问题,本发明提供一种基于密码芯片的密钥管理的方法,其包括密钥的 管理和重组分配的方法,其拆分和重组的执行效率高。
[0004] 其技术方案是这样的:
[0005] -种基于密码芯片的密钥的管理的方法,主要用于密码芯片的密钥管理,其特征 在于,包括以下步骤:
[0006] (1)定义:
[0007] 密码芯片接收到原始秘密k,原始秘密k包括若干份额(kp k2, k3,…,kn);
[0008] (2)拆分:
[0009] 步骤A1 :所述原始秘密k使用拉格朗日插值多项式进行f函数拆分运算得到各 个份额h,拆分后的份额的集合形式为:(1^,kfr+1)z,k( z+1)u,…,kvn),其中1彡r < t,t < u ^ v, v ^ η ;
[0010] 步骤A2 :将步骤A1拆分之后得到的若干个份额使用拉格朗日插值多项式继续拆 分,kwx 可以拆分成(kwy,k(y+1)z,k(z+1)a,…,kbx),其中 w<y<z,z<a<b,b;^x;
[0011] 步骤A3 :重复以上步骤A2,直至拆分结束;
[0012] ⑶存储
[0013] 将拆分后的份额集合以树形结构储存,定义存在树G,结点个数为n,树中的每个 结点存储每个份额的信息,每个结点以四元组〈Dy Dp Dls,Dle〉的形式组成顺序表进行存储, 定义Di。表示结点Di所处的层数,Di表示Di结点具体的结点数据,D ls和Dle分别表示Di结 点的子结点在DJI层从左到右的开始序号和结束序号,0彡i彡η ;拆分后的原始秘密k可 以用树G可以存储为:f(G) = (…,⑶化##,」,…, 〈Dn。,Dn,Dns,DJ ),在f (G)中的所有四元组他。,Dy Dls,DJ :都是按照树G的结点从上到 下、从左到右的顺序依次存放,即按层数从小到大的顺序进行排列,如果Dls和Dle等于0,则 表示Di结点没有子结点;
[0014] (4)分发:在原始秘密k拆分之后需要将拆分得到的各个份额分给各保管者:
[0015] 定义Travel (G)表示遍历树G中所有叶子结点并输出遍历序列,Travel (G)将树G 的f (G)的四元组表中的每个结点依次检查是否符合Dls = 0并且Dle = 0,如果符合则将所 对应的Di输出,然后将输出的所有Di分发给各保管者;
[0016] (5)恢复:将原始秘密k拆分后得到的树G重组成原始密码k,包括以下步骤:
[0017] 步骤B1 :读取密码芯片中的树G,在f(G)中所有〈DyDyDyDd的形式的四元组 中依次取得所有Dls = 0并且Dle = 0的Di ;
[0018] 步骤B2 :将取得的所有Di与试图恢复原始秘密k所提供的所有份额进行比对,如 果在提供的份额中缺少或者增加任何份额均认为此次恢复是非授权的,恢复过程终止;
[0019] 步骤B3 :将用户提供的份额合并恢复成上一层份额,将恢复的份额与f(G)进行比 对,如果恢复的份额与f(G)相同则恢复组合比对成功并进行合并恢复,否则应终止恢复程 序;
[0020] 步骤B4 :重复步骤B3,直至原始秘密k恢复结束。
[0021] 进一步的,计算父节点、即恢复上一层份额的计算步骤如下:
[0022] 步骤C1 :定义Parent (G,M)表示计算树G中Μ结点的父结点;
[0023] 步骤C2 :在f (G)中依次比较每个Di值是否等于Μ ;
[0024] 步骤C3 :如果在f(G)中没有找到结点Μ,树G不存在Μ结点,算法结束;
[0025] 步骤C4 :如果在f (G)中找到Μ结点,则设〇 (G,Α)为计算Α结点在f (G)中的同 层次结点中的排列序号;
[0026] 定义Μ结点的层数为M。,如果兄-1 = 0,则Μ结点为树G的根结点,所以Μ结点无父 结点;如果1-1>0,则依次比较以6)中所有符合01。= 1。-1的01结点是否符合01;3彡〇(6, Μ)彡Dle,如果符合,则Parant(G,M) =Di,如果不存在某个01结点符合Dls彡σ (G,M)彡Dle, 则f(G)存储错误。
[0027] 计算子节点、即下一层份额的计算步骤如下:
[0028] 步骤D1 :定义Child(G,M)表示计算树G中Μ结点的子结点;
[0029] 步骤D2 :在f (G)中依次比较每个Di值是否等于Μ ;
[0030] 步骤D3 :如果在f (G)中没有找到Μ结点,树G不存在Μ结点,算法结束;
[0031] 步骤D4 :如果在f (G)中找到Μ结点,则提取Μ结点的四元组〈M。,M,Ms,MJ,取得 Μ结点所处的层数l,Ms和I分布表示Μ结点的子结点在1+1层从左到右的开始序号和结 束序号,如果M s和I都等于0或者任意一个等于0,则Μ结点无子结点,算法结束;
[0032] 步骤D5 :计算得到Child(G,M) = (Dj,Dj+1,Dj+2,…,Dk),其中各结点对应的Djc, D(j+i)c,D(j+2)c,...,Dkc - Mc+1,Ms < j,j+1,j+2,...,k < Me〇
[0033] 定义Height (G)表示计算树G的高度,计算树G的高度提取〈Dn。,Dn,Dns,D nJ中的 层次数Dn。为该树的高度,即Height (G) = Dn。。
[0034] 本发明的有益效果是:利用本发明的树G的存储结构具有以下优势:
[0035] (1)计算树的高度或者结点的层次数比传统的存储结构效率更高,Height (G)表 示计算树G的高度或者结点G的层次数,采用树G的存储结构,计算Height (G)非常简单, 只需要直接提取〈Dn。,Dn,Dns,DJ中的层次数Dn。,即Height(G) = Dn。。该算法过程的时间 复杂度是〇 (1),效率明显高于其他现有的各种存储方式。通过上述过程得到树的高度或者 结点所处的层次数就可以在恢复原始秘密的时候根据树或者当前所处结点的层次数量计 算得到整个恢复过程的进度情况,从而提供给操作者足够的信息反馈,避免出现无法估计 恢复过程进度的情况。
[0036] (2)本发明提出的存储结构使用顺序表进行存储,具有顺序表本身能够根据下标 号码进行写入和读取数据的随机存取功能,大大提高存取的效率,相比传统的孩子链表表 法、兄弟孩子链表这种使用链表的存储方式更加快捷。另外,相对传统的孩子链表表 法、兄弟孩子链表这种使用链表的存储方式,本发明提出的存储方法不需要额外的存储空 间存储相关结点的地址信息,从而提高了存储空间的使用率。本发明提出的存储结构和方 法在时间和空间上具备传统的存储方法更高的使用效率。
【附图说明】
[0037] 图1为实施例1的树的结构。
[0038] 图2为实施例2的树的结构。
【具体实施方式】
[0039] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。
[0040] 一种基于密码芯片的密钥的管理的方法,主要用于密码芯片的密钥管理,其特征 在于,包括以下步骤:
[0041] (1)定义:
[0042] 密码芯片接收到原始秘密k,原始秘密k包括若干份额(kp k2, k3,…,kn);
[0043] (2)拆分:
[0044] 步骤A1 :所述原始秘密k使用拉格朗日插值多项式进行f函数拆分运算得到各 个份额h,拆分后的份额的集合形式为:(1^,kfr+1)z,k( z+1)u,…,kvn),其中1彡r < t,t < u ^ v, v ^ η ;
[0045] 步骤A2 :将步骤A1拆分之后得到的若干个份额使用拉格朗日插值多项式继续拆 分,kwx 可以拆分成(kwy,k(y+1)z,k(z+1)a,…,kbx),其中 w<y<z,z<a<b,b;^x;
[0046] 步骤A3 :重复以上步骤A2,直至拆分结束;
[0047] (3)存储
[0048] 将拆分后的份额集合以树形结构储存,定义存在树G,结点个数为n,树中的每个 结点存储每个份额的信息,每个结点以四元组〈Dy Dp Dls,DJ的形式组成顺序表进行存 储,定义Di(:表示结点Di所处的层数,Di表示Di结点具体的结点数据,D is和Dif;分别表示Di 结点的子结点在Dm+1层从左到右的开始序号和结束序号,0 < i < η ;拆分后的原始秘密 k 可以用树 G 可以存储为:f(G) = (.'〈D^DyDu, Dle〉,…,〈Dn。,Dn,Dns,D ne〉),在f (G)中的所有四元组〈Dlc,Dp Dls,Dle〉:都是按照树G的结 点从上到下、从左到右的顺序依次存放,即按层数从小到大的顺序进行排列,如果D ls和Dle 等于0,则表示Di结点没有子结点;
[0049] (4)分发:在原始秘密k拆分之后需要将拆分得到的各个份额分给各保管者:
[0050] 定义Travel (G)表示遍历树G中所有叶子结点并输出遍历序列,Travel (G)将树G 的f (G)的四元组表中的每个结点依次检查是否符合Dls = 0并且Dle = 0,如果符合则将所 对应的Di输出,然后将输出的所有Di分发给各保管者;
[0051] (5)恢复:将原始秘密k拆分后得到的树G重组成原始密码k,包括以下步骤:
[0052] 步骤B1 :读取密码芯片中的树G,在f(G)中所有〈DwDyDyDd的形式的四元组 中依次取得所有Dls = 0并且Dle = 0的Di ;
[0053] 步骤B2 :将取得的所有Di与试图恢复原始秘密k所提供的所有份额进行比对,如 果在提供的份额中缺少或者增加任何份额均认为此次恢复是非授权的,恢复过程终止;
[0054] 步骤B3 :将用户提供的份额合并恢复成上一层份额,将恢复的份额与f(G)进行比 对,如果恢复的份额与f(G)相同则恢复组合比对成功并进行合并恢复,否则应终止恢复程 序;
[0055] 步骤B4 :重复步骤B3,直至原始秘密k恢复结束。
[0056] 计算父节点、即恢复上一层份额的计算步骤如下:
[0057] 步骤C1 :定义Parent (G,M)表示计算树G中Μ结点的父结点;
[0058] 步骤C2 :在f (G)中依次比较每个Di值是否等于Μ ;
[0059] 步骤C3 :如果在f(G)中没有找到结点Μ,树G不存在Μ结点,算法结束;
[0060] 步骤C4 :如果在f (G)中找到Μ结点,则设σ (G,Α)为计算Α结点在f (G)中的同 层次结点中的排列序号;
[0061] 定义Μ结点的层数为M。,如果1-1 = 0,则Μ结点为树G的根结点,所以Μ结点无父 结点;如果1-1>0,则依次比较以6)中所有符合01。= 1。-1的01结点是否符合01;3彡〇(6) 1)彡016,如果符合,则? &^1^(6,1)=01,如果不存在某个01结点符合01;3彡 〇(6,1)彡01^ 则f(G)存储错误。
[0062] 计算子节点、即下一层份额的计算步骤如下:
[0063] 步骤D1 :定义Child(G,M)表示计算树G中Μ结点的子结点;
[0064] 步骤D2 :在f (G)中依次比较每个Di值是否等于Μ ;
[0065] 步骤D3 :如果在f (G)中没有找到Μ结点,树G不存在Μ结点,算法结束;
[0066] 步骤D4 :如果在f (G)中找到Μ结点,则提取Μ结点的四元组〈M。,M,Ms,MJ,取得 Μ结点所处的层数l,Ms和I分布表示Μ结点的子结点在1+1层从左到右的开始序号和结 束序号,如果M s和I都等于0或者任意一个等于0,则Μ结点无子结点,算法结束;
[0067] 步骤D5 :计算得到Child(G,M) = (Dj,Dj+1,Dj+2,…,Dk),其中各结点对应的Djc, D(j+i)c,D(j+2)c,...,Dkc - Mc+1,Ms < j,j+1,j+2,...,k < Me〇
[0068] 定义Height (G)表示计算树G的高度,计算树G的高度提取〈Dn。,Dn,Dns,D nJ中的 层次数Dn。为该树的高度,即Height (G) = Dn。。
[0069] 本发明的有益效果是:利用本发明的树G的存储结构具有以下优势:
[0070] (1)计算树的高度或者结点的层次数比传统的存储结构效率更高,Height (G)表 示计算树G的高度或者结点G的层次数,采用树G的存储结构,计算Height (G)非常简单, 只需要直接提取〈Dn。,Dn,Dns,DJ中的层次数D n。,即Height(G) = Dn。。该算法过程的时间 复杂度是〇 (1),效率明显高于其他现有的各种存储方式。通过上述过程得到树的高度或者 结点所处的层次数就可以在恢复原始秘密的时候根据树或者当前所处结点的层次数量计 算得到整个恢复过程的进度情况,从而提供给操作者足够的信息反馈,避免出现无法估计 恢复过程进度的情况。
[0071] (2)本发明提出的存储结构使用顺序表进行存储,具有顺序表本身能够根据下标 号码进行写入和读取数据的随机存取功能,大大提高存取的效率,相比传统的孩子链表表 法、兄弟孩子链表这种使用链表的存储方式更加快捷。另外,相对传统的孩子链表表 法、兄弟孩子链表这种使用链表的存储方式,本发明提出的存储方法不需要额外的存储空 间存储相关结点的地址信息,从而提高了存储空间的使用率。本发明提出的存储结构和方 法在时间和空间上具备传统的存储方法更高的使用效率。
[0072] 实施例1,存在秘密k,使用本发明的方法拆分为(k,k12, k3, k45, kp k2, k4, k5),用树 结构如图 1 所述,可以用树 G 存储为:f(G) = (〈1,k,l,3〉,〈2, k12,l,2〉,〈2, k3,0,0〉,〈2, k45,3,4〉,〈3,1^,0,0〉,〈3,k2,0,0〉,〈3,k4,0,0〉,〈3,k 5,0,0〉)Parent(G,k45)表示计算 k45 结 点的父节点,σ (G,k45)为计算结点k45在f(G)中的同层次结点中的排列序号,其为3,f(G) 中所有符合0 1。= 1。-1的01结点有1^,1^节点为〈1,1^,1,3〉,符合01;3彡〇(6,1)彡0 16,故为 Parent (G,k45)为 k。
[0073] 表示计算结点k45的子节点,寻找到f (G)存在k45结点,k45结点的层数为2,在f (G) 的四元组中找到k45结点的子结点在3层从左到右的开始序号和结束序号为3、4,可得到 Child(G,k45)为 k4 和 k5。
[0074] 其中 Height (G)为 3。
[0075] 实施例2,存在秘密T,使用本发明的方法拆分得到(A,B,C,D,E,F,G,H),如图2 所述,可以用树 T 存储为:f (T) =(〈1,A,13〉,〈2,B,1,3〉,〈2,C,4,4〉,〈2,D,0,0〉,〈3,E, 0. 0〉,〈3,卩,0,0〉,〈3,6,0,0〉,〈3,!1,0,0〉)?&代拉(1',卩)表示计算结点?的父节点,〇(1', F)为计算F结点在f (T)中的同层次结点中的排列序号,其为2, f (T)中所有符合Dm = 1。 -1的01。结点有匕(:、0点,8节点为〈2,8,1,3〉,符合01;3彡〇(6,1)彡0^(:和0点均不 符合,故 Parent (G,k45)为 B。
[0076] 表示计算F结点的子节点,寻找到f(T)存在结点F,F结点的层数为3,在f(T)的 四元组中找到k 45结点的子结点在3层从左到右的开始序号和结束序号均为0,可得到结点 F没有子节点。
[0077] 其中 Height (T)为 3。
【主权项】
1. 一种基于密码芯片的密钥的管理的方法,主要用于密码芯片的密钥管理,其特征在 于,包括以下步骤: (1) 定义: 密码芯片接收到原始秘密k,原始秘密k包括若干份客 (2) 拆分:步骤A1 :所述原始秘密k使用拉格朗日插值多项式进行f函数拆分运算 得到各个份额1δ|,拆分后的份额的集合形式为:其中步骤A2 :将步骤Al拆分之后得到的若干个份额使用拉格朗日插值多项式继续拆分, ^"可以拆分万步骤A3 :重复以上步骤A2,直至拆分结束; (3) 存储 将拆分后的份额集合以树形结构储存,定义存在树G,结点个数为n,树 中的每个结点存储每个份额的信息,每个结点以四元组的形 式组成顺序表进行存储,定义%表示结点A所处的层数,表示1?结点具 体的结点数据,马和分别表示,结点的子结点在层从左到右的开 始序号和结束序号,〇 A ;拆分后的原始秘密k可以用树G可以存储为:在 /(G)中的所有四元组·(ΑρΑ,ΑρΑ,》都是按照树G的结点从上到下、从左到右的顺序依 次存放,即按层数从小到大的顺序进行排列,如果ft,和$:等于〇,则表示^结点没有子结 占. (4) 分发:在原始秘密k拆分之后需要将拆分得到的各个份额分给各保管者: 定义TmwA⑦表示遍历树G中所有叶子结点并输出遍历序列,Gi将树G的 /(G)的四元组表中的每个结点依次检查是否符合_.=〇并且=〇,如果符合则将所对应 的马输出,然后将输出的所有分发给各保管者; (5) 恢复:将原始秘密k拆分后得到的树G重组成原始密码k,包括以下步骤: 步骤Bl :读取密码芯片中的树G,在/(Q)中所有,Di,,>的形式的四元组中依 次取得所有=〇并且的_ ; 步骤Β2 :将取得的所有A与试图恢复原始秘密k所提供的所有份额进行比对,如果在 提供的份额中缺少或者增加任何份额均认为此次恢复是非授权的,恢复过程终止; 步骤B3 :将用户提供的份额合并恢复成上一层份额,将恢复的份额与/0^进行比对, 如果恢复的份额与iiipg相同则恢复组合比对成功并进行合并恢复,否则应终止恢复程序; 步骤B4 :重复步骤B3,直至原始秘密k恢复结束。2. 根据权利要求1所述的一种基于密码芯片的密钥的管理的方法,其特征在于:计算 父节点、即恢复上一层份额的计算步骤如下: 步骤Cl :定义If)表示计算树G中M结点的父结点; 步骤C2 :在/(C?)中依次比较每个A值是否等于1 ; 步骤C3 :如果在/(C?)中没有找到结点M,树G不存在M结点,算法结束; 步骤C4 :如果在/(⑦中找到M结点,则设CT(Gj)为计算A结点在/(⑦中的同层次结 点中的排列序号; 定义M结点的层数为^%,如果Mf -I = O,则M结点为树G的根结点,所以M结点 无父结点;如果猶^ @1 > O,则依次比较(G〇中所有符合% g的4结点是否符 合S 〇r(G,M) S Dif,如果符合,则= A ,如果不存在某个:?结点符合 4 S cnfG, If) S Dif,则⑦存储错误。3. 根据权利要求1所述的一种基于密码芯片的密钥的管理的方法,其特征在于:计算 子节点、即下一层份额的计算步骤如下: 步骤Dl :定义CMW (σ,Μ)表示计算树G中M结点的子结点; 步骤D2 :在/(Q中依次比较每个t /?值是否等于M ; 步骤D3 :如果在/(G)中没有找到M结点,树G不存在M结点,算法结束; 步骤D4 :如果在/(G)中找到M结点,则提取M结点的四元组取得M 结点所处的层数仏,财;和^分布表示M结点的子结点在:_ 层从左到右的开始序号和 结束序号,如果都等于O或者任意一个等于〇,则M结点无子结点,算法结束; 步骤D5 :计算得到ClW(CUf)= ;···』」,其中各结点对应的 D扛,DiJ仰 …,Dii = M£ VI, Ai 5 + ',j + 2,、k S Me。4. 根据权利要求1所述的一种基于密码芯片的密钥的管理的方法,其特征在于:定义 表示计算树G的高度,计算树G的高度提取; ?Β, Dsi ;)中的层次数为该 树的高度,即Zfegh(Q)=化:。
【文档编号】H04L9/08GK105897409SQ201410199490
【公开日】2016年8月24日
【申请日】2014年5月13日
【发明人】高振栋, 张春燕
【申请人】无锡科技职业学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1