首页 > 文章中心 > 正文

网站系统中数据库安全性设计浅析

前言:本站为你精心整理了网站系统中数据库安全性设计浅析范文,希望能为你的创作提供参考价值,我们的客服老师可以帮助你提供个性化的参考范文,欢迎咨询。

网站系统中数据库安全性设计浅析

摘要:介绍了网站数据库的安全加密系统设计,从比较层加密、等值层加密、搜索层加密、加层加密等方面介绍了数据库安全加密系统的加密算法。通过网络通信、数据加密解密管理、密钥管理等技术手段将数据库加密系统和网站数据库连接到一起,可实现对数据库的加密处理,提升网站数据库的安全性

关键词:网站系统;数据库;安全性;设计

引言

在开放的网络环境中,无论是政府、企业还是个人,都处在同一个环境中,一旦有不法分子借助技术手段,利用网络漏洞,盗取、删除或篡改信息,将会给企业乃至国家都带来无法挽回的损失[1]。针对此类问题,我们可以从数据库的加密技术入手,使数据信息得以在加密的状态下存储及传输,从而防范数据信息被不法分子破坏或盗取。本文就以此作为研究重点,探讨了如何构建更加安全的网络数据库,最大程度改善网络安全问题。

1数据库安全系统的整体构架

基于安全性的网站数据库要能够在加密的状态下完成数据库的访问及信息传输、存储,并能够支持多个用户同时运行。数据库的安全加密系统并不是将数据库本身进行改造,而是构建和数据库服务器相独立的一套数据库加密系统,两者通过网络通信、数据加密解密管理、密钥管理等技术手段连接到一起,类似一种代理式服务器,其结构如图1所示。用户或多个不同用户同时于客户端登录网站,应用服务器会根据用户的行为,连接代理服务器式加密系统,对访问及传输的内容进行加密,数据库系统则按照常规的SQL流程完成信息查询、接收及传输的工作,但不同的是这些信息都是经过加密处理的,由此来提升数据库的安全性。

2网站数据库安全加密系统的设计

加密系统采用的是“洋葱式加密”,这种加密模型就是将数据一层层地加密处理,使数据如同洋葱一般被层层包裹,而每一层的SQL操作方式都不同,在数据最外层则是给予安全系数最高的加密算法,通过这种方式最大程度保证数据信息的安全。除考虑安全性外,加密系统还要能够和数据库SQL操作实现有效对接,因此需要设计出能够满足SQL操作需求的模型[2]。本洋葱式加密数据库共有四层结构,分别是搜索层洋葱、增加层洋葱、等值层洋葱以及比较层洋葱,见图2。每个加密养成由同时由七种密码系统进行加密,分别为OPE、JOIN、SEARCH、HOM、OPE-JOIN以及RND和DET等,其中以RND的加密安全系数最高[3]。在这些程中,搜索层和增加层属于功能型层级,各自都有两层内部结构。而等值层和比较层的性能则比较复杂,两者都设置为四层结构。最外层是通过RND加密方案来保证安全性,从外向内逐渐降低加密的安全系数。根据用户不同的行为,代理加密系统将用户的行为映射到对应的加密层中,并动态记录各数据在不同洋葱层的状态,并加密或解密处理。

3数据库安全加密系统的加密算法

加密结构的最外层采用安全系数最高、加密强度最大的RND加密,从外层到内层其安全系数层层递减。

3.1比较层加密

比较层是功能型层级,能够实现对任何类型数据信息的SQL操作,其第一层也就是最外层,为RND加密,能够实现最强的加密安全性,其算法是概率性的,因此即使是同一个明文,也会形成不同的加密密文,可以有效避免信息泄露。第二层为OPE加密,这种加密方式把明文中的相互间大小关系给保留到加密的密文之中。如假设一个密钥K,明文中有x<y的大小关系,那么则OPEK(x)<OPEk(y)。但是这种方式有可能泄露除数据的大小关系[4]。第三层是OPE-JOIN加密,通常不法分子很少能突破前两层加密进入到这一层,但安全起见,也设置这层密钥。

3.2等值层加密

第一层为RND加密,同比较层的加密方式相同。第二层DET加密,这种的加密的安全性和RND相比要稍弱一筹,但是DET下所得到的密文能够实现等值查询,且对于相同的明文需要有同样的密文,这才能实现等值查询,因此采用这种确定性的加密方式[5]。其加密算法是固定的,即AES-CMC(iv=0)。第三层是JOIN加密,这种加密方式对于不同列所形成的密钥是不同的,在连接时,那么就会先将密钥进行调整,调整成相同的列,这样就能够形成同样的密钥。

3.3搜索层加密

搜索层支持搜索的格式主要是TXT格式,这是一个功能型层级,这一层中能够处理加密的文本,根据加密的文本来完成搜索操作。

3.4加层加密

加层主要是实现int型数据来处理加运算,采用HOM加密,这种加密是一种单同态的处理方式,但只能够完成加法同态,可以对密文完成求和处理,即HOMk(a)·HOMk(b)=HOMk(a+b),并可以支持SQL操作。

3.5加密/解密函数

加密/解密操作是通过do-encry()函数和do-decrypt()函数在用户端向数据库通信的过程中,借由sql-process()函数调取而实现的。无论是加密还是解密,都需要用到3个参数,分别是需要加密或需解密的待处理数据value、数据通信过程中由sql-ticket调取所获得的对应参数ticket,以及在加密函数进行加密处理时的返回值encrypet。在do-encry()函数和do-decrypt()函数中,对不同加密处理方式,根据其对应的加密算法,完成数据加密、解密处理,且可以根据不同情况进行调整。如果在加密一个字符串发生错误时,那么就会返回NULL。

4数据库安全加密的数据处理

数据库安全性设计的核心是为了保护数据隐私安全,因此加密系统不仅要能够对数据进行加密,还需要使数据列名匿名化,最大程度掩盖各方面信息。从这两个方面,将一个数据信息表处理成为匿名的加密数据列表(见图3)。那么即使有不法分子想要盗取这一数据信息,已无法得知具体是什么样的内容。以图3为例,其中右侧原数据信息的第一列是列明,也就是ID,以数值的形式呈现[6]。第二列的Name也就是列名,以字符串的形式呈现。因为第一列是数值的形式,这部分能够完成的SQL主要包括等值查询、求和以及大小比较等,那么也就会涉及到等值层、比较层以及增加层。在图3中经过匿名化使ID化为CI,那么就分别对应不同层也就是C1-Eq、C1-Ord以及C1-Add。而右侧的第一列C1-IV则是指初始向量,通过这种层层加密的洋葱式加密形式,得到各层所对应的加密密文。C2是name的匿名化,因为这部分的数据信息是是字符串的形式,也就是Alice,字符串可以实现等值、比较、搜索,那么就会形成C2-Eq、C2-Ord以及C2-Search。经过这种匿名化及加密处理,使原本的信息从一个列被扩为多个列,每个列通过RND加密,列名匿名化,虽然这种方式会增加一部分的存储空间,但是能够最大程度提升安全性。

5数据库的加密密钥

本安全加密系统采用的是代理服务器的形式,以多种加密算法处理不同字段进行加密,生成加密密钥实现数据信息的加密保护。用户能够通过输入加密口令,使数据库中被加密的信息根据用户的口令产生连锁密钥,使被加密处理的信息被逐一解密。如果用户不在线,或是没有正确输入口令,那么不法分子即使得到这些数据,也无法解密出来。每个用户的加密密应当是不同的,但在数据库中有的字段名是相同的,如果采用根据字段生成密钥的方法,就可能导致加密密钥相同,安全性将大打折扣。因此本系统的密钥生成方式采用的是混乱生成加密密钥的方式,即DEK=Hash(username,segment,ran-dom)。这种密钥生成方式能够有效防止外部入侵,此外在此基础上还引入用户随机口令的方式,形成用户随机口令及哈希运算相结合的安全密钥,即DEK=Hash(username,password,segment,random)。公式中的username就是用户名,segment就是加密字段的名称,password就是用户口令,random是加密系统生成的随机数。Hash为哈希算法,DKE为所生成的密钥。当用户输入口令后,其他内容需要能对应得上,才能对数据进行解密,否则即图3数据信息的匿名化、加密处理示意图使有用户口令也不能破译数据信息。

6结语

本文从数据库加密,以及洋葱式层层加密模型等两方面入手,设计了一套代理服务器式的数据库加密系统,无需改造网站数据库,而是通过网络通信、数据加密解密管理、密钥管理等技术手段将数据库加密系统和网站数据库连接到一起,实现对数据库的加密处理,在加密状态下实现数据的传输及存储,从而有效提升网站数据库的安全性。

作者:韩冬 单位:洛阳职业技术学院