伴随大数据、云计算以及人工智能等IT技术的飞速发展,数据库被广泛应用于各个行业。面对严峻的网络安全形势,数据库安全问题日益突显。保序加密是一种提供数据加密同时实现密文大小比较、范围查询的技术,能够在实现数据安全的同时,保障数据库查询、比较等业务应用,对于数据库安全有着极高的应用价值。对数据安全形势和保序加密需求进行分析,对比研究保序加密技术,提出了不同场景下适用的保序加密方案,给出了数据库保序加密应用建议,可为数据库安全提供技术支撑。
内容目录:
0 引 言
1 现状及需求
1.1 数据安全形势严峻
1.2 数据库安全及保序加密需求
2 保序加密技术研究
2.1 技术概览
2.2 无索引保序加密
2.3 有索引保序加密
2.3.1 基于分桶思想构建索引
2.3.2 基于噪声思想构建索引
2.3.3 基于二叉树构建索引
2.4 揭序加密技术
2.5 对比总结
3 数据库保序加密方案
3.1 数据库保序加密基本要求及方案概览
3.2 端到端保序加密方案
3.3 代理网关保序加密方案
3.4 库内保序加密方案
3.5 云服务保序加密方案
4 结 语
# 0 引 言
数据库技术是一门信息管理自动化学科的基础课程,在经历了半个世纪的发展后已经成为计算机科学的重要分支,被广泛应用于人们的日常生活。数据库的核心任务是数据资产的管理,包括数据的分类、组织、编码、储存、检索和维护。在数据信息爆发式增长的今天,数据库承担了越来越多的数据处理与分析职责,以数据赋能的形式不断促进应用创新,助力数字化发展进程。
然而,复杂的网络环境使得网络攻击无处不在,数据库面临着外部攻击、内部泄密等安全问题。数据库安全事件不断发生,安全形势严峻。数据库加密技术从底层加密数据资产,能够有效应对盗库攻击、信息泄露等安全风险,实现数据存储保护和隐私安全防护,被越来越多集成应用。然而,加密后的数据失去了运算的灵活性,对数据库范围查询、搜索等功能而言,安全能力和数据使用存在悖论,因此亟需一种提供数据库加密且可以支持数据查询、比较的技术。数据库保序加密正是在这样的场景下被提出的。本文研究数据安全背景,提出数据库保序加密需求,对比分析保序加密技术,提出了不同场景下的数据库保序加密方案,以期为数据库保序加密的实践提供思路。
# 1 现状及需求
1.1 数据安全形势严峻
数据开启了智能时代的大门。近年来,全球数据规模飞速发展。据IDC报道,到2025年全球数据将突破48.6 ZB,中国将占27.8%。可见,我国无疑将成为全球数据巨头。2020年中共中央、国务院印发《关于构建更加完善的要素市场化配置体制机制的意见》,首次将数据与土地、劳动力、资本、技术并列为5大要素。数据作为信息化高速发展的“石油”,将会发挥越来越大的经济价值和社会价值。
伴随数据的快速增长,数据安全问题日益严峻。全球各地深受数据泄露事件的困扰,仅2019年全球信息泄露高达79.96亿条。为应对数据安全形势,各国纷纷顶层立法,不断推行数据安全政策,加强数据安全的顶层引领。在国外,无论是欧盟的通用数据保护条例(General Data Protection Regulation,GDPR)、巴西的全面隐私法(Le Geral deProteçãode Dados,LGPD),还是美国的加州消费者隐私法(California Consumer Privacy Act,CCPA),无不显示出各国实现数据安全的决心。我国一直在推动数据安全立法进程,先后出台了《网络安全法》《密码法》《数据安全法(草案)》《个人信息保护法(草案)》等,逐渐完善数据安全法律体系,以全面指导和规范数据安全建设。
1.2 数据库安全及保序加密需求
数据库作为数据资产的重要管理平台,其安全性尤为重要。数据库安全是体系化工程,涉及数据库脱敏、数据库加密、数据库审计、数据库漏洞扫描以及数据库态势感知等。在进行数据库安全防护时,往往需根据具体需求进行组合式建设,以保障数据库系统安全。在数据库安全技术簇中,数据库加密是数据库安全的最后一道防线,能够从根本上杜绝数据盗库、内部泄密等安全事件。
数据库的加密确保安全的同时,也限制了数据库的可用性。通常,敏感数据一旦加密,便很难在密文状态下进行高效的比较和查询,而很多敏感数据(如个人收入、成绩分数、订单金额等)往往有范围查询、匹配搜索等需求。对加密数据进行比较、范围查询,一般有3种方法。第1种方法是在数据访问时将敏感数据全部解密,基于明文状态下的敏感数据进行查询和搜索。第2种为采用同态加密技术,直接在密文上进行计算和比较。第3种为采用保序加密(Order Preserving Encryption,OPE)技术,基于密文或索引进行排序比较,实现加密的同时保证安全。第1种方法存在极大的效率问题,且安全性较低,可应用性较差。第2种方法涉及全同态加密,技术不成熟,还无法正式商用。第3种方法综合考虑了安全性和效率成本,是一种可行方案。本文将重点讨论保序加密在数据库中的应用。
# 2 保序加密技术研究
2.1 技术概览
保序加密的概念由Agrawal等人于2004年首次提出。保序加密是一种密码保持明文顺序的加密方案,即如果明文a和b满足a<b,那么经过加密后的密文
和
也满足
。
保序加密技术分为无索引保序加密、有索引保序加密和揭序加密3类。
2.2 无索引保序加密
无索引保序加密技术指的是对明文数据进行建模、平铺以及镜像等,直接由明文数据得到密文数据,使得加密密文直接保留原有明文顺序。
图1为一种无索引保序加密的映射方法,横坐标是明文域,纵坐标是密文域,密文域要比明文域大。将明文在保证顺序的情况下,随机映射到密文域中。在二维坐标系中,这些点的连线是一个单调递增的函数。此类技术需要寻找新的数学方法构建方案,且此类方法的安全性均稍显不足。

图1 无索引保序加密明密文映射
2.3 有索引保序加密
有索引结构的思想来源于可搜索加密。数据拥有者在上传加密数据到云服务器时建立一个索引结构,便于服务器在密文下进行检索。因此,在构建带索引的保序加密方案中,对明文数据采用传统的加密方法(SM4、AES等)进行加密,在加密数据的同时建立一个保序索引,用来在密文状态下对数据进行范围查询。目前的索引构建方法主要有3类。
2.3.1 基于分桶思想构建索引
如图2所示,基于分桶思想构建索引的方法将数据的取值空间随机分为若干段,每段即为一个桶。对每个桶进行标号,每一个标号就为一个关键词,每个数据所在桶号就是本数据对应的关键词,即其索引号。

图2 桶划分思想
桶划分技术在查询时会引入冗余。不属于查询区间的数据也可能包含查询的值,从而被作为检索结果返回,造成通信量和计算量的浪费。F假设桶划分为
,需查询的值
,根据桶划分思想系统会返回
两个桶对应的所有数据。
2.3.2 基于噪声思想构建索引
基于噪声的基本思想为函数隐藏和增加噪声。常见的线性索引结构和非线性索引结构分别为:

式中:a、b需要保密;noise是满足索引保序的随机数;x 是明文数据。该方案能够保证索引的大小顺序对应明文的大小顺序,同时相同明文能够映射到不同索引,范围检索时非常迅速。然而,该类方案在遭受复制文本攻击时,noise范围容易被猜测,同时大量的已知明文攻击会穷举得到密钥a和密钥b。
2.3.3 基于二叉树构建索引
基于二叉树构建的保序加密方案也称保序编码(mutable Order Preserving Encoding,mOPE)。mOPE是一种除顺序信息以外,不会泄漏任何其他明文信息的保序加密方案,核心思想是利用平衡二叉搜索树的结构对密文数据进行编码。
图3给出了mOPE数据结构和编码思想。从根节点开始记录每个节点的路径,再根据路径对二叉搜索树的每个节点进行二进制编码。密文数据存储在不可信的数据库中。当可信的客户端向其中插入新的数据时,通过一个交互方案获得新数据的插入位置,计算编码并加密数据,再插入到数据库中。新数据的插入有一定概率会破坏原平衡二叉搜索树的平衡性,所以新二叉搜索树需要重新调整,以保证平衡二叉搜索树的平衡性。

图3 mOPE数据结构概览
2.4 揭序加密技术
基于保序加密的揭序加密方案(Order Revealing Encryption,ORE)是一种新型适用于范围查询的加密方案。揭序加密中的加密密文含有比较标签,以帮助比较者判断密文对应明文大小。
揭序加密
包括以下4个算法:
(1)
。以安全参数
为输入,输出密钥
。
(2)
。以加密密钥
和消息
为输入,加密算法将消息
加密为密文
。
(3)
。以加密密钥
和密文
为输入,解密算法将密文
解密为明文
。
(4)
。以两个密文
和
为输入,比较算法输出比较结果
。
揭序加密是最接近同态加密的技术方案,可以直接在密文上进行大小比较运算,且加密强度达到了密码学安全。目前,揭序加密主要通过双线性映射或者伪随机函数构造。双线性映射方案能达到理想安全性,但是运算开销过大,实用性较差。伪随机函数具备较高的检索效率,但是将泄露部分比特信息。此外,揭序加密方案会存在明显的密文扩张现象,在应用时受到了一定限制。
2.5 对比总结
表1从优势、劣势、安全强度、可用性等维度分析了不同保序加密技术的区别。一般而言,无索引保序加密和基于桶的保序加密安全强度较低,不推荐使用;基于噪声的保序加密可以应用于安全性要求中等的场景;基于树的保序加密可以应用于安全要求高且对通信交互不敏感的场景;揭序加密可以应用于安全要求高且对存储空间不敏感的场景。
表1 保序加密技术比较

# 3 数据库保序加密方案
3.1 数据库保序加密基本要求及方案概览
数据库敏感字段的加密保护及密文查询是保序加密的主要应用场景。图4描述了数据库保序加密的表结构及查询索引。

图4 数据库保序加密表结构
数据库保序加密的基本要求主要涵盖如下要点。
(1)数据模型。加密数据往往为数据表中的一列(维)敏感字段,如年龄、收入、成绩等。数据类型一般为整数、浮点数。对于字符串数据类型,往往需要编码预处理。同一个表中的多列字段或者不同表中的不同列字段的联合保序加密技术并不成熟,不属于本文讨论范围。
(2)加密模型。将明文数据加密为密文结果的过程应符合密码学安全定义,建议采用分组密码、双线性映射、伪随机函数等高安全密码技术,不建议采用一些自定义的数学方法,如简单的模运算、四则运算、混淆等。
(3)索引模型。如图4所示,通常涵盖3种索引模式。第1种为将原数据库引擎索引文件改造为保序索引文件。基于待加密数据列的明文信息构建明文索引,然后将明文索引中的数据域进行加密,保留大小顺序,最后对索引文件进行加密。检索时,数据库引擎解密索引文件,并将查询条件与索引中的密文数据域进行比较,实现查询。第2种为在原数据库表格中增加一列,存储索引值,查询时基于该索引值进行快速比较。第3种为直接在密文列上进行比较查询。
(4)用户模型。在真实的数据库场景中,应当满足授权用户均可以进行数据库操作,即满足多用户模型。多用户可以通过安全授权的方式共享同一密钥。研究指出,多用户多密钥模型具备更高的安全性,但相关研究还处于理论阶段。
图5总结了数据库加密的7种方式。方式1和方式2为应用层加密,通过用户侧改造应用或者增加加密代理的方式实现信源加密。方式3为网关代理加密,以代理的方式进行加密、解密、索引、SQL改写等操作,以达到对用户透明、不(少量)改造数据库服务端的目的。方式4、方式5和方式6为服务器侧加密。其中,方式4的应用案例较多,数据库安全厂商纷纷通过“试图”+“触发器”+“索引接口”+“密码调用”的方式部署服务器侧透明加密插件,在数据库引擎内部实现透明加密。方式5和方式6为操作系统和硬件级加密,往往针对数据库全盘加密,无法满足保序加密需求。方式7为云服务的方式为数据库提供加密服务,多见于云数据库场景。

图5 数据库加密场景
表2对上述7种加密方式是否支持数据库保序加密场景给出了适用性建议。方式1和应用深度绑定,不推荐在实际场景中应用。方式5和方式6的加密技术无法识别数据类型,从而无法实现保序加密功能,不适用于数据库保序加密场景。方式2、方式3、方式4和方式7均能从不同维度实现保序加密功能。
表2 数据库保序加密场景推荐

3.2 端到端保序加密方案
学术研究中的保序加密方案几乎都是端到端的,其安全性假设建立于不可信服务器,即假设数据库服务器是不可信的,服务器不能知晓数据明文、密钥,或者不能推导出明文和密钥信息。
场景模型由数据拥有者、服务器和数据使用者组成,如图6所示。

图6 端到端保序加密方案
数据拥有者在本地将数据加密,同时构建索引,将加密数据和索引一起发给数据库服务器,然后服务器存储加密数据和索引。
当数据使用者获取授权后,将需查询的范围的密文发给服务端。服务端根据密文对应的索引进行查询,将查询结果返回给数据使用者。数据使用者通过解密可使用数据。
整个过程中,数据通过加密的方式传送、存储,服务端得不到任何明文信息,安全性较高。
3.3 代理网关保序加密方案
部分数据库厂商以旁路、串联等方式在数据库和用户之间构建代理网关,实现保序加密的同时,不对用户及数据库做任何改造,对于存量数据库的保序加密应用具有现实意义。
场景模型由用户、代理网关和数据库服务器组成,如图7所示。

图7 代理网关模型
用户通过安全通道将明文SQL发送给代理网关,代理网关调用数据加密、索引构建等接口并改写SQL语句,将明文SQL转化为带密钥及索引关系的SQL。比如,创建数据表语句“create Table T1(ID xx,C1 xx,C2 xx)”将被改写为“create Table T1(ID xx,C1 xx,EC2 xx,Idx2 xx)”;插入语句“insert into T1 values(4,DD,33)”将被改写为“insert into T1 values(4,DD,Enc(33),Index(33))”;查询语句“select C1,C2 from T1 where C2<5”将被改为“select C1,EC2 from T1 where Index(C2)<Index(5)”。代理网关调用数据库接口向数据库传递改写后的查询语句,数据库服务器处理请求后向代理网关返回结果,如果结果中含有加密字段,返回对应的密文。代理网关解密后将SQL结果返回给用户。
3.4 库内保序加密方案
将数据库加密功能以透明插件的形式与数据库引擎连接,在数据库进行读、写操作时进行数据的加密、解密、索引的构建、查询,形成后端一体化的加密数据库,已经成为越来越多数据库安全厂商的选择。此种方式保证数据在落盘存储时即进行透明的保序加密,不对用户进行改造。与通过多重视图、触发器等机制相比,用户体验和访问明文数据库一样,能够达到较好的应用效果。
图8给出了数据库内保序加密的实现方案。用户使用安全通道将原始数据发送给数据库引擎模块。数据库引擎模块调用用户自定义函数模块UDF实现索引生成和查询比较,同时数据库引擎模块调用加密模块实现数据的加解密,最后数据库引擎模块向数据库存储模块进行数据的读写操作。

图8 库内保序加密方案
3.5 云服务保序加密方案
随着大数据、云计算等信息技术的飞速发展,云数据库逐渐成为主流。基于服务化思想,在云平台中构建保序加密密码服务。云数据库通过服务调用的方式实现敏感数据的加密及密文查询。
图9给出了云服务保序加密方案的一般性框架,用户使用安全通道将原始数据发送给云数据库,云数据库调用保序加密服务,实现数据的保序加密存储、查询等功能。

图9 云服务保序加密方案
# 4 结 语
本文面向数据库安全场景进行保序加密研究,分析数据库安全需求及保序加密需求,在对比现有保序加密技术的基础上总结不同技术的适用性,提出数据库保序加密应用方案框架,并给出4种典型场景下的保序加密方案。本文提出的研究成果具备体系化、场景化以及可扩展等优点,具有较高的实用性,能够为后续研究及工程实践提供参考。
《信息安全与通信保密》杂志投稿
联系电话:13391516229(微信同号)
邮箱:xxaqtgxt@163.com




