首页 > 其他分享 >GaussDB安全关键技术一:密态等值查询

GaussDB安全关键技术一:密态等值查询

时间:2024-12-27 11:45:11浏览次数:7  
标签:加密 等值 GaussDB 查询 密态 密钥 服务端 客户端

密态等值查询属于密态数据库第一阶段方案,但是遵从密态数据库总体架构。

密态数据库的总体架构示意图如下图所示。密态数据库的完整形态包括密码学方案和软硬结合方案。
在这里插入图片描述

图8 密态数据库总体架构

由于密态等值查询仅涉及到软件部分,仅需集成密态数据库总体架构的软件部分,其总体实现方案如下图所示。
在这里插入图片描述

图9 密态等值查询总体方案

从总体流程上来看,数据在客户端完成加密,以密文形式发送到GaussDB Kernel数据库服务侧,即需要在客户端构建加解密模块。

加解密模块依赖密钥管理模块,密钥管理模块生成根密钥(RK, Root Key)和客户端主密钥(CMK,Client Master Key),有了CMK,可以通过SQL语法定义列加密密钥(CEK,Column Encryption Key)。

其中,CMK由RK加密后保存在密钥存储文件(KSF,Key Store File)中,与RK一起由KeyTool统一管理;CEK则由CMK加密后存储在服务端,加密算法使用AES128和AES256。

按照原有明文格式发送至服务端。当查询任务发起后,客户端需要对当前的Query进行解析,如果查询语句中涉及加密列,则对对应的列参数(加密列关联参数)也要进行加密(这里说的加密均需要为确定性加密,否则无法支持对应的查询);如果查询语句中不涉及加密列,则直接发送至服务端,无需额外的操作。

在数据库服务侧,加密列的数据始终以密文形态存在,整个查询也在密文形态下实现。对于第一阶段密态等值查询解决方案,需要采用确定性加密,使得相同的明文数据获得相同的密文,从而支持等值计算。

按照用户使用的流程,整体设计思路将围绕用户的使用步骤展开,即整个Use Case被切分成三部分。具体如下:生成客户端主密钥:用户需要在本地部署密钥管理工具(KeyTool),通过密钥管理工具相关指令来管理密钥,如创建或删除密钥;当前该工具底层集成华为公司KMC组件,生成的主密钥通过KMC进行保存和管理,并返回密钥信息给用户,方便后续调用和管理;记录CMK与CEK信息,在系统创建加密表:有了阶段1中生成的密钥信息后,为数据库设计专门的密钥创建语法,包括设计新的主密钥(CMK, Client Master Key)和列加密密钥(CEK, Column Encryption Key)语法;

通过内核接口访问KeyTool中存储的主密钥并记录在系统中,列加密密钥则由主密钥在客户端完成加密后存储在数据库服务端;数据通过列加密密钥完成在客户端的加密,然后传输到服务端。

为了做到查询对用户的透明,需要基于当前已有的创建表语法进行改造,主要进一步增强列的option信息;完成密态等值查询:为了完成密态等值查询需要在客户端和服务端完成配合设计。

其中在客户端需要设计轻量级的解析模块,完成对查询语句的解析,定义密态等值查询所支持的规格。

在客户端解析模块,需要识别所有涉及的属性是否包含加密列信息,如果不涉及则直接返回并将查询发送到服务端,如果涉及加密列,则需要按照对应的列加密密钥和加密算法加密参数信息,然后发送查询任务到服务端。

在服务端,需要在优化器和执行器的各个执行逻辑过程中完成功能适配,特别的,数据在经过加密后,存储的数据类型发生变更,在服务端需要根据新的存储类型进行查询任务执行。

标签:加密,等值,GaussDB,查询,密态,密钥,服务端,客户端
From: https://www.cnblogs.com/xiaoxu0211/p/18635277

相关文章

  • GaussDB 数据导入导出工具介绍
    一、数据导入导出场景划分gsql工具适用场景和使用方法适用场景文本格式对象定义的创建使用方法gsql-ddb1-p16000-Uu1-WHuawei@123-f/data/table.sql示例:ALTERSESSIONSETCURRENT_SCHEMA=PUBLIC;ALTERTABLE"PUBLC".GA_COM_COLLECTION_ERROR_TABLEMODIF......
  • GaussDB 关键架构目标
    GaussDB在架构设计上,采用组件化原则,分为GaussDBKernel内核和GaussDBKernelOM两部分。在产品形态上,提供面向云数据库服务GaussDB的分布式安装包和集中式安装包,提供面向本地化安装的小型化安装包。根据华为云提供的调查报告,当前全球数据库市场增长超预期,云是数据库增长最重要驱动......
  • GaussDB SQL查询语句执行过程解析
    ​前沿SQL于关系型数据库而言,重要性不言而喻。就像一个乐团的指挥,指导着作品的正确演绎和节奏的和谐统一。华为云GaussDB作为新一代关系型分布式数据库,具备卓越的技术性能和行业竞争力。很多人对GaussDB的关键技术很好奇:GaussDBSQL语句到底是如何执行的?GaussDBSQL引擎原理是......
  • GaussDB OM运维管理关键技术方案
    GaussDBKernelV5OM运维管理关键模块如下。OM运维主要功能有:安装升级节点替换扩容、缩容自动告警巡检备份恢复、容灾日志分析系统在华为云的部署模式下,OM相关组件部署示意图如下:图7华为云OM运维管理用户登录华为云Console,访问GaussDBKernelV5的管控页面,输入想要的运维操......
  • GaussDB数据库中逻辑对象关系简析
    初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深理解。1、GaussDB数据库逻辑对象1.1表空间、Databas......
  • GaussDB数据库的备份与恢复
    ​1.逻辑备份-gs_dumpgs_dump是一款用于导出数据库相关信息的工具,支持导出完整一致的数据库对象(数据库、模式、表、视图等)数据,同时不影响用户对数据库的正常访问。备份sql语句gs_dump是openGauss用于导出数据库相关信息的工具,用户可以自定义导出一个数据库或其中的对象(模式......
  • GaussDB云数据库SQL应用系列-定时任务管理
    ​前言GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。一、GaussDB数据库定时任务介绍GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封......
  • GaussDB内存过载分析
    问题现象数据库进程内存占比较高长时间占比较高观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高数据库进程在没有业务执行时,内存使用持续处于较低的状态,当有业务执行时,内......
  • GaussDB分区表查询性能异常分析
    问题现象使用分区表进行相关查询业务,SQL性能慢。原因分析导致分区表业务慢的常见原因有以下几种:分区索引失效,顺序扫描导致的SQL性能慢分区表无法进行分区剪枝导致的SQL性能慢SQL计划选择非最优导致的SQL性能慢处理方法判断是否存在索引异常的行为部分分区DDL如果不带UP......
  • GaussDB SQL调优:建立合适的索引
    ​背景GaussDB是华为公司倾力打造的自研企业级分布式关系型数据库,该产品具备企业级复杂事务混合负载能力,同时支持优异的分布式事务,同城跨AZ部署,数据0丢失,支持1000+扩展能力,PB级海量存储等企业级数据库特性。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关......