一种基于树结构的密钥加密存储方法

文档序号:6574915阅读:266来源:国知局
专利名称:一种基于树结构的密钥加密存储方法
技术领域
用于对称密钥加密存储的方法属于可信计算技术领域,是信息安全的核心技术之一。
(二)
背景技术
在可信计算领域中,对称密钥的安全存储是一个关键问题,因为如果对称密钥一旦泄密, 则相关密文就不安全。
目前,普遍采用的存储方法是把对称密钥分别存储到软盘或闪存中,由用户随身携带或 存放在一个安全的地方。但是,这样做很不方便。 一是这种方式需要大量的软盘或闪存;二 是这种方式需要用户总是守在计算机旁边;三是这种内外交互的方式降低了应用程序的运行 速度。
随着密码技术在计算机系统和通信系统中的大量使用,应用程序总是频繁地在做加密、 解密、数字签名或身份验证运算。因此,传统的对称密钥存储方法已不适应新时代的要求。 另一方面,可信计算技术为在硬盘、闪存等外存中大量实时存储对称密钥提供了可能。
(三)

发明内容
在可信计算中,经常需要用到密码体制,尤其是对称密码体制。其特点是运行速度快。 当加密、解密在同一台计算机中进行时,对称密钥不需要传递。但需要存储在硬盘或闪存(介 质)中,以便应用系统对其进行实时访问。
为了防止对称密钥泄密,在存储到介质前,应先对其进行加密。相应地,当对称密钥被 从介质读取到内存时,应对其进行解密。
本发明实现了对称密钥在应用信息系统中的安全、快速、方便访问,为构造大型、复杂、 安全的应用信息系统提供了保障。在电子商务、电子政务和电子金融等信息系统中有着广泛 而重要的应用。
3.1几个基本概念
二叉树计算机程序中的一种数据结构,由节点构成。有唯一的根节点,每个节点最多 有两个子节点。没有子节点的节点称为叶节点。
二叉树犹如一棵倒长的分层次的树,根节点可视为零层,其次是第一层、第二层等等。 显然,第一层最多有2个节点,第二层最多有4个节点,…,第/ 层最多有2^个节点。整个 树最多有2"i-l个节点。可信密码模块可信平台控制模块中的一个子模块,可以当作硬件的一部分,用来产生 密钥和存储有限密钥,由于采用物理保护方式,它们不可能被外界窃取和非法获得。简称为 TCM(Tmsted Cipher Module)。由于可信密码模块存储空间很小,因此,只能存储少数非常重 要的密钥。
数据加密密钥用来加密数据的对称密钥。对应于二叉树中的中间节点。 密钥加密密钥用来加密密钥的对称密钥。对应于二叉树中的根节点。
系统主密钥可信密码模块产生的一个对称密钥,并存储在可信密码模块中,用来加密
其它的对称密钥,它位于二叉树根节点上。简称SMK(System Main Key)。
显然,系统主密钥也是一个密钥加密密钥。
密钥路径从叶节点到根节点的一串节点,可根据节点中的父指针依次往上追溯。
设symCrypt为一个对称算法,加密调用形式为symQypt(plain, key, 0),返回加密后的
plain值,为密文;解密调用形式为symCrypt(cipher, key, 1),返回解密后的cipher值,为明文。
令'—'表示把右边的值赋给左边的变量。 令Null表示空值。
3.2 二叉树的初始化
定义一个含5个域的结构体类型BiTreeNode《keyV, keyN, parent, 1Child, rChild}。 其中,keyV用来存放对称密钥值;keyN用来存放对称密钥编号,用于应用程序访问相应 的数据加密密钥,从1开始编号,若其值为0,则表示keyV为密钥加密密钥;parent用来存 放节点的父指针;1Child用来存放左孩子指针;rChild用来存放右孩子指针。
用节点变量名+'.'+域名来标识节点的域。例如,aSMK.keyN标识根节点的对称密钥编 号(见下)。
(1) 开辟一个类型为BiTreeNode的存储单元aSMK (该单元作为二叉树的根节点),
(2) 随机生成用于symCrypt的主密钥,并存入TCM的永久单元SMK中, 置aSMK.keyV <~ Null,
(3) 置aSMK.parent仨Null、 aSMK.lChild<~ Null、 aSMK,rChild <~ Null, 置aSMK.keyN <~ 0,
(4) 把该树结构存入到一个永久磁盘文件中。
注意,该文件会随着二叉树的长大而长大。应用程序每次运行时,调入二叉树到内存, 并调整有关值。结束运行前,把二叉树重新写入磁盘文件中。
磁盘文件中的二叉树,其根节点的密钥值为Null,其余节点(包括叶节点)的密钥值都 采用symCrypt和父密钥加密后存放。这样,把对许多数据加密密钥的保护转变成了对SMK 的保护。
二叉树调入内存后,根节点为aSMK,根节点的密钥值应该置为SMK,其余节点的指针值可能也要根据内存分布情况做一定调整。
3.3数据加密密钥插入
本部分是把一个用于加密数据的对称密钥加入到二叉树中。 假设二叉树已被应用程序调入内存,根节点为aSMK。 输入明文形式的对称密钥值iKeyV,对称密钥编号iKeyN。 输出对称密钥iKeyN的节点地址。
(1) 在内存中开辟一个BiTreeNode类型的存储单元newLeaf,
(2) 置newLeaf.keyN <~ iKeyN, newLeaf.lChiH Null、 newLeaf.rChild <~ Null,
(3) 按纵向优先搜索二叉树aSMK, 若找到一个中间节点mNode有空指针,那么
(3.1) 根据mNode的密钥路径,利用SMK分层解密路径上的各密钥, 令pKey <~解密的mNode.keyV,
(3.2) 若mNode.lChild = Null,贝lj mNode,lChild <~ newLeaf的地址, 否则mNode.rChild <~ newLeaf的地址,
(3.3) 令newLeaf.parent <~ mNode的地址,
(3.4) 做newLeaf.keyV <~ symCrypt(iKeyV, pKey, 0),
(4) 如果未找到任何中间节点有空指针,则设最左边的叶节点为dlNode,
(4.1) 开辟另一个BiTreeNode类型的存储单元oldLeaf,
令dlNode.lChild <~ oldLeaf的地址,dlNode.rChild <~ newLeaf的地址, 令oldLeaf.parent — dlNode的地址,newLeaf.parent仨dlNode的地址, 置oldLeaf.lCMd <~ Null , oldLeaf.rCMd <~ Null , 置oldLeaf.keyN — dlNode.keyN, dlNode.keyN仨0,
(4.2) 根据dlNode的密钥路径,利用SMK分层次解密路径上的各密钥, 令pKey <~角牟密的dlNode.parent.keyV,
j故oldKey <~ symCrypt(dlNode.keyV, pKey, 1), 随机生成一个用于symCrypt的对称密钥rKey, 做oldLeaf.keyV仨symCrypt(oldKey, rKey, 0), 做newLeaf.keyV <~ symCrypt(iKeyV, rKey, 0), 做dlNode.keyV <~ symCrypt(rKey, pKey, 0),
(5) 返回newLeaf的地址。
3.4数据加密密钥删除
本部分是从二叉树中删除一个叶节点,该叶节点存放有用于加密数据的对称密钥。 假设二叉树已被应用程序调入内存,根节点为aSMK。 输入对称密钥编号dKeyN。输出'删除成功'或'未找到相应编号的密钥'。
(1) 按纵向优先搜索二叉树aSMK, 若找到一个叶节点有dNode. keyN = dKeyN,那么
(1.1) 如果dNode.parenUChild = dNode的地址, 贝廿dNode.parentlChild = Null,
否则dNode.parent.rChild = Null;
(1.2) 释放dNode的内存空间,
(1.3) 返回'删除成功',
(2) 否则,返回'未找到相应编号的密钥'。
3.5数据加密密钥读取
本部分是从二叉树的叶节点中找到相应的对称密钥编号,然后,把密钥值解密成明文形 式并返回。
假设二叉树已被应用程序调入内存,根节点为aSMK。 输入对称密钥编号fKeyN。
输出解密后的密钥值或'未找到相应编号的密钥'。
(1) 按纵向优先搜索二义树aSMK,
若找到个叶节点有fNode.keyN = fKeyN,那么
(1.1) 根据Wode的密钥路径,利用SMK分层次解密路径上的各密钥,
(1.2) 令pKey仨角早密的fNode.parent.keyV,
(1.3) 做plainKey仨symCrypt(fNode.keyV' pKey, 1), (1.3)返回plainKey,
(2) 否则,返回'未找到相应编号的密钥'。
3.6优点和积极效果 3.6.1安全性较高
采用了可信计算技术,主密钥SMK存储在可信密码模块中,防止了任何人的偷窃和非法 访问。
3.6.2效率较高
采用了二叉树分层加密技术,把对许多数据加密密钥的保护转变成了对一个SMK的保 护,效率提高较明显。
3.6.3运算速度较快
应用程序启动后,二叉树PJ调入内存,对某个数据加密密钥的访问直接从内存而不是从 外存读取,这样,极大地提高了密钥的访问速度。
具体实施例方式
本发明阐述了一种高效的密钥保护与存储方法,它结合了可信计算技术和二叉树存储技 术,包括4个部分二叉树初始化、插入一个数据加密密钥、删除一个数据加密密钥、读取 一个数据加密密钥。
这4部分可以作为子程序分别用逻辑电路芯片或程序语言来实现,同时,为其它应用程 序提供调用接口,包括子程序名、调用参数个数、输入参数和返回参数等。
权利要求
1、一种基于树结构的密钥加密存储方法,由二叉树初始化、数据加密密钥插入、数据加密密钥删除和数据加密密钥读取四个部分组成,把对许多数据加密密钥的保护转变成了对一个主密钥的保护,主密钥存储在可信密码模块中,其余密钥存储在外存中,其特征在于·二叉树初始化部分采用了下列步骤定义结构体BiTreeNode为{keyV,keyN,parent,lChild,rChild},做(1)开辟一个类型为BiTreeNode的存储单元aSMK,(2)随机生成一个主密钥,存入TCM的单元SMK中,置aSMK.keyV←Null,(3)置aSMK.parent、aSMK.lChild、aSMK.rChild←Null,置aSMK.keyN←0,(4)把该树结构存入到一个永久磁盘文件中;·数据加密密钥插入部分采用了下列步骤输入明文形式的对称密钥值iKeyV、对称密钥编号iKeyN,做(1)在内存中开辟一个BiTreeNode类型的存储单元newLeaf,(2)置newLeaf.keyN←iKeyN,newLeaf.lChild、newLeaf.rChild ←Null,(3)按纵向优先搜索二叉树aSMK,若找到一个中间节点mNode有空指针,那么(3.1)根据mNode的密钥路径,利用SMK分层解密路径上的各密钥,令pKey←解密的mNode.keyV,(3.2)若mNode.lChild=Null,则mNode.lChild←newLeaf的地址,否则mNode.rChild←newLeaf的地址,(3.3)令newLeaf.parent←mNode的地址,(3.4)做newLeaf.keyV←symCrypt(iKeyV,pKey,0),(4)如果未找到任何中间节点有空指针,则设最左边的叶节点为dlNode,(4.1)开辟另一个BiTreeNode类型的存储单元oldLeaf,令dlNode.lChild←oldLeaf的地址,dlNode.rChild←newLeaf的地址,令oldLeaf.parent←dlNode的地址,newLeaf.parent←dlNode的地址,置oldLeaf.lChild←Null,oldLeaf.rChild←Null,置oldLeaf.keyN←dlNode.keyN,dlNode.keyN←0,(4.2)根据dlNode的密钥路径,利用SMK分层次解密路径上的各密钥,令pKey←解密的dlNode.parent.keyV,做oldKey←symCrypt(dlNode.keyV,pKey,1),随机生成一个用于symCrypt的对称密钥rKey,做oldLeaf.keyV←symCrypt(oldKey,rKey,0),做newLeaf.keyV←symCrypt(iKeyV,rKey,0),做dlNode.keyV←symCrypt(rKey,pKey,0),(5)返回newLeaf的地址;·数据加密密钥删除部分采用了下列步骤输入对称密钥编号dKeyN,做(1)按纵向优先搜索二叉树aSMK,若找到一个叶节点有dNode.keyN=dKeyN,那么(1.1)如果dNode.parent.lChild=dNode的地址,则dNode.parent.lChild=Null,否则dNode.parent.rChild=Null,(1.2)释放dNode的内存空间,(1.3)返回‘删除成功’,(2)否则,返回‘未找到相应编号的密钥’;·数据加密密钥读取部分采用了下列步骤输入对称密钥编号fKeyN,做(1)按纵向优先搜索二叉树aSMK,若找到一个叶节点有fNode.keyN=fKeyN,那么(1.1)根据fNode的密钥路径,利用SMK分层次解密路径上的各密钥,(1.2)令pKey←解密的fNode.parent.keyV,(1.3)做plainKey←symCrypt(fNode.keyV,pKey,1),(1.3)返回plainKey,(2)否则,返回‘未找到相应编号的密钥’。
全文摘要
一种基于树结构的密钥加密存储方法,属可信计算技术领域;其采用了二叉树分层加密技术,把对许多数据加密密钥的保护转变成了对一个主密钥的保护,包括二叉树初始化以及数据加密密钥插入、删除和读取四个部分;二叉树的根节点代表主密钥,存放在可信密码模块中,其余节点代表的密钥存放在外存中,其中,叶节点代表数据加密密钥;非根节点存放时总是用上层父节点对其进行加密,因此,数据加密密钥被使用时必须还原;该方法节省了可信密码模块的存储空间,又能存储大量密钥,可广泛应用于高安全等级的计算机信息系统中。
文档编号G06F21/00GK101582760SQ20081009791
公开日2009年11月18日 申请日期2008年5月16日 优先权日2008年5月16日
发明者刘威鹏, 庄俊玺, 兴 张, 沈昌祥, 俊 胡 申请人:中国科学院研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1