目录

  1. 目录
  2. 1 架构
    1. 1.1 整体架构
  3. 2 流程
    1. 2.1 整体流程
  4. 3 设计
    1. 3.1 驱动加密
    2. 3.2 机密计算
      1. 一、技术调研
      2. 二、方案对比
  5. 4 接口
  6. 5 实现

1 架构

1.1 整体架构

全密态数据库是一种由数据库提供的安全特性,指数据库在处理数据的过程中,确保数据在传输、计算、存储等全生命周期阶段,于任何不可信的介质或环境中,始终处于加密状态。不可信环境包括:网络、内存、磁盘等。以常见的拓扑模型为例,在使用数据库的过程中,威胁面较广:

risk

全密态数据库中,对于传输、存储安全,采用驱动加密方案。应用向数据库发送数据时,先在驱动中加密数据,再发送数据密文。应用从数据库接收数据时,先接收数据密文,再在驱动中解密数据。数据在网络、磁盘、服务端内存中,均处于加密状态。基本架构如下图所示:

driver

全密态数据库中,对于计算安全,采用机密计算方案。驱动加密方案,解决传输、存储安全,但是,数据库端无法在密文上计算。为解决计算问题,业界有两种方案:

  • 基于密码学算法的密文计算方案:通过密码学算法,让数据库在直接在密文上进行计算,例如保序加密、可搜索加密、同态加密等
  • 基于硬件隔离的机密计算方案:在CPU、内存中,划分逻辑独立的可信执行环境,让数据库在可信执行环境中解密数据密文,进行计算。

在充分对比安全性、功能完备性、性能、实现难度等特点,选择机密计算方案。结合驱动加密方案、机密计算方案,全密态数据库整体架构如下图所示:

all

全密态数据库中,对于加密模型,采用多级密钥方案。数据由数据密钥加密,密钥由主密钥加密,主密钥由根密钥加密。在驱动加密模块中,只能获取数据密钥,无法获取主密钥。在更安全的加密方案中,驱动加密模块无法获取数据密钥,由硬件加密机加密。在数据库端,仅存储密钥信息,无法获取密钥。全密态数据库加密模型如下图所示:

crypt

2 流程

2.1 整体流程

使用全密态数据库时,用户需定义主密钥、数据密钥、加密表,在执行存储、查询数据时,全密态数据库自动完成加密、解密、计算等操作。完整的使用流程如图所示:

flow

3 设计

3.1 驱动加密

3.2 机密计算

一、技术调研

  • 纯软路线

    • 同态加密
  • 软硬路线

    • x86
      • cpu
        • sgx:硬件
        • tdx:硬件
      • 固件
        • me:出厂自带
      • 软件
        • sgx driver
    • amd
      • cpu
        • sev:Secure Encrypted Virtualization,CPU扩展电路,为每台虚拟机分配内存密钥,运行时加密整段内存。需BIOS开启。
        • sev-snp/sev-es
      • 固件
        • psp
      • 软件
        • kvm sev
    • arm
      • cpu
        • trust-zone:每个核新增总线,
      • 固件
        • arm trusted fimware
      • 软件
        • op-tee
  • tee: https://github.com/OP-TEE/build

二、方案对比

4 接口

5 实现