透明数据加密概述
向量数据库支持透明数据加密(Transparent Data Encryption,简称TDE),对数据文件进行实时加密和解密,保护用户数据隐私,本文介绍向量数据库的透明加密概念和原理。
什么是数据透明加密
透明数据加密指对数据文件执行实时I/O加密和解密。通过在数据库层执行静态数据加密,防止攻击者直接从磁盘中获取用户存储的明文数据。经过数据库身份验证用户可以继续透明地访问应用数据,用户不需要修改配置以及应用代码。
相关名词说明
透明:数据库在将数据写入时自动加密,在数据读取时自动解密。
数据加解密:指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。向量数据库支持AES和SM4算法。工作模式为计数器模式CTR,用于提高数据的随机读取速度。
加密密钥(Key Encryption Key,简称KEK):可使用KMS服务密钥或用户自定义密钥(MasterKey),用于保护数据密钥。可由用户导入。用于生成数据密钥
数据密钥(Data Encryption Key,简称DEK):透明加密使用的密钥由KMS产生和管理,用于加密或解密数据。向量数据库会存储数据密钥的密文(明文通过KEK加密之后得到密文),在使用时传到KMS解密得到明文,将明文存储在内存中使用。向量数据库不直接提供加密所需的密钥和证书。
透明数据加密的优势
表级加密粒度:支持对表级别进行TDE加密和解密。
性能损耗低:开启TDE功能后,性能影响小。
加密解密流程
所有加密解密操作均在内存中进行,在数据进行IO时,将数据进行加密写入磁盘。避免攻击者侵入向量数据库OS时直接读取磁盘数据而产生的数据泄露问题,数据库的使用方式保持不变,不会造成易用性下降的问题。
数据库启动时会将DEK的密文通过KMS的MasterKey解密,解密后得到DEK的明文,而后直接在数据库启动时放在内存中,不会存储任何关于DEK的明文,用于数据写入读取时的加解密。