全加密功能使用全球领先的安全技术和国际标准加密算法(含国密算法),是一种采取主动防御的数据库安全功能,即在运行过程中全程应用多项安全技术,以防止在各个环节中可能出现的数据泄漏。本文简要介绍全加密功能中使用的几项安全技术的工作原理。
密钥安全
- 如用户使用Intel SGX 安全增强型规格的实例,它将通过安全的信道分发给数据库端上的可信执行环境(TEE)内,该硬件环境和安全信道由全加密功能利用Intel SGX技术实现。
TEE在内存中提供一块受保护的隔离区域,只有经过认证的数据库内核中的计算逻辑可以访问其中的内容(包括用户主密钥),并使用用户主密钥对数据进行加密或解密。在数据库端内的其它逻辑或云服务器上运行的任何其它程序(包括操作系统、容器软件等)都无法访问TEE中的数据。这样的机制保证了用户主密钥在数据库端的安全。
- 如用户使用其它类型的实例,用户主密钥不会被上传至数据库实例,它仅会被用于在客户端一侧对数据进行加密或解密,数据库中所有被用户主密钥加密的数据都不会被以任何形式解密,将一直以密文形式存在。
建议您使用门限密码技术对用户根密钥进行分发和备份。门限密码技术可以将用户跟密钥分为n份,分别存储至不同的密钥管理服务、存储或备份服务中。在这n份子密钥中,任取大于等于m份(m<n)密钥即可还原出原始的根密钥。这样的机制保证在部分子密钥丢失或泄露后(数量少于 n-m),根密钥不会被泄漏且依然可通过其余子密钥还原。用户可按照自己的安全需求灵活选择m和n的取值。
阿里云还提供了更多密钥管理的应用及最佳实践,请参见密钥管理服务。
加密算法
分组加密算法(Block Ciphers)是一种对称加密算法(加密和解密使用相同的密钥),它先将明文数据分为等长的数据块,再使用相同的加密算法和对称密钥对每一块分别进行加密或解密。
- AES(Advanced Encryption Standard,国际标准 ISO/IEC 18033-3:2005)
- SM4(国家商用密码 SM4,国际标准 ISO/IEC 18033-3:2010/AMD1)
全加密功能需要客户提供的用户主密钥即为对称密码,需要被秘密保存,避免泄露。
加密算法工作模式 | AES(128位) | SM4(128位) |
---|---|---|
CTR(Counter Mode,计数器模式) | ✔️ | ✔️ |
GCM(Galois/Counter Mode,伽罗华计数器模式) | ✔️ | ❌ |
CBC(Cipher-block Chaining,密码分组链接) | ✔️ | ✔️ |
ECB(Electronic Code Book,电子密码本) | ✔️ | ✔️ |
可信执行环境
全加密功能使用Intel SGX 增强型规格中Intel CPU的软件防护扩展(Software Guard Extensions,简称SGX)提供的可信执行环境(Trusted Execution Environment,简称TEE)来保护被加密的数据以及其处理过程。
- Enclave中的程序可以通过在CPU中动态解密的方式访问Enclave中的数据。
- 系统中的其它所有程序(包括操作系统)都被SGX认为是不可信的,无法访问Enclave中的代码或数据。
全加密功能根据数据库的性能与安全需求,将数据库代码分为不被SGX信任的部分和可信的部分,只有可信的部分可以在Enclave中对加密保护的数据进行解密和计算,并将结果加密后返回。系统中其它所有程序无法访问Enclave中的代码或数据。