徐 峰,刘万锁
(空军工程大学航空机务士官学校 维修管理工程系, 河南 信阳 464000)
随着云计算、移动计算等技术的普及与广泛应用,一对多乃至多对多的通信方式日渐成为互联网通信技术的应用中的典型模式。此前,Dan Boneh[1]提出关键字检索的公钥加密方案(PKEKS) 。D.J.Park[2][3]提出多关键字可检索的公钥加密方案(PKEMKS)。Waters,Baek,徐群群等学者[4]-[11]在这领域做出了许多创新性的工作。
本文将主要研究关键字安全的可检索加密技术,为其引入多用户相关的特性和功能。这种技术命名为关键字安全的多用户可检索加密技术(Searchable Encryption Based on Safe Keywords with Multi-Client,简称 SESKM)。
关键字安全可检索加密技术(SEBSK)旨在解决现有的PKEKS中潜在的关键字猜测攻击的问题。具体的解决方法是通过添加一个可信的安全中心,并在安全中心生成可信参数与私钥、公钥一起参数与加密解密过程中的方式,帮助系统在信息加密和生成检索参数的过程中提高安全性。这种方法在一对一传输的应用情境下当然是简单有效的。如果要将这种方式直接使用到存在多个用户的系统中,随着用户的加入或者离开,对可信参数与私钥、公钥的管理就会成为一件很困难的事情,一旦可信参数θ与私钥、公钥泄露,系统的安全性就无法保证。
针对上述问题,对SEBSK进行了改进,为其引入了多用户的特性,为加密系统中的每个用户都生成独有的可信参数θ,并利用安全中心对参数进行动态、实时的管理。
SESKM的根本思想在于引入独立的安全中心,安全中心可以检测整个系统中用户的加入和离开的情况。通过这些用户的为每个用户生成一个不同的可信参数θID,安全中心也会根据用户的加入和离开的情况,实时的对这些可信参数ID进行更新。
SESKM方案中遇到的符号、公式如下:
定义 1:
函数fx=fθ(x)基本功能是将参数x转换为一个定长的随机串fx.
定义 2:
函数fx=Fθ(x)是一个随机函数,θ是随机函数的密钥。
定义 3:
函数hx=H(k,x)是HMAC函数,以k作为密钥。
定义4:
函数r=R(n)是随机函数,长度为n.
定义5:
函数emsg=EK(msg)是加密函数,秘钥为k.
定义6:
函数θx=S(x)输出一个正整数。
SESKM方案主要包括以下算法:
(1)加密密钥的生成——KeyGen.
(2)密文信息的生成——Enc.
(3)检索参数的生成——TwGen.
(4)参数与密文的匹配——Comp.
(5)可信参数与密文关键字的更新——TwUpdate.
在系统初始化之时,安全中心将获取每个用户的标识符i,并按照以下步骤进行处理:
3.2.1 使用函数θx=S(x)对用户的标识符进行计算,生成对应的可信参数θi,并将计算出的所有可信参数保存为一个数组,记为[θ0,θ1,…,θi]:
θi=S(x)=S(i)
(1)
3.2.2 安全中心随机选择Kpri作为系统的私钥,利用本根g,生成公钥Kpub:
Kpub=gKprimodpKpub=gKprimodp
(2)
其中p是安全的素数。可信参数θi生成后,将其发送至对应的客户端;可信参数数组[θ0,θ1,…,θi]生成后,保存在安全中心。
Enc算法主要步骤如下:
3.3.1 利用Kpub对消息msg进行加密:
emsg=EK(msg)=EKpub(msg)
(3)
3.3.2 计算关键字w的消息认证码hw:
hw=H(k,x)=H(Kpub,w)
(4)
3.3.3 发送端向安全中心申请可信参数数组[θ0,θ1,…,θi],对每一个θi,为关键字的hw进行随机化:
fhi=fθ(x)=fθi(hw)
(5)
3.3.4 利用函数r=R(n)生成n-m位随机串rm-n。利用函数Fx=Fθ(x)生成Fhi,其中m=|Fji|:
Fhi=Fθ(x)=Fθi(fhi
(6)
3.3.5 令Ti=
CTi=Ti⊕emsg
(7)
将密文信息emsg与密文关键字CTi的集合[CT0,CT1,…,CTi]一起传输至服务器。
利用emsg与[CT0,CT1,…,CTi],使用其对应的可信参数θi、私钥Kpri、公钥Kpub生成检索参数:
3.4.1 计算关键字w的认证码:
hw=H(k,x)=H(Kpub,w)
(8)
3.4.2 利用θi和hw生成随机串fhi:
fhi=fθ(x)=fθi(hw)
(9)
3.4.3 计算检索参数Twi:
Twi=
(10)
将检索参数Twi发送至服务器进行检索。
服务器接收到检索请求,执行Comp算法:
x=|hw⊕CTi|n-m
y=|hw⊕CTi|m
Fx=Fθ(x)
foreach([CT0,CT1,…,CTi])
{if(y==Fx)
returnCTi
}
return “检索失败!”
在实际工程中,系统需要支持新用户加入和老用户离开。这两种情况涉及到前向安全性(Forward Security)和后向安全性(Backward Security)。
3.6.1 前向安全性
现有一个用户User1是系统中的一个合法的用户,其具备可信参数θi、私钥Kpri、公钥Kpub等信息。假设用户User1因为某种原因,需要离开该系统。系统中的可信的安全中心应该得到实时的通知,并获取用户User1的用户标识符i=1.安全中心应找到可信参数数组[θ0,θ1,…,θi]中对应的可信参数θ1,并将可信参数θ1从可信参数数组[θ0,θ1,…,θi]中移除,即可信参数θ1不再是系统中的一个有效的可信参数。同时,安全中心会通过可信参数θ1、私钥Kpri、公钥Kpub,使用TwGen算法,为关键字w生成Tw1=
3.6.2 后向安全性
假设用户User2因为某种原因,现在需要加入该系统。系统中可信参数数组[θ0,θ1,θ3,…,θi]中并不包括用户User2的用户标识符i=2所对应的可信参数θ2,用户User2就无法生成有效的检索参数Tw1=
在用户User2加入系统时,安全中心获取用户User2的用户标识符i=2。安全中心应该Enc算法通过用户标识符i=2生成对应的可信参数θ2,并将θ2加入到可信参数组[θ0,θ1,…,θi]中,即θ2将会成为系统中一个有效的可信参数。安全中心会通过可信参数θ2、私钥Kpri、公钥Kpub以及在更新前系统中已有的可信参数,使用检索参数的生成方法,针对目标关键字w生成对应的检索参数:
Tw1=
服务器端存放的是密文信息,服务器无法恢复出任何明文信息。检索参数Twi与密文关键字CTi也是加密的,在没有安全参数θi的情况下,服务器无法获取任何检索请求信息。系统的机密性得到保证。
本文提出的SESKM方案在服务器端保存密文信息,对关键字也是加密存放的,在空间开销上主要依赖所选择的加密算法,与同类方案在空间性能上是一致的。
本文的SESKM方案在进行密文检索时主要进行:哈希运算,随机函数运算,取子串运算,异或运算。对于m个用户的n条密文信息的密文查询,一次密文查询主要有:n×m+5次哈希运算、3次随机函数运算,2次取子串运算,1次异或运算。
本文分析了常见的SEBSK方案,为其引入多用户相关的特性和功能。使得这种原本仅可以一对一传输的信息加密技术方案,扩展到多用户的系统中。整个系统中任意一个客户端都可以向服务器端传输系统中所有客户端都可以检索和解密的信息。针对SESKM方案中存在的前向安全性和后向安全性问题进行了讨论。最后分析了本文中提出的方案的安全和性能表现。