当前位置: 东星资源网 > 大学生 > 创业 > 正文

【DBMS外层数据加密系统的技术难点及其相应解决方案】 估值:难点、解决方案及相关案例

时间:2019-03-03 来源:东星资源网 本文已影响 手机版

  [摘要] 本文论述了数据加密系统的设计和实现策略,说明了各个功能模块的运行机制,就数据加密子系统实现中所遇到SQL语句应用、数据库访问、数据类型变换、数据完整性和系统运行效率等主要难点问题进行研究,提出了具体实现方案。
  [关键词] 加/脱密引擎 加密字典管理程序 抽象语法树
  数据的安全是系统安全的关键。数据安全性是指计算机中的数据不被非法读出、更改、删除等。使用数据加密系统可以解决数据库数据安全的问题。在实现数据加密系统中,仍存在一些有待解决的技术难点,本文对DBMS外层数据加密系统中此类问题进行研究。
  
  一、实现数据加密系统的技术难点及解决方案
  
  在DBMS外层数据加密系统设计过程中,碰到了一些比较难解决的问题及难点,主要为SQL语句问题,数据库指向问题,数据类型问题,经过研究讨论,最终对这些问题提出了解决方案。
  
  1.SQL语句应用问题
  在进行数据加脱密过程中,基于open client的客户端在向数据库发送SQL语句之前先调用加脱密引擎中的语法分析模块,将SQL语句转变成语法树,再根据加密字典信息对相关的加密信息进行加脱密变换,举例说明,假如SQL语句为select a,b from table where a=”123”,其中b列为加密列,则语法分析模块产生的抽象语法树如图1所示,假设密钥管理中此SELECT语句行标记列名称为rt,table对应的密表名为tab,则经过加密转换语法树如图2所示。这时SQL语句经过加脱密转换调用语法分析模块将该语法树转换为SQL语句:select tab.rt,a,b from tab where a=”123”,然后发送到服务器处理;若a列为加密列,则在加密转换时将值“123”转换为相应的密文,然后调用语法分析模块还原语法树并将最终结果发往服务器处理。
  图1 加脱密变换前抽象语法树
  图2 加脱密变换后抽象语法树
  
  2.数据库访问问题
  客户端应用开发工具或应用访问数据库,首先要建立服务器的连接,客户端API为之提供一组接口函数,最终建立的一条逻辑链路,称之为SQLLink。用户通过SQLLink及SQL命令等参数调用加脱密引擎中的数据库接口模块提供的用户接口函数,对于不同的数据库应用编程接口,定义不同的用户接口函数。
  数据库接口模块以UserLink参数调用加脱密处理模块。加脱密处理模块在需要数据库服务时,以UserLink或BackLink参数调用数据库接口模块提供的通用数据库驱动函数。
  数据库接口模块在接到加脱密引擎中加脱密处理模块的操作命令后,再负责通过SQLLink参数与后台的数据库服务器联系。
  
  3.数据类型转换问题
  数据库中各种类型的数据有其特定的格式、长度、值域,如果加密后的数据仍存储在明表中,则必须保证其加密后的数据的格式、长度、值域与加密前保持不变。这样的要求对于加密算法来说是难以达到的。因此系统设计将各种类型的数据加密,并按照对应的密文字段类型和长度存放在另一张表(密表)中,数据加密后的密文仍然以关系模式存储,必须保证密文的类型能够被DBMS识别并能够被DBMS进行正常的存取处理。要实现包括用户定义的各类型数据的存储加密,需要实现系统类型数据的存储加密即可。
  对于定长数据类型,如果实际数据长度不足定义长度,在数据的末尾将以空格(字符型)或零(其他类型)填满。不论实际数据有多长,存储的长度均为定义长度。对于变长类型,按照数据的实际长度存储,变长类型数据节省存储空间但访问速度较慢。文本类型的数据,最大长度可达2GB,数据表中仅仅存放了指向数据的指针,该指针为“文本指针”。
  
  4.数据完整性问题
  在数据库中不论加密前后必须保证数据的完整性,数据库数据完整性与传统意义上的数据完整性不同,数据库数据完整性是对数据正确性、有效性、相容性的要求及控制数据在一定范围内有效,或要求数据之间满足一定关系。数据库的数据完整性从三个方面来描述:实体完整性、参照完整性和语义完整性。系统在加密工具管理中加入表信息采集表来解决数据库的数据完整性问题。
  保证实体完整性可以通过设置关系表定义主键来满足,要求主键必须满足非空约束和惟一值约束;参照完整性用于实现两张表之间的相互关系,其方法为定义关系表外键,外键涉及两个表,一个是引用表一个是被引用表,外键是引用表中的一列或一组列,同时是被引用表中的主键;语义完整性通过数据结构、缺省值(默认值)及检查值(插入修改时须满足的条件)满足。
  数据表中数据加密后存储类型发生了变化而且密文数据存放在密表中而不再存放于明表中。因此数据库加密系统在进行数据加密转存时,密表必须继承明表的安全属性。数据库管理系统把与应用表有关的数据完整性定义、访问控制定义记录在数据字典中,称之为系统表。表信息采集模块从数据库系统中获取应用表的这些安全定义信息,并记录在应用表信息采集表中,以供修改表加密定义时使用。
  加密管理程序运行时使用的某些安全信息需要从多个系统表中连接查询获得,而且系统表中的安全信息是以内部编码形式存储的,加密管理程序每次访问时都必须进行繁琐的解码,为了提高效率,系统中使用了表信息采集,一次性解决这些问题。
  
  二、结束语
  
  本文简要介绍了DBMS外层的数据加密系统设计及其实现过程中遇到的技术难点解决方案,通过应用这些方案,数据加密系统可以正确地实现数据保护功能并大幅提高效率。由于数据在DBMS外层实现加密,加载数据加密系统对效率影响不大,但是若数据在DBMS内层加密,会加重服务器负担导致效率降低,因此不推荐使用DBMS内层加密的数据加密系统。
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

标签:外层 难点 加密 解决方案