数据加解密是防止数据隐私泄露最为常见也最为有效的手段之一。数据在经过加密后以密文形式存放在指定的目录下。加密的意义在于,通过一系列复杂的迭代计算,将原本的明文转换为随机的没有任何具体含义的字符串,即密文。当所使用的加密算法足够安全时,攻击者在有限的计算资源下将很难根据密文获取到明文信息。
常见的加密算法可分为对称加密算法和非对称算法。其中最为著名的非对称加密算法叫RSA算法,其密钥长度须达到3072才可以保证其安全性,即强安全。常见的对称加密算法为AES算法,如AES128和AES256。相比于非对称加密算法,对称加密算法运算速度快,密文长度增长少,安全性容易证明,所需要的密钥长度短,但也存在密钥分发困难,不可以用于数字签名等缺点。除了上述介绍的加密算法外,还有很多其他强安全算法,在此不一一介绍。下面将重点介绍openGauss中所支持的数据加密能力。
首先openGauss在内核定义了数据加解密的函数,并对外提供了数据加解密的接口,函数接口为:
gs_encrypt_aes128(text, initial_value);
其中,text为需要加密的明文数据,initial_value为生成密钥时需要的初始化向量。该函数可以被灵活的应用在SQL语法的各个地方。如通过使用INSERT语法插入数据或者查询数据时均可以绑定该函数对数据进行加密处理,具体如下:
SELECT * FROM gs_encrypt_aes128(tbl.col, ‘1234’);
通过该查询,用户可以直接返回表tbl中的col列的密文信息。
与加密函数相对应的是解密函数,其接口格式定义为:
gs_decrypt_aes128(cypertext, initial_value);
其中cypertext为加密之后的密文,initial_value需要为与加密时所采用的相同的值才可以。否则使用该函数也无法得到正确明文。
除了基本的数据加解密接口外,openGauss还在多个特性功能里提供了数据加解密功能。其中第一个提供加解密功能的特性是数据导入导出;第二个提供加解密功能的特性是数据库备份恢复。




