XDP Secure Computing Engine(XSCE)V2.5版本更新,实现高效的密文关键字和范围查询
2023-03-20
最近,翼方健数发布了XDP Secure Computing Engine(XSCE)V2.5版本,支持高效的密文关键字和范围查询功能。查询方的查询条件和存储在服务器端的数据都是密文形式,执行查询操作的服务器无法得知明文形式的查询条件和数据,保证数据的安全性。
- 基本介绍 -
数据查询是数据共享和使用时的基本需求,其中关键字查询和范围查询是最常见的查询方式。数据拥有者为了对自己数据进行隐私保护,会对数据进行加密后再存储到服务器端,同时还要能支持查询功能。这类加密算法需要进行特殊的设计,称为可搜索加密。
图1 密文查询(可搜索加密)
XSCE于2023年3月份发布的V2.5版本支持密文形式的关键字和范围查询功能。查询者将查询条件加密后发送给数据存储服务器,服务器根据查询条件搜索满足条件的数据,然后将密文结果返回给查询方。查询方解密得到明文结果。查询中,服务器无法获知查询方的查询条件,也无法解密命中的数据(可以支持命中数据的统计功能,如满足条件的数据个数)。
图2 关键字和范围查询(支持联合查询)
- 实现原理 -
1、关键字查询包含三个算法:
(1)关键字加密算法kwEncrypt:基于HMAC算法进行设计,输入为关键字kwi,关键字所在行序号index以及密钥key,输出为定长的密文值Ci。这里引入了index保证即使对于相同的关键字,不同位置的密文值也不相同,从而抵抗密文的统计分析。
(2)待查询关键字陷门生成算法trapGen:对明文的待查询关键字kw,计算其密文查询条件(查询陷门)trap=HMAC(kw, key) .
(3)查询比对算法compare:输入数据密文值Ci,所在行序号index以及查询陷门trap,算法输出1表示该行数据的关键字匹配,返回对应的个人信息密文(返回什么数据可根据实际决定,这里仅以个人信息列作为示例)。输出0表示关键字不匹配,返回空数据。
2、范围查询包含三个算法:
(1)数据加密算法OreEncrypt:输入整数或浮点数m, 加密密钥encKey,混淆密钥mixKey,数据行序号index,输出密文cipher。算法基于揭序加密技术(ORE)进行设计,密文能通过一个比较函数进行大小比较(密文大小关系对应明文的大小关系)
cipher= OreEncrypt(m, encKey, mixKey, index);
(2)范围查询陷门生成算法trapGen:输入查询的起点start、查询的终点end,加密密钥encKey,输出陷门trap.
trap=trapGen(start, end, encKey);
(3)密文的范围查询(比较)算法rangeQuery:输入陷门trap,混淆密钥mixKey,密文cipher和序号index,输出比对结果True或False,True表示该行的数据处于查询范围,False表示不在查询范围。
True?False=rangeQuery(trap, mixKey, cipher, index).
三、算法优势
(1)高效查询:关键字查询基于HMAC和哈希算法设计,范围查询基于不可逆编码的揭序加密设计,算法效率高(实测在普通计算机2G主频,单线程设置下关键字查询比对达到每秒100万次以上,范围查询比对达到80万次以上)。
(2)数据易扩展:支持数据的灵活扩展(关键字扩展,数据行扩展)。
(3)查询并行化:查询比对算法只与index位置上的密文有关,可以并行化处理比对。
(4)范围查询支持浮点数以及正负数混合的密文比较,适合实际场景。