厦门网站seo,designspiration,如何创立一个公众号,平面设计作品案例分析前言
写此文章的目的#xff0c;主要是验证#xff1a;
openGauss 5.0.0 数据库能够实现哪种加密方式的全密态全密态数据库的特点
一、全密态介绍
全密态数据库意在解决数据全生命周期的隐私保护问题#xff0c;使得系统无论在何种业务场景和环境下#xff0c;数据在传…前言
写此文章的目的主要是验证
openGauss 5.0.0 数据库能够实现哪种加密方式的全密态全密态数据库的特点
一、全密态介绍
全密态数据库意在解决数据全生命周期的隐私保护问题使得系统无论在何种业务场景和环境下数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息从而起到保护数据隐私的能力。
由于整个业务数据流在数据处理过程中都是以密文形态存在通过全密态数据库可以实现
1保护数据在云上全生命周期的隐私安全。无论数据处于何种状态攻击者都无法从数据库服务端获取有效信息。2帮助云服务提供商获取第三方信任。无论是企业服务场景下的业务管理员、运维管理员还是消费者云业务下的应用开发者用户通过将密钥掌握在自己手上使得高权限用户无法获取数据有效信息。3让云数据库服务借助全密态能力更好的遵守个人隐私保护方面的法律法规。
全密态数据库目前支持两种连接方式gsql连接和jdbc连接。
二、环境准备
本次实验使用的操作系统是centos7.9openGauss版本是5.0.0实验直接在一台服务器上面进行。
操作系统数据库版本
三、实验过程
1、创建用户
使用管理员用户登录然后参加一个qmttest用户密码设置为qwer1234!#$CREATE USER qmttest PASSWORD qwer1234!#$; 使用qmttest用户登录,连接密态数据库. -C是打开密态开关
gsql -p 15400 -d postgres -U qmttest -r -C 2、创建用户密钥
全密态数据库有两种密钥即客户端主密钥CMK和数据加密密钥CEK。CMK用于加密CEKCEK用于加密用户数据。密钥创建的顺序和依赖依次为创建CMK 创建CEK。
从这里开始验证加密方式的组合。
序号
主密钥CMK
数据加密密钥CEK
1
RSA_2048
AEAD_AES_256_CBC_HMAC_SHA256
2
RSA_3072
AEAD_AES_128_CBC_HMAC_SHA256
3
SM2
SM4_SM3
2.1 创建客户端主密钥CMK
密钥存储路径默认情况下localkms将在LOCALKMS_FILE_PATH路径下生成/读取/删除密钥文件用户可手动配置该环境变量。但是用户也可以不用单独配置该环境变量在尝试获取LOCALKMS_FILE_PATH失败时localkms会尝试获取$GAUSSHOME/etc/localkms/路径如果该路径存在则将其作为密钥存储路径。密钥相关文件名使用CREATE CMK语法时localkms将会创建四个与存储密钥相关的文件。示例当KEY_PATH “key_path_value”, 四个文件的名称分别为key_path_value.pub、key_path_value.pub.rand、 key_path_value.priv、 key_path_value.priv.rand。所以为了能够成功创建密钥相关文件在密钥存储路径下应该保证没有已存在的与密钥相关文件名同名的文件。
2.1.1 RSA_2048 使用RSA_2048加密算法进行创新CMK
名称qmt_rsa2048CREATE CLIENT MASTER KEY qmt_rsa2048 WITH (KEY_STORE localkms , KEY_PATH qmt_rsa2048, ALGORITHM RSA_2048); 查看生成的相应加密文件 2.1.2 RSA_3072 使用RSA_3072加密算法进行创建CMK
名称qmt_RSA3072CREATE CLIENT MASTER KEY qmt_RSA3072 WITH (KEY_STORE localkms , KEY_PATH qmt_RSA3072, ALGORITHM RSA_3072); 查看生成的相应加密文件 2.1.3 SM2 使用SM2加密算法进行创建CMK
名称qmt_SM2CREATE CLIENT MASTER KEY qmt_SM2 WITH (KEY_STORE localkms , KEY_PATH qmt_SM2, ALGORITHM SM2); 查看生成的相应加密文件
2.2 创建数据加密密钥CEK
2.2.1 AEAD_AES_256_CBC_HMAC_SHA256
使用 RSA_2048 AEAD_AES_256_CBC_HMAC_SHA256 创建CEK
名称RSA_2048_256_CEKCREATE COLUMN ENCRYPTION KEY RSA_2048_256_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_rsa2048, ALGORITHM AEAD_AES_256_CBC_HMAC_SHA256); 使用 RSA_3072 AEAD_AES_256_CBC_HMAC_SHA256 创建CEK
名称RSA_3072_256_CEKCREATE COLUMN ENCRYPTION KEY RSA_3072_256_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_RSA3072, ALGORITHM AEAD_AES_256_CBC_HMAC_SHA256); 使用 SM2 AEAD_AES_256_CBC_HMAC_SHA256 创建CEK
名称SM2_256_CEK
创建失败CREATE COLUMN ENCRYPTION KEY SM2_256_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_SM2, ALGORITHM AEAD_AES_256_CBC_HMAC_SHA256); 有报错ERROR(CLIENT): National secret algorithm must be used together. 国家密码算法必须一起使用 2.2.2 AEAD_AES_128_CBC_HMAC_SHA256
使用 RSA_2048 AEAD_AES_128_CBC_HMAC_SHA256 创建CEK
名称RSA_2048_128_CEKCREATE COLUMN ENCRYPTION KEY RSA_2048_128_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_rsa2048, ALGORITHM AEAD_AES_128_CBC_HMAC_SHA256); 使用 RSA_3072 AEAD_AES_128_CBC_HMAC_SHA256 创建CEK
名称RSA_3072_128_CEKCREATE COLUMN ENCRYPTION KEY RSA_3072_128_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_RSA3072, ALGORITHM AEAD_AES_128_CBC_HMAC_SHA256); 使用 SM2 AEAD_AES_128_CBC_HMAC_SHA256 创建CEK
名称SM2_128_CEK
创建失败CREATE COLUMN ENCRYPTION KEY SM2_128_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_SM2, ALGORITHM AEAD_AES_128_CBC_HMAC_SHA256); 有报错ERROR(CLIENT): National secret algorithm must be used together. 国家密码算法必须一起使用 2.2.3 SM4_SM3
使用 RSA_2048 SM4_SM3 创建CEK
名称RSA_2048_SM4_SM3_CEK
创建失败CREATE COLUMN ENCRYPTION KEY RSA_2048_SM4_SM3_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_rsa2048, ALGORITHM SM4_SM3); 有报错ERROR(CLIENT): National secret algorithm must be used together. 国家密码算法必须一起使用 使用 RSA_3072 SM4_SM3 创建CEK
名称RSA_3072_SM4_SM3_CEK
创建失败CREATE COLUMN ENCRYPTION KEY RSA_3072_SM4_SM3_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_RSA3072, ALGORITHM SM4_SM3); 有报错ERROR(CLIENT): National secret algorithm must be used together. 国家密码算法必须一起使用 使用 SM2 SM4_SM3 创建CEK
名称SM2_SM4_SM3_CEKCREATE COLUMN ENCRYPTION KEY SM2_SM4_SM3_CEK WITH VALUES (CLIENT_MASTER_KEY qmt_SM2, ALGORITHM SM4_SM3); 2.3 总结
序号
数据加密密钥CEK
主密钥CMK
组合名称
是否创建成功
1
AEAD_AES_256_CBC_HMAC_SHA256
RSA_2048
RSA_2048_256_CEK
是
2
AEAD_AES_256_CBC_HMAC_SHA256
RSA_3072
RSA_3072_256_CEK
是
3
AEAD_AES_256_CBC_HMAC_SHA256
SM2
SM2_256_CEK
否
4
AEAD_AES_128_CBC_HMAC_SHA256
RSA_2048
RSA_2048_128_CEK
是
5
AEAD_AES_128_CBC_HMAC_SHA256
RSA_3072
RSA_3072_128_CEK
是
6
AEAD_AES_128_CBC_HMAC_SHA256
SM2
RSM2_128_CEK
否
7
SM4_SM3
RSA_2048
RSA_2048_SM4_SM3_CEK
否
8
SM4_SM3
RSA_3072
SA_3072_SM4_SM3_CEK
否
9
SM4_SM3
SM2
SM2_SM4_SM3_CEK
是
国密加密算法 SM2 SM4_SM3 不能和其他加密方式组合。
目前创建数据加密密钥CEK是成功的下面进行使用测试。
3、表加密测试
3.1 使用RSA_2048_256_CEK创建加密表
表名称RSA_2048_256_TBCREATE TABLE RSA_2048_256_TB (id_number int, name text encrypted with (column_encryption_key RSA_2048_256_CEK, encryption_type DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key RSA_2048_256_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO RSA_2048_256_TB VALUES (1,joe,6217986500001288393);
INSERT INTO RSA_2048_256_TB VALUES (2,joy,6219985678349800033); 客户端查询数据select * from RSA_2048_256_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from RSA_2048_256_TB 可以看出数据已经加密。 加密成功查询成功 3.2 使用RSA_3072_256_CEK创建加密表
名称RSA_3072_256_TBCREATE TABLE RSA_3072_256_TB (id_number int, name text encrypted with (column_encryption_key RSA_3072_256_CEK, encryption_type DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key RSA_3072_256_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO RSA_3072_256_TB VALUES (1,joe,6217986500001288393);
INSERT INTO RSA_3072_256_TB VALUES (2,joy,6219985678349800033); 客户端查询数据select * from RSA_3072_256_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from RSA_3072_256_TB; 3.3 使用RSA_2048_128_CEK创建加密表
名称RSA_2048_128_TBCREATE TABLE RSA_2048_128_TB (id_number int, name text encrypted with (column_encryption_key RSA_2048_128_CEK, encryption_type DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key RSA_2048_128_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO RSA_2048_128_TB VALUES (1,joe,6217986500001288393);
INSERT INTO RSA_2048_128_TB VALUES (2,joy,6219985678349800033); 客户端查询数据select * from RSA_2048_128_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from RSA_2048_128_TB; 3.4 使用RSA_3072_128_CEK创建加密表
名称RSA_3072_128_TBCREATE TABLE RSA_3072_128_TB (id_number int, name text encrypted with (column_encryption_key RSA_3072_128_CEK, encryption_type DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key RSA_3072_128_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO RSA_3072_128_TB VALUES (1,joe,6217986500001288393);
INSERT INTO RSA_3072_128_TB VALUES (2,joy,6219985678349800033); 客户端查询数据select * from RSA_3072_128_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from RSA_3072_128_TB; 3.5 使用SM2_SM4_SM3_CEK创建加密表
名称SM2_SM4_SM3_TBCREATE TABLE SM2_SM4_SM3_TB (id_number int, name text encrypted with (column_encryption_key SM2_SM4_SM3_CEK, encryption_type DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key SM2_SM4_SM3_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO SM2_SM4_SM3_TB VALUES (1,joe,6217986500001288393);
INSERT INTO SM2_SM4_SM3_TB VALUES (2,joy,6219985678349800033); 客户端查询数据select * from SM2_SM4_SM3_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from SM2_SM4_SM3_TB; 4、组合加密方式验证
同一个表中不同的列使用不同的加密方式。
表名称all_TB 说明不同的列使用不同的加密方式。列id_number:不使用加密列name1RSA_2048_256_CEK列credit_card1RSA_3072_256_CEK列name2RSA_2048_128_CEK列credit_card2RSA_3072_128_CEK列name3SM2_SM4_SM3_CEK
CREATE TABLE all_TB (id_number int, name1 text encrypted with (column_encryption_key RSA_2048_256_CEK, encryption_type DETERMINISTIC),credit_card1 varchar(19) encrypted with (column_encryption_key RSA_3072_256_CEK, encryption_type DETERMINISTIC),name2 text encrypted with (column_encryption_key RSA_2048_128_CEK, encryption_type DETERMINISTIC),credit_card2 varchar(19) encrypted with (column_encryption_key RSA_3072_128_CEK, encryption_type DETERMINISTIC),name3 text encrypted with (column_encryption_key SM2_SM4_SM3_CEK, encryption_type DETERMINISTIC)); 插入数据INSERT INTO all_TB VALUES (1,joe1,6217986500001288393,joe2,6217986500001288393,joe3);
INSERT INTO all_TB VALUES (2,joy1,6219985678349800033,joy2,6219985678349800033,joy3); 客户端查询数据select * from all_TB; 通过不加 -C 登录查询数据gsql -p 15400 -d postgres -U qmttest -r
select * from all_TB; 四、总结
在openGauss 3.0 版本中国密SM2SM4_SM3组合使用中在查询时是有问题的openGauss 5.0.0 这个版本中这个问题已经解决。同一个表中列可以是加密的也可以是不加密的。同一个表中可以有不同的加密方式。想要查询到明文客户端必须有密钥文件密钥文件需要进行妥善保管。 文章转载自: http://www.morning.sogou66.cn.gov.cn.sogou66.cn http://www.morning.rpjr.cn.gov.cn.rpjr.cn http://www.morning.bhznl.cn.gov.cn.bhznl.cn http://www.morning.yckrm.cn.gov.cn.yckrm.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.cytr.cn.gov.cn.cytr.cn http://www.morning.bpmdh.cn.gov.cn.bpmdh.cn http://www.morning.plqhb.cn.gov.cn.plqhb.cn http://www.morning.cfocyfa.cn.gov.cn.cfocyfa.cn http://www.morning.jgcyn.cn.gov.cn.jgcyn.cn http://www.morning.ldynr.cn.gov.cn.ldynr.cn http://www.morning.tqhpt.cn.gov.cn.tqhpt.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.paoers.com.gov.cn.paoers.com http://www.morning.mlpmf.cn.gov.cn.mlpmf.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.wrwcf.cn.gov.cn.wrwcf.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn http://www.morning.i-bins.com.gov.cn.i-bins.com http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.nkpls.cn.gov.cn.nkpls.cn http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn http://www.morning.rtbx.cn.gov.cn.rtbx.cn http://www.morning.rnxs.cn.gov.cn.rnxs.cn http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn http://www.morning.rmfw.cn.gov.cn.rmfw.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.ctrkh.cn.gov.cn.ctrkh.cn http://www.morning.gtqx.cn.gov.cn.gtqx.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.xblrq.cn.gov.cn.xblrq.cn http://www.morning.qqzdr.cn.gov.cn.qqzdr.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.qynnw.cn.gov.cn.qynnw.cn http://www.morning.hxlch.cn.gov.cn.hxlch.cn http://www.morning.grcfn.cn.gov.cn.grcfn.cn http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn http://www.morning.bhdyr.cn.gov.cn.bhdyr.cn http://www.morning.rynrn.cn.gov.cn.rynrn.cn http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn http://www.morning.wynnb.cn.gov.cn.wynnb.cn http://www.morning.xnnpy.cn.gov.cn.xnnpy.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.zfyr.cn.gov.cn.zfyr.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.cnyqj.cn.gov.cn.cnyqj.cn http://www.morning.qptbn.cn.gov.cn.qptbn.cn http://www.morning.bksbx.cn.gov.cn.bksbx.cn http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn http://www.morning.tnktt.cn.gov.cn.tnktt.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.pzwfw.cn.gov.cn.pzwfw.cn http://www.morning.nqmhf.cn.gov.cn.nqmhf.cn http://www.morning.mxmdd.cn.gov.cn.mxmdd.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn http://www.morning.pwdmz.cn.gov.cn.pwdmz.cn http://www.morning.rklgm.cn.gov.cn.rklgm.cn http://www.morning.sjqml.cn.gov.cn.sjqml.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn