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

openGauss透明加密技术

openGauss小助手 2021-10-27
795

当数据在静态存储状态时,除了使用常见的静态脱敏进行数据隐私保护外。另外一种行之有效的方法是透明加密(TDE)。事实上,静态脱敏在实际应用过程中是存在一定的限制的。用户并不能对所有的数据类型都施加静态脱敏措施。

数据透明加密从加密策略出发,即使用户数据被导出,也可以有效解决数据信息泄露风险。数据透明加密的初衷是为了防止第三方人员绕过数据库认证机制,直接读取数据文件中的数据(数据文件中的数据虽然是二进制数据,但是仍然是明文存放)。所以对数据库的数据文件进行加密后,必须在数据库启动后,用户通过正常途径连接数据库,才可以读取解密后的数据,达到数据保护的目的。

openGauss实施透明加密策略,首先是需要确定一个数据库密钥(Database Encryption Key,DEK),该DEK由系统密钥管理系统(Key Management Service,KMS)生成,数据库密钥密文(Encrypted Database Encryption Key,EDEK)以文件方式(gs_tde_keys.cipher)存储于数据库系统中。该DEK一次生成,终身使用,不可变更,不可轮换。在快照(即备份)恢复时,需要使用此前的DEK。

数据库节点在每次启动时,通过读取本地存储的密钥信息和密钥密文(EDEK),向KMS机器上的URL地址,传入密钥版本名(version-name),密钥名(name),IV值和数据库加密密钥密文值,从而获取到解密后的数据库加密密钥DEK。此密钥会缓存在节点的内存当中,当数据库需要加解密数据时从内存中拷贝密钥明文。

openGauss支持两种格式的透明加密算法,通过GUC参数transparent_encryption_algo来进行控制,当前支持的算法包括AES-CTR-128和SM4-CTR-128。加密模式选用CTR(CounTeR,计数器模式)的原因是CTR流加密可以保证明文和密文长度相等。明文和密文长度相等是由数据块(Block)的大小决定的,因为内存和磁盘存储格式对Block的大小是有要求的(默认8K)。特别的,在openGauss列存储中,列存储单元(Column Unit,CU)的最大大小是有限制的,所以也不能存在加密后长度超过最大限制。

一个完整的透明加密流程如图11-6所示。即该特性的生命周期共分为3个阶段:安装阶段、启动阶段和使用阶段。

安装阶段用户通过安装部署的配置,生成密钥记录文件和GUC参数。

启动阶段依据密钥记录文件和GUC参数,获取到明文。

使用阶段用户根据密钥算法标记和全局缓存明文,完成数据落盘的加密和数据读取的解密。

图11-6 透明加密流程

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论