http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
一种基于椭圆曲线密码的多级密钥管理方案
齐芳丽
(1.西北核技术研究所,陕西 西安 710024) ( 2.北京科技大学 信息工程学院,北京 100083)
【摘 要】密钥管理方案的设计是数据库加密系统设计时必须首先解决的一个难题。将椭圆曲线加密算法和单向散列函数有机结合,提出了一种多级密钥管理方案,大大节省了密钥存储空间,使系统的加解密效率和安全性也得到改善。
【关键词】密钥管理;分级;椭圆曲线密码;单向函数;数据加密 中图分类号:
TP309.2 文献标识码:A
1,2
,王成耀
2
The Scheme of Multilevel Key-Managing Based on Elliptic Curve Cryptosystem
QI Fang-Li, WANG Cheng-Yao
(1. Northwest Institute of Nuclear Technology, Xi’An,710024, China)
(2. Institute of Information Engineering ,University of Science and Technology BeiJing, BeiJing
100083, China)
Abstract: When a database encryption system is designed, the design of key-managing module is a very difficult problem and must be solved firstly. This paper proposes a scheme of key-managing of database encryption system in detail. Its security is based on elliptic curve discrete logarithm problem. The presented results show that the key-managing scheme is secure, feasible, and efficient.
Keywords: key management; classification; elliptic curve cryptosystem; Hash function; data encryption
引言
在数据库加密系统中,密钥管理是一个至关重要的难题。数据库加密不仅密钥量大,而且组织和存储工作都比较复杂,密钥的产生、传输、存储、分配等工作是十分重要的。文献
[1]
1,2
2
提出的密钥管理方案虽然能够充分地保证加密的强度,但是却没有提出很好的主密钥保护
[2,3]
方案,而且主密钥的更换也将花费大量的时间。文献
[4]
[5]
提出的两级转换表密钥管理方案,
尽管能很好地保护主密钥,但是在数据类较多的情况下,主密钥生成方法却很难实现。文献提出了一种混合加密方案。文献提出用中国剩余定理将用户需要管理的若干个数据密钥
[5]
“集成”为一个密钥,设计了一种较可行的密钥分配方案。本文受文献的启发,从密钥管理面临的主要问题入手,基于椭圆曲线离散对数难题和单向函数的安全单向性,在吸收其他方案优点的基础上提出了一个安全有效的多级密钥管理方案。
1敏感字段安全分级的思想
数据库中数据的安全性是不一样的,根据数据库中数据敏感程度的不同,可以将敏感数据分成若干个不同的安全级别。每个安全级别都有一个数据类密钥,不同安全级别的数据其数据类密钥也是不一样的。与敏感数据安全级别相对应的是用户级别,根据用户访问权限的不同,可以为用户指定不同级别,不同级别的用户拥有不同权限。用户权限的不同主要体现在它们对数据密钥的掌握上,级别最高的用户拥有所有级别的数据类密钥,级别最低的用户
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
只拥有公开数据的密钥。
可以用下面的符号来描述数据库及其用户:D={d1,d2,…,dn},表示数据库D由安全级别di (整数i∈[1,n])组成,其安全级别从高到低的次序分别为d1,d2,…,dn;K={k1,k2,…,kn},ki表示与di相对应的数据类密钥;UC ={uc1,uc2,… ,ucn},表示使用D的用户由用户级别Uci组成,用户级别从高到低的次序分别为uc1,uc2,… ,ucn。
2密钥管理面临的问题
由于用户权限的不同主要体现在对数据类密钥的掌握上,所以每个用户都拥有其所能处理的所有数据类密钥,这样一个用户就可能要保管很多个数据密钥,这时,管理和存储这些密钥就成了系统所要面临的一个大问题,而且这样做还会大大降低密文数据的安全。
针对这些问题,本方案提出利用HASH函数的安全单向性的特点,将用户需要管理的若干个密钥简化为仅有一个,并且系统很容易根据这一个密钥推导出用户所能处理的所有安全级别的数据类密钥,这样既有效地保证了敏感数据的安全,又使得用户只需保管一个密钥,密钥管理变得简单、容易。
3.密钥管理方案设计
根据数据库加密密钥管理的要求,本文采用多级密钥管理方案。过程如下:利用HASH函数生成所有安全级别的数据类密钥,每个用户只须保管一个与自身用户级别相对应的数据密钥。对用户数据密钥的保护采用椭圆曲线加密算法加密存储。首先,由椭圆曲线加密算法生成用户密钥对,然后用用户公钥加密用户的数据密钥,解密时则使用用户私钥进行解密。对于用户私钥,采用用户口令的加密值进行加密存储。这样就形成了一个密钥链,即用用户口令的加密值加密用户私钥,用用户公钥加密用户的数据密钥,由用户数据密钥导出用户所能处理的所有数据类密钥,最后用这些数据类密钥来加密各个安全级别的敏感数据。
3.1密钥的生成
系统每增加一个用户,采用椭圆曲线加密算法为其生成用户密钥对,其中公钥直接存放在数据表中,而私钥则被用户口令加密后进行存储。加密各安全级别数据的数据类密钥利用HASH算法自动生成,用户所拥有的数据密钥则由用户公钥加密后存放入数据库中。
3.1.1系统初始化,生成用户密钥对
令E是Fp上的椭圆曲线,P是E(Fp)上的点,设P的阶是素数n,素数p,椭圆曲线方程E,点P和阶n构成公开参数组。用户Ui的私钥是在区间[1,n-1]内随机选择的正整数d,相应的公钥是Qi = dP;将公钥和公共参数组直接存放在数据表中,而私钥则被用户口令加密后才存放在库中。
3.1.2数据类密钥的生成
系统生成随机数k0,选取安全单向函数h=H(),计算k1=H(k0),k2=H(k1),…,kn=H(kn-1),生成n个安全级别的数据类密钥: k1,k2,…,kn;
3.2数据密钥的安全存储
本方案利用HASH函数的安全单向性,使得每个用户只须保管一个数据密钥,对用户数据密钥采用椭圆曲线加密算法进行加密存储。以下给出对数据密钥进行加密保护的详细描述。
首先假定每个数据库用户都有一个密钥对。分别用KU1、KU2、…、KUn来表示 Userl、User2、…、Usern的公钥;用KR1、KR2、…、KRn来标识私钥。这里KUi=Qi,KRi=d。假设用户Ui的用户级别为Ucη (1≤η≤α),则它所要保管的数据密钥为kη,即用户Ui可以访问的数据的最高安全级别为dη,也就是说,用户Ui能访问安全级别为dη,dη+1,…,dα的敏感数据。
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
用户Ui对数据密钥kη的保护过程如下: (1) 查询授权用户表,确定用户Ui的安全级别;
(2) 根据用户安全级别,确定用户Ui需要保存的数据密钥kη,将用户公钥KUi作为密钥,用椭圆曲线加密算法对kη进行加密;
(3) 把密文E(kη,KUi)保存在加密数据库中。
在实际的操作过程中,用椭圆曲线加密算法保护数据密钥的流程如下: (1) 用户Ui从数据库中读取其公钥Qi 和系统公共参数;
(2)系统选取随机数 r∈[1,n-1],计算 C1=rP 和 C2=kη + rQi; (3)将密文C =(C1,C2)保存在数据库中。 3.3 数据类密钥的导出
用户Ui导出他所能处理的所有数据类密钥的过程如下: (1) 查询用户权限表,解密得到用户Ui的私钥KRi;
(2) 用户Ui从加密数据库中取出自己保存的数据类密钥的密文E(kη,KUi),用自己的私钥KRi作为解密密钥,调用非对称加密算法ECC对E(kη,KUi)进行解密,取回自己数据类密钥kη;
(3) 利用HASH算法,计算出用户Ui所能处理的所有数据类密钥,用kτ(η≤τ≤α)表示。
在实际的操作过程中,用户Ui可以按下列流程导出自己拥有的数据类密钥: (1) 从加密数据库中获取(C1,C2)和用户Ui的私钥d;
(2) 利用用户Ui的私钥d,(C1,C2),计算出数据密钥kη = C2-dC1(这里d = KRi); (3) 利用HASH函数,分别计算出用户Ui所拥有的所有数据类密钥,kτ = H (… H(kη) …),其中η≤τ≤α。
3.4 用户私钥的加密保护
由于用户的数据密钥被用户私钥进行加密保护,这样对对用户私钥的安全管理就成为一个关键问题。由于每个用户都有一个口令,所以可以用用户口令来保护用户私钥。用户私钥被用户自身口令加密之后以密文形式存放在数据库中。当用户需要访问敏感数据的时候,利用成功登录的用户口令解密出用户私钥。
3.5 方案的安全性分析
本方案是基于椭圆曲线的离散对数问题和单向函数的安全性假设的,其安全性和效率分析如下:(1)可以确保多个用户对同一个加密数据进行共享访问,并且是分级别的访问。(2)通过用户的数据密钥得到用户所能处理的所有数据类密钥,保证了一字一密,同时用椭圆曲线加密算法加密存储用户的数据密钥,可以防止非法用户加解密数据库的数据,保证了数据的完整性。(3)使用多个不同的密钥对数据进行加密,每个密钥加密的数据量较少,从而了已知密文攻击的有效性。(4)与当前通用的密钥长度1024比特的RSA加密方案相比,本方案使用椭圆曲线加密算法达到与其同等的安全性,密钥长度只需160比特。每个用户的密钥长度仅约为RSA方案的15.7%。此外,本文通过用户唯一的数据密钥导出用户所能处理的所有数据类密钥,使得每个用户只要保存一个密钥,极大地节省了存储空间。
4实验结果分析
我们在局域网内对本方案进行了实验。在Pentium(R) 4 CPU 2.80GHz、内存512M的计算机上,使用数据库SQL Server2000,将数据设置为绝密、机密、秘密、受限、公开5个安全级别,同时为10个用户分别设定不同的用户级别。通过实验,与传统的用户按照权限需要保存若干数据密钥相比,密钥存储空间节约了45%左右,但较高级别的用户获取较低一级数据密钥所花的时间是他获取自己唯一的用户数据密钥所花时间的1. 25倍左右。实验证
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
明,随着高安全级别的用户数目的增多,本方案在节约密钥存储空间方面更有优势。
结论
本文在精心考虑密钥管理机制和密钥管理的各个环节的基础上,提出了一种安全有效的多级密钥管理方案。从实验结果来看,该方案大大节省了密钥的存储空间,并且保证了数据库加密系统的安全性和高效性。 参考文献
[1]朱鲁华,陈容良.数据库加密系统的设计和实现[J].计算机工程,2002,28(8): 61-63 [2]宋雨,赵文清.密钥管理在管理信息系统中的应用研究[J].计算机工程与应用,1999,34(10): 95-97.
[3]陈卫.数据库加密密钥的分配与管理技术[J].清华大学学报(自然科学版),1994,34(1): 99-103
[4]韩明军,王伟,胡桂苓.一种远程监控中的数据加密方案[J].微计算机信息,07X:69-72 [5]冯朝胜,袁丁.一种基于剩余定理的密钥分配方案[J].计算机工程,2006,32(14):146-148
本文作者创新点:将椭圆曲线加密算法和单向散列函数有机结合,提出了一种多级密钥管理方案,大大节省了密钥存储空间,使系统的加解密效率和安全性也得到改善。
作者简介:齐芳丽(1974-),女,陕西省宝鸡市人, 工程师,硕士研究生,主要研究领域为计算机应用技术、网络安全Biography: QI Fangli (1974-),female,Shanxi Province, Northwest Institute of Nuclear Technology, engineer, computing application.