openGauss|全密态黑科技再升级,无感知加解密原理剖析

要实现在客户端进行加解密,无疑需要在客户端进行大量维护管理,包括数据密钥管理,敏感数据加密,解析和修改SQL语句等。openGauss将这一系列的复杂操作,全部封装在客户端加密驱动中,实现了完全自动化的敏感信息加密替换,同时在数据库中存储了所有加密相关的元信息,使得数据库可以很好的识别和处理对应的加密数据。同时SQL语句中的敏感信息相关的参数,也会被加密处理,保证查询任务不会泄露用户查询意图,减少客户端的复杂安全管理及操作难度,实现用户应用开发无感知。

另外,openGauss提供一系列的配置接口,满足用户对加密字段、加密算法、密钥安全存储等不同场景的需要。openGauss全密态数据库的透明性使得用户在任务迁移时将获得极大的便捷性。

对数据机密性及个人隐私最安全的保护就是加密,全密态技术能够在具体应用中对数据加解密,在数据库中完全以加密状态进行处理,以实现数据的全生命周期保护。然而,业界主流的应用端加解密技术,一般都涉及到密钥管理、算法选取、SQL语句变更、数据类型转换等大量操作。因此当业务需要对数据进行加密时,往往需要大量的适配迁移工作,而且容易因人为疏漏,导致风险。

而此次openGauss全密态推出无感知加密能力,核心是在客户端解析用户全部输入输出语句,识别出已定义的敏感数据,并且进行自动化的加解密。用户使用全密态数据库时,从输入语法,客户端发送到服务端,服务端执行并将结果返回给客户端的整个流程中,用户唯一能感知到的只有输入语法以及获得返回结果这两步。全密态数据库的技术核心分为几个模块,密钥管理、解析层、加解密驱动、隐式转换层、数据缓存等,全密态数据库的架构图如图1,这里我们主要介绍和用户无感知相关的几个模块。

图1 全密态数据库架构

1. 语法自动解析

在openGauss全密态数据库中,我们在客户端增加了一个轻量级的解析器,这个轻量级的解析器复用了服务端原有的解析器。用户输入语法后,如INSERT、SELECT等语法,客户端解析器进行词法和语法解析,获取到明文值及其位置,而加解密驱动则自动将明文替换为加密后的密文,然后将查询语句发送到服务端,此时在网络传输过程以及存储在数据库中的数据都是密文数据。在服务端将执行密文结果返回给客户端后,客户端加解密驱动自动将返回的密文数据进行解密并返回给用户。用户只能感知到输入的语法,获取到了明文的返回结果,对全程加密的整个流程并无具体的感知,而且语法和非密态数据的操作是完全相同的。

在升级后的openGauss全密态数据库中,客户端新增了对函数内语法的解析以及对函数特有的返回的Record数据的解密接口。在创建函数时,在解析层对函数主体的语法进行解析后,在函数处理器中通过加密驱动对函数主体中需要加密的值进行加密。而在执行函数时,在解析层解析完后,根据调用函数的形式,进入不同的处理器,通过加密驱动对需要加密的参数进行加密。这整个解析、加密的过程用户并不能感知到,整个流程都是全自动化的,不需要用户做其他的额外操作。

图2 密态等值查询支持函数和存储过程创建函数/过程方案


图3 密态等值查询支持函数和存储过程执行函数/过程方案

2. 数据隐式转换

对于数据库来说,加密列保存在数据库中是加密列类型,另外数据库中还保存着加密列的原始数据类型。但对于用户来说,显示给用户的数据类型是原始数据类型,虽然实际上保存在数据库中的密文是二进制形式,但其数据加解密及类型转换对于用户来说是无感知的。openGauss全密态数据库会判断返回的数据是否为加密类型,如果是加密类型,则调用加密驱动,根据原始数据类型对数据进行解密。

在升级后的openGauss全密态数据库中,用户在创建密态函数时,服务端在函数解析模块对参数类型进行校验,如果数据是加密类型,或者该列是加密列,则在优化模块对输入输出及返回参数进行转换,将函数的参数类型转换为加密列类型(二进制类型),并将函数参数的原始数据类型保存在数据库中。整个流程中的解析、加密、数据类型隐式转换对于用户时无感知的,用户甚至不需要对函数语法做任何修改。

图4 全密态数据库支持函数新增模块

3. 数据缓存

性能一直都是全密态数据库的一个挑战。openGauss全密态数据库中,数据库的主要性能损耗在密钥获取,密钥加解密,获取加密列信息,加解密数据上。如果执行语法的时候等待时间太久,用户的感知体验就会变差。因此我们通过数据缓存的模块,将客户端密钥信息,加密列信息缓存在客户端里。当用户初始化连接时会自动从数据库获取客户端主密钥路径,列加密密钥密文以及加密列信息等,而在使用的过程中,用户在第一次使用的时候会自动缓存密钥,当用户断开连接后,密钥及加密列信息会自动销毁。通过数据缓存,提升查询的性能,让用户不会感受到延迟。

4. 支持JDBC接口

考虑到任务在不同数据库迁移的问题,更多的用户会会更倾向于选择JDBC等统一访问接口的API。之前的openGauss仅支持gsql使用全加密数据库。在升级后的openGauss全密态数据库中,我们对JDBC进行了支持。JDBC客户端通过Java Native Interface(JNI)复用原有的加密驱动。通过对加密驱动进行改造,让它可以通过一套兼容libpq/JDBC的接口从服务端获取数据。用户调用JDBC的过程中实现跟gsql一样的加解密过程,用户在查询的过程中并不能感知到加密驱动中对数据的加解密。

图5 全密态等值查询支持JDBC新增模块

5. 支持国密算法

国密是国家密码局认定的国产密码算法,主要有SM1,SM2,SM3,SM4。SM1 对称加密,该算法不公开,不会支持。SM2为非对称加密,基于ECC。SM3 为消息摘要算法。SM4 为无线局域网标准的分组数据算法,即对称加密。在我国很多用户场景下都会使用到国密算法,为了给用户提供无感知迁移,扩展全密态数据库的适用场景,升级后的openGauss客户端主密钥CMK加密列加密密钥CEK时支持非对称加密算法SM2,通过CEK加解密用户数据的时候支持使用的对称加密算法SM4 加密和SM3消息摘要算法进行完整性校验。目前openGauss全密态数据库支持的算法如表1。

表1 全密态数据库支持加密算法

openGauss全密态数据库目前支持密态等值查询,提供了全密态技术中的纯软件方案,拥有着高安全、高性能的优势。未来将逐步开放更多的场景能力,如范围查询、模糊查询等,并且通过与TEE软硬融合方案,形成完整的密态查询与计算能力。在全密态数据库领域,openGauss会不断演进,为大家带来更安全、易用、高效的全密态数据库。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容