CN101582760A - 一种基于树结构的密钥加密存储方法 - Google Patents
一种基于树结构的密钥加密存储方法 Download PDFInfo
- Publication number
- CN101582760A CN101582760A CNA2008100979153A CN200810097915A CN101582760A CN 101582760 A CN101582760 A CN 101582760A CN A2008100979153 A CNA2008100979153 A CN A2008100979153A CN 200810097915 A CN200810097915 A CN 200810097915A CN 101582760 A CN101582760 A CN 101582760A
- Authority
- CN
- China
- Prior art keywords
- key
- newleaf
- keyv
- dlnode
- parent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
一种基于树结构的密钥加密存储方法,属可信计算技术领域;其采用了二叉树分层加密技术,把对许多数据加密密钥的保护转变成了对一个主密钥的保护,包括二叉树初始化以及数据加密密钥插入、删除和读取四个部分;二叉树的根节点代表主密钥,存放在可信密码模块中,其余节点代表的密钥存放在外存中,其中,叶节点代表数据加密密钥;非根节点存放时总是用上层父节点对其进行加密,因此,数据加密密钥被使用时必须还原;该方法节省了可信密码模块的存储空间,又能存储大量密钥,可广泛应用于高安全等级的计算机信息系统中。
Description
(一)技术领域
用于对称密钥加密存储的方法属于可信计算技术领域,是信息安全的核心技术之一。
(二)背景技术
在可信计算领域中,对称密钥的安全存储是一个关键问题,因为如果对称密钥一旦泄密,则相关密文就不安全。
目前,普遍采用的存储方法是把对称密钥分别存储到软盘或闪存中,由用户随身携带或存放在一个安全的地方。但是,这样做很不方便。一是这种方式需要大量的软盘或闪存;二是这种方式需要用户总是守在计算机旁边;三是这种内外交互的方式降低了应用程序的运行速度。
随着密码技术在计算机系统和通信系统中的大量使用,应用程序总是频繁地在做加密、解密、数字签名或身份验证运算。因此,传统的对称密钥存储方法已不适应新时代的要求。另一方面,可信计算技术为在硬盘、闪存等外存中大量实时存储对称密钥提供了可能。
(三)发明内容
在可信计算中,经常需要用到密码体制,尤其是对称密码体制。其特点是运行速度快。当加密、解密在同一台计算机中进行时,对称密钥不需要传递。但需要存储在硬盘或闪存(介质)中,以便应用系统对其进行实时访问。
为了防止对称密钥泄密,在存储到介质前,应先对其进行加密。相应地,当对称密钥被从介质读取到内存时,应对其进行解密。
本发明实现了对称密钥在应用信息系统中的安全、快速、方便访问,为构造大型、复杂、安全的应用信息系统提供了保障。在电子商务、电子政务和电子金融等信息系统中有着广泛而重要的应用。
3.1几个基本概念
二叉树:计算机程序中的一种数据结构,由节点构成。有唯一的根节点,每个节点最多有两个子节点。没有子节点的节点称为叶节点。
二叉树犹如一棵倒长的分层次的树,根节点可视为零层,其次是第一层、第二层等等。显然,第一层最多有2个节点,第二层最多有4个节点,...,第h层最多有2h个节点。整个树最多有2h+1-1个节点。
可信密码模块:可信平台控制模块中的一个子模块,可以当作硬件的一部分,用来产生密钥和存储有限密钥,由于采用物理保护方式,它们不可能被外界窃取和非法获得。简称为TCM(Trusted Cipher Module)。由于可信密码模块存储空间很小,因此,只能存储少数非常重要的密钥。
数据加密密钥:用来加密数据的对称密钥。对应于二叉树中的中间节点。
密钥加密密钥:用来加密密钥的对称密钥。对应于二叉树中的根节点。
系统主密钥:可信密码模块产生的一个对称密钥,并存储在可信密码模块中,用来加密其它的对称密钥,它位于二叉树根节点上。简称SMK(System Main Key)。
显然,系统主密钥也是一个密钥加密密钥。
密钥路径:从叶节点到根节点的一串节点,可根据节点中的父指针依次往上追溯。
设symCrypt为一个对称算法,加密调用形式为symCrypt(plain,key,0),返回加密后的plain值,为密文;解密调用形式为symCrypt(cipher,key,1),返回解密后的cipher值,为明文。
令‘←’表示把右边的值赋给左边的变量。
令Null表示空值。
3.2二叉树的初始化
定义一个含5个域的结构体类型BiTreeNode{keyV,keyN,parent,lChild,rChild}。
其中,keyV用来存放对称密钥值;keyN用来存放对称密钥编号,用于应用程序访问相应的数据加密密钥,从1开始编号,若其值为0,则表示keyV为密钥加密密钥;parent用来存放节点的父指针;lChild用来存放左孩子指针;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.lChild←Null、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的地址。
3.4数据加密密钥删除
本部分是从二叉树中删除一个叶节点,该叶节点存放有用于加密数据的对称密钥。
假设二叉树已被应用程序调入内存,根节点为aSMK。
输入:对称密钥编号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)否则,返回‘未找到相应编号的密钥’。
3.5数据加密密钥读取
本部分是从二叉树的叶节点中找到相应的对称密钥编号,然后,把密钥值解密成明文形式并返回。
假设二叉树已被应用程序调入内存,根节点为aSMK。
输入:对称密钥编号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)否则,返回‘未找到相应编号的密钥’。
3.6优点和积极效果
3.6.1安全性较高
采用了可信计算技术,主密钥SMK存储在可信密码模块中,防止了任何人的偷窃和非法访问。
3.6.2效率较高
采用了二叉树分层加密技术,把对许多数据加密密钥的保护转变成了对一个SMK的保护,效率提高较明显。
3.6.3运算速度较快
应用程序启动后,二叉树可调入内存,对某个数据加密密钥的访问直接从内存而不是从外存读取,这样,极大地提高了密钥的访问速度。
(四)具体实施方式
本发明阐述了一种高效的密钥保护与存储方法,它结合了可信计算技术和二叉树存储技术,包括4个部分:二叉树初始化、插入一个数据加密密钥、删除一个数据加密密钥、读取一个数据加密密钥。
这4部分可以作为子程序分别用逻辑电路芯片或程序语言来实现,同时,为其它应用程序提供调用接口,包括子程序名、调用参数个数、输入参数和返回参数等。
Claims (1)
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)否则,返回‘未找到相应编号的密钥’。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100979153A CN101582760A (zh) | 2008-05-16 | 2008-05-16 | 一种基于树结构的密钥加密存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100979153A CN101582760A (zh) | 2008-05-16 | 2008-05-16 | 一种基于树结构的密钥加密存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101582760A true CN101582760A (zh) | 2009-11-18 |
Family
ID=41364742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100979153A Pending CN101582760A (zh) | 2008-05-16 | 2008-05-16 | 一种基于树结构的密钥加密存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101582760A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236756A (zh) * | 2011-05-09 | 2011-11-09 | 山东超越数控电子有限公司 | 一种基于TCM可信密码模块和USBKey的文件加密方法 |
CN103414555A (zh) * | 2013-08-15 | 2013-11-27 | 成都卫士通信息产业股份有限公司 | 阵列基于io块加密的密钥管理方法 |
CN103414552A (zh) * | 2013-07-31 | 2013-11-27 | 深圳信息职业技术学院 | 一种利用二叉树遍历方式进行加密、解密方法及装置 |
CN103618599A (zh) * | 2013-12-04 | 2014-03-05 | 重庆大学 | 数据集加密前处理方法 |
US8917872B2 (en) | 2011-07-06 | 2014-12-23 | Hewlett-Packard Development Company, L.P. | Encryption key storage with key fragment stores |
CN104780175A (zh) * | 2015-04-24 | 2015-07-15 | 广东电网有限责任公司信息中心 | 基于角色的分级分类访问的授权管理方法 |
CN106301774A (zh) * | 2015-05-29 | 2017-01-04 | 联芯科技有限公司 | 安全芯片、其加密秘钥生成方法和加密方法 |
CN107786338A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 动态密码校验中的共享平台 |
CN108075879A (zh) * | 2016-11-10 | 2018-05-25 | 中国移动通信集团安徽有限公司 | 一种数据加密和解密的方法、装置及系统 |
CN108133144A (zh) * | 2017-12-22 | 2018-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟磁盘文件保护方法、装置、设备及可读存储介质 |
CN109787755A (zh) * | 2018-12-14 | 2019-05-21 | 魏勇 | 一种密钥生成方法、密钥生成装置及电子设备 |
CN116915401A (zh) * | 2023-08-23 | 2023-10-20 | 江苏云涌电子科技股份有限公司 | 一种基于可信密码模块tcm的密钥生成方法 |
-
2008
- 2008-05-16 CN CNA2008100979153A patent/CN101582760A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102236756A (zh) * | 2011-05-09 | 2011-11-09 | 山东超越数控电子有限公司 | 一种基于TCM可信密码模块和USBKey的文件加密方法 |
US8917872B2 (en) | 2011-07-06 | 2014-12-23 | Hewlett-Packard Development Company, L.P. | Encryption key storage with key fragment stores |
CN103414552B (zh) * | 2013-07-31 | 2016-09-28 | 深圳信息职业技术学院 | 一种利用二叉树遍历方式进行加密、解密方法及装置 |
CN103414552A (zh) * | 2013-07-31 | 2013-11-27 | 深圳信息职业技术学院 | 一种利用二叉树遍历方式进行加密、解密方法及装置 |
CN103414555A (zh) * | 2013-08-15 | 2013-11-27 | 成都卫士通信息产业股份有限公司 | 阵列基于io块加密的密钥管理方法 |
CN103414555B (zh) * | 2013-08-15 | 2016-08-10 | 成都卫士通信息产业股份有限公司 | 阵列基于io块加密的密钥管理方法 |
CN103618599A (zh) * | 2013-12-04 | 2014-03-05 | 重庆大学 | 数据集加密前处理方法 |
CN103618599B (zh) * | 2013-12-04 | 2016-09-14 | 重庆大学 | 数据集加密前处理方法 |
CN104780175B (zh) * | 2015-04-24 | 2018-03-13 | 广东电网有限责任公司信息中心 | 基于角色的分级分类访问的授权管理方法 |
CN104780175A (zh) * | 2015-04-24 | 2015-07-15 | 广东电网有限责任公司信息中心 | 基于角色的分级分类访问的授权管理方法 |
CN106301774A (zh) * | 2015-05-29 | 2017-01-04 | 联芯科技有限公司 | 安全芯片、其加密秘钥生成方法和加密方法 |
CN106301774B (zh) * | 2015-05-29 | 2019-08-06 | 辰芯科技有限公司 | 安全芯片、其加密密钥生成方法和加密方法 |
CN107786338A (zh) * | 2016-08-25 | 2018-03-09 | 大连楼兰科技股份有限公司 | 动态密码校验中的共享平台 |
CN108075879A (zh) * | 2016-11-10 | 2018-05-25 | 中国移动通信集团安徽有限公司 | 一种数据加密和解密的方法、装置及系统 |
CN108075879B (zh) * | 2016-11-10 | 2021-03-09 | 中国移动通信集团安徽有限公司 | 一种数据加密和解密的方法、装置及系统 |
CN108133144A (zh) * | 2017-12-22 | 2018-06-08 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟磁盘文件保护方法、装置、设备及可读存储介质 |
CN109787755A (zh) * | 2018-12-14 | 2019-05-21 | 魏勇 | 一种密钥生成方法、密钥生成装置及电子设备 |
CN109787755B (zh) * | 2018-12-14 | 2021-11-12 | 魏勇 | 一种密钥生成方法、密钥生成装置及电子设备 |
CN116915401A (zh) * | 2023-08-23 | 2023-10-20 | 江苏云涌电子科技股份有限公司 | 一种基于可信密码模块tcm的密钥生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582760A (zh) | 一种基于树结构的密钥加密存储方法 | |
TWI750223B (zh) | 區塊鏈加密射頻晶片存儲設計方法 | |
CN103329184B (zh) | 数据处理装置以及数据保管装置 | |
Blass et al. | Toward robust hidden volumes using write-only oblivious RAM | |
CN104363215B (zh) | 一种基于属性的加密方法和系统 | |
CN108768951B (zh) | 一种云环境下保护文件隐私的数据加密和检索方法 | |
CN103329478B (zh) | 密码系统以及密码系统的密码处理方法 | |
CN105100083B (zh) | 一种隐私保护且支持用户撤销的基于属性加密方法和系统 | |
CN110855430B (zh) | 计算系统和用于管理计算系统中的安全对象存储库的方法 | |
CN107168998A (zh) | 一种基于保留格式的数据库透明加密方法 | |
CN115296817B (zh) | 基于区块链技术和属性加密的数据访问控制方法 | |
CN102207999A (zh) | 一种基于可信计算密码支撑平台的数据保护方法 | |
US20190342075A1 (en) | Method and system for encrypting data with an all-or-nothing encryption scheme having additional randomness | |
CN106936820B (zh) | 数据变长修改方法及其在大数据加密中的应用 | |
CN107070896B (zh) | 一种安全高效的区块链网络客户化登录方法及安全加固系统 | |
EP3343829A1 (en) | Searchable cryptograph processing system | |
CN107276766A (zh) | 一种多授权属性加解密方法 | |
CN114143094A (zh) | 基于区块链的多授权属性基可验证加密方法 | |
CN105915333B (zh) | 一种基于属性加密的高效密钥分发方法 | |
CN108763944B (zh) | 雾计算中安全可撤销多中心大属性域属性基加密方法 | |
Nabeel et al. | Privacy-Preserving Fine-Grained Access Control in Public Clouds. | |
CN103414555A (zh) | 阵列基于io块加密的密钥管理方法 | |
CN114430321B (zh) | 基于dfa自适应安全的黑盒可追踪密钥属性加密方法及装置 | |
Guo et al. | Order‐Revealing Encryption Scheme with Comparison Token for Cloud Computing | |
CN100576226C (zh) | 基于中国剩余定理的数据库加密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20091118 |