数据库加密系统(精选12篇)
数据库加密系统 篇1
0 引言
随着计算机网络技术与数字通信技术的飞速发展,数据库系统成为开放环境的数据仓库,广泛应用于现实生活中各个领域。数据库的使用给合法用户带来的是数据存储和使用的便捷,而对于攻击者来说,一旦破解数据库,得到访问权,从而得以进入系统,破坏和窃取机密性的数据资料,获取其感兴趣的信息,严重情况下会危及整个系统的安全。由此数据库的安全问题,越来越受到人们的重视。如何保障数据库的安全性、保密性和数据的完整性,一直是计算机技术领域力求解决的关键问题之一。要保护数据库的安全性,其关键的问题是对数据库进行加密。
1 数据库加密概述
OS是大型DBS的运行平台,其为DBS提供一定的安全保护。由于DBS在操作系统下都是以文件形式进行管理的,因此入侵者可以直接利用OS的漏洞窃取数据库文件,或者直接利用OS工具来非法伪造、篡改数据库文件内容。它所带来的危害一般数据库用户难以觉察的。堵塞和分析这种漏洞被认为是B2级的安全技术措施。DBMS层次安全技术主要是用来解决这一问题,当前面两个层次的保护已经被破解的情况下仍能保障数据库数据的安全,这就要求DBMS必须有一套强有力的安全机制。解决这一问题的有效方法之一是DBMS对数据库文件进行加密处理,使得即使数据不幸泄露或者丢失,也难以被人破译和阅读。数据加密就是将明文数据经过一定的交换(变序或代替)变成密文数据。数据解密即将密文数据转变成可见的明文数据。实现数据库加密以后,各用户(或用户组)的数据由用户用自己的密钥加密,数据库管理员对获得的信息无法进行正常解密,从而保证了用户信息的安全。另外,通过加密,数据库的备份内容成为密文,从而能减少因备份介质失窃或丢失而造成的损失。因此我们可以考虑在OS层、DBMS内核层和DBMS外层三个不同层次上实现对数据库数据的加密。
1.1 OS层加密
在OS层我们无法辨认数据库文件中的数据关系及其联系,因而无法产生合理的密钥,导致对密钥合理的管理和使用难度加大。
1.2 DBMS内核层实现加密
DBMS内核层加密是指数据在物理存取之前完成加密和解密工作。其优点是加密功能强,并且加密功能几乎不会影响DBMS的功能,可实现加密功能与DBMS之间的无缝耦合。而其缺点是加密运算在服务器端进行,从而加重了服务器的负载,另外DBMS和加密器之间的接口需要DBMS开发商的支持。
1.3 在DBMS外层实现加密
三种方法中比较实际的做法是将数据库加密系统做成DBMS的一个外层工具,并根据加密要求自动完成对数据库数据的加密和解密处理。采用此种加密方式进行加密,加密和解密运算可在客户端进行,其优点是不会加重数据库服务器的负载,并且能实现网上传输的加密。缺点是其加密功能会受到一些限制,与DBMS之间的耦合性稍差。
2 数据库加密粒度
加密粒度指的是加密的最小单位。按照数据库的结构层次数据库的加密粒度可以分为相应的数据库级、表级、记录级、字段级和数据项级。数据库级加密的对象是整个数据库,对于在辅助存储设备中备份的数据库,可以采取这种加密粒度。表级加密和记录级加密需要对DBMS内部一些核心模块进行修改,目前一些商用DBMS都不开放源代码,很难把这种方法与它们集成起来。数据项级加密的对象是记录中的某个字段值,它是数据库加密的最小粒度,具有较好的灵活性和适应性,但其加密、解密效率低。字段级加密的对象是关系中的某个字段。字段级加密是一个很好的选择,在实际生活中,可以对一些重要和敏感的信息列,如身份证号、信用卡号等,只需要对这些重要数据进行加密保护,而无需对普通数据也进行加密。所以选择一种合理的密钥管理方法是字段加密的关键所在。一般比较现实的方法是对重要的字段使用一个加密密钥加密,并在密钥的管理上采用多级密钥管理,即再使用一个二级密钥对数据密钥进行必要的加密,以提高加密的安全强度,并且便于密钥的管理。
3 数据库加密的要求
数据库是为某DBMS服务的数据集合。数据库中的数据最终是以文件的形式存储在物理介质上,但我们不能将整个数据库作为文件加密。数据库操作最小的单位是一个数据项,在数据存储时,有可能是逐个数据项的存储。如果每次访问数据库都进行一次全文加密和解密,那么数据的存储速度将非常的慢。所以数据库加密应满足以下基本要求:
首先,加密要灵活。采用灵活性较好的方法,即以字段为加密粒度进行相应的加密,其对完成“一次一密”的密码操作是极具好处的。在数据库的加密系统中,如果以文件为单位进行加密,会出现加密密钥反复使用,并带来相关的攻击,从而使加密系统的可靠性明显降低。其次,密钥动态管理。密钥对于数据库加密系统有着非常重要的作用。现如今在加密算法已经公开的情况下,加密后数据的安全性主要取决于密钥。在数据库客体之间隐含着复杂的逻辑关系,一个逻辑结构很可能对应着多个数据库物理客体,导致数据库加密的密钥量大,组织和存储工作也比较复杂,所以需要对密钥实现动态管理,以便保证数据库加密后的安全性,保证用户数据的安全。第三,数据操作要符合规范。要恰当地处理加密后的数据类型,一旦实现数据库加密后,数据库本身的空间不应有明显的增加。其加密后系统应基本不影响合法用户的操作,即便有,其影响数据操作响应时间应尽量短。
4 DBMS外层实现加密
作为一种通过加密方式来保护数据的专门系统,数据库加密系统并不是一个数据库应用系统,而是一个将DBMS部分功能、加密器和密钥管理三者紧密结合起来的系统。显然数据库加密系统实际上主要实现的还是加密器的功能,它既可工作于数据库应用系统与DBMS之间,又可作为一个独立工作的系统直接与DBMS交互。数据加密基本流程是指将需要加密的敏感数据使用密钥进行加密操作,变换成其他人无法识别的形式。
4.1 DBMS外层加密算法
DBMS外层加密算法可采用3DES算法。3DES是DES向AES过渡的加密算法,它使用3条56位的密钥对每个数据块应用三次DES加密。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被破解。3DES提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,3DES是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
4.2 DBMS外层加密系统体系结构
对于DBMS外层加密方式,数据库加密系统分成3个相对独立的功能。
4.2.1 数据库加密和解密引擎
数据库的加密和解密引擎是数据库加密系统的核心部分,其主要功能是完成后台数据的加密和解密处理,用以实现用户对数据的透明访问。其主要包括两个功能模块:数据库接口模块和加密和解密处理模块。数据库接口模块主要有两部分接口:一是用户访问加密和解密引擎的接口;二是加密和解密引擎访问后台的数据库文件的接口函数,该接口模块将所有访问的操作封装成一组函数,屏蔽了各类数据库的特性,从而使加密和解密处理模块不需考虑实际使用的是何种数据库。
4.2.2 密钥管理模块
密钥管理模块主要负责的是密钥的生产、更换、检测和销毁等工作。其功能是给加密和解密模块提供密钥和相关的密钥保护和验证。数据库中的密钥分3级:主密钥、表密钥和数据密钥。主密钥为最重要的密钥,它用来保护表密钥,用它将表密钥加密后存储在加密字典中,而主密钥本身则存放在密码装置中。
4.2.3 加密系统管理模块
加密系统管理模块是对数据库整个加密系统进行加密字典和密钥等加密参数进行管理的模块。是操作人员对数据库加密系统进行管理的工具。其调用加密和解密引擎实现数据库记录的明文和密文之间的数据转换,调用密钥管理模块进行密钥的管理。加密系统管理模块位于DBMS与客户端数据库应用程序之间,功能是:验证用户对加密数据的访问权限;可根据用户的需求更改加密参数;调用加密和解密引擎实现对数据库中敏感数据的加密和解密及数据转换功能。用户只有通过该模块才能访问加密字典,这样既保证整个数据库加密系统设计的独立性,又保证了加密字典的安全性。
5 DBMS外层加密系统的优点
DBMS外层加密系统具有很多优点:首先,系统对数据库的最终用户是完全透明的,管理员可以根据需要进行明文和密文的转换工作;其次,加密系统完全独立于DBS,用户无须改动数据库应用系统就能实现数据加密功能;第三,加解密处理在客户端进行,不会影响数据库服务器的效率。
数据库加密系统首要解决系统本身的安全性和可靠性问题。为了防止非法用户对数据库数据进行窃取和篡改,要对数据库中的数据进行加密。数据库加密技术是保证数据库安全的重要手段之一,也是数据库安全问题研究的焦点。
参考文献
[1]王熙照,谢竞博.基于属性间交互信息的模糊ID3算法的扩展[J].复旦学报(自然科学版),2004,43(5):777-780.
[2]丁华,张少中,王秀坤.基于改进ID3算法的轨迹化决策研究[J].计算机工程与设计,2004,25(10):1721-1723.
[3]刘莘,张永平,万艳丽.决策树算法在入侵检测中的应用分析及改进[J].计算机工程与设计,2006,27(19):3641-3643.
[4]赵卓,刘博,厉京运.基于DBMS外层的数据库加密系统研究与设计[J].计算机工程与设计,2008,29(12):3030-3033.
数据库加密系统 篇2
幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的`,只要找到一个“置换表”就可以了。这种方法在计算机出现之前就已经被广泛的使用。
对这种“置换表”方式的一个改进就是使用2个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a表,对所有的奇数位置使用b表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。
与使用“置换表”相类似,“变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer中,再在buffer中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient 可以变为listen,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。
但是,还有一种更好的加密算法,只有计算机可以做,就是字/字节循环移位和xor操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移),就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难!而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci数列。对数列所产生的数做模运算(例如模3),得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能!但是,使用fibbonaci数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。
数据库加密技术方法的比较研究 篇3
关键词:数据库;加密技术;比较
中图分类号:TP393.092
1 数据库加密技术
数据库加密技术是将数据库中人们能够看懂的数据信息转化为无法识别的数据信息,从而有效避免数据外泄。其中,需要加密的数据统称为明文,而经过转变之后,人们无法看懂的信息则是密文,两者的转化规则即为加密。一般情况下,加密和解密都是在密钥管理中被控制的。
通常,对系统加密时可从三个层次进行:(1)数据库操作系统层加密。即对系统文件直接加密,只需要添加一个中间层,就能够实现加密要求。此方法需要进行数据库的加密或者解密操作,可靠性较低。此外,由于无法生成有效的密钥,也就无法对密钥进行管理控制。因此,此方法只适用于小型数据库,而加密大型数据库则不现实;(2)管理系统内核层加密。即数据在存储到硬件设备之前对信息进行加密及解密。此方法的优势在于难以破解,不会给DBMS带来较大影响,容易将加密与系统融合在一起。不过此方法需要服务器支持,因而会为服务器带来影响,且两者之间需要DBMS生产商提供相应的接口。;(3)在DBMS外层加密。通常是把加密系统当做工具,外围在DBMS上,用户根据自己的实际情况进行加密及解密操作。此方法的优势在于直接在客户端执行,不会为服务器产生任何影响,并顺利完成网络传输。缺点则是难以实现,与系统无法默契的融合在一起。
2 数据库加密的技术方法
数据库数据量比较大,存储时间长,内容繁杂,常需进行大量的查询操作,因此数据库加密操作、解密操作以及密钥管理等内容要满足一定的要求:首先,要确保数据库数据处于一定的安全范围内,因此,加密算法要数据的完整性、保密性得到切实保障,避免相关数据未经授权被访问或者篡改;其次,由于数据库数据较多,常需要进行查询操作,因此要提高加密算法的方便性,尽量避免降低查询效率;再次,数据库组织结构尽量不要都大的变动,要确保明文及密文的长度相当,没有很大差别;最后,数据库数据存储时间长,密钥管理要做到安全、可靠、灵活。目前,对数据库进行加密的研究内容主要是数据库加密/解密引擎的寻找,以及查询、删除及插入等方法上。基于以上内容的加密方法有以下几点:
2.1 秘密同态技术。数据库加密技术的探索方向是研究确保数据库安全性、实用性、简便性的加密方法。為了有效提高数据库的查询效率,有人提出了秘密同态的概念。所谓秘密同态,即假设Ek1代表加密函数,Dk2代表解密函数,明文数据空间中的元素是有效集合{M1,……,Mn},α与β表示运算,假如α(Ek1(M1),……,Ek1(Mn))=Ek1(β(M1,……,Mn))成立,则函数族群(Ek1Dk2、α、β)可以被看做秘密同态。秘密同态技术在数据处于密文的状态下可直接进行操作,因此在很大程度上提高了密文数据库的查询速度。不过此方法对已知明文攻击具有很大的漏洞,缺乏足够的安全性。秘密同态技术可以查询没有被解密的密文,因而提高了密文数据库的查询效率,但是此方法对加密算法有约束条件,因此没有很强的适用性,无法被广泛使用。
2.2 密文索引技术。密文索引技术也可以有效提高数据库查询效率。假设用户的查询属性是A,为其建立的索引是A+,A作为保密内容,用户只能看到其索引A+,如此一来,不仅使用户的查询操作比较方便,还有效提高了数据库数据的安全性。加密粒度中具有为字段、记录等内容进行加密的方法,此方法同样适合建立索引。加密粒度中还具备为属性加密的方法,此加密算法将属性列作为最小加密单元,就算为属性建立索引,也需要在检索过程中解密整个属性列,因此不适合用于建立密文索引。
关于密文索引的建立方法还有很多。比如,分散密文索引技术,此加密技术是以哈希算法为基础的。因为索引数据的地址是按照密文形式存储的,难以获得密文和索引之间的对应关系,虽然可以和低手的静态分析进行抗衡,但无法有效消除动态跟踪技术。以防止内部受攻击的基于元祖的索引方法,对索引查询统一会返回与之匹配的元组,从而降低了查询速度及效率。此外,还有数组索引、顺序索引以及矩阵索引等多种技术。为大型数据库建立索引时,由于其包含的数据量比较大,建立的索引无法全部存储在主存中,可采用B+树的方法把多余的索引存储在外存中,需要采用时再把所需索引调入主存中进行使用。B+树存储方法有较大缺陷,因为数据库常会进行存储、修改或者删除等操作,节点的删减容易导致B+树存储的不平衡,致使查询效率低下。因此,小型数据库则可以采用矩阵形式存放索引,将所有索引存入主存,可有效提高查询速度。目前常使用的密文索引技术大多数防范外部攻击的,少数防范内部攻击的密文索引技术在实用性、安全性及可靠性等方面还是存在较多的安全问题。
2.3 子密钥加密技术。基于数据库的加密方法,主要是以记录为单位进行加密,查询时需要解密整个字段,或者解密需要查询的明文,在一定程度上降低了查询效率。因此子密钥数据库加密技术应运而生。采用多级子密钥可以有效提高子密钥系统的安全性能。从加密算法的核心内容是根据数据库数据组织的特点,以记录为单位实施加密操作,解密时则以字段为单位进行操作。因此,系统中存在两种密钥,即加密记录的密钥和解密字段的密钥。采用子密钥加密技术,弥补了针对记录进行加密的方法的不足之处。不过,由于此系统存在两种密钥,从而在一定程度上提高了密钥管理的难度与复杂性。
3 结束语
数据库加密技术可有效保证数据库的安全性。选择合适、有效的数据库加密技术,能够在很大程度上提高数据库的安全性能。目前,使用的数据库加密技术虽然很多,但各种技术仍然存在不同程度的缺陷,无法充分保障数据库的安全性。因此,我们还要进一步研究数据库加密技术,有效提高数据库的安全性与可靠性,确保系统访问控制不会被黑客攻破,避免数据库信息被泄露。
参考文献:
[1]马文斌.数据库中常用的加密技术[J].同煤科技,2013(02).
[2]李爱英,白艳玲.文件型数据库加密技术分析[J].网络与信息,2012(01).
[3]刘勇.网络数据库加密技术研究与实现探析[J].计算机光盘软件与应用,2014(04).
作者简介:朱振立(1976.07-),男,河北固安人,工程师,本科,研究方向:计算机。
数据库加密系统的分析与设计 篇4
常规的数据库安全主要依赖于数据库管理系统安全和应用程序设计控制,但是后两者一般都存在设计时的固有的缺陷。研究如何保护数据库安全,已经是目前迫在眉睫的问题。数据库中数据是以明文方式存在的[3],即是采用ASCII码明文存储,所以为了更有效地保护数据库安全,需要加密技术对数据库中的数据进行处理[4]。加密技术能够为数据库提供很好的安全性,但是花费在加密和解密上的时间会在很大程度上降低数据库系统的性能。因此,数据库中敏感数据加密系统的研究只是在解决数据库性能和安全性中做出合理的取舍[5]。随着信息量的迅速膨胀,信息安全已成为亟待解决的问题,而数据库加密则是保障信息安全的关键所在。本文从信息技术的安全性出发,阐述了数据库加密的必要性和加密的基本原理,并对SQL Sever数据库系统和Web数据库的加密设计和实现进行了探讨,具有重要的理论意义和现实意义。
1 数据库加密原理数据
加密就是把数据信息即明文转换为不可辨识的形式,即密文的形式,目的是非法人员不能够识别。明文即以ASCII码形式存储的DBF文件,通过特定的加密算法利用加密密钥转换成为不可阅读的密文件后存储在数据库中。这样即使非法人员拷贝或窃取了有关数据,没有解密密钥也是看不到数据内容的。目前常用的密码可包括序列密码、分组密码和公开密钥密码等。三种算法在不同的情况下有着不同的侧重点。
目前常用的数据加密技术主要包括系统内加密、数据库外层加密和数据库内层加密技术三部分。三种技术各有不同的侧重点,因此在应用的时候也是根据具体的数据库特点和应用的需求进行相关的加密处理。数据库加密系统设计的基本要求是对字段或索引进行加密、实现数据库密钥的自动化管理,对于未知的无法识别用户和非法用户可以防止拷贝和篡改数据,保护数据的合理性。
总体来说,一个完整的数据库加密系统技术包括以下几个方面:身份认证、通信加密与完整性保护、数据库数据存储加密与完整性保护、数据库加密设置、系统中可以选择需要加密的数据库列、多级密钥管理模式、安全备份[6]。
2 不同类型数据库加密设计与系统实现
在众多数据库加密系统设计中,本文以SQL Sever和Web数据库加密为例进行探讨。
2.1 SQL Sever数据库系统加密的设计与实现
SQL Sever 2008的透明数据加密功能相对众多加密方法来说是非常完美的。通过对数据的读取和写入存储在数据库中,然后进行加密处理。通常,加密人员不需要利用数据库加密特性来修改应用程序的选择,也不需要重写应用程序和加密代码,因此,SQL Sever的透明数据加密技术相对来说开辟了一个加密技术的新领域。
SQL Sever 2008中的核心部分就是SQL解析模块。SQL解析模块是整个加密系统设计中的关键所在。由于T-SQL语句的语法结构较复杂,所以SQL语句解析模块的设计也是整个加密系统中的一个难点。由于3DES也是基于DES的分组加密算法,其加密时也是按二进制位对明文进行分组,在加密DES模块在设计中,采用ASCII码为0x0o的字符,当解密还原为二进制的字符串后,由于其解密后的字符串也是用0X00填充,所以无需做特殊处理,直接进行类型转换即可保证数据在加、解密前后的一致性[6]。
2.2 Web数据库系统加密的设计与实现
2.2.1 基于B/S模式的Web数据库加密系统结构
基于B/S模式的网络信息系统,不需要开发专用的应用程序,用户通过浏览器实现与服务器的信息传输和访问,数据加密在Web服务器与后台数据库之间实现。加密算法是数据加密的核心,一个好的加密算法产生的密文应该频率平衡,随机无重码规律,周期长而又不可能产生重复现象。数据库索引,亦即选择条件,而条件中的选择项必须是明文,在对数据库加密时,要充分考虑到既要对数据库内容加密又要考虑到对数据库的索引进行相应的加密处理[7]。
2.2.2 Web数据库加密系统的实现
完整的Web数据库加密系统包括以下几大模块:1)用户身份验证模块:采用基于角色的访问控制(RBAC)模型。2)加密和解密模块:数据库的加解密模块是加密系统的关键所在,主要管理存后台数据库信息的加解密处理等内容。3)密钥生成和管理:主要是对是对数据密钥和用户密钥的生成和存储进行存储、管理和分析等。4)数据库连接模块:块由几个Java Bean构成,主要任务是对数据库进行查询、添加、删除和修改等操作同。5)加密字典和管理程序:加密字典通常以配置文件或数据库表形式存在,利用各种索引关系对各种加密文件进行管理、控制和查询处理等内容。
3 结束语
数据库中的重要数据经过加密系统处理后,以密文形式存储,大大增加了安全性。虽然从安全层面对数据进行加密,使得非法用户侵入到系统中来或者是拷贝、窃取数据,增到了数据的安全性,系统发生故障时容易触发数据恢复的危险,数据加密以后也产生了一些新的问题,一方面,数据加密原本就是在数据库性能和安全性之间做出合理的取舍,安全性能增加,其数据库整体性能就会受到一定程度的弱化,所以在实际应用中,应根据具体的应用目的不同而采用不同的数据库加密等级。另一方面,目前通用的数据库加密技术主要为分组加密算法,该算法将加密后的密文重新写在原明文的位置,增大了加密后的明文占用的存储空间,降低数据库的整体性能。
参考文献
[1]糜玉林,朱爱红,李连.一个用于数据库加密算法的研究与实现[J].计算机工程,2005,31(8):131-133.
[2]贾学芳.浅析数据库加密技术[J].科技信息,2009(2):324-325.
[3]刘军.数据库加密技术[J].科技信息,2009(18):174.
[4]张枢.一种数据库加密系统的设计与实现[J].林业科技情报,2008,40(1):62-63.
[5]许方恒.数据库加密模型研究[J].实验技术与管理,2009,26(12):93-95.
[6]楚志凯,吕秀平,路晓亚.SQL Server的数据库加密技术的研究与实现[J].电脑学习,2010(2):97-99.
数据库加密系统 篇5
摘要:数据库加密技术给我们的数据提供了安全保障,本文介绍了数据库加密技术功能、实现并结合VF数据环境谈了如何实现数据库加密的方法。
关键词:数据库加密VF
引文:
随着数据库应用的日益广泛,数据库安全问题也越来越受到关注。目前大部分数据库都是以明文存储,采用一般的身份验证与识别无法保障数据库的安全。数据库加密机制在身份验证与识别后使用密码技术对数据库作进一步的保护。数据库加密将数据库中的数据作密文存储。通过数据库加密可以更有效的保护数据库安全。今天我将结合VF数据库环境与大家谈谈数据库加密技术。
一、数据库加密技术的功能和特性
首先谈谈数据库加密技术,经过近几年的研究,我国数据库加密技术已经比较成熟。一般而言,一个行之有效的数据库加密技术主要有以下6个方面的功能和特性。
(1)身份认证:
用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。如使用终端密钥。
(2)通信加密与完整性保护:
有关数据库的访问在网络传输中都被加密,通信一次一密的意义在于防重放、防篡改。
(3)数据库数据存储加密与完整性保护:
数据库系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改。
(4)数据库加密设置:
系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主选择。
(5)多级密钥管理模式:
主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护。
(6)安全备份:
系统提供数据库明文备份功能和密钥备份功能。
二、对数据库加密系统基本要求
(1)字段加密;
(2)密钥动态管理;
(3)合理处理数据;
(4)不影响合法用户的操作;
(5)防止非法拷贝;
三、结合VF数据环境进行数据加密
在VF环境下开发的数据库系统,我们一般采取进入时要求输入正确的用户名和密码,然后根据不同的用户权限来设定用户读取、修改、删除数据的权限。由于存储数据的DBF文件采用的是ASCII明文存储,如果非法用户不使用程序读取数据,而是直接使用WINHEX、UltreaEdit等工具--甚至是DOS下的DEBUG来打开数据库文件,都可以直接阅读到数据库中的内容。因此,为了使得DBF文件可以更加安全,必须对数据的载体DBF文件进行加密保护,主要的目的还是把ASCII码的信息变成不可直接阅读的数据。根据文件型数据库的特点,数据库的加密一般可以有三种方式:
(1)库外加密
考虑到文件型数据库系统是基于文件系统的,因而库外加密的办法,应该针对文件IO操作或操作系统而言的,因为数据库管理系统与操作系统的接口方式有三种:一是直接利用文件系统的功能;二是利用操作系统的I/O模块;三是直接调用存储管理。所以在采用库外加密的方法时,可以将数据先在内存中使用DES、RSA等方法进行加密,然后文件系统把每次加密后的内存数据写入到数据库文件中去(注意是把整个数据库普通的文件看待,而不是按数据关系写入),读入时再逆方面进行解密就可以正常使用了。这种加密方法相对简单,只要妥善管理密钥就可以了。缺点对数据库的读写都比较麻烦,每次都要进行加解密的工作,对程序的编写和读写数据库的速度都会有影响。
(2)库内加密
如果从关系型数据库的各个方面出发,很容易形成库内加密的思想。关系型数据库的关键术语有:表、字段、行和数据元素。基本上可以针对这几方面形成一种加密的.方法。
(1)以表为单位:对于文件型数据库来说,一个文件只有一张表,因而对表的加密可以说是对文件的加密了。对过更改文件分配表(FAT)中的说明等手段可以实现对文件的简单加密,但这种加密方式涉及到文件系统底层,误操作容易造成FAT混乱,而且与文件系统格式有关,因而通常不宜采用。
(2)以记录或字段(即二维表的行或列)为单位加密:通常情况下,我们访问数据库时都是以二维表方式进行的,二维表的每一行就是数据库的一条记录,二维表的每一列就是数据库的一个字段。如果以记录为单位进行加密,那么每读写一条记录只需进行一次加解密的操作,对于不需要访问到的记录,完全不需要进行任何操作,所以使用起来效率会高一些。但是由于每一个记录都必须有一个密钥与之匹配,因此产生和管理记录密钥比较复杂。以字段为单位的加密分析与以记录为单位的加密情况相似。
基于记录的数据库加密技术一般而言,数据库系统中每条记录所包含的信息具有一定的封闭性,即从某种程度上说它独立完整地存储了一个实体的数据.因此,基于记录的加密技术是最常用的数据库加密手段.这种方案的基本思路是:在各自密钥的作用下,将数据库的每一个记录加密成密码文并存放于数据库文件中;记录的查找是通过将需查找的值加密成密码文后进行的.由于密码文数据一般不能代替明码文进行算术运算和关系运算,因此,采用这种方案时,数据库将不能实现诸如索引,连接,统计,排序等多种操作,并会影响数据库管理系统某些原有功能的作用.
(3)以数据元素为单位加密:由于数据元素是数据库库内加密的最小单位,因而这种加密方式最彻底的但也是效率最低的。每个被加密的元素会有一个相应的密钥,所以密钥的产生和管理比记录加密方式还要复杂。
结合VF数据库,我建议使用一下方法对数据库加密:
1.用),chr等函数对字段内容做转换;
2.用低级文件函数对库文件进行转换;
3.不用库形式,而用文本文件形式记录信息.并用低级文件函数进行加密。
第2,3种方法,原理一样,都需要用设计一个函数用来加密文件,一个函数用来解密文件.每次系统运行时先解密,修改内容保存后,运行加密函数。使用时不太方便.设计表单时,不直观。如果加密等级要求不高,宜用第一种方法。
关于第一种方法举个例子:
如要对密码字段进行加密,passwordM(4)(字段类型为备注型较好,定义成字符型也可以,但没有备注型灵活)。假设密码长度规定为8,内容为1234____(x表示空)
lpassword=’1234’ space(4)
lpasswordlen=8
mpassword=’’
forln=1tolpasswordlen
mpassword=mpassword chr(abs(subs(lpassword,ln,1)) ln)-255))
endfor
?mpassword
加密形式可做许多复杂的变化,可考虑密码加密参照用户名,使同一密码不同用户密文也不同。这种做法要注意的是,对密码为空或密码为同一字符的情况,密文不能有明显的规律。不管什么加密方法,只要解密者有机会使用软件,并有权设置密码,就能够通过设置有规律的密码,来比较明文和密文的差别,算出密钥。
可考虑采用这种思路:刚才密文的一个字节对应明文的一个字节,位置一一对应,还可让明文的1,2,3,4,5,6,7,8字节,对应密文的8,23,1,34,56,3,7,9字节,密文的其它字节随机写入.或密文的对应字节位置是根据明文按某个算法算出,也可用几个字节对应明文的一个字节等等,用备注型的好处显而易见。
四、小结
数据库加密技术的应用极大的解决了数据库中数据的安全问题,实现的方法各有千秋,相信随着数据库加密技术的发展,数据库的使用会变得越来越安全,越来越快捷。
参考文献:
1、数据库加密技术概述常永亮著
2、现代数据库管理(美)JeffreyA.Hoffer,MaryB.Prescott,FredR.McFadden著
3、解密信息安全沈伟光著
VF数据库环境下的数据加密技术 篇6
关键词:Visual FoxPro;数据;加密
中图分类号:TP393文献标识码:A文章编号:1007-9599 (2013) 05-0000-02
1前言
随着数据量的空前巨大,数据库在各行各业中的应用越来越广泛,同时数据库安全问题也越来越受到关注。以VF数据库环境为例,目前大部分数据库都是以明文存储,采用一般的身份验证与识别,无法保障数据库的安全。数据库加密机制在身份验证与识别后使用密码技术对数据库作进一步的保护。数据库加密将数据库中的数据作密文存储。通过数据库加密可以更有效的保护数据库安全。
2数据库加密的功能与特性分析
目前,数据库加密技术已经比较成熟。一般而言,一个行之有效的数据库加密技术主要有以下6个方面的功能和特性。
第一,身份认证。用户除提供用户名、口令外,还必须按照系统安全要求提供其它相关安全凭证。如使用终端密钥;第二,通信加密与完整性保护。有关数据库的访问在网络传输中都被加密,通信一次一密的意义在于防重放、防篡改;第三,数据库数据存储加密与完整性保护。数据库系统采用数据项级存储加密,即数据库中不同的记录、每条记录的不同字段都采用不同的密钥加密,辅以校验措施来保证数据库数据存储的保密性和完整性,防止数据的非授权访问和修改;第四,数据库加密设置。系统中可以选择需要加密的数据库列,以便于用户选择那些敏感信息进行加密而不是全部数据都加密。只对用户的敏感数据加密可以提高数据库访问速度。这样有利于用户在效率与安全性之间进行自主选择;第五,多级密钥管理模式。主密钥和主密钥变量保存在安全区域,二级密钥受主密钥变量加密保护,数据加密的密钥存储或传输时利用二级密钥加密保护,使用时受主密钥保护;第六,安全备份。系统提供数据库明文备份功能和密钥备份功能。
3传统的数据加密
3.1固定密码
固定密码是系统中唯一的一个密码,既然是“固定”的,那么它就是不能够改变的,它主要是通过IF语句以及ACCEPT语句来实现相关的授权功能1。这个密码在程序设计的过程当中便被固定了下来,在后期的使用过程当中难以进行修改,否则便只能对源程序进行重新编写,或是用一段子程序来对密码进行修改,总之其灵活性与安全性都并不太如人意。
3.2固定密码简单加密
顾名思义,固定密码简单加密,既是对原有的固定密码进行一次加密,这种加密方式比固定密码的安全性略高,但密码本身的值不变,加密也并不复杂。这种加密可通过两种方式来实现,一种是转换法,另一种是钥匙法。
所谓的转换法是通过对固定密码本身进行一次运算,使密码值产生固定的变化,通常使用以下语言来完成:
PASSWORD=CHR(65)+CHR(66)+CHR(67)+“0”。在該语句中所用到的CHR()函数是用来进行返回以数值表达式值为编码的字符,而符号“+”则用作字符串连接,文中的语句进行转换过后,PASSWORD的值为“ABC0”,就是这种简单的密码加密,就能够起到密码保护的作用,在一定程度上提高安全性。所谓的钥匙法是通过将密码存储在一个特定的设备上,如果需要使用密码,就把该“钥匙设备”接入系统,使系统对密码进行读取、审核。
3.3可变密码
可变密码指的是密码自身能够进行规律性的变化,它可以通过很多方法来实现,比如随机发、时间法、位移法以及转换法等2。
首先说转换法,它首先要对原有的密码进行一次计算,将其转换成为加密后的密码,在要对密码进行使用的时候,就对加密后的密码进行一次倒序的计算,得出密码本身。
时间法是通过调用DATE()函数以及CDOW()函数来进行加密的算法,这种加密密码的值是由一个时间以及一个字符构成,它可以在每天变换不同的密码,它主要通过以下语句来完成。
VALUE1=DATE()
PASSWORD=SUBSTR(CDOW(VALUE1),1,3)+“VFPSYSTEM”
在该语句中,DATE()函数获取了当前的日期,然后CDOW()函数根据了当前的日期求出了今天是星期几,并通过SUBSTR()函数截取字符串的一部分,最后通过“+”连接字符串“VFPSYSTEM”组成当日的密码。操作人员应根据日期的不同来进行密码输入,且一周中的密码不会重复,这又在一定程度上提高了安全性。
总体来说,这些传统的加密方法都还过于简单,安全性与防护性不能达到较高的水平,在当前看来需要高技术的加密技术。
4随机加密
4.1简单的随机加密
这种随机加密算法主要是运用随机函数SECONDS()来完成,该算法需要通过一个随机数序列来和相关的数据进行异或运算,使数据得到加密保护。函数SECONDS()的作用是返回一个随机数,然后将这个随机数同一个字符串进行异或运算,运算结果则作为一个随机的密匙,该密匙的长度完全取决于字符串的长度。有了这个密匙,调用SECONDS()又生成一个新的随机数,用这个随机数与数据进行异或运算后,便能够是数据得到加密处理。
采用这种简单的加密方法,最要有三个优点,第一是它的加密属于“一次一密”这样的形式,第二是数据库数据在进行了加密过后,数据量不会有很大的变动,只是增加了密匙,第三是算法并不太复杂,在具体的实现上较为容易3。
4.2随机伪码加密
通过加密与解密函数能够完成密码与随机伪码之间的转换,将密码转换成为一个随机的伪码就是在对密码进行加密,这个加密过程的主要目的是使密码变得更加的隐蔽、复杂,以增强其安全性。
在VF数据库环境下,采用这种加密方法能够允许多用户权限控制,而且可靠性更强,安全性更高,因为密码通过加密而生成的随机伪码不具备任何的规律性特征,即便从数据库中将伪码删除过后,想进入系统也是不可能的,从而实现可靠性更高、安全性更高的密码权限控制。如果用变量PSD来储存密码,用变量WM来存储伪码,那么大致的加密过程主要通过以下语句来完成。
N1 = RAND( ) * 10^9
IF N1 < = 999999999
N1 = N1 + 10^9
ENDIF
N1 = INT( N1)
C1 = STR( N1 + PSD) + STR( N1)
C2 = SUBS( C1,5,20) + SUBS( C1,1,4)
P1 = “”
P2 = “”
FOR i = 1 TO 10
P1 = P1 + SUBS( C2,2* i - 1,1)
P2 = P2 + SUBS( C2,2* i,1)
ENDFOR
WM = P1 + P2
4.3多随机数加密算法
多随机数加密算法是用多个密钥进行加密的技术.采用多随机数加密时,对于原码字符的ASCII值,都产生一个随机数与之运算,生成另外一个0至255之间的数,然后再将其以3个字符方式与密钥合并成4个字符生成伪码,最后将全部字符生成的这样的伪码联结起来形成对应的加密数字序列,并在之前加上长度,加密后的数据长度是原数的4倍多,把其放在字段中保存.其中,长度存放的时候也用了4个字符,并加入随机数,提高数据加密的程度.当打开表的时候,用加密函数将原码转换成伪码进行存贮,从表中无法直接看到原码,只有程序才能动态看到原码,保密性很强。假设STR1是需要加密的字符串,多随机数加密算法的主要代码如下。
R = INT( RAND( - 10) * 1000)
L = LEN(STR1)
V1= RIGHT( STR( R) + IIF( L > 9,STR( L,2) ,“0”+ STR( L,1) ) ,4)
R = INT( RAND( ) * 10)
FOR i = 1 TO LEN(STR1)
V2 = ASC( SUBS(STR1,i,1) ) - R
V3 = IF(V2 > 99,STR(V2,3) ,“0”+ STR(V2,2) )
V1= V1+ STR( R,1) + V3
R = INT( RAND( ) * 10)
ENDFOR
如果要进行解密,则采用相反的方法,每个字符都要与这个字符有关的随机数运算,由于需要用到多个随机密钥,安全性、可靠性又有较大提高。
5结束语
作为一款集成了编程语言的数据库管理系统,它有着各种的作用优势,包括它的加密技术。但是,我们不能忘记加密技术固有的局限性。从理论上说,只要拥有足够多的物力、财力、人力以及百折不挠的毅力,任何加密算法均可以被破译。所以我们可以这样认为:目前,人的智慧还不能设计出一种加密算法,使其不能被破译。因此,在使用好数据库加密技术的同时,还应当注意做好其他相关的加密工作,这样才能确保数据信息的安全。
参考文献:
[1]李萍.数据库加密技术研究[J].忻州师范学院学报,2010(05):43-45.
[2]徐珂.基于VF环境的数据库加密技术[J].广西轻工业,2007(04):67-68.
[3]毕文才.Visual Foxpro数据库的加密[J].电脑开发与应用,2008(08):77-79.
[4]李庆森.浅谈Visual FoxPro数据库加密技术及其应用[J].计算机光盘软件与应用,2012(20):106-111.
数据库加密系统 篇7
随着社会科技的不断发展与进步,互联网得到了飞速发展,计算机技术也得到了广泛的应用,但另一方面信息的安全问题却日益突出,信息安全技术应运而生并得到了极大的发展。信息安全技术的核心是数据加密技术,它不仅能够加解密数据,而且还能够鉴别、认证数字签名等,从而使在网络上传输的数据的完整性、确认性及机密性得到了切实的保证。本文将DES算法和RSA算法的优点结合起来,将一个数据加密系统设计了出来,同时将Java安全软件包充分利用起来,实现了数字签名。
1 数据加密技术
1.1 私钥加密体制
私钥加密体制指在加密和解密时所使用的密钥是相同的,由两种类型,分别是分组密码和序列密码。分组密码对明文进行分组的依据是其固定的长度,用同一个密钥加密每一个分组,从而促进等长的密文分组的产生。序列密码又称流密码,因为它将明文数据一次加密一个字节或比特。和序列密码相比,分组密码使用于软件实现,并且具有较快的加密速度,因此在人们的日常工作和生活中得到了极为广泛的运用。
1.2 公钥加密体制
1976年,W.Diffie和Hellman最早提出了公钥体制,利用两个不同的密钥分开加密和解密的能力是该体制最大的特点。公开密钥在加密信息中得到了应用,而使人密钥则在解密信息中得到了应用。通信双方可以直接进行保密通信,而不需要事先交换密钥。同时,在计算机上也不能实现从公开的公钥或密文中将明文或密钥分析出来。
2 数据库“敏感”数据安全加密系统设计
2.1 数据库“敏感”数据安全加密系统的体系结构
该加密系统是在目前较为成熟的仿真网络体系结构HLA的基础上发展起来的,由两部分组成,分别是CA服务器端和客户端。在联邦成员中嵌入加密客户端,可以对各联邦成员之间的“敏感”数据进行加密,CA服务器则可以生成、分发及管理密钥。联邦成员和CA服务器之间及各个联邦成员之间进行通讯的途径是HLA-RTI接口。加密系统体系结构如图1所示。
2.2 数据库“敏感”数据安全加密系统的功能模块
CA服务器端与加密客户端组成了加密系统的功能模块。其中,CA服务器端的主要功能是认证客户端的身份、生成、存储并分发RSA密钥等。密钥是在用户口令字和大数分解理论的基础上生成的,每次有一对密钥(公钥和私钥)产生,用于对会话密钥进行加密和数字签名,也就是对称加密算法AES或DES、3DES算法的密钥;将生成的密钥对和申请者的用户名联系起来,促进一个关联目录的生成,以方便客户端查找即是密钥的存储;依据客户端的请求信息,在关联目录中将与之相匹配的信息查找出来,如果找到的话,就把密钥向请求的客户端发送即是密钥的分发。
加密客户端的主要功能是完成对文件的加密和解密、传输实时数据的加密和解密密文、管理和传输对称加密算法的密钥及和CA服务器交互等。其中,对称加密算法AES或DES、3DES及混沌序列加密算法的密钥均在密钥生成模块生成;密钥的加密传输模块主要是使会话密钥的安全得到切实的保障,也就是说,用公钥密码算法RSA的公钥对会话密钥进行加密,然后一起传输加密后的密钥和密文,在解密端,为了得到会话密钥,可以使用TSA的私钥来进行解密;实时数据的加密和解密模块的基础是混沌特性,在加密或解密实时数据时利用混沌序列密码算法。加密系统的功能模块划分如图2所示。
2.3 数据加密模块的设计与实现
混合加密体制是数据加密系统所使用的,它将对称密码算法具有的较快的贾母速度、较高的加密强度、较高效的加解密大量数据等能力进行了充分的运用;公钥密码算法具有较高的加密强度,密钥便于管理。为了弥补传统密码算法中不便于传递密钥的缺点,可以加密明文的密钥。将二者结合起来,可以实现数据传输的安全性。
2.3.1 3DES算法的设计与实现
目前,虽然DES具有较为广泛的应用范围,并且人们可以很方便地从公开渠道获取,但是因为DES只有56位的密钥长度,易于攻击,其加密强度已经远远不能满足现代安全的需要,因此可以将两个56位的密钥混合起来使用来完成加解密,这样密钥就达到了112位的长度,从而大大增强了加密强度,这就是3DES。3DES的算法原理如图3所示。
图3中密钥K1、K2是随机产生的。
三重DES算法的实现主要包括DES类和THREE类两个类。其中DES类的主要函数是public static byte[]encrypt(byte[]oword64,int[][]i Sub Keys)//加密;public static byte[]decrypt(byte[]b Cipher-text,int[][]Sub Keys)//解密。THREE类的主要函数是public static byte[]encrypt(byte[]oword,int[][]Sub Keys1,int[][]Sub Keys2)//解密;public static byte[]decrypt(byte[]sword,int[][]Sub Keys1,int[][]Sub Keys2)//加密,返回明文。
2.3.2 RSA算法的设计与实现
大数分解是RSA的安全性赖以存在的基础。公钥和私钥都是两个大素数的函数。RSA算法的实现主要包括三个部分,即生成密钥、加密数据和解密数据。在变量的定义方面,在对p、q、n、e、d、t进行定义时,利用Java中的大数Big Interger();在密钥的生成方面,利用publi boolean generate PQNTED(Stringe);在加密数据方面,利用public String Encrypt(String msg、Big Integer pbkey、Big Intiger n),在加密的过程中,在对所要加密的字节数组进行分组时,可以利用转换函数copy Bytes();在解密数据的过程中,利用之前产生的公钥n与私钥d。把所要解密的数据与公钥n与私钥d作为参数向加密函数public String Decrypt(String msg,Big Integer prikey Big Integer n)传递。
RSA只有在大数运算的基础上才能实现,只有这样才能执行大量的大数加减乘除和模逆、模幂运算。这就导致相对于其他特别是对称密钥算法来说,RSA的实现效率十分低下。本文设计的系统中生成的DES密钥用RSA替代的原因也就是这种速度上的差异。
本文设计的数据库“敏感”数据安全加密系统,将数据的加密技术和签名技术综合了起来,一方面解决了密钥的管理问题,另一方面也使数据的不可否认性及完整性得到了切实的保障,同时也将该系统网络通信的程序设计和界面设计方法提供了出来。本系统将集中主要的加密算法进行了具体的分类,使代码的高效性、可扩展性等得到了有效地增强,有利于以后的再次开发。
摘要:本文首先简要阐述了数据加密技术,然后从数据库“敏感”数据安全加密系统的体系结构、功能模块及数据加密模块的设计与实现三个方面,对数据库“敏感”数据安全加密系统设计进行了相关的研究。
关键词:数据库,敏感数据,安全加密系统,设计
参考文献
[1]胡向东,魏琴芳.应用密码学[M].北京:电子工业出版社.2006.
[2]贺雪晨,陈林玲,赵琰.信息对抗与网络安全[M].北京:清华大学出版社.2006.
[3]褚雄,王子敬,王勇.一种基于FPGA的DES加密算法实现[J].江南大学学报(自然科学版),2006,15(6):661—664.
[4]朱作付,徐超,葛红美.基于DES和RSA算法的数据加密传输系统设计[J].通信技术,2010,43(4).
[5]Compag,HewIett-Packard,InteI,Lucent,Microsoft,NEC,PhiIips.UniversaI Bus Specification(Revision2.0)[M].InteI,2000.
数据库加密系统 篇8
1 士兵职业技能鉴定系统数据库安全性分析
现阶段各大军兵种都采用士兵职业技能鉴定系统来对士兵职业进行认证, 这也是目前比较全面、公平公正的职业认证手段。但由于其鉴定的岗位、工种繁多, 试题库数目庞大等原因, 加上各单位情况不尽相同, 试题库及考核人员信息不断随时间而更新, 这势必会造成数据库规模不断增大[2]。加之随着网络技术的飞速发展, 有些不法分子为了通过鉴定而入侵系统修改试题库和鉴定结果。这都使得鉴定系统面临严峻的安全威胁, 数据库的安全与否直接影响到试题库的安全以及鉴定结果的安全, 这也是鉴定系统数据库加密的核心所在。
2 数据库加密方法
现阶段对于数据库的加密主要针对数据库三个层次的加密, 分别是操作系统层、数据库管理系统内核层以及数据库管理系统外核层[3]。
2.1 操作系统层加密
操作系统层加密主要是针对硬件加密[4], 用于解决静态数据的加密问题, 加密过程将物理存储器与数据库系统之间添加一层硬件作为中间层, 由添加的硬件完成加密和解密工作。这种加密方式相对简单, 只要确保密钥安全就能保证数据库的安全;缺点是不能保证添加的硬件与个人PC机完全兼容, 系统中数据库文件之间的数据关系也模糊不清, 加密解密过程繁琐, 对数据库的读写也比较麻烦, 这对于程序员和数据库的管理工作者来说, 工作量都是比较大的, 因此数据库规模相对大的系统很难实现操作系统层加密。
2.2 数据库内核层加密
数据库内部结构一般由三部分组成:外模式、内模式和存储模式[5]。
(1) 外模式, 又叫子模式, 用于数据库数据局部逻辑结构的描述;
(2) 内模式, 用于数据库数据全局逻辑结构的描述;
(3) 存储模式, 用于数据库数据物理结构的描述。
由此可知, 数据库内加密的关键就在于在数据的各个层次的映射中加入一个加密映射层, 其最好是位于存储模式和内模式之间。可以针对表、字段、行和数据元素这几方面形成一种加密的方法。其优点在于加密性能强, 不会影响数据库管理系统的功能, 可实现与DBMS的无缝耦合, 缺点是加密运算在服务器段进行, 服务器的载荷增加不少, 此外, 服务器与加密器之间的接口还需要数据库开发商的技术支持, 其加密关系图如图1所示。
2.3 数据库外核层加密
对于文件型数据库系统而言, 它是基于文件系统的, 因而数据库外核层加密应该是针对文件的输入输出流操作或者操作系统而言的。数据库管理系统一般通过三个层面的API接口与操作系统相互协同工作的:
(1) 直接调用操作系统文件系统的功能;
(2) 调用操作系统的I/O模块;
(3) 直接调用存储管理。
在采用数据库外核加密时, 将加密系统看成是DBMS外层的一个工具, 可以首先使用DES、RSA等算法将数据先在内存中加密, 然后文件系统把每次加密后的内存数据写入到数据库文件中去, 读入时再逆方面进行解密就可以正常使用了。这种加密方式不会增加服务器的负载, 可以通过在线传输加密, 缺点是加密功能有所限制, 与DBMS之间的耦合性差一些。其加密关系图如图2所示。
3 基于DES与RSA结合算法的敏感数据加密
3.1 敏感数据加密
所谓的敏感数据, 就是指那些对于系统至关重要的、不方便公开的数据[6]。敏感数据的定位取决于它的篡改对于结果的影响程度, 例如国防军事领域的数据库大多都是敏感度较高的。对于无敏感的和全部敏感的数据库, 其处理手段相对简单, 难就难在有的数据库中元素的敏感程度高低不一, 部分信息是敏感的, 部分信息可以公开。如下图3是参加职业技能鉴定的部分士兵的考评结果数据库:
其中, 证件号码、姓名、性别、家庭住址以及部队代号都是本系统可公开的数据, 因此其敏感度很低, 可不对其加密;而理论和实操考核成绩和总评成绩是系统的核心环节, 这些数据直接影响到士兵考评, 技能认证, 因此它们的敏感度较高。
对敏感数据的加密就是利用某种手段伪装数据, 使其变成人无法识别的信息。待加密数据称为明文, 加密后的数据称为密文, 加密的过程就是将明文转换成密文的过程, 其示意图4如下。
3.2 DES对称加密算法
DES是一种典型的以分组方式工作的单密钥密码算法[7], 其基本思想是将二进制的明文分组, 然后用密钥对这些明文进行替代和置换, 最终形成密文。DES使用56位的密钥加密, 进行16次迭代和3次逆置换, 最后得到64位密文。其基本步骤如下。
3.2.1 初始置换函数IP
3.2.2 乘积变换
假设经过n层处理后的左右32位分别为Ln和Rn, 做如下定义:
其中Kn是向第n层输入的48位密钥, Ln-1和Rn-1分别是第n-1层输出, f是以Rn-1和Kn为变量的输出32位函数, 第n层加密变换如下图5所示。
3.2.3 逆置换IP-1
对L16和R16利用初始置换IP作逆置换IP-1便可得到密文。
其加密算法如下:
解密算法如下:
3.3 RSA加密算法
RSA加密算法[8]是理论上最为成熟、完善, 使用最为广泛的算法之一, 该算法是基于初等数论中的欧拉定理, 建立在大整数因子分解比较困难的基础上的。RSA算法可同时应用于加密和数字签名, 并且易于理解和操作。所需工作:
(1) 选取两个比较大的质数p和q, 一般取大于100的数。
(2) 计算n=p×q, Z= (p-1) × (q-1) 。
(3) 选择一个与z互质的数d, 找出e, 使得e=1modz, 则 (e, n) 便是公钥, (d, n) 便是私钥。
其加密过程为:将明文划分成每块有K位的组, K满足2K
3.4 鉴定系统数据库加密处理
根据士兵职业技能鉴定系统的实际需要, 对试题库和鉴定结果的加密选择合适的加密方式, DES具有加解密速度快, 强度高, 密钥分发和管理困难等优势, 可满足系统对数据快速高效加解密处理的要求。而RSA非对称算法加解密速度相对较慢, 但其密钥管理方便, 适合用于对称加密算法使用的数字签名, 其能很好地保证密钥传递的安全性。
因此将两者结合起来, 试题库可以采用DES加密方式来对敏感数据加密, 鉴定结果可采用RSA的方式来对敏感数据进行加密。
4 鉴定结果加密
现以某次士兵职业技能鉴定结果为例, 对其中的敏感数据 (理论考核成绩、实操考核成绩、总评成绩) 进行加密, 加密后的结果如下图6所示。
从上图可以看出, 只针对敏感数据加密方式既能将数据按重要性级别区分开来, 对部分数据的加密又能减轻工作量;从敏感数据加密结果看, 将数字加密与字符加密结合起来, 使得加密结果更高安全可靠, 这对于数据库的管理工作有了一定的帮助, 同时对于士兵职业技能鉴定系统的维护和更新提供了必要的安全保障。
5 结论
文章在分析了现存的士兵职业技能鉴定系统存在的安全性潜在威胁之后, 提出了将DES和RSA两种不同的数据加密方式分别运用到试题库管理和鉴定结果管理中来的策略, 对数据库中的敏感数据进行加密。根据鉴定结果的加密效果来看, 提高了系统的安全性, 确保了系统在一定程度上防止他人非法入侵来对鉴定结果的随意篡改, 保证了士兵职业技能鉴定系统的正常运作, 也对士兵职业技能认证的有力保障。
摘要:针对士兵职业技能鉴定系统数据库, 就如何保证系统在高性能、高可用的同时, 提升数据的安全性, 确保系统不被入侵, 关键数据不被泄露或是增删改等问题, 提出了一种只针对敏感数据加密的策略, 将DES和RSA加密算法结合起来运用到数据加密的不同环节中, 确保了系统安全可靠。加密结果表明, 加密后的系统数据库能有效地提高系统的安全性能, 即便是他人入侵到数据库也束手无策, 防止了人为因素, 杜绝了体外操作, 有效地增强鉴定管理的规范性, 提高鉴定的含金量和认可度。
关键词:士兵职业技能鉴定,系统数据库,敏感数据,DES和RSA加密算法
参考文献
[1]王松滨, 李叶, 许远, 等.国家职业技能鉴定教程[M].北京:现代教育出版社, 2009
[2]焦冰.军队装甲装备保障专业士兵职业技能鉴定法规制度汇编[M].北京:国防工业出版社, 2012
[3]高庆雍.数据库加密技术[J].邮电设计技术, 2007 (7)
[4]姚志强.子密钥数据库安全加密算法研究[J].中国安全科学学报, 2007, 17 (1)
[5]王凤英, 程震.网络与信息安全.第二版[M].北京:中国铁道出版社, 2010
[6]王巍.数据库中的敏感数据加密方法的研究[J].科技广场, 2007 (9)
[7]孙占峰, 宋保卫.网络考试系统中数据加密技术研究与应用[J].计算机网络与信息安全, 2009, 5 (24)
一种数据库加密系统的设计与实现 篇9
随着计算机技术的不断推广,信息网络在各企业单位已逐渐普及,企业单位与外界的交流也大多依靠信息网络来完成,计算机技术及网络技术的发展在一定程度上推动了数据库的发展。数据库作为经济活动和日常工作的一种数据管理工具,它可以储存和管理海量数据,随着数据库的不断推广,安全问题已受到社会的深度关注,为了加强企业或单位数据库安全管理,就必须在数据库管理系统中设置一个安全屏障。在传统的加密技术中密钥技术是数据库加密的关键,但系统的性能会随着使用时间的延长而下降,且访问过程也存在诸多不便,本文针对传统加密技术的缺陷研究了一种简单安全的加密方式[2]。
1 数据库加密技术
在数据库中采取加密措施是为了防止信息泄露,而加密程序在数据库中的运用势必会影响到系统运行的速率,所以研究一个简单安全而又不影响系统运行的加密软件,对数据库而言具有非常现实的意义。加密措施的通常是指在系统中设置密码,加密区包括库内和库外两处,而区分库内加密和库外加密的标准则是加密部位和系统分类。
1.1 库内加密
在库内数据加密过程中,数据库加密流程和加密手段都是可见的,只有当系统在核对密码确认用户身份后,用户才能进入数据库获取所需信息,库内加密方式的优点在于加密工作的实施完全是在数据库管理系统中完成,所以库内加密具有较强的稳定性。但它也存在一定的缺陷,如数据库管理系统除了要运行基本程序外,还需对加解密功能进行设置和验证,这个过程对数据库管理系统又造成了一定的负担,系统运行效率也因此而降低。
1.2 库外加密
库外加密是指加解密等操作发生在数据库之外,在库外加密过程中数据库管理系统会对加密部分的数据进行校验和储存,用户端需要借助系统反馈才能实现加解密操作。库外加密的优点是加解密服务器的密钥与信息数据分别储存在两个系统内,而缺陷则是加密功能还不够完善,所以还会存在信息残缺的现象[1]。
2 数据库加密系统的设计
数据系统的信息交流主要是通过密文和明文的转换来实现,如图1所示为系统总体结构图,从图中我们得知数据库机密系统主要包括权限管理模块、密钥管理模块、SQL解析重构模块和加解密模块四个部分。
(l)权限管理模块
权限管理模块主要是针对用户权限检查和限制制度的设置这一部分,而模块功能的发挥主要根据用户安全等级来衡量。
如下所示为安全等级的设置公式:
安全等级设置越高,可进入数据库系统访问的用户就越少。
根据用户操作数据库的方式不同,用户操作可分为可读和可写两种,可读操作主要是通过SELECT方式,而可写的操作方式则更多,如INSERT、DELETE和UPDATE等。而安全等级的划分也通常为可读和可写两类,数据库对象不同安全等级的权限也就不同,一般情况下用户具备的可读安全等级会大于可写安全等级。
(2)密钥管理模块
秘钥管理模块就是管理密文数据库的模块,作为加密技术必不可少的一部分,密钥的设置、保存和获取都需要依靠它,管理区域不同其作用也就不同,数据库中常用的密钥有记录密钥、字段密钥、全局密钥、工作密钥和表密钥等几种。其中字段密钥和全局密钥都是为了保证密钥的安全性和稳定性特意添加的,记录密钥主要负责储存主键字段的所有信息,同时还能避免重复储存,而将密钥和数据分开存放则是提高密钥保密性能的关键。
(3)加解密模块
传统的应用软件需严格遵守流程操作获取数据,而加解密模块在系统中没有直接的数据接口,因而简化了用户获取数据的操作流程,用户在获取解密密钥的过程中需将密钥管理模块和加解密模块数据进行交换和调用,这一环节也使得系统的保密性能有所提升。
(4)SQL语句解析模块
由于加解密模块传输信息的过程都是透明的,为了防止信息泄露,数据库管理系统会将信息进行加密处理,然后以密文的形式发送给用户,SQL语句解析模块可帮助系统实现数据明文与密文的互换[3]。
3 数据库加密系统的实现
本系统选用了Windows XP作为操作系统,管理系统一般采用的是MYSQL5.0,编程语言为Visual C++6.0。系统登录界面由标题栏、状态栏和工具栏三部分组成,而导航栏主要是为用户提供服务平台的浏览窗口,其中数据库表格内的信息都是透明的,结构化查询语言编辑区主要是为用户提供语句输入环境,当用户点击确定按钮就可完成语句输入。
图2所示为新建数据库系统登录的界面,只有在登陆界面对应的地方输入正确的信息,服务器才会将登录请求反馈至系统,登陆成功后系统会跳转至图3的新建数据库界面,然后依次在服务器、端口、用户名和密码处输入正确的信息,才能正式进入数据库系统。
4 总结
随着计算机技术在各领域应用的不断推广,数据库技术在实际运用中也不断暴露出越来越多的问题,为了维护企业利益防止企业内部的重要信息数据泄露,数据库系统的安全性能已成为用户非常航关注的一个问题。本文设计的库内加密与库外加密相结合的方式,不仅保证了系统的安全性能,还具有稳定实用等优势,该系统可对数据库内的重要信息进行了封闭式储存,当用户需从数据库系统中查询或获取信息时,必须通过系统的审核,只有明文批准的用户才能进入数据库系统,另外系统还允许模糊查询,即以密文的形式进入,但获取的信息与明文获取的信息存在一定的区别。
摘要:随着数据库储存容量的不断增大,越来越多信息和重要数据都被储存在数据库系统中,不法用户的窃取以及黑客的攻击为数据储存带来严重的安全隐患。为了降低信息泄露风险维护系统信息安全,本文以某数据库管理系统为研究对象,在该系统中运用加密技术,将重要的数据信息进行加密处理,以降低信息泄露的可能性,并简单的介绍了库内加密技术和库外加密技术以及加密系统的模块组成。
关键词:库外加密,数据库系统,设计与实现
参考文献
[1]朱勤,于守健,乐嘉锦,骆轶姝.外包数据库系统安全机制研究[J].计算机科学,2007,34(2):152-156.
[2]马兴涛.数据库透明数据加密技术的研究与应用[J].数字社区&智能家居,2011(5).
消除重复数据的加密云存储系统 篇10
云计算[1]是近几年最热门的互联网技术,同时也是发展最为迅速的互联网服务模式。随着云计算重心的迁移以及大数据的兴起,存储即服务(Storage-as-a-Service,Saa S)作为云计算的支撑技术迅速发展,同时单独的云存储服务(cloud storage)在商业上也得到广泛的应用,比如Drop Box、Google Drive等。
云存储服务的推广,业界很快发现围绕个人数据的可用性和安全性是云存储服务推广的最大障碍。用户对于云存储服务提供商的可用保障和安全保障能力心怀疑虑,从而阻碍了用户将更多的数据和业务转移到云平台上。
如今现有的加密云存储系统,主要有如下几类:使用用户私钥加密数据,但这样无法消除重复数据,对于不同用户的相同文件,因为私钥不同, 加密出来的文件不一样, 例如E (Ka, f )→Ca≠Cb←E(Kb, f ),当Ka≠Kb。也有使用系统分配密钥加密文件的,这样做到了消除重复数据,但是众多客户端使用相同密钥,难以抵抗伪造客户端的攻击。对此,文献[2]设计了一套能消除重复数据的加密云存储系统。系统中使用消息自加密确保存储系统中没有重复数据;使用带认证的加密协议确保密钥的安全签发与传输;使用高级加密算法确保数据的安全性。本文在介绍该系统的基础上,通过在系统中加入RS纠删码提出了一套可消除重复数据的加密云存储系统,分析了数据的安全性和完整性保护性能。
1 系统概述
如图1 所示,文献[2]提出的系统由代理服务器、密钥服务器、存储服务器组成。代理服务器主要负责数据资源计算部分以及用户请求的处理;密钥服务器主要负责分发文件加密密钥;存储服务器主要负责数据在冗余备份条件下的存储。其运作流程如下:
用户(User)通过终端将数据文件f (file)上传至该系统。代理服务器(Proxy Server)可以视为存储服务器的客户端,收到文件后计算出文件f的信息摘要h =H( f),然后通过OPRF协议[3],和密钥服务器(Key Server)通信获取文件加密密钥K =Hmac(Ks,H(f ))。本次通信结束,密钥服务器没有得知需要加密的消息h ,而代理服务器也不曾拥有密钥服务器的密钥,同时若两条消息相同h1=h2,则能通过HMAC算法保证在同一个密钥Ks下生成的消息摘要是相同的
接下来,代理服务器使用K为密钥加密文件得到加密后的文件Cf=E(K, f ),然后使用用户私钥Ku加密文件密钥K得到加密后的文件密钥Cu=E(Ku, K) 。代理服务器首先会查询存储服务器上是否已经存在文件Cf,若是存在则无需再次存储Cf,只需要存储用户对应的文件密钥Cu;若是不存在,则代理服务器将Cf和Cu作为一组用户数据送到存储服务器(Storage Server)上,由于Cu只是文件密钥加密文件,数据长度有限,故直接以3 备份方式存在数据库中;而Cf是加密后的用户数据,大小和用户上传文件直接正相关,是占据存储空间的主要部分,故使用纠删码(Erasure Code)中性能稳定的RS码编码后存储,编码后不仅能均衡单个存储节点存储压力和网络通信负担,还能使数据有一定的容灾能力。如图中采用的RS编码生成2 个数据块(D1, D2) 和1个编码块(C1) ,3 块分别存储于不同存储节点,单一节点上的数据损坏或者丢失并不会影响用户数据的完整性。
若用户想要获取云存储端的个人数据,则代理服务器发送获取用户文件的命令到存储端,存储服务器则从各个节点读取数据,通过RS译码还原出加密文件密钥Cu=RS(D1,D2,C1),然后将加密文件Cf和加密文件密钥Cu一起返回代理服务器;代理服务器使用用户私钥Ku解密加密文件密钥Cu得到文件密钥K =D(Ku,Cu),再使用K解密文件Cf得到文件f =D(K ,Cf);最后将解密后完整的文件f发送至用户。
2 数据的隐私性分析
在分析数据隐私之前,先介绍下MLE (Message-Locked Encryption)[4],简单来说即利用消息M本身产生密钥K ,比如使用常用的MD5、SHA得到K =H(M) ,然后使用该密钥加密消息本身生成密文C=E(K,M)。使用MLE能和不加密的系统一样,很容易实现消除重复数据,因为对应已经指定的消息M生成的密钥K是一定的;但是当用户文件集比较小的时候,攻击者可以通过暴力破解加密文件,造成用户隐私泄漏。而在本系统中,特地设立密钥服务器来加强MLE中的K ,通过散列消息认证码K =Hmac(Ks,H(M ) )使得文件摘要变得不可预测,同时结合OPRF协议[3]将服务器密钥Ks和消息摘要H(M) 泄漏概率降至最低。而在系统其它过程中只要用户私钥没有被窃取,攻击者即使拿到了加密文件,也面临的是破解AES加密的问题,就现在来说几乎是不可能的。
3 数据的容灾性分析
在设计的系统中,容灾性是由冗余备份所提供的。而本系统中冗余备份是由RS编码实现,而RS编码的纠错性能早已有深入的研究[5]:将k个源数据包冗余编码为n(n>k) 个编码包,只要有还有k个完整的包就能恢复出完整的源数据。假设使用RS(n,k,t) 编码,那么码率为r =k/ n ,假设存储中单位长度的数据(数据块)出错概率为p且互不影响,令q =1-p ,原数据长为k个单位长度,那么能顺利将数据读取出来的概率为∑ti=0Cniqn -ipi。对比数据存储时未处理、3 备份和RS(15,8,3)编码,得到下表:
从上表容易看出,当数据块出错概率为p =1 /100 时,RS编码冗余备份可以在更高的恢复概率下降低3备份所造成的存储空间浪费。
4 结束语
如何确保云存储系统中数据的安全性和隐私性是云计算面临的难题。本文介绍一种基于摘要算法、加密算法、加密协议的能消除重复数据的加密云存储系统:针对重复数据过多,使用MLE的方式消除重复数据;然后通过设立一个密钥服务器,并利用OPRF协议通信来弥补MLE的缺陷,更好的保护用户隐私的安全。最后使用纠删码对用户数据进行备份,提高存储效率的同时提升数据的容灾能力。适合部署在如今纷杂的个人云存储平台上。
参考文献
[1]Peter Mell,Timothy Grance.NIST Special Publica-tion 800 -145:The NIST Definition of Cloud Computing-[S].Natio nal Institute of Standards and Technol ogy,Se-ptember 2011.
[2]Keelveedhi S,Bellare M,Ristenpart T.Dup LESS:ser-ver-a ided encryption for deduplicated storage[C].Pres-ented as part of the 22nd USENIX Security Symposium(USENIX Securit y 13).2013.
[3]C AMENISCH,J.,N EVEN,G.,AND SHELAT,A.Simul-atableadaptive oblivious transfer[J].In EUROCRYPT 2007(B arcelona,Spain,May 20–24,2007),M.Naor,Ed.,vol.4515of LNCS,Springer,Berlin,Germany,pp.573–590.
[4]Bellare M,Keelveedhi S,Ristenpart T.Messageloc-ked e ncryption and secure deduplication[M].Advances in Cryptology–EUROCRYPT 2013.Springer Berlin Heidel-berg,2013.
数据库加密系统 篇11
关键词:Web平台;数据库;加密技术;应用策略
中图分类号:TP309.7
1 Web平台数据库安全特点
1.1 Web数据库特点
Web数据库又称网络数据库,是在传统关系数据库的基础上融合了网络技术的一种的严谨模式,简单可以理解为因特网与数据库结合的产物。Web数据库的出现使得网络查询、检索更容易实现。
相对于传统关系数据库而言,Web数据库本身存在相对独立的特征,主要包括几个个方面:存储信息广泛、数据结构相对灵活、能够实现更多样化的编译、支持更多的数据类型。除此之外,随着Web数据库技术的发展,为了应用网络查询、检索的需要,Web数据库也拥有了改进的索引机制,能够有效提高查询效率和查询质量,更符合网络应用的特点。
1.2 Web数据库加密技术
在传统关系型数据库安全研究领域,最常用的数据库保护方法是通过设置复杂口令和访问权限,但是数据库管理员账户的安全问题就成为了严重隐患,因此出现了使用数据加密技术保证数据库信息安全的方法。在数据库中,由于数据组长度相对较短,存取时间较长,密钥的相应生命周期浮动较大,如果采用单一密钥无法起到良好的保密效果,如果采用独立密钥则会导致密钥过多致使管理复杂,进而引发查询响应速度过慢的问题,不符合Web数据库应用的需求,因此Web数据库的加密技术也出现了相应的改进。在现代化的Web服务系统中,数据库加密方案通常采用DBMS内核加密,这一加密技术可以与DBMS无缝结合,并实现更为强大的加密功能,但目前DBMS内核加密算法的可选性较低,灵活性不足,而且由于在硬件层面进行加密,也会在一定程度上增加服务器负载,影响Web服务的高效性。由于内核加密的缺陷,因此出现了DBMS外层加密技术,通过封包对服务实现加密,能够有效降低运行复杂,同时加密过程与加密数据被分开,安全性得到再次提升,由于加密本身的条件问题也可以实现端到端的密文传输,进一步提升加密效果。
2 B/SWeb平台构架下的数据加密模型分析
2.1 B/SWeb平台构架特征
B/S结构是Browser/Server结构的简称,即浏览器/服务器结构,这一结构的特点是Web应用、功能的使用直接通过浏览器即可实现,不需要客户端,在PC端已经能够实现较高的安全保障。在目前Web应用领域,ActiveX技术的普遍使得这一结构的安全性和便利性得到再次提升。在目前常见的Web平台构架中,B/S结构相对于C/S结构而言不需要对PC端应用进行专门的应用管理,但由于访问的简便性以及功能的下移,使得安全管理中服务器安全条件的要求提升,服务器的负载有小幅增加的现象。
2.2 典型的DSP加密结构分析
在B/S结构下的Web平台数据库通过DSP模型,能够实现较佳的加密效果,这一模型本身与B/S结构十分相似能够充分适应网络环境的特点。
用户对数据进行增、删、改等操作时,涉及到明文数据到密文数据的转换,需要数据加密模块。数据加密模块通过在数据操作过程中隐藏的数据窗口来实现,用户对明文数据窗口的操作同步映射到隐藏的密文数据窗口中,对明文数据的保存操作同步映射到密文数据窗口的保存操作。在DSP模型中,敏感信息加密后存放在数据库端,需求用户发送查询请求后会经过加密然后再发送,并能够同时实现本地的短期查询与服务器长期查询,执行密文查询的过程中,查询结果还需要进行再次加解密过程,有效增加的数据的安全性。
3 加密算法优选方案
3.1 常规数据加密方法的对比
数据库加密算法必须适应数据库系统的特性,如强度高、加/解密速度快、适应明文数据长度变化范围大、数据加密后尽量不增加存储空间等。目前常用的密码可以分为三类,序列密码、分组密码和公开密钥密码。序列密码算法将明文与随机序列直接运算,得到的每一位密文与明文其他位数据无关。该类算法运算速度高,并且产生的密文一般与明文长度一样。但是如果得到数量较多的密文对,则较容易破译。该算法常用于一次一密的传输加密。分组密码算法将明文按固定长度分组,对各分组使用不同的密钥加密。密文中的每位数据不仅与密钥有关,还与分组中其他明文数据有关。分组加密算法较难破译,但是密钥分发及管理。公开密钥算法即非对称密钥算法,运算速度很慢,不适合用于大数据量加/解密。
通过对比来看,能够同时适应数据库加密需求以及Web平台特点的加密算法为分组加密算法。
3.2 DES加密算法及密钥管理
通过前文分析可知,适用于Web平台数据库加密的算法为分组加密算法,而在分组加密算法中,DES算法是运行速度最快的一种。该算法由IBM公司研制,为用户提供一个双向通道A和B共享一个密钥,双方既可以用该密钥加密信息形成密文并传送出去,又可以把收到的密文用该密钥进行解密。加密的数据和加密密钥都是64位,有效长度为56位,其余8位用于奇偶校验位。由于DES算法密钥长度有限,在一定程度上影响了加密效果,因此在Web平台数据库应用中建议使用多重算法,可以有效解决密钥长度不足的问题。
在密钥管理中,通信过程中密钥的保护问题同样值得重视。为了保证敏感数据信息的安全,我们要计算子密钥组的结果M,M为密钥的乘积的合集。然后将结果M单独存放在非系统数据库中,专门建立一个非SQLSERVER数据库文件,如数据库中建立一个表,专门放置M。而且对这个文件进行加密,防止信息的泄漏。为了保证一个密钥长期使用,防止被非法分子破解,密钥必须有更新功能。系统在对新的密钥进行检查无误后,对信息表中的所有敏感信息进行重新加密。
4 应用方案优缺点概述
本次设计的在于实现已有Web平台基础的条件下,实现破译成本增加、加强数据安全性的主要目标。
在安全性方面,DSP结构下的外围加密技术与DES加密算法的结合,能够有效保障数据库存储数据的安全性,同时采用的密钥算法与管理技术能够在在任何情况下不作明文存储(包括在数据库内)、密钥在任何情况下不作明文传输(主要指在网络上)、对密钥进行变换的算法具有最高级的加密强度并永不公布、在密钥意外泄露时可以通过更改密钥及更改用户登录权限等简单手段迅速处理,并且不会影响其它密钥的安全性。
当然此设计的数据库加密框架方案对系统响应速度有一定影响,在有较大量的數据访问查询需求时可能出现一定的延迟或响应缓慢的现象,主要因素有两点:其一,认证请求本身增加了客户端与认证服务器的网络负担;其二,解析加密数据时会产生额外的解析时间。
5 结束语
本文对B/S结构特点下的Web平台数据库加密思路进行了分析说明,针对其特点提出了DBMS外围加密的DSP结构,结合应用需求与特点,提出了采用多层DES加密算法以及基于PKI的私钥认证思路。本文提供的加密系统、算法、密钥管理方案具有相对良好的加密效果与响应速度,能够有效保证服务器性能,可作为普通Web平台数据库加密的参考。
参考文献:
[1]李刚彪.数据库加密技术的研究与实现[D].太原理工大学,2010.
[2]张敏,徐震,冯登国编著.数据库安全[M].北京:科学出版社,2005.
[3]李东风,谢昕.数据库安全技术研究与应用[J].计算机安全,2008(01).
数据库加密系统 篇12
现在市面上有很多的数据加密产品, 按照加密方式主要分为软件加密和硬件加密。 软件加密的特点是:成本低、 效率低、 安全性低。 硬件加密的特点是: 成本高、 效率高、安全性高。 但是很多硬件加密产品的可扩展性比较差、没有丰富的外围接口。 另外,如果要将数据加密产品应用于军事、政府等敏感部门,国外的产品不可信, 而国内产品可选择范围又比较小。
由于经济和政治等多方面数据安全的重要性, 最近几年国家大力支持国产IC的研发与推广。 在此背景下, 本单位研发了一款具有自主知识产权的密码SOC(Sys- tem On Chip ) 芯片HX680 。 该芯片最主要的特点是内部集成了一个具有完全自主知识产权的协处理器,具有对称和非对称密码服务功能。 该芯片还有相对比较丰富的外围接口,可以进行扩展和外部通信。
SD卡作为存储设备, 具备很多其他存储设备没有的特点, 如体积小、 功耗低、 容量大等[1], 其应用范围日益扩展, 因此在本设计中使用SD卡作为存储设备。 Fat Fs是一个为小型嵌入式系统设计的通用FAT系统模块, 具有开源、 不依赖于平台、 易于移植、 代码和工作空间非常小等特点,作为本设计的文件系统是一个很好的选择[2]。
主控芯片内部没有集成实时时钟(Real-Time Clock , RTL ) , 需通过外挂时钟芯片DS3231来解决文件系统获取时间信息的问题。 主控芯片没有时钟芯片DS3231需要的I2C通信接口,需通过GPIO口的模拟来实现。
1系统硬件设计
HX6801具有完全的自主知识产权, 集成了国产32位RISC结构嵌入式处理器CK520[3],具有专用软件集成开发环境和可扩展指令。 协处理器具有硬件资源可配置、 功能单元可重构、 高性能、 二次开发简便灵活等特点,HX6801适用于数字签名与身份认证、 存储保护、 数据传输、 嵌入式控制等多种领域。 系统采用HX6801作为主控芯片, SD作为存储设备, 由DS3231提供文件系统需要的时间信息。 HX6801芯片总体架构如图1所示。
1 . 1 DS3231接口电路
DS3231是一款高精度I2C RTC器件, 具有集成的温度补偿晶体振荡器(TCXO)。 该器件包含电池输入端,断开主电源时仍可保持精确计时。 集成的晶体振荡器可提高器件的长期精确度。 DS3231的寄存器能保存秒、 分、 时、星期、日期、月、年和闹钟设置等信息。 少于31天的月份,可自动调整月末日期,包括闰年补偿。 时钟的工作格式为24小时或带AM/PM指示的12小时格式。 DS3231与主控芯片通过I2C双向串行总线传输地址与数据。 DS3231的年误差小于1分钟[4]。
主控芯片HX6801没有I2C接口, 所以使用GPIO口模拟I2C的时序,DS3231接口电路如图2所示, 图中工作电压VCC的工作范围是2.3 V~5.5 V,典型的工作电压为3.3 V,TR表示信号SDA和SCL的上升时间,CB表示总线负载电容。
1 . 2 SD卡接口电路
SD卡支持SD模式和SPI模式两种通信模式。 在综合考虑速度和设计复杂度的基础上,本设计选用SPI通信模式。 SPI通信模式只需要将片选引脚、数据输入引脚、数据输出引脚、时钟引脚与主控芯片上对应的引脚连接即可[5]。
2软件设计
软件部分采用了分层设计。 主要包括4个部分: 应用层、加/解密层、文件系统层、硬件驱动层( 包括DS3231驱动程序和SD卡驱动程序)。 应用层用来产生需要加密及解密的数据; 加/解密层主要依据密码算法编程手册及编程工具,采用专用的密码指令编写相应的密码算法并配置协处理器; 文件系统层主要实现Fat Fs文件系统的移植; 硬件驱动层主要实现对最底层硬件的控制。 层次结构如图3所示。
2 . 1加解密层
可重构安全算法协处理器遵循了超长指令字的计算机体系结构, 针对密码运算, 提取了密码算法共性逻辑, 提出并设计具有指令级可重构能力的专用指令系统和具有指令级并行处理能力的协处理器体系结构。 该协处理器具有对称和非对称密码服务功能; 具有专用密码处理指令, 支持密码算法软件编程, 能够灵活实现分组密码、序列密码与对称密码算法;可动态加载算法程序、 参数,实现密码算法的重构与更换。 下面以高级加密标准(Advanced Encryption Standard ,AES) 算法为例, 介绍完整的算法处理流程,如图4所示。
2 . 2文件系统层
Fat Fs是一个专门为小型嵌入式系统而设计的Fat文件系统, 完全兼容ANSIC, 而且不依赖于任何的平台。Fat Fs的设计像很多软件一样采用了分层设计[6], 最顶层的应用层为用户提供了操作底层硬件的API接口函数;中间层实现Fat Fs文件系统的协议;最底层是和具体的硬件相关的模块,需要用户编写代码。
Fat Fs移植包括SD卡disk I / O编写, RTC时钟函数编写,interger.h文件中数据类型和工程中数据类型的匹配,ff.h中条件编译的配置[6]。
Fat Fs支持Fat12 、 Fat16 、 Fat32文件系统。 Fat32文件系统将SD卡划分为4个连续的逻辑结构:主引导记录、 磁盘操作系统引导记录、文件分配表、数据区。
主引导记录(Master Boot Record ,MBR) 让硬盘具备可以引导的功能。
分区表(Disk Partition Table ,DPT)用来表示磁盘可以分多少个分区。 DPT部分共有64 B,DPT1~DPT4代表4个分区,每个分区16 B。
磁盘操作系统引导记录(DOS Boot Record ,DBR ) 包含了文件系统相关的详细信息。
磁盘分区的数据区空间是以簇为单位寻址的。 簇的大小一般是2N个扇区( 本设计中N=3), 一个文件可以占用多个簇, 有可能同一个文件占用的簇是不连续的, 这就体现了FAT的价值。 FAT就是用于存储文件占用的所有簇的序号。 Fat32和Fat12、Fat16的一个重要区别就是根目录(File Directory Fable,FDT) 是数据区的一个子集,被当成文件对待[7]。
DPT 、 DBR 、 FAT及数据区四个区域首地址之间存在一定的逻辑关系,如图5所示。 逻辑推导过程如下:
数据区第3簇首地址
DATA_CLUSTER_ADDR = DATA_ADDR + ( 3 - 2 ) *8sector / cluster*512byte / sector = 0x3c2e00byte
文件、文件分配表、文件目录、数据区的簇之间的关系决定了文件的存储方式。 如图6所示, 两个文件对应FAT表中两个链表0x00000004 - 0x00000007 - 0x00000001 - 0x FFFFFFFF (file1) 和0x00000005-0x00000003 -0x00000008 - 0x FFFFFFFF ( file2 ) 。
2 . 3 DS3231驱动
DS3231芯片采用I2C作为通信接口, 设计中用GPIO口模拟I2C时序。 I2C总线上传输的地址帧长度为9位, 它包括7个地址位 、1个位和1个应答位 。 如果为1 , 则执行读 操作 ,为0 , 则执行写 操作 。 I2C总线上传 输的数据 帧长度为9位 ,它包括8个数据位 ,1个应答位 。
DS3231寄存器地址为00H ~ 12H , 数据在寄存器中的存储格式为BCD码,每个存储单元大小为1 B。 DS3231的寄存器00H~06H存储时间信息[8],存储格式如表1所示。 DS3231的操作主要包括时间的读和写如图7所示。
Fat Fs系统中时间对应的数据结构存储在一个32位的无符号整数当中, 数据存储格式如表2。 时间信息从DS3231存储格式到Fat Fs存储格式要经过从BCD码到十进制数的转换。
2 . 4 SD卡驱动
SD卡经过多年的发展, 经历了好几次升级, 如果驱动程序要兼容各个版本, 就要考虑到各个版本的特殊性, 从初始化流程图可以看出版本1.x和2.0在初始化阶段的不同点。 SD卡根据容量的大小可分为不同的等级, 2 GB以内( 包括2 GB ) 称为标准卡, 大于2 GB小于等于32 GB称为大容量卡, 不同等级的卡操作细节也不尽相同。 SD卡在初始化阶段会判断是否支持大容量卡[4]。
SD卡的驱动主要包括SD卡的初始化及数据块的读写等几个部分。 SD卡的SPI模式初始化流程如图8所示。
从流程图可以看出, 该设计对SD卡2.0版本向上兼容,同时支持大容量SD卡。 SD卡上电的时候默认的是SD模式, 当主控芯片发送复位命令(CMD0) 的时候, 保持片选信号足够的时钟周期(74个以上),SD卡可以进入SPI模式。 CMD8命令向SD卡发送接口状态(主控芯片提供的电压是否满足SD卡的需求),ACMD41向SD卡发送主控芯片支持的SD卡容量并获取相应的回复。 CMD58命令获取SD卡操作状态寄存器(Operating Condition Register , OCR ) 的值并读取CCS位( Card Capac- ity Status ) 判断是否支持大容量的SD卡。
SPI模式支持块读( CMD17 ) 和多块读( CMD18 ) 操作。 SD卡接受到有效的读取命令后,要回复一个应答信号和相应的数据。 需要注意的是,标准容量的卡读取的数据长度可以通过CMD16来设定(大小为1 B到512 B之间), 大容量卡的数据长度固定为512 B。 SPI模式同样支持块写(CMD24)和多块写(CMD25) 操作, 数据长度要求同读要求相同。 每个数据块开始都应该有1个块起始位(大小为1位)。 其中读操作采用的是命令( 主机)- 应答(SD卡)-数据(SD卡)的模式读取数据。 写操作采用的是命令( 主机) - 应答(SD卡) - 数据( 主机) - 应答( SD卡) 的模式。
3测试结果
协处理器的性能及接口的速度是影响本设计的关键, 鉴于各种密码算法自身的特点, 处理器表现的性能有所差别,经测试以下几种算法性能如表3所示。
在将主控芯片的外设总线(Advanced Peripheral Bus , APB ) 设为40 M的情况下, 加密并存储10 MB的数据需要的时间为3.4 s, 读取并解密10 MB的数据需要的时间为3.9 s。
4结论
经过多方面的理论分析和实验验证, 本设计可以很好的实现数据的加/解密及数据的存储。 在试验中可注意到, 系统在处理大批量数据的时候效率不是太理想。 所以为了进一步优化性能,下一步将研究如何优化加密算法,在SD卡及主控芯片允许频率范围内,尽可能提高APB时钟频率。
参考文献
[1]苏义鑫,程敏,何力.基于AT89C52单片机的SD卡读写设计[J].世界电子元器件,2008(5):65-68.
[2]陈祖爵,蒋仕俊.智能遥控器SD卡文件系统的设计与实现[J].计算机工程与设计,2007(10):4716-4718.
[3]阳晔.面向嵌入式处理器的代码压缩研究[D].杭州:浙江大学,2007.
[4]DS3231 Extremely Accurate I2C-Integrated RTC/TCXO/Crystal.[DB/OL].http://www.Maximintegrated.com/cn/products/digital/real-time-clocks/DS3231.html#popuppdf.
[5]葛建,董浩斌,郑海兵.嵌入式SD卡存储器的设计[J].电子技术应用,2010(5):139-142.
[6]程小燕.嵌入式STM32F107VCT6微处理器接口模块开发及应用研究[D].合肥:合肥工业大学,2012.
[7]刘思伽.基于SD卡的数据恢复技术研究[D].成都:电子科技大学,2010.
【数据库加密系统】推荐阅读:
数据库加密技术分析07-21
数据库加密模型研究10-18
数据的加密08-29
数据的加密与解密09-11
数据加密技术网络安全05-29
网络数据传输加密方案10-27
计算机数据加密技术10-28
数据库系统08-02
数据库系统07-01
在线数据库系统05-21