2023年8月1日发(作者:)

mysql安全保密设计_数据库安全于保密随着计算机科学技术的发展与普及,特别是计算机在国民经济各重要部门的⼴泛应⽤计算机安全已是当前信息社会⾮常关注的突出问题⽽数据库系统担负着存储和管理上述数据信息的任务。因⽽如何保证和加强其安全性和保密性已成为⽬前迫切需要解决的热门课题。⼀、 数据库安全与保密概述数据库系统⼀般可以理解成两部分⼀部分是数据库按⼀定的⽅式存取数据另⼀部分是数据库管理系统(DBMS)为⽤户及应⽤程序提供数据访问并具有对数据库进⾏管理、维护等多种功能。数据库系统安全包含两层含义第⼀层是指系统运⾏安全它包括法律、政策的保护如⽤户是否有合法权利政策是否允许等物理控制安全如机房加锁等硬件运⾏安全操作系统安全如数据⽂件是否保护等灾害、故障恢复死锁的避免和解除电磁信息泄漏防⽌。第⼆层是指系统信息安全它包括⽤户⼝令字鉴别⽤户存取权限控制数据存取权限、⽅式控制审计跟踪数据加密。⼆、 数据库基本安全架构数据库系统信息安全性依赖于两个层次⼀层是数据库管理系统本⾝提供的⽤户名/⼝令字识别、视图、使⽤权限控制、审计等管理措施⼤型数据库管理系统Oracle、Sybase、Ingress等均有此功能另⼀层就是靠应⽤程序设置的控制管理如使⽤较普遍的Foxbase、Forpro等。作为数据库⽤户最关⼼⾃⾝数据资料的安全特别是⽤户的查询权限问题。对此⽬前⼀些⼤型数据库管理系统(如Oracle、Sybase等产品)提供了以下⼏种主要⼿段。⒈ ⽤户分类不同类型的⽤户授予不同的数据管理权限。⼀般将权限分为三类数据库登录权限类、资源管理权限类和数据库管理员权限类。有了数据库登录权限的⽤户才能进⼊数据库管理系统才能使⽤数据库管理系统所提供的各类⼯具和实⽤程序。同时数据库客体的主⼈可以授予这类⽤户以数据查询、建⽴视图等权限。这类⽤户只能查阅部分数据库信息不能改动数据库中的任何数据。具有资源管理权限的⽤户除了拥有上⼀类的⽤户权限外还有创建数据库表、索引等数据库客体的权限可以在权限允许的范围内修改、查询数据库还能将⾃⼰拥有的权限授予其他⽤户可以申请审计。具有数据库管理员权限的⽤户将具有数据库管理的⼀切权限包括访问任何⽤户的任何数据授予(或回收)⽤户的各种权限创建各种数据库客体完成数据库的整库备份、装⼊重组以及进⾏全系统的审计等⼯作。这类⽤户的⼯作是谨慎⽽带全局性的⼯作只有极少数⽤户属于这种类型。⒉ 数据分类同⼀类权限的⽤户对数据库中数据管理和使⽤的范围⼜可能是不同的。为此DBMS提供了将数据分类的功能即建⽴视图。管理员把某⽤户可查询的数据逻辑上归并起来简称⼀个或多个视图并赋予名称在把该视图的查询权限授予该⽤户(也可以授予多个⽤户)。这种数据分类可以进⾏得很细其最⼩粒度是数据库⼆维表中⼀个交叉的元素。⒊ 审计功能⼤型DBMS提供的审计功能是⼀个⼗分重要的安全措施它⽤来监视各⽤户对数据库施加的动作。有两种⽅式的审计即⽤户审计和系统审计。⽤户审计时DBMS的审计系统记下所有对⾃⼰表或视图进⾏访问的企图(包括成功的和不成功的)及每次操作的⽤户名、时间、操作代码等信息。这些信息⼀般都被记录在数据字典(系统表)之中利⽤这些信息⽤户可以进⾏审计分析。系统审计由系统管理员进⾏其审计内容主要是系统⼀级命令以及数据库客体的使⽤情况。三、 数据库加密⼀般⽽⾔数据库系统提供的上述基本安全技术能够满⾜⼀般的数据库应⽤但对于⼀些重要部门或敏感领域的应⽤仅靠上述这些措施是难以完全保证数据的安全性某些⽤户尤其是⼀些内部⽤户仍可能⾮法获取⽤户名、⼝令字或利⽤其他⽅法越权使⽤数据库甚⾄可以直接打开数据库⽂件来窃取或篡改信息。因此有必要对数据库中存储的重要数据进⾏加密处理以实现数据存储的安全保护。⒈ 数据库密码系统的基本流程数据加密就是将明⽂数据经过⼀定的交换(⼀般为变序和代昀)变成密⽂数据。数据脱密是加密的逆过程即将密⽂数据转变成可见的明⽂数据。⼀个密码系统包含明⽂集合、密⽂集合、密钥集合和算法其中密钥和算法构成了密码系统的基本单元。算法是⼀些公式、法则或程序规定明⽂与密⽂之间的变换⽅法密钥可以看作算法中的参数。数据库密码系统要求将明⽂数据加密成密⽂数据数据库中存储密⽂数据查询时将密⽂数据取出脱密得到明⽂信息。⒉ 数据库加密的特点较之传统的数据加密技术数据库密码系统有其⾃⾝的要求和特点。传统的加密以报⽂为单位加脱密都是从头⾄尾顺序进⾏。数据库数据的使⽤⽅法决定了它不可能以整个数据库⽂件为单位进⾏加密。当符合检索条件的记录被检索出来后就必须对该记录迅速脱密。然⽽该记录是数据库⽂件中随机的⼀段⽆法从中间开始脱密除⾮从头到尾进⾏⼀次脱密然后再去查找相应的这个记录显然这是不合适的。必须解决随机地从数据库⽂件中某⼀段数据开始脱密的问题。⑴ 数据库密码系统应采⽤公开密钥传统的密码系统中密钥是秘密的知道的⼈越少越好。⼀旦获取了密钥和密码体制就能攻破密码解开密⽂。⽽数据库数据是共享的有权限的⽤户随时需要知道密钥来查询数据。因此数据库密码系统宜采⽤公开密钥的加密⽅法。设想数据库密码系统的加密算法是保密的⽽且具有相当的强度那么利⽤密钥采⽤OS和DBMS层的⼯具也⽆法得到数据明⽂。⑵ 多级密钥结构数据库关系运算中参与运算的最⼩单位是字段查询路径依次是库名、表名、记录名和字段名。因此字段是最⼩的加密单位。也就是说当查得⼀个数据后该数据所在的库名、表名、记录名、字段名都应是知道的。对应的库名、表名、记录名、字段名都应该具有⾃⼰的⼦密钥这些⼦密钥组成了⼀个能够随时加/脱密的公开密钥。可以设计⼀个数据库其中存放有关数据库名、表名、字段名的⼦密钥系统启动后将这些⼦密钥读⼊内存供数据库⽤户使⽤。与记录相对应的⼦密钥⼀般的⽅法应是在该记录中增加⼀条⼦密钥数据字段。⑶ 加密机制有些公开密钥体制的密码如RSA密码其加密密钥是公开的算法也是公开的但是其算法是个⼈⼀套⽽作为数据库密码的加密算法不可能因⼈⽽异因为寻找这种算法有其⾃⾝的困难和局限性机器中也不可能存放很多种算法因此这类典型的公开密钥的加密体制也不适合于数据库加密。数据库加/脱密密钥应该是相同、公开的⽽加密算法应该是绝对保密的。数据库公开密钥加密机制应是⼀个⼆元函数密⽂=F(密钥明⽂)当加密算法F确定之后只要给出密钥和待加密的明⽂即可得到相应的密⽂。脱密过程即是加密过程的逆过程明⽂=F-1(密钥密⽂)由此可知数据库密码的加密机制应是既可加密⼜可脱密的可逆过程。⑷ 加密算法加密算法是数据加密的核⼼⼀个好的加密算法产⽣的密⽂应该频率平衡随机⽆重码规律周期很长⽽⼜不可能产⽣重复现象。窃密者很难通过对密⽂频率、重码等特征的分析获得成功。同时算法必须适应数据库系统的特性加/脱密响应迅速。著名的MH背包算法就是⼀种适合数据库加密的算法。它的基本思想是有⼀个函数F使X=F(K,Y)在这⾥X相当于公开密钥向量Y相当于明⽂。在算法F不公开的情况下若已知K和X要还原出Y来穷尽次数为2n次。如果向量的分量n较⼤时⽤穷尽的⽅法来还原将是⼗分困难的。⒊ 数据库加密的范围数据加密通过对明⽂进⾏复杂的加密操作以达到⽆法发现明⽂和密⽂之间、密⽂和密钥之间的内在关系也就是说经过加密的数据经得起来⾃OS和DBMS的攻击。另⼀⽅⾯DBMS要完成对数据库⽂件的管理和使⽤必须具有能够识别部分数据的条件。据此只能对数据库中数据进⾏部分加密。⑴ 索引字段不能加密为了达到迅速查询的⽬的数据库⽂件需要建⽴⼀些索引。不论是字典式的单词索引、B树索引或HASH函数索引等它们的建⽴和应⽤必须是明⽂状态否则将失去索引的作⽤。有的DBMS中可以建⽴簌聚索引这类索引也需要在明⽂状态下建⽴和维护使⽤。⑵ 关系运算的⽐较字段不能加密DBMS要组织和完成关系运算参加并、差、积、商、投影、选择和连接等操作的数据⼀般都要经过条件筛选这种"条件"选择项必须是明⽂否则DBMS将⽆法进⾏⽐较筛选。例如要求检索⼯资在1000元以上的职⼯⼈员名单"⼯资"字段中的数据若加密SQL语句就⽆法辨认⽐较。⑶ 表间的连接码字段不能加密数据模型规范化以后数据库表之间存在着密切的联系这种相关性往往是通过"外部编码"联系的这些编码若加密就⽆法进⾏表与表之间的连接运算。⒋ 数据库加密对数据库管理系统原有功能的影响⽬前DBMS的功能⽐较完备特别象Oracle、Sybase这些采⽤Client/Server结构的数据库管理系统具有数据库管理和应⽤开发等⼯具。然⽽数据库数据加密以后DBMS的⼀些功能将⽆法使⽤。⑴ ⽆法实现对数据制约因素的定义Sybase数据库系统的规则定义了数据之间的制约因素。数据⼀旦加密DBMS将⽆法实现这⼀功能⽽且值域的定义也⽆法进⾏。值得注意的是数据库中的每个字段的类型、长度都有具体的限定。数据加密时数值类型的数据只能在数值范围内加密⽇期和字符类型的数据也都只能在各⾃的类型范围内加密密⽂长度也不能超过字段限定的长度否则DBMS将⽆法接受这些加密过的数据。⑵ 密⽂数据的排序、分组和分类Select语句中的Group by、Order by、Having⼦句分别完成分组、排序、分类等操作。这些⼦句的操作对象如果是加密数据那么脱密后的明⽂数据将失去原语句的分组、排序、分类作⽤显然这不是⽤户所需要的。⑶ SQL语⾔中的内部函数将对加密数据失去作⽤DBMS对各种类型数据均提供了⼀些内部函数这些函数不能直接作⽤于加密数据。⑷ DBMS的⼀些应⽤开发⼯具的使⽤受到限制DBMS的⼀些应⽤开发⼯具不能直接对加密数据进⾏操作因⽽它们的使⽤会受到限制。在数据库安全和加密技术的研究⽅⾯我们只是作了⼀些尝试性的⼯作许多细节有待于进⼀步深⼊。通过研究我们认识到数据库安全与保密这⼀领域研究的重要性和迫切性。⽬前的DBMS对数据库的加密问题基本都没有经过仔细考虑如果在DBMS层考虑这⼀问题那么数据库加密将会出现新的格局。

2023年8月1日发(作者:)

mysql安全保密设计_数据库安全于保密随着计算机科学技术的发展与普及,特别是计算机在国民经济各重要部门的⼴泛应⽤计算机安全已是当前信息社会⾮常关注的突出问题⽽数据库系统担负着存储和管理上述数据信息的任务。因⽽如何保证和加强其安全性和保密性已成为⽬前迫切需要解决的热门课题。⼀、 数据库安全与保密概述数据库系统⼀般可以理解成两部分⼀部分是数据库按⼀定的⽅式存取数据另⼀部分是数据库管理系统(DBMS)为⽤户及应⽤程序提供数据访问并具有对数据库进⾏管理、维护等多种功能。数据库系统安全包含两层含义第⼀层是指系统运⾏安全它包括法律、政策的保护如⽤户是否有合法权利政策是否允许等物理控制安全如机房加锁等硬件运⾏安全操作系统安全如数据⽂件是否保护等灾害、故障恢复死锁的避免和解除电磁信息泄漏防⽌。第⼆层是指系统信息安全它包括⽤户⼝令字鉴别⽤户存取权限控制数据存取权限、⽅式控制审计跟踪数据加密。⼆、 数据库基本安全架构数据库系统信息安全性依赖于两个层次⼀层是数据库管理系统本⾝提供的⽤户名/⼝令字识别、视图、使⽤权限控制、审计等管理措施⼤型数据库管理系统Oracle、Sybase、Ingress等均有此功能另⼀层就是靠应⽤程序设置的控制管理如使⽤较普遍的Foxbase、Forpro等。作为数据库⽤户最关⼼⾃⾝数据资料的安全特别是⽤户的查询权限问题。对此⽬前⼀些⼤型数据库管理系统(如Oracle、Sybase等产品)提供了以下⼏种主要⼿段。⒈ ⽤户分类不同类型的⽤户授予不同的数据管理权限。⼀般将权限分为三类数据库登录权限类、资源管理权限类和数据库管理员权限类。有了数据库登录权限的⽤户才能进⼊数据库管理系统才能使⽤数据库管理系统所提供的各类⼯具和实⽤程序。同时数据库客体的主⼈可以授予这类⽤户以数据查询、建⽴视图等权限。这类⽤户只能查阅部分数据库信息不能改动数据库中的任何数据。具有资源管理权限的⽤户除了拥有上⼀类的⽤户权限外还有创建数据库表、索引等数据库客体的权限可以在权限允许的范围内修改、查询数据库还能将⾃⼰拥有的权限授予其他⽤户可以申请审计。具有数据库管理员权限的⽤户将具有数据库管理的⼀切权限包括访问任何⽤户的任何数据授予(或回收)⽤户的各种权限创建各种数据库客体完成数据库的整库备份、装⼊重组以及进⾏全系统的审计等⼯作。这类⽤户的⼯作是谨慎⽽带全局性的⼯作只有极少数⽤户属于这种类型。⒉ 数据分类同⼀类权限的⽤户对数据库中数据管理和使⽤的范围⼜可能是不同的。为此DBMS提供了将数据分类的功能即建⽴视图。管理员把某⽤户可查询的数据逻辑上归并起来简称⼀个或多个视图并赋予名称在把该视图的查询权限授予该⽤户(也可以授予多个⽤户)。这种数据分类可以进⾏得很细其最⼩粒度是数据库⼆维表中⼀个交叉的元素。⒊ 审计功能⼤型DBMS提供的审计功能是⼀个⼗分重要的安全措施它⽤来监视各⽤户对数据库施加的动作。有两种⽅式的审计即⽤户审计和系统审计。⽤户审计时DBMS的审计系统记下所有对⾃⼰表或视图进⾏访问的企图(包括成功的和不成功的)及每次操作的⽤户名、时间、操作代码等信息。这些信息⼀般都被记录在数据字典(系统表)之中利⽤这些信息⽤户可以进⾏审计分析。系统审计由系统管理员进⾏其审计内容主要是系统⼀级命令以及数据库客体的使⽤情况。三、 数据库加密⼀般⽽⾔数据库系统提供的上述基本安全技术能够满⾜⼀般的数据库应⽤但对于⼀些重要部门或敏感领域的应⽤仅靠上述这些措施是难以完全保证数据的安全性某些⽤户尤其是⼀些内部⽤户仍可能⾮法获取⽤户名、⼝令字或利⽤其他⽅法越权使⽤数据库甚⾄可以直接打开数据库⽂件来窃取或篡改信息。因此有必要对数据库中存储的重要数据进⾏加密处理以实现数据存储的安全保护。⒈ 数据库密码系统的基本流程数据加密就是将明⽂数据经过⼀定的交换(⼀般为变序和代昀)变成密⽂数据。数据脱密是加密的逆过程即将密⽂数据转变成可见的明⽂数据。⼀个密码系统包含明⽂集合、密⽂集合、密钥集合和算法其中密钥和算法构成了密码系统的基本单元。算法是⼀些公式、法则或程序规定明⽂与密⽂之间的变换⽅法密钥可以看作算法中的参数。数据库密码系统要求将明⽂数据加密成密⽂数据数据库中存储密⽂数据查询时将密⽂数据取出脱密得到明⽂信息。⒉ 数据库加密的特点较之传统的数据加密技术数据库密码系统有其⾃⾝的要求和特点。传统的加密以报⽂为单位加脱密都是从头⾄尾顺序进⾏。数据库数据的使⽤⽅法决定了它不可能以整个数据库⽂件为单位进⾏加密。当符合检索条件的记录被检索出来后就必须对该记录迅速脱密。然⽽该记录是数据库⽂件中随机的⼀段⽆法从中间开始脱密除⾮从头到尾进⾏⼀次脱密然后再去查找相应的这个记录显然这是不合适的。必须解决随机地从数据库⽂件中某⼀段数据开始脱密的问题。⑴ 数据库密码系统应采⽤公开密钥传统的密码系统中密钥是秘密的知道的⼈越少越好。⼀旦获取了密钥和密码体制就能攻破密码解开密⽂。⽽数据库数据是共享的有权限的⽤户随时需要知道密钥来查询数据。因此数据库密码系统宜采⽤公开密钥的加密⽅法。设想数据库密码系统的加密算法是保密的⽽且具有相当的强度那么利⽤密钥采⽤OS和DBMS层的⼯具也⽆法得到数据明⽂。⑵ 多级密钥结构数据库关系运算中参与运算的最⼩单位是字段查询路径依次是库名、表名、记录名和字段名。因此字段是最⼩的加密单位。也就是说当查得⼀个数据后该数据所在的库名、表名、记录名、字段名都应是知道的。对应的库名、表名、记录名、字段名都应该具有⾃⼰的⼦密钥这些⼦密钥组成了⼀个能够随时加/脱密的公开密钥。可以设计⼀个数据库其中存放有关数据库名、表名、字段名的⼦密钥系统启动后将这些⼦密钥读⼊内存供数据库⽤户使⽤。与记录相对应的⼦密钥⼀般的⽅法应是在该记录中增加⼀条⼦密钥数据字段。⑶ 加密机制有些公开密钥体制的密码如RSA密码其加密密钥是公开的算法也是公开的但是其算法是个⼈⼀套⽽作为数据库密码的加密算法不可能因⼈⽽异因为寻找这种算法有其⾃⾝的困难和局限性机器中也不可能存放很多种算法因此这类典型的公开密钥的加密体制也不适合于数据库加密。数据库加/脱密密钥应该是相同、公开的⽽加密算法应该是绝对保密的。数据库公开密钥加密机制应是⼀个⼆元函数密⽂=F(密钥明⽂)当加密算法F确定之后只要给出密钥和待加密的明⽂即可得到相应的密⽂。脱密过程即是加密过程的逆过程明⽂=F-1(密钥密⽂)由此可知数据库密码的加密机制应是既可加密⼜可脱密的可逆过程。⑷ 加密算法加密算法是数据加密的核⼼⼀个好的加密算法产⽣的密⽂应该频率平衡随机⽆重码规律周期很长⽽⼜不可能产⽣重复现象。窃密者很难通过对密⽂频率、重码等特征的分析获得成功。同时算法必须适应数据库系统的特性加/脱密响应迅速。著名的MH背包算法就是⼀种适合数据库加密的算法。它的基本思想是有⼀个函数F使X=F(K,Y)在这⾥X相当于公开密钥向量Y相当于明⽂。在算法F不公开的情况下若已知K和X要还原出Y来穷尽次数为2n次。如果向量的分量n较⼤时⽤穷尽的⽅法来还原将是⼗分困难的。⒊ 数据库加密的范围数据加密通过对明⽂进⾏复杂的加密操作以达到⽆法发现明⽂和密⽂之间、密⽂和密钥之间的内在关系也就是说经过加密的数据经得起来⾃OS和DBMS的攻击。另⼀⽅⾯DBMS要完成对数据库⽂件的管理和使⽤必须具有能够识别部分数据的条件。据此只能对数据库中数据进⾏部分加密。⑴ 索引字段不能加密为了达到迅速查询的⽬的数据库⽂件需要建⽴⼀些索引。不论是字典式的单词索引、B树索引或HASH函数索引等它们的建⽴和应⽤必须是明⽂状态否则将失去索引的作⽤。有的DBMS中可以建⽴簌聚索引这类索引也需要在明⽂状态下建⽴和维护使⽤。⑵ 关系运算的⽐较字段不能加密DBMS要组织和完成关系运算参加并、差、积、商、投影、选择和连接等操作的数据⼀般都要经过条件筛选这种"条件"选择项必须是明⽂否则DBMS将⽆法进⾏⽐较筛选。例如要求检索⼯资在1000元以上的职⼯⼈员名单"⼯资"字段中的数据若加密SQL语句就⽆法辨认⽐较。⑶ 表间的连接码字段不能加密数据模型规范化以后数据库表之间存在着密切的联系这种相关性往往是通过"外部编码"联系的这些编码若加密就⽆法进⾏表与表之间的连接运算。⒋ 数据库加密对数据库管理系统原有功能的影响⽬前DBMS的功能⽐较完备特别象Oracle、Sybase这些采⽤Client/Server结构的数据库管理系统具有数据库管理和应⽤开发等⼯具。然⽽数据库数据加密以后DBMS的⼀些功能将⽆法使⽤。⑴ ⽆法实现对数据制约因素的定义Sybase数据库系统的规则定义了数据之间的制约因素。数据⼀旦加密DBMS将⽆法实现这⼀功能⽽且值域的定义也⽆法进⾏。值得注意的是数据库中的每个字段的类型、长度都有具体的限定。数据加密时数值类型的数据只能在数值范围内加密⽇期和字符类型的数据也都只能在各⾃的类型范围内加密密⽂长度也不能超过字段限定的长度否则DBMS将⽆法接受这些加密过的数据。⑵ 密⽂数据的排序、分组和分类Select语句中的Group by、Order by、Having⼦句分别完成分组、排序、分类等操作。这些⼦句的操作对象如果是加密数据那么脱密后的明⽂数据将失去原语句的分组、排序、分类作⽤显然这不是⽤户所需要的。⑶ SQL语⾔中的内部函数将对加密数据失去作⽤DBMS对各种类型数据均提供了⼀些内部函数这些函数不能直接作⽤于加密数据。⑷ DBMS的⼀些应⽤开发⼯具的使⽤受到限制DBMS的⼀些应⽤开发⼯具不能直接对加密数据进⾏操作因⽽它们的使⽤会受到限制。在数据库安全和加密技术的研究⽅⾯我们只是作了⼀些尝试性的⼯作许多细节有待于进⼀步深⼊。通过研究我们认识到数据库安全与保密这⼀领域研究的重要性和迫切性。⽬前的DBMS对数据库的加密问题基本都没有经过仔细考虑如果在DBMS层考虑这⼀问题那么数据库加密将会出现新的格局。