DB2敏感数据加密_第1页
DB2敏感数据加密_第2页
DB2敏感数据加密_第3页
DB2敏感数据加密_第4页
DB2敏感数据加密_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DB2敏感数据加密敏感数据加密方法介绍方法介绍 客户服务中心运维小组 贾雷波 多年来,数据库已经能够阻止未经授权的人看到其中的数据,这通常是通过数据库管理器中的特权和权限来实现的。但当前,用户对敏感数据的保密需求日益增长,用户希望某些数据除了用户本人其它任何人不可访问,包括对表中的数据有完全的访问权限的DBA。比如,在应用程序中,用户输入的身份证号、银行卡号、密码等信息,用户希望只有本人可以访问,其它没有用户授权的任何人不能访问该数据。如何实现当前用户的这些要求呢? 为了实现这种功能,DB2 内置了一些 SQL 函数,这些函数允许应用程序加密和解密数据。当将数据插入到数据库中时,可以使用用户提

2、供的加密密码对其加密。当检索该数据的时候,必须提供相同的密码才能解密数据。 本文将简单介绍DB2 RC2加密算法并描述这些 SQL 函数,同时给出一些关于如何使用这些加密函数的例子,我们还将讨论在关系数据库中使用加密数据的设计和性能相关事项。DB2 RC2加密算法 DB2采用RC2对称分组加密算法,它的输入和输出都是位数据,通常RC2加密算法效率比DES算法高两倍。RC2密码带有一个 128 位的密钥。这个 128 位的密钥是通过消息摘要从密码得来的。加密密码与 DB2 认证无关,仅用于数据的加密和解密。运用加密函数加密数据时设置满足要求的密码,当检索数据的时候,必须提供相同的密码才能解密数据

3、。DB2 RC2加密函数 Encrypt (StringDataToEncrypt, PasswordOrPhrase, PasswordHint) Decrypt_Char(EncryptedData, PasswordOrPhrase) GetHint(EncryptedData) Set Encryption Password StringDataToEncrypt 为要加密的字符串数据。 PasswordOrPhrase为密码字符串,其要求长度为6-127字节。 PasswordHint为密码提示字符串,是一个可选参数,其要求长度为0-32字节,可以帮助用户记忆用于对数据加密的 Pas

4、swordOrPhrase。(例如,可以使用 George 作为记忆 Washington的提示。)列级加密 对于列级加密,要多次使用同一个密码的情况,可以使用一个赋值语句设置寄存器 ENCRYPTION PASSWORD 的值,并令其在某次连接期间内有效。加密非字符值 DB2 RC2加密算法通常加密字符型数据,数值和日期/时间等非字符数据类型的加密可通过强制类型转换得到间接的支持,非字符的 SQL 类型通过强制转换为 varchar 或 char,就可以被加密了。加密示例:行级加密创建test表 DROP TABLE DB2INST1.TEST;CREATE TABLE DB2INST1.T

5、EST (DATE VARCHAR(8), ID INTEGER, NAME VARCHAR(10), PASSWORD VARCHAR(500) FOR BIT DATA, BALANCE VARCHAR(500) FOR BIT DATA ); PASSWORD、BALANCE为要加密列,两列为二进制字符串。插入数据插入数据insert into db2inst1.test values (20150101,1,name1,encrypt(name1password,111111,6g1),encrypt(char(1111.11),111111,6g1);insert into db2i

6、nst1.test values (20150102,2,name2,encrypt(name2password,222222,6g2),encrypt(char(2222.22),222222,6g2);insert into db2inst1.test values (20150103,3,name3,encrypt(name3password,333333,6g3),encrypt(char(3333.33),333333,6g3);insert into db2inst1.test values (20150104,4,name4,encrypt(name4password,44444

7、4,6g4),encrypt(char(4444.44),444444,6g4);insert into db2inst1.test values (20150105,5,name5,encrypt(name5password,555555,6g5),encrypt(char(5555.55),555555,6g5); PASSWORD、BALANCE两列插入值为加密后的二进制字符串。查询数据查询第一条解密后数据 select date,id,name,password,gethint(password) password_pwts,decrypt_char(password,111111)

8、real_password, balance,gethint(balance) balance_pwts,decimal(decrypt_char(balance,111111),10,3) real_balance from db2inst1.test where id=1;查询结果查询第五条解密后数据 select date,id,name,password,gethint(password) password_pwts,decrypt_char(password,555555) real_password, balance,gethint(balance) balance_pwts,de

9、cimal(decrypt_char(balance,555555),10,3) real_balance from db2inst1.test where id=5;查询结果列级加密 列级加密(column level encryption)意味着对于一个给定列中的所有值都使用相同的密码进行加密。这种类型的加密可以在视图中使用,也可以在使用了一个公共密码的情况下使用。当对一个或多个表中所有的行使用相同的密钥时,ENCRYPTION PASSWORD 专用寄存器将十分有用。加密示例 列级加密插入数据delete from db2inst1.test;set encryption passwor

10、d=aaaaaa;insert into db2inst1.test values (20150101,1,name1,encrypt(name1password),encrypt(char(1111.11);insert into db2inst1.test values (20150102,2,name2,encrypt(name2password),encrypt(char(2222.22);insert into db2inst1.test values (20150103,3,name3,encrypt(name3password),encrypt(char(3333.33);ins

11、ert into db2inst1.test values (20150104,4,name4,encrypt(name4password),encrypt(char(4444.44);insert into db2inst1.test values (20150105,5,name5,encrypt(name5password),encrypt(char(5555.55);查询数据查询数据查询解密后数据 select date,id,name,password,gethint(password) password_pwts,decrypt_char(password,aaaaaa) real

12、_password, balance,gethint(balance) balance_pwts,decimal(decrypt_char(balance,aaaaaa),10,3) real_balance from db2inst1.test;查询结果恶意更改第一条数据 update db2inst1.test set password=name1password,balance=1111.11 where id=1;查询恶意更改后的数据解密恶意更改后的数据目前交易系统加密数据更改加密数据 更改后,密码333333生效,用新的密码“333333” 登陆交易管理,可正常登陆。性能 加密,就其本质而言,会使大部分 SQL 语句慢下来,但是如果多加注意,多加判断,还是可以将大量的额外开销降至最低的。加密数据对于数据库的设计也有很大的影响,通常,您需要对一个模式中的一些敏感数据进行加密,例如身份号、银行卡号、密码等数据,而有些数据值就不是那么适合加密了, 例如布尔值(true 和 false),或者其他的像整数 1 到 10 这样的小型集合,这些值与列名一起很容易被猜出,因此需要判断加密是否真的有用。 由于加密数据实质上是二进制数据,因此对加密数据进行范围检查时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论