著录项信息
专利名称 | 安全的数据项级数据库加密方法 |
申请号 | CN201110125639.9 | 申请日期 | 2011-05-10 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2011-11-09 | 公开/公告号 | CN102236766A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/62 | IPC分类号 | G;0;6;F;2;1;/;6;2;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 桂林电子科技大学 | 申请人地址 | 江苏省常州市武进国家高新技术产业开发区新雅路18号139室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 万帮星星充电科技有限公司,万帮数字能源股份有限公司 | 当前权利人 | 万帮星星充电科技有限公司,万帮数字能源股份有限公司 |
发明人 | 邵丹薇;刘明刚;郑隽一;陈云飞 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明涉及一种安全的数据项级数据库加密方法,对机密数据采用数据项级粒度的加密,它采用hash函数根据一个派生密钥和数据项的唯一定位信息来派生各个数据项的加密密钥,甚至于可以用一个密钥派生所有的整个数据库加密用的数据项加密密钥,以减少密钥使用量,并且方便密钥管理,采用流密码算法进行数据项的加密以避免填充。针对密文索引,也采用流密码算法进行加密,对于每一个字段(列)采用相同的密钥进行加密,这样无论是进行精确的完整或者不完整的检索,均可以对检索关键词进行加密后,对相应字段的密文进行匹配。本方法还提供密钥管理、秘密共享、安全备份、强制访问控制、安全连接等完善的安全功能。
1.一种安全的数据项级数据库加密方法,其特征在于:1)对机密数据采用数据项级粒度的加密,本方法采用hash函数根据一个派生密钥和数据项的唯一定位信息来派生各个数据项的加密密钥,截取加密数据项所采用对称加密算法的密钥长度相应的位,作为所定位的数据项的加密密钥;2)派生密钥采用公钥进行加密,不同用户采用不同派生密钥;3)系统提供密钥统一功能,系统访问加密属性表,根据加密属性表中各个派生密钥的加密覆盖范围,对所有的加密数据进行解密,然后用一个统一的派生密钥派生所有的数据项的加密密钥,对数据项进行重新加密,同时更新加密属性表,将不同的派生密钥加密的区域数据统一为单个派生密钥加密数据;4)当派生密钥的覆盖范围发生冲突时,根据最细致的覆盖区域对应的派生密钥为正确密钥的原则来找到真正派生密钥;5)数据项的加密算法采用流密码算法。
2.如权利要求1所述的安全的数据项级数据库加密方法,其特征在于密文数据采用如下的索引方法:专门建立相应的检索文件,对于相同的字段采用相同的列密钥加密,加密算法采用流密码算法,不同的列采用的列密钥不同,该列密钥同样采用hash函数派生,采用相同的密钥派生方法加密原明文数据列,用hash函数根据一个派生密钥和索引文件名、列名这类信息来派生各个列的加密密钥,A)若是进行完整精确检索的时候,计算列密钥,加密检索的数据项,然后进行检索对比,B)若是进行不完全精确匹配的检索,根据不同的位置,依照流密码算法的密钥流分别得出对应位置的密文段进行匹配,C)若是其他的模糊检索,则需要对列进行解密以检索。
3.如权利要求2所述的安全的数据项级数据库加密方法,其特征在于采用秘密共享方法将管理员的私钥分为若干份额,采用秘密共享方式进行最高权限的授权,同时利用秘密共享备份和恢复私钥。
4.如权利要求2所述的安全的数据项级数据库加密方法,其特征在于对于各种访问采用强制访问控制,强制访问控制采用安全标签来进行,其安全标签附加数字签名以防止篡改;客户端与数据库的通信采用安全协议进行连接,提供保密性和认证。
5.如权利要求4所述的安全的数据项级数据库加密方法,其特征在于提供对数据库和密钥的安全备份,备份需要采用加密,并且附加时间戳和数字签名。
6 如权利要求5所述的安全的数据项级数据库加密方法,其特征在于提供密钥管理功能:1)定期更换密钥,并且对派生密钥进行统一,对于密钥管理进行强制访问控制,并且进行安全审计日志记录;2)设置了多级密钥,这些密钥分别存放在不同的区域:私钥经过最高权限的管理员用户的用户名和密码加密后存放在安全存储区,派生密钥经过公钥加密后存放在加密属性表中。
安全的数据项级数据库加密方法\n技术领域\n[0001] 本发明属信息安全领域,涉及一种安全的数据项级数据库加密方法。\n背景技术\n[0002] 现在数据库安全对许多企业网络来说是非常重要的,甚至关系到一个企业的生存和发展。因而企业常常采取一定的措施:如采取访问权限控制,数据库备份、防火墙等来保护系统的安全。但是这些传统的安全保护措施具有一定的局限性和不足。例如:某些非授权用户可能绕过系统的访问控制机制入侵数据库,非法地获取数据;备份数据库的介质丢失,造成数据库中数据的泄露;以防火墙为代表的反入侵网络安全技术不等于信息安全的全部。此外在系统中权限足够高的用户可能获取一些敏感信息。在绝大多数信息系统中,没有加密的数据库就如同没有上锁的文件柜,对别有用心的人而言,剽窃、篡改易如反掌。因此,如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,数据库的安全管理日益成为人们关注的焦点之一。解决这一问题的关键是要对数据本身加密,即使数据不幸泄露或丢失,也难以被人破译,关于这一点现基本数据库产品都支持对数据库中的所有数据加密存储。对数据进行加密,主要有三种方式:系统中加密、客户端(DBMS外层)加密、服务器端(DBMS内核层)加密。客户端加密的好处是不会加重数据库服务器的负载,并且可实现网上的传输加密,这种加密方式通常利用数据库外层工具实现。而服务器端的加密需要对数据库管理系统本身进行操作,属核心层加密,如果没有数据库开发商的配合,其实现难度相对较大。\n[0003] 数据库的加密比单独文件的加密要复杂。按照数据库的结构层次,根据不同的加密需求,可以将数据库的加密粒度可以分为数据库级、表级、记录级、字段级和数据项级。\n[0004] (1)数据库级:加密的对象是整个数据库,这意味着对所有的用户数据表、系统数据表、索引、视图和存储过程等等都进行加密处理。这种加密方法简单,只需要对存储在磁盘中的相应数据库文件进行加密处理即可,密钥的数量少,一个数据库只对应一个密钥,管理方便。但是,数据库一个重要特征是数据共享性高,被多个用户和应用共享使用,需要接受大量的随机访问。一般来说,用户访问数据库时,是为了将符合条件的记录检索出来。如果采用数据库级加密方式,即使只需要查询少量的记录,也需要对整个数据库进行解密,对系统性能会产生极大的影响。但是,对于辅存中备份的数据库,可以采取这种加密粒度。\n[0005] (2)表级:加密的对象是数据库中的表。通常来说,数据库包含多个表,只需要对其中一些包含敏感信息的表进行加密,以保护它们的安全性。与数据库级加密比较,采用表级加密粒度,系统的查询性能会有所改善,因为对于未加密表的查询,与传统查询方法一样,系统性能不会受到影响,对于加密表的查询,只需要解密对应的加密表,而不要解密整个数据库。在实行表级加密时,可以采用对存储数据的磁盘块(页面)进行加密。但是,这种方法与DBMS集成时,需要对DBMS内部一些核心模块进行修改,包括对语法分析器、解释器和查询执行器的修改,而目前一些主流的商用DBMS都不开放源代码,很难把这种方法与它们集成起来。\n[0006] (3)记录级:加密的对象是数据表中的记录,记录中各字段值连接一起进行加密处理,加密后输出一列字符串。在实现记录级加密时,通过调用专门的加密函数,对页面中记录进行加密。与数据库和表级加密相比,这种加密的粒度更细,可选择的灵活性更好。比如说,一个公司的人事资料,要求对部门经理职位以上的人员采取加密措施进行保密,那么可以只选择这些记录加密,而不必要对所有记录进行加密。但是,和表级加密一样,这种方法也需要对DBMS内核进行修改。\n[0007] (4)字段级:加密的对象是关系中的某个字段。字段级加密是一个很好的选择,因为在实际生活中,一些重要和敏感的信息往往出现在关系中的某些列,如信用卡号、身份证号、银行账号等,只需要对这些重要数据进行加密保护,而没有必要对普通数据也进行加密。例如,有一个客户表,它包含客户ID、姓名、地址和信用卡号。在这个表中,没有必要去加密客户ID,我们最想加密的字段是信用卡号。在实现字段级加密时,可以采取多种方式,既可以在DBMS外部(比如,应用程序)完成,也可以在DBMS内部(比如,内模式)完成。\n[0008] (5)数据项级:加密的对象是记录中的某个字段值,它是数据库加密的最小粒度。\n数据项级加密的方法更为灵活,它的实现方式与字段级加密相似,但其密钥管理将会更加复杂。\n[0009] 数据项级的加密具有很好的适用性,在某些这类系统中,采用单一的密钥加密,这会导致一个密钥泄露,整个数据库泄露的问题。有些这类的系统采用单独的文件来存储这些独立的密钥。防止密文分析和密文替代的攻击,需要对不同的数据项采用不同的密钥。但是如果数据库中数据项太多,一一为这些数据项存储一个密钥,不仅需要大量的空间,而且管理起来也很麻烦。本发明针对数据项级的加密,通过采用hash函数来派生诸多不同的密钥,加密数据库中每一个数据项的信息。\n[0010] 在具体加密实现上,使用数据库安全保密中间件对数据库进行加密是最简便直接的方法。主要是通过系统中加密、DBMS内核层(服务器端)加密和DBMS外层(客户端)加密。在系统中加密,在系统中无法辨认数据库文件中的数据关系,将数据先在内存中进行加密,然后文件系统把每次加密后的内存数据写入到数据库文件中去,读入时就逆方向进行解密,这种加密方法相对简单,只要妥善管理密钥就可以了。缺点对数据库的读写都比较麻烦,每次都要进行加解密的工作,对程序的编写和读写数据库的速度都会有影响;在DBMS内核层实现加密需要对数据库管理系统本身进行操作。这种加密是指数据在物理存取之前完成加解密工作。这种加密方式的优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可以实现加密功能与数据库管理系统之间的无缝耦合。其缺点是加密运算在服务器端进行,加重了服务器的负载,而且DBMS和加密器之间的接口需要DBMS开发商的支持;在DBMS外层实现加密的好处是不会加重数据库服务器的负载,并且可实现网上的传输,加密比较实际的做法是将数据库加密系统做成DBMS的一个外层工具,根据加密要求自动完成对数据库数据的加解密处理。采用这种加密方式进行加密,加解密运算可在客户端进行,它的优点是不会加重数据库服务器的负载并且可以实现网上传输的加密,缺点是加密功能会受到一些限制,与数据库管理系统之间的耦合性稍差。\n[0011] 按以上方式实现的数据库加密系统具有很多优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于数据库应用系统,无须改动数据库应用系统就能实现数据加密功能;第三,加解密处理在客户端进行,不会影响数据库服务器的效率。\n发明内容\n[0012] 本发明旨在克服现有大粒度加密的数据库系统的不灵活的缺点,以及现有的数据项级加密的数据库系统密钥的生成、存储和管理等各方面的问题,提供一种非常容易生成、存储和管理密钥的数据项级数据库加密系统。\n[0013] 为了简化密钥的管理,减少密钥量,同时又防止密钥之间泄露信息,或者是通过单个数据项的密钥反推主密钥,带来安全隐患,本系统采用单向函数,比如hash函数来派生密钥,其派生方法为利用一个派生密钥加上这个数据项唯一的定位信息,产生hash值,截取有效位作为这个数据项的对应密钥。这样数据库中每一个数据项都有自己的密钥,而且由于采用不可逆函数,所以,密码分析者无法通过某一个数据项的密钥去推测另外数据项的密钥和派生密钥,从而可以保证各种特殊环境下的安全性,各个密钥之间似乎具有独立性,但是却无需采用复杂的方法来一一生成,由于这些密钥均是由派生密钥派生而来,所以,只需要存储好派生密钥即可。\n[0014] 为了便于不同的用户向数据库存储加密的数据,而其他的非最高权限用户无法解密,利用了公钥算法来加密派生密钥。\n[0015] 数据库附带一个或者多个加密属性表,这个表中存放各种信息和属性,包括数据项是否被加密(这样保证数据库系统的灵活性,无需加密的信息可以以明文形式存在,减少系统的负担),加密属性表中多方面的属性以描述(或定义)密文数据库系统中各类对象所采用的加密算法,对应的用公钥加密后的派生密钥(或者和派生密钥加密的覆盖范围),哪些表、字段、记录、数据项被这一派生密钥加密了,原明文数据的编码或数据类型等。\n[0016] 基于安全性的考虑,数据库采用多级的密钥管理措施:将数据库加密用的私钥用数据库的管理员的用户名和密码的hash获得对称的密钥,采用对称加密算法加以保存,将派生密钥用数据库公钥加密保存,派生密钥利用公钥加密保护,使用时先解密私钥,再用私钥解密加密的派生密钥,利用派生密钥获得数据项对应的密钥,采用流密码算法加密或者解密数据项。以上是最少级别的密钥管理方式,实际上为了进一步的安全性,可以在中间增加多级的密钥,但是这会影响系统的性能。\n[0017] 数据加密(901):\n[0018] 数据的加密过程如下:\n[0019] 1)用户登录。数据库系统附带有双重身份认证功能,第一重为任何一般级别的用户,可以进行一般的不涉及到需要加解密的安全数据的访问;第二重为有特别身份的、可以访问安全数据的用户的访问,需要输入用户名和密码,需要进行解密的时候,先需要进入第二重的身份认证,而第二重的身份认证中的用户名和密码都正确的时候,此时自动用两者的hash信息来解密被加密的数据库私钥。一般加密的时候只需要第一重登录就可以。\n[0020] 2)无需保密的数据直接存储。首先根据数据所在位置判断数据是否需要加密,如果无需加密,直接存入数据库;如果需要加密转入下面的加密流程。\n[0021] 3)加密数据项。加密数据项采用对称加密算法中的流密码算法,采用对称密码算法可以提供速度和性能,而采用其中的流密码算法,则无需对数据项进行填充处理,而且在进行一些不完整的检索的时候也不受到其他信息的影响,其密钥由数据项的唯一定位信息和派生密钥的不可逆函数产生。首先随机产生派生密钥K,用派生密钥K+数据项所在的表名N+数据项所在行的主键M+数据项所在列的列值C的Hash值,即HASH(K|N|M|C)值,截取加密数据项所采用对称加密算法的密钥长度相应的位(注意,如果密钥的长度大于hash函数的输出长度,可以将以上信息分别输入多个hash),作为所定位的数据项的加密密钥。\n注意,本系统中主键是不能加密的,如果需要加密,需要采用新的唯一键代替或者专门增加一个序号类的主键。\n[0022] 4)加密派生密钥。用公钥加密后的派生密钥,在处理加密属性表的时候将其存放在属性表中。用公钥加密派生密钥的好处在于,对于不同用户加密的数据可以采用不同的派生密钥,并且将派生密钥及其加密的对应的数据的信息存放在属性表中。在这样的情况下任何人都能加密,但是解密却需要有最高的权限。\n[0023] 5)存储加密属性信息。一般级别的用户都可以加密数据,被加密的数据的相关信息存放在加密属性表中,其主要任务是描述(或定义)密文数据库系统中各类对象所采用的加密算法,对应的用公钥加密后的派生密钥,哪些表、字段、记录、数据项被加密了,明文数据的编码类型等等,类似于加密字典,被加密后也存放在属性表中。\n[0024] 数据解密(902):\n[0025] 数据解密是一个相反的过程,但是它需要有最高的权限,以获取私钥,然后逐次解密派生密钥,得到数据项的密钥。\n[0026] 密钥管理(903):\n[0027] 为了保证安全性和方便性,本发明中设置了多级密钥。这些密钥分别存放在不同的区域:私钥经过最高权限的管理员用户的用户名和密码的hash值加密后存放在安全存储区,另外提供公钥私钥的备份功能,管理员可以将公钥私钥导出,加密后存放在自己的卡上。派生密钥经过公钥加密后存放在加密属性表中。\n[0028] 密钥更新:派生密钥是非常重要的信息,但是可能存在过期、泄漏等情况,所以在密钥过期和密钥泄露后,需要更换密钥,更新时先解密所有的该密钥涉及到的数据,然后用更新的密钥加密,再将更新的密钥加密存放起来。公钥私钥对的更新也同样先解密所有的该密钥对所加密过的数据,然后用更新的密钥加密。\n[0029] 派生密钥统一:由于不同用户随机选择派生密钥,这些密钥都以密文形式存放在加密属性表中,有时候为了减少密钥量或者更新密钥,可以进行密钥统一。\n[0030] 数据备份(904):\n[0031] 数据库加密系统一般针对重要的数据,显然其备份显得非常重要。出于安全性、防灾的考虑,对于数据库的备份需要采用加密、签名的方法,加密方法为,采用随机产生的对称密钥加密整个数据库,同时附加时间戳和数字签名,既保证保密性,又防止数据被篡改。\n同时密钥也需要进行同样的加密备份和基于秘密共享的备份。\n[0032] 通信安全(905):\n[0033] 如果用户在本机进行操作,则无需考虑通信的安全性。如果用户是通过客户端和服务端的通信来访问,则需要采用安全套接字加密对数据库的访问,采用安全套接字还可以校验通信的完整性,防重放。 \n[0034] 访问控制(906):\n[0035] 数据库加密系统中强制访问控制依赖于系统的安全等级标志和主体的授权许可访问级别来进行控制。这种强制访问控制机制严格控制信息非授权地从高安全级流向低安全级,系统对数据的读和写进行严格的控制。\n[0036] 数据索引(907):\n[0037] 索引是用来快速实现数据库内容查询的技术。一般索引的创建和应用必须是明文状态,以提高数据库操作性能。否则,索引将会失去作用。而当今一些主流数据库产品均不支持对索引字段的加密。在加密的数据库中实现索引也比较困难。在本发明中,将未加密字段的索引和加密字段的索引分开,未加密索引采用已有的方法。加密字段如果需要索引,则另外建立相应的表,将对应的字段进行加密,加密依然采用派生密钥来派生列的密钥,加密对应的列,每一个列采用相同的密钥,其密钥的派生方法与数据项加密密钥派生方法类似,就是不再有主键名,即加密密钥为HASH(派生密钥|索引文件名|字段名),加密得到的表再根据密文进行排序索引,最后再对索引文件进行加密保存,需要检索的时候再解密。检索时,先根据派生密钥、索引文件名、字段名得到加密密钥,对需要检索的明文进行加密,得到密文后,再解密索引文件,在文件中查找对应的密文即可。加密采用流密码算法,有利于针对密文进行检索,特别是针对不完整的密文检索。为了提高加密数据项的检索速度,对于不同类型的检索采用不同的文件,比如完整的检索则采用密文文件排序后得到的文件,而需要解密的检索,则对应的表中的数据是以明文排序得到的文件。\n[0038] 秘密共享(908):\n[0039] 本系统采用秘密共享作为最高权限管理员的权限获得的一种补充途径,除了最高级管理员可以在输入自己的用户名和密码的时候,可以自动解密私钥外,系统还利用密钥共享给m个用户分配私钥的份额,必要的时候,用户可以联合起来解密私钥,获得最高的权限,同时也提供了一种额外的私钥备份。 \n具体实施方式\n[0040] 系统在实现上有许多的选择,以下为一个参考实例:\n[0041] 本实例中采用C/S模式,通过DBMS外层(客户端)加密来实现数据加密,远程客户端和服务器端采用安全套接字协议进行连接,保证通信的保密和完整性。\n[0042] 数据的加密过程实现:\n[0043] 1)用户远程登录。客户端和服务端建立起SSL连接,用户登录。\n[0044] 2)系统验证用户身份和权限,当用户有权限进行数据加密的时候,进行授权,用户请求输入数据,输入数据,如果根据加密属性表,属于需要加密的类型,或者用户初次输入的时候,设置某些字段需要加密,则需要对加密属性表做需要的写入,同时,客户端提示用户随意移动鼠标,根据鼠标移动的位移性质记录一个随机数,与系统中以前的随机种子,一起输入一个随机数发生器,产生128bit的随机数K作为派生密钥。若无需保密的数据则直接存储,否则进行加密处理,转入下一步。\n[0045] 3)加密数据项。若需要加密数据项采用RC4簇流密码算法,该算法密钥可以设置不同长度,128bit下已经具有很好的安全性,故选用128比特,对于每一个数据项的密钥,由数据项的唯一定位信息和派生密钥的MD5值产生。具体地,用派生密钥K+数据项所在的表名N+数据项所在行的主键M+数据项所在列的列值C的MD5值,即MD5(K|N|M|C),刚好为128比特,符合密钥长度,用这一密钥加密对应的数据项。\n[0046] 4)加密派生密钥。获取服务器的管理员公钥,派生密钥用公钥加密后存入加密属性表。\n[0047] 5)存储加密属性信息。数据库系统附带一个或者多个加密属性表,这个表中存放各种信息和属性,包括数据项是否被加密(这样保证数据库系统的灵活性,无需加密的信息可以以明文形式存在,减少系统的负担),加密的字段或者数据项是什么样的编码或者数据类型、加密采用的流密码算法、用私钥加密的派生密钥、派生密钥的加密范围。派生密钥的加密范围由数据库名、表名、字段名、主键组成,一般如果某个项为空,则默认为是对所有的使用该密钥加密,如主键为空,则对前面注明的表中的相应字段的所有数据项均加密。在少数情况下,可能前面一个用户是针对大范围的数据采用他的派生密钥进行加密,而后面一个新用户要追加数据,此时,如果此用户是最高权限的管理员,可以解密该派生密钥后,继续用该密钥派生密钥加密数据,如果不是最高权限管理员,则采用新派生密钥加密,该派生密钥对应的加密范围应该做详细的说明,包括覆盖的数据,其对应范围要修改,前一个派生密钥覆盖的范围,需要指定相应的表名、字段名、主键范围,以便从前一个密钥的默认覆盖范围中剔除。在查找派生密钥的时候,如果存在密钥冲突,优先选用对应的加密范围最详细的密钥,比如两个派生密钥的加密范围均覆盖相同的数据项,此时一个派生密钥的覆盖范围较大,主键为默认的空值,而另外一个主键是给定的,则认定后者是真实的加密密钥。系统在密钥统一的时候,会消除这种冲突。\n[0048] 数据解密过程实现如下:\n[0049] 1)读取加密属性表,判断数据是否经过加密。如果数据未经加密,直接就可以读取;如果数据是经过加密的,则用户必须用最高权限的身份登录。\n[0050] 2)解密私钥。管理员登录得到认证后,可以具有解密权限,此时系统也根据管理员用户名和密码相应的hash值得到密钥,解密被加密的私钥。\n[0051] 3)解密派生密钥。根据属性表,查到对应的被加密的派生密钥,用私钥解密就可以得到派生密钥。\n[0052] 4)计算数据项密钥。根据属性表,获得加密所采用的算法,然后根据加密的时候相同的方法计算HASH值,根据算法的密钥长度截取相应的密钥,即得到加密数据项密钥。\n[0053] 5)解密数据项。读取数据库中的数据项的密文,采用加密数据项的密钥进行解密,根据属性表中明文数据的编码类型还原数据项明文。\n[0054] 密钥管理和秘密共享实现如下:\n[0055] 安全数据库加密系统采用三级的密钥管理措施:首先要生成RSA算法的公钥私钥对,将数据库加密用的管理员私钥用数据库的管理员的用户名和密码的MD5值作为密钥,采用密钥长度为128bit AES算法加密私钥,加以保存在安全存储区,对应的公钥用于加密派生密钥,将主密钥和主密钥变量用数据库公钥加密保存,二级密钥受主密钥及其变量加密保护,派生密钥利用二级密钥加密保护,使用时先解密私钥,再用私钥解密加密的主密钥,然后解密二级密钥,最后得到派生密钥,利用派生密钥获得数据项对应的密钥,采用对称算法加密或者解密数据项。私钥经过最高权限的管理员用户的用户名和密码加密后存放在安全存储区,系统具有公钥私钥的导入、导出、删除功能,便于备份和转移安全数据,私钥可以用pfx证书文件格式加密后存放在自己的卡上。系统采用(3,8)门限方案,将私钥分为8个份额,分配给8个重要的用户,而必要的时候他们其中3个在一起,都输入他们的份额,就可以联合起来解密私钥。这种秘密共享可以用于恢复密钥和最高管理员权限的获得,系统提供了对于这种秘密共享的审计日志功能,防止用户恶意勾结非法获得权限。\n[0056] 密钥更新:派生密钥使用期限规定为最长1年,公钥私钥对的使用期限为最长5年,过期将会强制进行更换,系统通过密钥的审计日志来记录密钥的产生日期等信息,过期的时候将会给予提醒。除了到期外,如果管理员认为有必要,或者出现密钥泄露,也需要更新密钥。更新时,对于所有的派生密钥会进行统一,系统访问加密属性表,解密所有的加密过的数据,然后用更新的密钥进行统一加密,同时更新加密属性表。\n[0057] 派生密钥统一:当需要减少派生密钥,保证派生密钥的一致性的时候,可以启用派生密钥统一功能,即先解密所有的被加密的数据项,然后利用随机数发生器产生128bit的派生密钥,再用该密钥派生所有的数据项的加密密钥,加密对应的数据项,最后将派生密钥加密后存储在加密属性表中,同时也更新加密属性表的其他的信息,包括派生密钥对应的加密范围等。\n[0058] 数据备份实现如下:\n[0059] 系统提供数据的安全备份功能,将数据库数据进行加密备份,并且附加数字签名和时间戳,并且备份选择在异地备份。备份时,先导出所有的数据、还有一些加密属性表等文件,将所有的文件进行压缩打包,在文件后附加时间戳,时间戳采用固定长度的字节数,最后附加一个对打包文件和时间戳的数字签名,然后对以上数据采用流密码算法进行加密,得到备份的密文数据库。对应的密钥则采用公钥进行加密。\n[0060] 访问控制实现如下:\n[0061] 数据库加密系统中强制访问控制依赖于系统的安全等级标志和主体的授权许可访问级别来进行控制。安全等级标志和访问级别采用数字签名实现,以防止这些重要的权限信息被篡改后,非法用户突破授权许可。这些数据存放在一个访问控制权限的文件中。\n在进行访问控制时,首先对用户进行身份认证,用户认证一般一开始采用用户名密码的形式验证,高级别的用户要进行多重身份认证,比如采用指纹和语音识别。在通过认证以后,根据用户的身份,查询并且验证授权表中的数字签名,并且验证数字签名的真实性,均通过后,即进行授权,用户访问数据库时,系统对于有安全等级标志的数据验证其安全等级标志,然后对比用户是否有权进行相应的访问。访问一些加密的数据,在解密的时候,需要得到授权许可,方提供对私钥的解密功能,依次解密私钥、派生密钥,计算出数据项的密钥,然后采用算法进行数据项的解密,得到数据项的明文。\n[0062] 数据索引实现如下:\n[0063] 加密字段如果需要索引,则另外建立相应的表,将对应的字段进行加密,加密依然采用派生密钥来派生列的密钥,加密对应的列,每一个列采用相同的密钥,其密钥的派生方法与数据项加密密钥派生方法类似,就是不再有主键名,即加密密钥为HASH(派生密钥|索引文件名|字段名),加密得到的表再根据密文进行排序索引,最后再对索引文件进行加密保存,需要检索的时候再解密。检索完全的、精确的数据项时,先根据派生密钥、索引文件名、字段名得到加密密钥,对需要检索的明文进行加密,得到密文后,再解密索引文件,在文件中查找对应的密文即可,由于采用流密码算法,所以如果进行的是不完整的检索,比如,数据项为“java程序设计”,检索的时候只关注是否包含java,也可以同样采用流密码加密前面的java,然后只对这一部分进行匹配就可以,即使java不是在数据项之首,只要知道
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2005-03-28
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2014-07-18 | 2014-07-18 | | |