数据库二级密钥系统与致密引擎浅析
- 格式:pdf
- 大小:199.83 KB
- 文档页数:4
福 建 电 脑 2002年第7期
数据库二级密钥系统与制密引擎浅析
华南理工大学自动化科学与工程学院 刘俊峰 麦崇裔 510641
【摘 要】 随着计算机在国民经济各部门的广泛应用,计算机大批量数据存储的安全问题、敏感数据 的防窃取和防篡改问题越来越引起人们的重视。数据库系统作为计算机信息系统的核心部分,其安全 性越显重要。而加密技术作为保障数据安全的一种方式,已普遍用于通信安全、系统保护、数据库管理 等领域。本文以计算机加密技术为基础,浅析数据库安全管理系统中的二级密钥加密技术问题。 【关键词】 密码,数据库,算法,二级密钥,加解密引擎
一、背景及要求 大型数据库管理系统的运行平台OS(Operation System)一般 是wind。ws T和Unix,它们具有用户注册、识别用户、任意存取 控制(DAC)、审计等安全功能。虽然DBMS(Database Manage ,stf2n ̄)在OS的基础上增加了不少安全措施,例如基于权限的访 问控制等,但OS和DBMS对数据库文件本身仍然缺乏有效的保 护措施,有经验的网上黑客会”绕道而行”,直接利用OS工具窃 取或篡改数据库文件内容。另一个不容忽视的隐患是,据有关资 料报道,80%的计算机犯罪来自系统内部。在传统的数据库系统 中,数据库管理员既包揽各项系统管理工作,又可以查询数据库 中的一切信启、,无疑成为悬在数据库头顶的一柄双刃剑。 因此,只有对数据库中的敏感数据进行加密处理,才能从根 本上实现数据的安全管理。实现数据库加密以后,各用户(或用 户组)的数据由用户用自己的密钥加密,数据库管理员获得的信 息无法进行正常脱密,从而保证了用户信息的安全。另外,通过 加密,数据库的备份内容成为密文,从而能减少因备份介质失窃 或丢失而造成的损失。 敫据库加密系统对数据库密码的要求如下: (1)数据库加密以后,数据量不应明显增加; (2)某一数据加密后,其数据长度不变; t3)加/脱密速度要足够快,数据操作响应时间应该让用户能 够接受。 另外,一些更加具体的问题如: (!)索引字段不能加密,它们的建立和应用必须是明文状态, 否则将失去索引迅速查询的目的和作用。 (2)关系运算的比较字段不宜加密,否则DBMS将无法进行 比较筛选 (3)表间的连接码字段不能加密,数据库表之间的相关性往 往是通过”外部编码”驳系的,这些编码若加密就无法进行表与表 之间的连接运算。 这些问题,都要在实际应用中细加注意。 二、加密算法简介 密码学发展至今,产生了很多密码算法。应用于数据库加密 最广泛的主要算法有三类,分别是序列密码,分组密码和公钥密 码。 1序 l】密码体制 序列密码是指利用少量的密钥(制乱元素)通过某种复杂的 运算(密码算法)产生大量的伪随机位流,用于对明文位流的加 密。解密是指用同样的密钥和密码算法及与加密相同的伪随机 位流,用以还原明文位流。这种密码以一个字符为单位进行加密 变换。 序列密码的优点是运算速度快;明密文长度一般不变;密文 传输中的错误不会在明文中产生扩散。其缺点是密钥变换过于 频繁,密钥分配较难,同时乱码的产生和管理比较困难。 2.分组密码体制 应用这类密码时,明文按固定长度分组,对各组数据用不同 的密钥加密(或脱密)。这类密码按分组进行加密变换,一个字符 数据不仅与密钥有关,而且还与其他字符数据有关,密码分析的 穷尽量很大。 分组密码的一个具体算法是DES密码:即所谓的64位分组 法。DES使用56位密钥对每64位的数据块进行加密,并对每 64位的数据块进行16轮编码。DES用软件进行解码需要用很 长时间,它的穷尽量为264—1,这是一个20位的十进制数,即使 用每秒运算万亿次以上的巨型计算机进行攻击,平均穷尽时间也 需要数年。后来人们对DES密码的密钥长度不满足,又改进出 三重DES密码,用两个密钥对明文进行三次加密。 分组密码的优点是:密钥可以在一定时间内固定,不必每次 变换,因此给密钥配发带来了方便。缺点是密文传输错误容易在 明文中扩散。 3.公开密钥体制 无论是序列密码还是分组密码,其加密和解密密钥均是相同 的,又称单钥密码体制,因此必须严格保密,且要经安全渠道配 发,这在跨越很大的地理位置上应用是一个难以解决的问题。 1976年有人提出了公共密钥密码体制,其原理是加密密钥(公有 密钥)和解密密钥(私有密钥)分离,并且加密过程是不可逆的,即 加密后,无法使用加密密钥的算法解密,而只能以解密密钥解密。 这样,一个具体用户就可以将公有密钥公诸于众,而只保密私有 密钥。当别人需要向他发送信息时,就利用这个公有密钥和算法 对信息加密后进行发送,接收者利用自己的私有密钥将信息还原 (见图1)。因此,人们通常也将这种密码体制称为双密钥密码体 制或非对称密码体制。这种体制的一个例子是RSA密码。 这类密码的共同缺点是加/脱密速度较慢。公开密钥体制的 密码目前常用于用户认证、数字签名以及密钥传输等,不能适应 数据库加密的速度要求。因此在实际应用中普遍采用双钥和单 钥密码相结合的混合加密体制。
维普资讯 http://www.cqvip.com 2002年第7期 福 建 电 脑 5
—————}—
圈1 开峦鹕体制 翥圈
三、二级密钥工作原理 由于数据库系统的特殊要求,数据库加密需要实行二级密钥 管理。一级密钥为主密钥(使用公钥算法如RSA),二级密钥为工 作密钥(使用私钥算法如DES)。工作密钥用于对数据库数据进 行加/脱密,主密钥的作用是对工作密钥进行加密。这样就既利 用了私钥算法的快速性又保持了工作密钥的安全性。 举一个例子:假定现在要使用密钥“12345”(二级工作密钥) 加密一些数据。首先使用对称加密算法(DES)加密正文,使用的 密钥就是“12345”;然后利用RSA公钥(一级主密钥),使用RSA 算法加密这个密钥“12345”;最后把经RSA公钥加密过的工作密 钥放在密文的前面形成报头(可能后面跟着一个分割符或文件长 度,以区分数据和密钥),当对方收到时,解密程序找到加密过的 工作密钥,并利用RSA私钥解密出来,然后再确定出数据的开始 位置,利用密钥“12345”来解密数据。这样就获得一个可靠的高 效加密的数据安全传输解决方案。 可以用以下一个流程图来表示二级密钥工作的过程:
(加密浙L程)
(解密流W) (旧2 =级密钉】T作过 )
四、制密、解密处理系统 在数据库二级密钥体系结构中,数据库加/脱密引擎(结构如 图3所示)位于应用程序与数据库服务器之间,是数据库加密系 统的核心部件,负责在后台完成数据库信息的加/脱密处理,对应 用开发人员和操作人员是透明的。 数据库加脱密引擎驻留在内存中,通过内部接口与加密字典 管理程序和用户应用程序通讯,它没有自己的用户操作界面,在 需要时由操作系统自动加载。 一般的数据库加/脱密引擎由三大模块组成: 加脱密处理模块; 语法分析模块; 数据库接口模块。 I Ⅷ 删Ⅲ l 什soLlj k 匮 镯一臣
{i …
V sQL n 1f 。. . J } ( 3 『/Jj范苷.jl 系统 . i掬)
数据库接口参数是应用系统访问数据库逻辑链路的标识,用 户一旦成功登录到某个数据库服务器,即与之建立了一条逻辑链 路,称之为SQLLink。应用系统访问“加脱密处理模块”或者“加 脱密处理模块”访问数据库都是通过接口参数SQLLink进行的。 在“加脱密处理模块”内部,系统通过接口参数DbedLink相 互调用。DbedLink有两种形式:其一是UserLink,用户访问”加 脱密处理模块”时,即有与SQLLink对应的UserLink;其一i是 BackLink.“加脱密处理模块”在对数据库服务器进行某些操作 时。为了不影响用户的数据库事务.没有借用原有的UserLink,而 是另外复制了一条专用链路,即BackLink。 下面重点分析加脱密处理模块。 加脱密处理模块 “加脱密处理模块”是数据库加脱密引擎的核心模块,包括数 据库加脱密引擎的初始化、内部专用命令的处理、加密字典信息 的检索、加密字典缓冲区的管理、SQL命令的加密变换、查询结果 的脱密处理以及加脱密算法实现等功能子模块,另外还包括一些 公用的辅助函数。 (1)调用接口 “加脱密处理模块”被“数据库接口模块”调用时,参数是 UserLink。“加脱密处理模块”将用户的SQL命令传递给“语法分 析模块”,用于加脱密语义分析。“加脱密处理模块”在需要访问 数据库时,则以UserLink或BackLink参数调用”数据库接口模 块”提供的数据库服务。 (2)处理过程 对数据进行加/脱密的主要步骤如下: l——对SQL命令进行语法分析,如果语法正确,转下一步, 进行进一步处理;如果语法不正确,则转6,直接将SQL命令交数 据库服务器处理。 2——是否为数据库加脱密引擎的内部控制命令?如果是, 则处理内部控制命令,然后转7;如果不是.则转下一步。 3——检查数据库加脱密引擎是否处于关闭状态或sQL命 令是否只需要编译?如果是,则转6,否则转下一步。 4——检索加密字典,根据加密定义对SQL命令进行加脱密 语义分析。 5——SQL命令是否需要加密处理?如果是,则将SQL命令 进行加密变换,替换原SQL命令,然后转下一步;否则直接转下
一步。 6——将SQL命令转送数据库服务器处理。 7——SQL命令执行完毕,清除sQL命令缓冲区。 语法分析模块 “语法分析模块”的功能是将SQL命令转换成计算机易处理 的形式。该模块由词法分析器、语法分析器、
语法错误处理、语法 维普资讯 http://www.cqvip.com 6 福 建 电 脑 2002年第7期
树转换成sQL命令等子模块组成。 通常,“语法分析模块”只被“加脱密处理模块”调用,晤法分 析并不需要能识别所有类型的SQL命令,可以不考虑那些与加 脱密无关的SQL命令。 数据库接口模块 “数据库接口模块”将所有访问数据库的操作封装在一起,屏 蔽了各类数据库的特性,使得“加脱密处理模块”不必关心实际使 用的是哪种数据库。该模块包含两部分接口:其一是前端数据唪 客户访问数据库加脱密引擎的接口函数;其二是数据库加脱密引 擎访问后台数据库服务器的接口函数。 “数据库接口模块”的主要工作是接受用户的操作请求,并传 递给“加脱密处理模块”,此外还要代替“加脱密处理模块”去访问 数据唪服务器,在这些过程中,需要完成外部数据库接口参数与 数据库加脱密引擎内部数据结构之间的转换。 五、加脱密系统的程序举例 下面笔者以一个使用PowerBuilder设计的用户登陆及创建 用户程序,来体现加脱密引孥的思想。 在实际应用中,人们常常在主程序前添加一个口令保护装 置。例如对一个销售数据系统,为了确保未经授权的人不能进 入,一般的做法是设置登陆窗口,把已授权用户的名称与密码存 放于数据库某个表中。但这些重要数据假若明文存放,则往往带 来隐患。因此必须对用户名和密码进行加密。设登陆窗口(w— main)主界面如图(4—1)所示,创建用户窗口 w—new)如图 4 2 所示,并用PB自带的数据库管理器创建一表格存储用户名及密 码,名为harttogue ̄。各属性见表1、2、3。