暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

海量数据 2024-03-07
484

在之前的《海量智库》安全系列,我们分别介绍了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全密态数据库,让用户自己持有数据加解密密钥,有效化解恶意攻击,保障企业数据全生命周期的隐私安全。


• END •


往期推荐



关于海量数据


北京海量数据技术股份有限公司(股票代码:603138.SH)成立于2007年,是国内首家以数据库为主营业务的主板上市企业。公司十余年来秉承“专注做好数据库”的初心,始终致力于数据库产品的研发、销售和服务。核心产品海量数据库Vastbase系列、数据库一体机Vastcube系列、海量大数据Datalink系列,全栈国产化,应用满足度高,目前广泛应用于政务、制造、金融、通信、能源、交通等多个重点行业,已成为国产企业级数据库的首选之一。



文章转载自海量数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论