海量智库第27期 | 全密态数据库,拧紧数据的“安全阀”


海量数据库
海量数据库 2024-03-07 10:03:27 49522
分类专栏: 资讯 标签: 国产数据库

在之前的《海量智库》安全系列,我们分别介绍了Vastbase G100数据库的访问控制审计功能,受到了广泛欢迎。Vastbase G100构建起的安全能力模型,全链路保障数据安全,让恶意用户攻不破、进不来、拿不走。全密态方案进一步加强了对于隐私数据的保护,让敏感数据不可见

近年来,随着行业标准和政策的联合推动,数据安全越来越得到大家的重视,如何在充分释放数据价值的同时,又能保障数据安全?Vastbase G100全密态为数据保驾护航

 

 

  是什么?

全密态数据库介绍

全密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态

当数据拥有者在客户端完成数据加密并发送给服务端后,如果攻击者借助系统脆弱点窃取用户数据,仍然无法获得任何有效的价值信息,以此来保护数据隐私。

工作模型如下图所示:

图片

全密态数据库目前支持两种连接方式:vsql连接和jdbc连接

 

全密态数据库有两种密钥:

 

CMK(客户端主密钥):用于加密CEK

 

CEK(列加密密钥):用于加密用户数据

实现全密态数据库,需先创建CMK、然后创建 CEK、最后创建加密表,指定某一列使用CEK加密数据。全密态场景下业务SQL中的关键信息将被加密,以密文的形式发送到数据库端,查询结果也以密文的形式返回客户端。

工作模型如下图所示:

图片

 

 

下面,通过两个例子来介绍全密态数据库的使用:

示例1

vsql中使用全密态

首先需要了解创建CMK和CEK的语法:

1

创建客户端主秘钥CMK

 

语法格式

CREATE CLIENT MASTER KEY client_master_key_name [WITH] ( ['KEY_STORE' , 'KEY_PATH' , 'ALGORITHM'] );

参数说明

client_master_key_name:该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束;取值范围:字符串,需符合标识符的命名规范;

WITH:必选关键字,没有实际的作用;

KEY_STORE:指定管理CMK的密钥工具或组件, KEY_STORE负责管理多个CMK密钥;取值:目前仅支持localkms;

KEY_PATH:用于在KEY_STORE中唯一标识CMK;取值类似:“key_path_value”;

ALGORITHM:该参数用于指定加密算法的类型;取值范围:RSA_2048、RSA_3072和SM2。

 

2

创建列加密秘钥CEK

 

语法格式

CREATE COLUMN ENCRYPTION KEY column_encryption_key_name [WITH] [VALUES] ( ['CLIENT_MASTER_KEY' , 'ALGORITHM'] );

参数说明

column_encryption_key_name:该参数作为密钥对象名,在同一命名空间下,需满足命名唯一性约束;取值范围:字符串,要符合标识符的命名规范;

CLIENT_MASTER_KEY:指定用于加密本CEK的CMK;取值为:CMK对象名,该CMK对象由CREATE CLIENT MASTER KEY语法创建;

ALGORITHM:指定该CEK将用于何种加密算法;

取值范围为:AEAD_AES_256_CBC_HMAC_SHA256、AEAD_AES_128_CBC_HMAC_SHA256和SM4、SM3

 

接下来我们以SM4算法为例做一个简单的演示:

1

使用-C参数登录后创建CMK

图片

点击放大查看图片↑

 

2

创建表并指定列使用加密秘钥

图片

点击放大查看图片↑

 

3

插入明文数据,然后更新或查询仍返回明文记录

图片

点击放大查看图片↑

 

4

登录不使用-C参数

查询到的加密列信息将是密文显示

图片

点击放大查看图片↑

可以看到如果登录时不使用-C参数,相当于绕开了CMK,则显示的就是密码文。

 

示例2

jdbc中使用全密态

用户CMK秘钥与客户端相关,不能通用

vsql创建的客户端秘钥不能用于JDBC客户端;JDBC客户端创建的秘钥也不能用于vsql。

JDBC连接数据库需要设置参数enable_ce=1表示通过全密态连接。

下面是一个简单的例子:

import java.sql.*;

import java.util.*;    

   class JDBC_TESRRSA{        

       public static void main(String[] args) {   

           Locale.setDefault(Locale.US); 

           String driver = "org.postgresql.Driver";

           String url = 

"jdbc:postgresql://172.16.55.169:8888/vastbase?enable_ce=1";

 

           String user = "test"; 

           String password = "xxxxxxx";

           ResultSet rs = null;

           try(Connection conn = DriverManager.getConnection(url, user, password)){                

               Class.forName(driver); 

               Statement stmt = conn.createStatement();

               stmt.execute("CREATE CLIENT MASTER KEY ImgCMK_a1 WITH ( KEY_STORE = localkms, KEY_PATH = \"key_path_value11\" , ALGORITHM = SM2)");  

               stmt.execute("CREATE COLUMN ENCRYPTION KEY ImgCEK_a1 WITH VALUES (CLIENT_MASTER_KEY = ImgCMK_a1, ALGORITHM  = SM4_SM3);");          

 

                stmt.execute("CREATE TABLE creditcard_info (id_number int, name varchar(50) encrypted with (column_encryption_key = ImgCEK_a1, encryption_type = DETERMINISTIC),credit_card varchar(19) encrypted with (column_encryption_key = ImgCEK_a1, encryption_type = DETERMINISTIC));");

               stmt.execute("INSERT INTO creditcard_info VALUES (1,'joe','6217986500001288393');"); 

               rs = stmt.executeQuery("select * from creditcard_info where name = 'joe';"); 

 

               List<String>list = new ArrayList<String>(); 

               while (rs.next()){ 

                   list.add(rs.getString(2)); 

                } 

               if (list != null && list.size()>0){  

                   String[] arr = new String[list.size()]; 

                   for (int i=0;i<list.size();i++){ arr[i]="list.get(i);" } 

                   for (String s : arr){ System.out.println(s);};

                 } 

               stmt.close(); 

           } catch(Exception exception){ 

               exception.printStackTrace();

            } 

       } 

   }

↑上下滑动查看更多↓

 

 

Vastbase  G100全密态数据库,让用户自己持有数据加解密密钥,有效化解恶意攻击,保障企业数据全生命周期的隐私安全。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=52109
赞同 1
评论 0 条
海量数据库L3
粉丝 0 发表 20 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2941
【软件正版化】软件正版化工作要点  2860
统信UOS试玩黑神话:悟空  2819
信刻光盘安全隔离与信息交换系统  2712
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1246
grub引导程序无法找到指定设备和分区  1213
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!