精卫填海——大数据安全与隐私保护

第一章 绪论

(一)课程内容

1 大数据安全

  1. 如何在满足可用性的前提下实现大数据机密性
    安全与效率之间的平衡一直信息安全领域关注的重要问题。在大数据场景下,数据的高速流动特性以及操作多样性使得数据的安全与效率之间的矛盾更加突出。
  2. 如何实现大数据的安全共享
    在大数据访问控制中,用户难以信赖服务商正确实施访问控制策略,且在大数据应用中实现用户角色与权限划分更为困难。
  3. 如何实现大数据真实性验证可信溯源
    当一定数量的虚假信息混杂在真实信息之中时,往往容易导致人们误判。(例如:点评网站上的虚假评论)最终影响数据分析结果的准确性。需要基于数据的来源真实性、传播途径、加工处理过程等,了解各项数据可信度,防止分析得出无意义或者错误的结果。

2 大数据隐私保护

  1. 由于去匿名化技术的发展,实现身份匿名越来越困难
    仅数据发布时做简单的去标识处理已经无法保证用户隐私安全,通过链接不同数据源的信息,攻击者可能发起身份重识别攻击逆向分析出匿名用户的真实身份,导致用户的身份隐私泄露。
  2. 基于大数据对人们状态和行为的预测带来隐私泄露威胁
    随着深度学习等人工智能技术快速发展,通过对用户行为建模与分析,个人行为规律可以被更为准确的预测与识别,刻意隐藏的敏感属性可以被推测出来。

3 区别与联系@

  • 大数据安全需求更为广泛,关注的目标不仅包括数据机密性,还包括数据完整性、真实性、不可否认性,以及平台安全、数据权属判定等。
    而隐私保护需求一般仅聚焦于匿名性
  • 虽然隐私保护中的数据匿名需求与安全需求之一的机密性需求看上去比较类似,但后者显然严格得多。
    • 匿名性仅防止攻击者将已公布的信息与现实中的用户联系起来,
    • 机密性则要求数据对于非授权用户完全不可访问。
  • 在大数据安全问题下,一般来说数据对象是有明确定义
    而在涉及隐私保护需求时,所指的用户“隐私”则较为笼统,可能具有多种数据形态存在。
大数据安全 隐私保护
数据机密性、数据完整性、真实性、不可否认性,以及平台安全,数据权属判定 匿名性
安全需求的机密性:要求数据对于非授权用户完全不可访问 数据匿名需求:防止攻击者将已公布的信息与现实中的用户联系起来
数据对象是有明确定义 所指的用户“隐私”则较为笼统,可能具有多种数据形态存在

(二)基本知识:基本密码学

1 安全需求

  • 机密性(Confidentiality):信息不泄露给非授权的用户
    例:访问系统的BLP模型、泄密
  • 完整性(Integrity):信息不被非法修改
    例:访问系统的Biba模型修改内容
  • 可用性(Availability):信息系统能正确和及时地为合法用户提供服务的能力
    例:dos/ddos攻击、流量分析
  • 可鉴别性(Authentication):接收者能鉴别和识别信息的来源
    例:破坏数据包收到的先后顺序、冒名顶替
  • 抗抵赖性(Non-repudiation):生产信息的人不能事后否认该生产
    例:不承认发送过某个文件

2 加密技术

(1) 相关定义

传统加密技术的主要目标是保护数据的机密性

一个加密算法被定义为一对数据变换,其中一个变换应用于数据的起源项,称为明文;所产生的相应数据项称为密文。这个变换称为加密变换。而另一个变换应用于密文,恢复出明文,称为解密变换

  • 加密变换;密文=加密变换(明文,加密密钥)
  • 解密变换;明文=解密变换(密文,解密密钥)
    精卫填海——大数据安全与隐私保护_第1张图片

明文和密钥通常都可以用比特串的形式存储;但密文较长,密钥较短。

(2) 对称加密技术

加密和解密密钥相同,或可以互相推导。就像需要用钥匙才能锁上的门锁。
精卫填海——大数据安全与隐私保护_第2张图片
具备机密性、可鉴别性、完整性;不保证抗抵赖性

机密性:
精卫填海——大数据安全与隐私保护_第3张图片
可鉴别性:
精卫填海——大数据安全与隐私保护_第4张图片
完整性:
精卫填海——大数据安全与隐私保护_第5张图片
抗抵赖性:
由于数字世界中,复制件和原件是无法区分的,因此加密者和解密者对密文有相同的生产能力。

(3) 非对称加密技术(公钥加密)

采用两个不同的密钥将加密和解密功能分开。

  • 一个密钥称为私钥,像对称密码中一样,该密钥被秘密保存。
  • 另一个密钥称为公钥,不需要保密。

公钥密码必须具有如下重要特性:给定公钥,要确定出私钥在计算上是不可行的。就像常见的门,锁门很容易,但开门需要钥匙
精卫填海——大数据安全与隐私保护_第6张图片

非对称加密技术的六要素

  1. 明文
  2. 密文
  3. 公开密钥(记作PU或KU)Public Key
  4. 私有密钥(记作PR或KR)Private Key
  5. 加密算法
  6. 解密算法

Tip:

  • 接收方B容易通过计算产生一对密钥(公开密钥 K U b KU_b KUb,私有密钥 K R b KR_b KRb
  • 发送方A容易计算产生密文 C = E K U b ( M ) C=E_{KU_b} (M) C=EKUb(M)
  • 接收方B容易通过计算解密密文 M = D K R b ( C ) = D K R b [ E K U b ( M ) ] M=D_{KR_b}(C)=D_{KR_b}[E_{KU_b}(M)] M=DKRb(C)=DKRb[EKUb(M)]
  • 敌对方即使知道公开密钥 K U b {KU}_b KUb,要确定私有密钥 K R b {KR}_b KRb在计算上不可行
    敌对方即使知道公开密钥 K U b KU_b KUb和密文 C C C,要计算明文 M M M在计算上不可行
  • 密钥对互相之间可交换使用
    M = D K R b [ E K U b ( M ) ] = D K U b [ E K R b ( M ) ] M=D_{KR_b}[E_{KU_b}(M)]=D_{KU_b} [E_{KR_b}(M)] M=DKRb[EKUb(M)]=DKUb[EKRb(M)]
对比
项目 对称加密技术 非对称加密技术
特征 双方信息对等 双方信息不对等,根据公钥计算私钥是困难的
条件 实现密钥交换 不需要密钥交换
效果 保证机密性、可鉴别性、完整性;不保证抗抵赖性 保证机密性;不保证可鉴别性、抗抵赖性、完整性
缺点 / 解密加密效率低
密钥个数 n个人两两秘密通信需要 n(n-1)/2个密钥 n个人两两秘密通信需要n对密钥

(4) 混合加密技术@

为克服非对称加密技术的缺点——解密加密效率低
精卫填海——大数据安全与隐私保护_第7张图片
发送者A用对称密钥加密明文,用公钥加密对称密钥,接受者B用私钥解密对称密钥,用对称密钥解密密文得到信息。

  1. B将公钥传递给A;
  2. A用对称密钥对待传递的消息加密,并使用B的公钥加密该对称密钥
  3. A将对称加密后的消息和公钥加密后的对称密钥传给B;
  4. B用自己的私钥对加密后的对称密钥解密,得到对称密钥
  5. B用解密得到的对称密钥对加密后的消息解密,得到A传递来的消息。

3 数字签名技术

数字签名的目的是证明文件归签名者所有
精卫填海——大数据安全与隐私保护_第8张图片

  • 可鉴别性
    在不知道签名者私钥的情况下,任何其他人都不能伪造签名。因此前面可用于鉴别签名者。
  • 抗抵赖性
    签名者无法否认自己对消息对签名。
  • 完整性
    任何消息的更改都将导致签名无法通过验证。

精卫填海——大数据安全与隐私保护_第9张图片

非对称加密技术保证信息的机密性,数字签名保证可鉴别性、抗抵赖性、完整性

是否存在一种方法,同时满足四条性质
答:先私钥后公钥

精卫填海——大数据安全与隐私保护_第10张图片

4 Hash和MAC技术

(1)Hash函数

Hash函数(也称哈希函数)可将任意长的消息压缩为固定长度的Hash值,Hash函数需满足如下性质:

  • 单向性:从Hash值得到原消息是计算上不可行的
  • 抗碰撞性:找到两个不同的报文Hash值相同,是计算上不可行的。

可用于文件完整性检验,密码保存,软件下载等场景。

不使用密码,任何人都可以计算,因此不能避免恶意篡改。比如在流氓软件的场景中,可以通过同时修改软件和Hash的方式实现恶意篡改。
精卫填海——大数据安全与隐私保护_第11张图片

Hash通常和非对称密码技术配合实现数字签名,避免用私钥加密明文而导致的效率低下。保证完整性、可鉴别性、抗抵赖性

(2) MAC

MAC(Message Authentication Code,消息认证码/报文鉴别码)基于一个大尺寸数据生产一个小尺寸数据,在性能上也需要避免碰撞,但MAC算法有对称密钥参与,计算结果类似于一个加密的Hash值

保证可鉴别性和完整性,不能抗抵赖(因为使用了对称密钥)。

精卫填海——大数据安全与隐私保护_第12张图片

加密技术 机密性 可鉴别性 完整性 抗抵赖性
对称加密技术 ×
非对称加密技术 × × ×
Hash+非对称密码技术 -
MAC+对称加密技术 ×

5 密钥交换技术

精卫填海——大数据安全与隐私保护_第13张图片

首先假设双方分别是Alice和Bob,他们就一个随机的初始的颜色达成了一致。这个颜色不需要被保密,但是每一次要不一样。在这个例子中,这个初始的颜色是黄色。然后他们两个人每一个人选择一个秘密的颜色,Alice只知道Alice的颜色,其他任何人都不知道Alice选的是什么颜色,Bob同理。在这个例子中,Alice选择的是红色,Bob选择的是蓝绿色。这个过程的关键部分是Alice和Bob每个人将他们自己的秘密颜色和他们对方彼此共享的颜色(初始的颜色即黄色)混合在一起,导致了分别是orang-tan色,和浅蓝色。他们公开的将混合之后的颜色进行交换。最终,他们每一个人将他们从对方收到的颜色和他们自己的private color进行混合。这个结果就是最终的混合颜色。在这个例子中是黄褐色。这个颜色和对方的颜色是一致的。

如果某个第三方听到了这个交换,他就会知道公共的颜色(黄色)和第一个混合的颜色(orange-tan和浅蓝色),但是对这个第三方来说,确定最终的秘密颜色(黄褐色)在计算上是很困难的。事实上,当在使用大的数字而不是颜色时,这个行为需要大量的计算。这个行为即使是现代超极计算机都是不可能在一个合理的时间内完成的。

精卫填海——大数据安全与隐私保护_第14张图片

6 数字签名技术和非对称加密技术的混合使用 @

记Alice的公私钥对为 ( P U a , P R a ) (PU_a,PR_a) (PUa,PRa),Bob的公私钥对为 ( P U b , P R b ) (PU_b,PR_b) (PUb,PRb)

  1. Alice用自己的私钥对明文 M M M加密得到 E ( P R a , M ) E(PR_a,M) E(PRa,M),对明文进行签名;
  2. Alice再用Bob的公钥对签名后的消息加密,得到 E ( P U b , E ( P R a , M ) ) E(PU_b,E(PR_a,M)) E(PUb,E(PRa,M));
  3. Alice将 E ( P U b , E ( P R a , M ) ) E(PU_b,E(PR_a,M)) E(PUb,E(PRa,M))发送给Bob;
  4. Bob接收后,先用自己的私钥解密,得到 D ( P R b , E ( P U b , E ( P R a , M ) ) ) = E ( P R a , M ) D(PR_b,E(PU_b,E(PR_a,M)))=E(PR_a,M) D(PRb,E(PUb,E(PRa,M)))=E(PRa,M);
  5. 最后,Bob用Alice的公钥对解密后的消息 E ( P R a , M ) E(PR_a,M) E(PRa,M)进行解密运算,得到 D ( P U a , E ( P R a , M ) ) = M D(PU_a, E(PR_a,M))=M D(PUa,E(PRa,M))=M,以获取明文 M M M并验证签名。

第二章 安全存储与访问控制技术

背景:Unix系统的权限管理

Unix是一个多用户操作系统,需要保证许多用户同时访问操作系统服务,这就要求系统具有高度安全性和隐私性

Unix对每个用户分配唯一的用户号(UID),多个用户组成用户组,每个组分配一个组号(GID)
系统管理员可以将用户分到组中,用户也可以属于多个组,Unix中的每个进程具有拥有者的UID和GID。

文件的权限有三种,读(r)、写(w)和执行(x)。下面为Unix文件权限的示例:

符号表示 含义
rwx------ 仅拥有者可以读、写、执行
rwxr-xr-x 拥有者可以读、写、执行;其他用户可以读和执行
r-x—r-x 拥有者和其他用户可以读和执行,同组其他用户没有权限
rw-r----- 拥有者可以读写,同组其他用户可读

字符每组依次为所有者、同组其他用户、其他用户

(一)早期访问控制技术

1 几个基本概念@引用监控机、主体、客体、操作、访问权限

早期的访问控制技术都是建立在可信引用监控机基础上的。引用监控机是在1972年由Anderson首次提出的抽象概念,它能够对系统中的主体和客体之间的授权访问关系进行监控。当数据存储系统中存在一个所有用户都信任的引用监控机时,就可以由它来执行各种访问控制策略,以实现客体资源的受控共享。

访问控制策略是对系统中用户访问资源行为安全约束需求的具体描述。

引用监控机(Reference Monitor,RM):指系统中监控主体和客体之间授权访问关系的部件。
精卫填海——大数据安全与隐私保护_第15张图片
一般来说,这类访问控制技术都涉及如下的概念:

  • 主体:能够发起对资源的访问请求的主动实体,通常为系统的用户进程
  • 客体:能够被操作的实体,通常是各类系统数据资源
  • 操作:主体对客体的读、写等动作行为。
  • 访问权限:客体及对其的操作形成的二元组<操作,客体>

2 访问控制模型

访问控制模型的发展历史

在20世纪70年代,大型资源共享系统出现在政府和企业中。为了应对系统中的资源安全共享需求,访问控制矩阵等①自主访问控制模型和BLP、Biba等②强制访问控制模型被提出,并得到了广泛应用。

在20世纪80年代末到90年代初,人们发现在商业系统按照工作或职位来进行访问权限的管理更加方便。因此,③基于角色的访问控制模型被提出,并发展成为迄今为止在企业或组织中应用最为广泛的访问控制模型之一。

在21世纪初期,互联网技术使得用户对资源的访问处于开放环境。开放环境往往无法预先获得主客体身份的全集,且存在身份隐藏的需求。因此,④基于属性的访问控制被提出,它通过安全属性来管理授权,而不需要预先指导访问者身份。

(1)自主访问控制模型

客体的属主决定主体对客体的访问权限。可以被表述为 ( S , O , A ) (S,O,A) (S,O,A)三元组。其中, S S S表示主体(subject)集合, O O O表示客体(object)集合,且 S ⊂ O S⊂O SO A A A表示访问(Access)矩阵, A ( s i , o j ) A(s_i,o_j) A(si,oj)则表示主体 s i s_i si能够对客体 o j o_j oj执行的操作权限。
精卫填海——大数据安全与隐私保护_第16张图片
访问矩阵中的一行,代表某个主体对系统中所有客体的访问权限信息,一列代表所有主体某个客体的访问权限信息。

自主访问控制模型的实施由RM根据访问矩阵A进行判定,而数据的所有者对权限的管理通过修改访问矩阵A来实现。
精卫填海——大数据安全与隐私保护_第17张图片
访问矩阵A在实际系统中主要有两种实现方式:

  • 指定主体能力表(Capabilities List,CL)
    该表记录了每一个主体与一个权限集合的对应关系。权限集合中每个权限被表示为一个客体以及其上允许的操作集合的二元组。
  • 指定客体访问控制列表(Access Control List,ACL)
    该表记录了每一个客体与一个权限集合的对应关系。权限集合中的每个权限被表示为一个主体以及其能够进行的操作集合的二元组。

(2)强制访问控制模型

(a)BLP模型:机密性、下读上写

BLP(Bell-lapadula)模型被用于保护系统的机密性,防止信息的未授权泄漏。

  • 安全级别Level:公开(UC)、秘密(S)、机密(C)、绝密(TS)。它们之间的关系为UC≤S≤C≤TS。
  • 范畴Category:为一个类别信息构成的集合,例如{中国,军事,科技}。具有该范畴的主体能够访问那些以该范畴子集为范畴的客体。
  • 安全标记Label:由安全级别和范畴构成的二元组,例如
  • 支配关系dom:安全标记A dom B,当且仅当Level_A≥Level_B,Category_A⊇Category_B。

BLP模型中在为系统中每个保护范围内的主客体都分配了安全标记后,主体对客体的访问行为应满足如下两条安全属性:

  • 简单安全属性:主体S可以读客体O,当且仅当LabelS dom LabelO,且S对O有自主型读访问权限。
  • 安全属性:主体S可以写客体O,当且仅当LabelO dom LabelS,且S对O具有自主型写权限。

从信息流角度看,上述两条读/写操作所应遵循的安全属性阻止了信息从高安全级别流入低安全级别,且使得信息“仅被需要知悉的人所知悉”,因此,能够有效地确保数据的机密性。

精卫填海——大数据安全与隐私保护_第18张图片
精卫填海——大数据安全与隐私保护_第19张图片
但是BLP模型这种“下读上写”的规则忽略了完整性的重要安全指标。

(b)Biba模型:完整性、上读下写

Biba模型是第一个关注完整性的访问控制模型,用于防止用户或应用程序等主体未授权地修改重要的数据或程序等客体。该模型可以看作是BLP模型的对偶

  • 完整性级别Level:代表了主/客体的可信度。完整性级别高的主体比完整性级别低的主体在行为上具有更高的可靠性完整性级别高的客体比完整性级别低的客体所承载的信息更加精确和可靠
  • 范畴Category:是基于类别信息对方问行为的进一步约束。若范畴Category_A⊇Category_B,则A能写入B;否则,A不能写入B
  • 完整性标记Label:由完整性级别和范畴构成的二元组
  • 支配关系dom:完整性标记A dom B,当且仅当Level_A≥Level_B,Category_A⊇Category_B。

Biba模型的严格完整性策略是BLP模型的对偶,也是不特别指明情况下所谓的Biba模型。它应满足如下安全属性:

  • 完整性特性:主体S能够写入客体O,当且仅当LabelS dom LabelO。
  • 调用特性:主体S1能够调用主体S2,当且仅当LabelS1 dom LabelS2。
  • 简单完整性条件:主体S能够读取客体O,当且仅当LabelO dom LabelS。

基于上述三条安全属性,信息只能从高完整性级别的主客体流向低完整性级别的主客体,从而有效避免了低完整性级别的主客体对高安全级别主客体的完整性的“污染”
精卫填海——大数据安全与隐私保护_第20张图片

从上述BLP模型和Biba模型可以看出,强制访问控制是基于主客体标记之间的支配关系来实现的。在大数据场景下,由安全管理员来进行强制访问控制的授权管理是具有挑战性的。

  • 随着主客体规模的急剧增长,安全标记的定义和管理将变得非常繁琐;
  • 来自多个应用的用户主体和数据客体也将使得安全标记难以统一。

(3)基于角色的访问控制模型:RBAC0~3四个模型及其相互关系

RBAC0是最基本的模型,定义了用户、角色、会话和访问权限等要素。RBAC1在RBAC0的基础上引入了角色继承的概念。RBAC2增加了角色之间的约束条件,例如互斥角色等。RBAC3是RBAC1和RBAC2的综合,探讨了角色继承和约束之间的关系。

标准RBAC模型包括了RBAC0~3四个模型。

  • RBAC0(Core RBAC),定义了用户、角色、会话和访问权限等要素,并形式化地描述了访问权限与角色的关系。
  • RBAC1(Hierarchal RBAC)在RBAC0的基础上引入了角色继承的概念,简化了权限管理的复杂度。
  • RBAC2(Constraint RBAC)增加了角色之间的约束条件,例如互斥角色、最小权限等。
  • RBAC3(Combines RBAC)是RBAC1和RBAC2的综合,探讨了角色继承和约束之间的关系。

精卫填海——大数据安全与隐私保护_第21张图片

(a)Core RBAC

Core RBAC定义了基于角色访问控制的5个元素——用户、角色、对象、操作、权限以及一个动态的概念——会话。

角色访问控制的基本元素

  • 用户是访问控制的主体,可以发起访问操作请求。
  • 对象是访问控制的客体,指系统中受访问控制机制保护的资源.
  • 操作是指对象上能够被执行的一组访问操作
  • 权限是指对象及其上指定的一组操作,是可以进行权限管理的最小单元
  • 角色是权限分配的载体,是一组有意义的权限集合
  • 会话用于维护用户和角色之间的动态映射关系
    精卫填海——大数据安全与隐私保护_第22张图片
    元素之间的关系:
  • UA用户分配:用户和角色之间是多对多的映射关系,记录了管理员为用户分配的所有角色。
  • PA特权分配:角色与权限之间也是多对多的映射关系,记录了管理员为角色分配的所有权限
  • user_sessions:用户与会话之间的一对多映射关系。即一个用户可通过登录操作开启一个或多个会话,而每个会话只对应一个用户。
  • session_roles:会话与角色之间的多对多关系。即用户可以在一个会话中激活多个角色,而一个角色也可以在多个会话中被激活。
(b)Hierarchal RBAC

角色继承操作(Role Hierarchies,RH)即一个角色 r 1 r_1 r1继承了另一个角色 r 2 r_2 r2,那么 r 1 r_1 r1就拥有 r 2 r_2 r2的所有权限。角色继承分成两类:

  • 多重继承:一个角色可以同时继承多个角色,且角色满足偏序关系
  • 受限继承:在满足偏序关系的同时,一个角色只能继承一个角色,即继承关系为树结构
    精卫填海——大数据安全与隐私保护_第23张图片
(c)Constraint RBAC

RBAC2在RBAC0的基础上引入了指责分离的概念,以调节角色之间的权限冲突,即如果两个角色拥有的某些权限是冲突的,那么就需要增加职责分离约束,使两个角色不能并存。根据约束生效的时期不同,这些约束可以被分为两类:

  • 静态职责分离(Static Separation of Duty,SSD)
  • 动态职责分离(Dynamic Separation of Duty,DSD)
    精卫填海——大数据安全与隐私保护_第24张图片
    SSD主要作用于管理员为用户分配角色定义角色继承关系阶段。若两个角色被设定了SSD约束,则不能被同时分配给一个用户,且不存在继承关系;
    DSD主要作用于用户激活角色的阶段。若两个角色被设定了DSD约束,则不能在一个对话中被用户同时激活。
(d)Combines RBAC

Combines RBAC是在Core RBAC的基础上对Hierarchal RBAC的角色继承和Constraint RBAC的约束的综合。

(4)基于属性的访问控制模型:各组成部分的功能及流程

基于属性的访问控制模型是一种适用于开放环境下的访问控制技术。它通过安全属性来定义授权,并实施访问控制。由于安全属性可以由不同的属性权威分别定义和维护,所以具备较高的动态性和分散性,能够较好地适应开放式的环境。具体地,它包括如下几个重要概念:

  • 实体entity:系统中存在的主体、客体,以及权限和环境。
  • 环境environment:指访问控制发生时的系统环境。
  • 属性attribute:用于描述上述实体的安全相关信息。它通常由属性名属性值构成,又可分为以下几类:
    • 主体属性:姓名、性别、年龄
    • 客体属性:创建时间、大小
    • 权限属性:业务操作读写性质的创建、读、写
    • 环境属性:时间、日期、系统状态等。

精卫填海——大数据安全与隐私保护_第25张图片
AA为属性权威 attribution authority,负责实体属性的创建和管理,并提供属性的查询。
PAP为策略管理点,负责访问控制策略的创建和管理,并提供策略的查询。
PEP为策略执行点,负责处理原始访问请求,查询AA中的属性信息生成基于属性的访问请求,并将其发送给PDP进行判定,然后根据PDP的判定结果实施访问控制。
PDP为策略判定点,负责根据PAP中的策略集对基于属性的访问请求进行判定,并将判定结果返回PEP。

较为适合大数据的开放式数据共享环境。然而属性的管理和标记对于安全管理员来说仍然是劳动密集型工作,且需要一定的专业领域知识。在大数据场景下,数据规模和应用复杂度使得这一问题更加严重。

3 局限性总结@

早期访问控制模型和技术在大数据应用场景下主要存在三方面问题:

  • 安全管理员的授权管理难度更大
    • 工作量大
    • 领域知识匮乏
  • 严格的访问控制策略难以适用
    • 访问需求无法预知
    • 访问需求动态变化
  • 外包存储环境下无法使用
    • 数据所有者不具备海量存储能力
    • 数据所有者不具备构建可信引用监控机的能力

(二)基于数据分析的访问控制技术

1 角色挖掘技术

在基于角色的访问控制中,管理员需要解决两个问题:

  • 创建哪些角色?
  • 角色与用户、角色与权限如何关联?

大数据场景下角色的定义将是大工作量,且需要领域知识的任务。安全管理员已经难以自上而下地分析和归纳安全需求,并基于需求来定义角色了。为了解决该问题,自底向上定义角色的方法被提出,即采用数据挖掘技术从系统的访问控制信息等数据中获得角色的定义,也被称为角色挖掘(Role Mining)。目前经典的角色挖掘技术可以分为两类:

  • 基于层次聚类的角色挖掘方法
  • 生成式角色挖掘方法

(1) 基于层次聚类的角色挖掘方法

系统在初始情况下往往已经有了简单的访问权限分配——“哪些用户能够访问哪些数据”,例如授权信息表。精卫填海——大数据安全与隐私保护_第26张图片
以上表格中所呈现的权限组合往往暗示着为了完成工作而应该设置的角色,因此,可以对已有的权限分配关系进行数据挖掘来寻找潜在的角色概念,并将角色与用户角色与权限分别关联。

我们将角色看作大量用户共享的权限组合,并假设真实的角色定义已经正确且完整地隐含在当前的授权数据中。也就是说,所有人持有的权限都是有意义的,同时已有的权限分配都是正确的。

聚类是一种非监督场景下的发现数据潜在模式的经典方法。系统的用户基数越大,权限越多,这种权限分配的潜在模式就越明显,采用聚类进行角色挖掘的效果就越好。

基于层次聚类的角色挖掘根据层次聚类方式的不同又可以分为:

(a)凝聚式的角色挖掘

将权限看作是聚类的对象,通过不断合并距离近的类簇完成对权限的层次聚类,聚类结果为候选的角色。

基本定义

  • 类簇Cluster:由权限和持有这些权限的用户组成的二元组c=
  • 用户集合Persons:所有用户组成的集合。
  • 类簇集合Clusters:包含所有类簇的聚类结果集。
  • 偏序关系集合 < < <:聚类之间的偏序关系构成的集合。
  • 无偏序关系类簇集合 T < T_< T<:类簇集合中的类簇,两两间不存在偏序关系。即
    T < = c ∈ C l u s t e r s : ∄ d ∈ C l u s t e r s : c < T_<={c∈Clusters: ∄d∈Clusters:c<} T<=cClusters:dClusters:c<d
    且对于任意的类簇对 < c , d > ∈ T < ∈T_< <c,d>T<有如下定义:
    m e m b e r s ( < c , d > ) = m e m b e r s ( c ) ∩ m e m b e r s ( d ) members()= members(c) ∩members(d) members(<c,d>)=members(c)members(d)
    r i g h t s ( < c , d > ) = r i g h t s ( c ) ∪ r i g h t s ( d ) rights()= rights(c) ∪rights(d) rights(<c,d>)=rights(c)rights(d)
(b)分裂式的角色挖掘

将初始较大的权限集合不断地细分为更小的权限集合,从而形成由权限类簇构成的树。
U:系统中所有用户构成的集合。
P(u):用户u所持有的权限集合。
R(x):由权限集合x构成的角色。
Count(r):与角色r相关联的用户的数量。
intersection(i,j):角色i和 角色j所共有的权限构成的集合。

精卫填海——大数据安全与隐私保护_第27张图片

(c)存在的问题@

基于层次聚类的角色挖掘方法它们是对已有的权限分配数据进行角色挖掘,所以挖掘出的角色定义的质量往往过多地依赖于已有权限分配的质量。而对于大数据应用这种复杂场景来说,已有权限分配的质量往往很难保证。

聚类层次角色层次在结构上不是一一对应的。凝聚式角色挖掘通常会产生包含大量权限的超级类簇,而分裂式角色挖掘通常会产生许多很小的权限集合,这些集合不一定适合作为有意义的角色

凝聚式角色挖掘方法得到的类簇是排他的,即某个权限被归入一个类簇后,只能被合并该类簇父类簇包含,不符合权限的使用规律

(2)生成式角色挖掘方法:@LDA

LDA模型认为 θ θ θ φ φ φ也应该满足一定的概率分布,而不是固定值,因此进一步引入了以 α α α β β β为参数的两个狄利克雷分布来完善文档的生成过程:

LDA文本生成过程:

  1. D i r i c h l e t ( α ) Dirichlet(α) Dirichlet(α)中抽样产生文档 i i i的主题分布 θ \theta_ θi
  2. 从文档 i i i的主题分布 θ \theta_ θi中抽样生成第 j j j个词的主题 z i j z_{ij} zij
  3. D i r i c h l e t ( β ) Dirichlet(β) Dirichlet(β)中抽样产生主题 z i j z_{ij} zij的单词分布 φ \varphi_{_{}} φzij
  4. 从主题 z i j z_{ij} zij的单词分布 φ \varphi_{_{}} φzij中抽样产生单词 i j _{ij} wij

精卫填海——大数据安全与隐私保护_第28张图片

文档生成问题 角色挖掘问题
文档生成问题 角色挖掘问题
包含多个文档的“语料库” 访问控制日志
一个文档u 用户u的权限使用记录
单词p 权限p
文档u中单词p的词频n 用户u对权限p的使用次数n
主题r 角色r

将角色挖掘问题映射为文本分析问题,采用两类主题模型LDA和ATM进行生成式角色挖掘,从权限使用情况的历史数据来获得用户的权限使用模式,进而产生角色,并为它赋予合适的权限,同时根据用户属性数据为用户分配恰当的角色

具体来说,用LDA或ATM方法得到用户(文档)角色(主题)的映射 θ θ θ以及角色(主题)到权限(单词)的映射 φ φ φ。将 θ θ θ中的概率值按降序排列,找到急剧下降的点,然后将前 k k k个概率值对应的角色赋予用户 u u u,剩下的角色被忽略。类似地,将 φ φ φ中前 m m m个概率值对应的权限赋予角色 r r r,剩下的权限被忽略。

2 风险自适应的访问控制技术[O常见的风险要素]

从风险管理的角度看,访问控制是一种平衡风险收益的机制。

传统访问控制:风险与收益的平衡被静态定义在访问控制策略中,即“满足策略约束条件的访问行为所带来的风险”被视为系统可接受的风险。这种风险被定义在访问控制策略中,比较适合访问风险十分明确的场景。

而大数据的一大显著特点就是先有数据、后有应用。人们在采集和存储数据的时候,往往无法预先知道所有的数据应用场景,因此安全管理员也往往无法获知访问行为带来的风险和收益的关系,进而难以预先定义恰当的访问控制策略。

基于风险的访问控制:根据访问行为带来的风险,动态地赋予访问权限。风险与收益的平衡是访问过程中动态实施的,而非预先定义在由管理员分析获得并隐含在访问控制策略中。

(1)风险量化

风险量化是将访问行为对系统造成的风险进行数值评估,它是基于风险来实施访问控制的前提。

(a)风险要素选择

风险量化的第一步是确定影响风险值要素集合

常见的风险要素:

  • 被访问客体敏感程度客体重要性的体现。敏感度越高的客体,其重要性越高,所以访问它们带来的风险也就越大。
  • 被访问客体的数量是指主体在一次访问请求中或一段时间内所访问的客体的规模。访问客体的数量越大,累加的风险也越大
  • 客体之间的互斥关系描述了多次访问行为的风险累加非线性的。即两个客体存在如下关系:对其中一个客体访问后将不能访问另一客体,或者再访问另一客体时带来的风险会急剧增加。
  • 访问主体的安全级别是实施了强制访问控制的系统中对主体访问敏感客体时所能达到的安全性的评估。高安全级别的主体可以访问同级or低安全级别的客体。
  • 访问目的与被访问客体的相关性体现了在业务流程中主体对客体的需求程度。两者的相关程度越高,则主体访问客体的风险越小,同时能获得收益也越高
(b)风险计算方法

在确定了要素风险后,需要进一步根据这些要素来为访问行为计算出量化的风险值。

①基于概率论或模糊理论的静态方式

核心思想是“风险量化值由危害发生的可能性和危害程度决定”,即
Q u a n t i f i e d R i s k = ( P r o b a b i l i t y o f D a m a g e ) × ( V a l u e o f D a m a g e ) Quantified Risk = (Probability of Damage)× (Value of Damage) QuantifiedRisk=(ProbabilityofDamage)×(ValueofDamage)
风 险 量 化 值 = 危 害 发 生 的 可 能 性 × 危 害 的 值 风险量化值=危害发生的可能性×危害的值 =×
其中,危害的值(Value of Damage)是一个对危害程度的量化度量,往往取决于信息资源的价值,只能由企业或组织根据业务背景自行评估。而危害发生的可能性(Probability of Damage)是指引发该危害的事件发生的可能性,通常采用概率论进行计算。

②基于协同过滤的动态方式

基本思想是利用系统中用户的历史访问行为来构建正常用户的访问行为画像,并以此为风险量化的基准,然后计算每次用户访问行为与该基准的偏离程度作为风险量化值。即访问行为偏离基准越大,则该访问产生的风险越大。

其特点是通过行为异常的概率来衡量风险值,所以风险量化结果可以随着系统中整体用户的行为变化而动态变化,相比于静态计算方法更加灵活。然而这种计算往往需要大量的系统历史数据以确保风险量化的准确性。

(2)访问控制实施方案

在对访问行为的风险进行量化之后,还需要进一步利用这些风险值设计灵活的访问控制实施方案。

(a)判定方法

精卫填海——大数据安全与隐私保护_第29张图片
判定结果从“允许/拒绝”的二值多值发展,引入了部分允许的概念。

(b)风险与收益的平衡
  • 信用卡式:它为每个用户分配风险额度,并让用户在访问资源时根据访问带来的风险去消耗额度。当额度不足以支付新的访问时,系统将阻止用户的访问行为。
  • 市场交易式:它将风险视为市场上的商品,而整个系统能够容忍的风险被视为可以交易的商品总量。作为商品的风险流通越充分,则越能够实现整体系统的风险与收益的最优化配置。
(c)实施框架

风险访问控制通常采用与传统访问控制结合的实施框架
精卫填海——大数据安全与隐私保护_第30张图片

(三)基于密码学的访问控制技术

1 基于密钥管理的访问控制技术

基于密钥管理的访问控制技术的安全性依赖于密钥的安全性,而无须可信引用监控机的存在。
该技术是通过严格的密钥管理来确保授权用户才能有解密数据所需要的密钥来实现访问控制。根据访问控制系统所支持的能够发送数据的用户数量,可以分为:

  • 基于单发送者广播加密的访问控制
  • 基于公钥广播加密的访问控制

前者仅支持少量的可信的数据所有者向其他用户分享自己的数据,后者则支持系统内所有用户间的数据分享。

(1)基于单发送者广播加密的访问控制

(a)参与方
  • 数据所有者拥有数据和完整的用户密钥树,负责根据数据分享的目标对象,有选择地从用户密钥树中选取加密密钥对数据进行加密,并将加密结果广播式发送给所有用户。
  • 普通用户:拥有用户密钥树中的与自己相关的部分密钥,负责接收数据密文利用自己持有的密钥解密数据
(b)用户密钥树

用户密钥树中所有的密钥均为对称密钥
系统中的每个用户拥有一个自己的密钥 ,作为用户密钥树的叶子节点

  • 数据所有者持有整个用户密钥树。
  • 普通用户持有自己的密钥和包含自己在内的用户子集所对应的密钥。
    精卫填海——大数据安全与隐私保护_第31张图片

选择红色节点处的密钥集 { k 0 , k 10 , k 110 } \{k_0,k_{10},k_{110}\} {k0k10k110}进行数据加密,则未授权的普通用户就是U7,他将无法解密数据。

(2) 基于公钥广播加密的访问控制技术

(a)参与方
  • 公钥服务器:负责维护一个采用Complete Subtree、Subset Difference或Layered Subset Difference方法产生的密钥集合。即将系统中的所有用户按照上述三种方案之一划分为子集,每个子集代表了可能的数据接收者集合。为每个子集产生公私钥对,并将私钥安全分发给其包含的用户。
  • 数据所有者:负责将数据加密,并采用基于公钥广播加密技术对加密密钥进行分发,以实现对授权接收者的限定。
  • 数据服务者:负责加密数据的存储,并向用户提供对数据的操作。
  • 用户:是数据的访问者。只有被数据所有者授权的用户才能获得数据的加密密钥,并进一步解密出数据。

由于采用公钥加密方式,所以系统的所有用户都可以是数据所有者,并向其他用户分享数据,消除了单发送者广播加密方案对发送者范围的限制
精卫填海——大数据安全与隐私保护_第32张图片

(b)数据文件的产生和加密存储@

(1)数据所有者为新产生的数据文件m产生非对称密钥FSK用于对文件m进行签名对称密钥FEK对文件m 加密
(2)数据所有者用自己的主加密密钥(非对称)MEK加密FSK私钥FEK,产生密钥块,并将自己的ID标识在密钥块上 。
精卫填海——大数据安全与隐私保护_第33张图片

(3)数据所有者对密钥块、FSK公钥、时间戳、文件名进行Hash运算 ,并用自己对主签名密钥MSK(非对称)对Hash值进行签名,产生数据所有者签名块
(4)数据所有者将密钥块、FSK公钥、时间戳、文件名、数据所有者签名块合并形成元数据md-file
精卫填海——大数据安全与隐私保护_第34张图片

(5)数据所有者用FEK加密文件m,并用FSK私钥对文件m进行签名,产生加密后的数据文件结构d-file
(6)数据所有者将md-filed-file一起发送给数据服务者进行存储

(c)授权@

(1)数据所有者从数据服务者处根据文件名取回文件m和对应的md-file,并用自己的MSK验证 md-file数据所有者的签名块
(2)数据所有者从公钥服务器获取用户群组X对应的公钥集合,即用户群组X中的每个用户至少拥有该公钥集合中的一个公钥对应的私钥。数据所有者用公钥集合中的每个公钥对数据文件的FEK进行加密,分别产生一个密钥块,并将公钥的ID标识在密钥块上。若对用户组群X的授权还包含写权限,则将FSK私钥FEK一起加密 。

这样就实现了读、写权限的分离,即拥有FEK的用户能够读该数据,而拥有FSK私钥的用户能够写该数据。
数据所有者将新产生的这些密钥块都添加到md-file中。
(3)数据所有者更新md-file中的时间戳,并用自己的MSK重新产生数据所有者签名块,然后将新的md-file发送给数据服务者进行存储。

(d)数据文件访问@

(1)用户A从数据服务者处获得文件m的md-file,并从公钥服务器获得数据所有者的MSK来验证md-file的签名以及时间戳
(2)用户A根据自己持有的公钥ID来查找密钥块,并用该公钥对应的私钥进行解密,以获得该数据对应的FEK(以及FSK的私钥)
(3)用户A从数据服务者处获得文件m的d-file,用FSK公钥验证签名。
(4)用户A用FEK解密d-file中的加密数据,完成数据的读访问。若密钥块中包含FSK私钥,则用户A能够进一步写 d-file中的数据内容,再重新用FEK加密数据,并用FSK私钥产生新的签名。最后,用户A将更新后的d-file提交给数据服务者进行存储。

2 基于属性加密的访问控制技术[O访问结构、(t,n)门限及实现方法]

在基于密钥管理的访问控制中,系统通过控制用户持有的密钥集合来区分用户,进而实施授权和访问控制。因此数据所有者需要预先知道系统中潜在的授权用户,并获得他们的对称密钥或公钥。这对于规模较大且用户较多的大数据应用来说是不方便的。

基于属性加密的访问控制是通过更加灵活的属性管理来实现访问控制,即将属性集合作为公钥进行数据加密,要求只有满足该属性集合的用户才能解密数据。

(1) 基本定义

(a)访问结构

(访问结构,Access Structure) { P 1 , P 2 , . . . . , P n } \{P1,P2,....,Pn\} {P1,P2,....,Pn}是一个参与者集合。令 A ⊆ 2 { P 1 , P 2 , . . . . , P n } A⊆2^{\{P1,P2,....,Pn\}} A2{P1,P2,....,Pn},若 ∀ B , C ∀B,C B,C,有 B ∈ A B∈A BA,且 B ⊆ C B⊆C BC,那么 C ∈ A C∈A CA,则称 A A A是单调的。若 A A A是单调的,且是非空的,即 A ⊆ 2 { P 1 , P 2 , . . . . , P n } \ { ∅ } A⊆2^{\{P1,P2,....,Pn\}} \backslash\{∅\} A2{P1,P2,....,Pn}\{},则称 A A A为一个访问结构。

A A A中的元素被称为授权集,非 A A A中的元素被称为未授权集。

常见的访问结构主要分为门限结构、访问树结构、LSSS矩阵结构等。目前应用较多的是访问树结构,它可以看作是对单层**(t,n)门限**结构的扩展。

(t,n)门限及实现方法@

(t,n)门限指秘密信息被分成 n n n份,要重构秘密信息就必须获得其中至少 t t t份。

  • AND操作可以看作 ( n , n ) (n,n) (nn)门限
  • OR操作可以看作 ( 1 , n ) (1,n) (1n)门限。

通常可通过插值法够造门限,如拉格朗日插值法

记要共享的秘密为 s s s,随机选取一组 _ ai构造 t − 1 t-1 t1次多项式 ( ) = + 1 + 2 2 + ⋯ + − 1 − 1 ()=+_1 +_2^2+⋯+_{−1}^{−1} f(x)=s+a1x+a2x2++at1xt1选择 n n n _ xi,计算 ( ) (_) f(xi),并将 ( , ( ) ) (_, (_ )) (xi,f(xi))分发给 n n n个不同的参与方 _ Pi
精卫填海——大数据安全与隐私保护_第35张图片

n n n个参与方中有 t t t个加入,出示他们的子秘密,得到 t t t个点 ( , ( ) ) (_, (_ )) (xi,f(xi)),可通过插值法恢复多项式 ( ) () f(x),进而得到秘密 s = ( 0 ) s=(0) s=f(0)。任意少于 t t t个参与者无法恢复多项式,因而无法获得秘密。

(b)访问结构树

(访问树结构,Access Tree) T T T为一棵访问树,树中的每个节点被记为 x x x,该节点的子节点树被记为 _ nx,其对应的门限值被记为 _ tx。每个叶子节点代表一个属性,且 = 1 _=1 tx=1, = 0 _=0 nx=0。非叶子节点可以通过 _ nx _ tx定义属性上的AND、OR或门限关系。
精卫填海——大数据安全与隐私保护_第36张图片

下图表示了一条策略,即 “Place属性为Office,或ID为Alice且Place为Home的用户能够解密数据”
精卫填海——大数据安全与隐私保护_第37张图片

(2) 基于CP-ABE的访问控制

CP-ABE算法(基于属性的访问控制算法),包含以下四个步骤:
(1)Setup:生成主密钥MK和公开参数PK。MK由算法构建者掌握,不允许被泄露,而PK则被发送给系统中的所有参与者。
(2)Encrypt:使用PK、访问结构T将数据明文加密为密文C
(3)KeyGen:使用MK、用户属性值S生成用户的私钥SK
(4)Decrypt:使用私钥解密密文C得到明文M,只有在S满足T的条件下,解密操作才能成功
精卫填海——大数据安全与隐私保护_第38张图片

基本访问控制方案的参与方
(1)可信权威:维护了每个用户的属性与密钥的对应关系,为用户发布属性密钥。执行算法的(1)和(3)步,是整个系统中唯一需要被其他参与方完全信任的参与方。
(2)数据所有者:具有数据的所有权,负责访问策略(访问结构T)的定义,并产生与策略绑定的密文数据,然后发送给服务提供者,即算法的第(2)步。
(3)用户:是数据的访问者。若该用户具有满足密文数据所绑定策略中要求的属性,即持有恰当属性密钥,那么就可以解密出数据明文,即算法的第(4)步。
(4)服务提供者:负责提供数据的外包存储。

(3) 多属性权威的CP-ABE方案架构

CA:负责为整个系统中所有用户和属性权威颁发和维护身份。
属性权威:负责颁发、撤销和更新用户属性。
数据所有者:具有数据的所有权,产生访问结构来描述授权用户的范围,并采用多权威的属性加密算法对数据加密。
用户:是数据的访问者。如果用户的属性满足访问结构,则用户能够成功解密出数据。
服务提供者:负责提供数据的外包存储。
精卫填海——大数据安全与隐私保护_第39张图片

第三章 安全检索技术

(一) 基本概念

1 背景介绍

云存储是在云计算概念上衍生出来的,其继承了云计算的按需使用高可扩展性快速部署等特点,解决了当前政府和企业需要不断增加软硬件设备和数据库管理人员来自主地存储、管理和维护海量数据的问题。由于云存储使得数据的所有权和管理权相分离,用户数据将面临多方面的安全威胁:

  • 美国政府雇员窃取社保信息;
  • 前支付宝员工以500元售出5万条支付宝用户数据;
  • 2014年至2017年,多起icloud好莱坞明星隐私泄露事件;
  • 著名的美国国家安全局的“棱镜”项目

为保证云数据的安全性,一种通用的方法是用户首先使用安全的加密机制对数据进行加密,然后再将密文数据上传至云服务器。由于只有用户知道解密密钥,而云存储服务提供商得到的信息是完全随机化的,数据的安全性完全掌握在用户手中。当用户需要对数据进行检索时,只能把全部密文下载到本地,将其解密后再查询。这个过程要求客户端具有较大的存储空间以及较强的计算能力,且没有充分发挥云存储的优势。

密文检索(Searchable Encryption,SE,叫做可搜索加密)技术支持云存储系统在密文场景下对用户数据进行检索,然后将满足检索条件的密文数据返回给用户。在检索过程中,云服务器无法获得用户的敏感数据和查询条件,即密文检索可以同时保护数据机密性以及查询机密性

2 密文检索概述

(1) 系统模型

密文检索主要涉及数据所有者数据检索者以及服务器 3种角色。

  • 数据所有者是敏感数据的拥有者;数据检索者是查询请求的发起者
    这二者通常仅具备有限的存储空间和计算能力;
  • 服务器为所有者和检索者提供数据存储数据查询服务,其由云存储服务提供商进行管理和维护,并具有强大的存储能力和计算能力。
    精卫填海——大数据安全与隐私保护_第40张图片

(2) 系统流程

① 数据所有者首先为数据构造支持检索功能的索引,同时使用传统的加密技术加密全部数据,然后将密文数据和索引共同存储到服务器。
② 需要检索时,数据检索者为检索条件生成相应的陷门,并发送给服务器。
③ 服务器使用索引和陷门进行协议预设的运算,并将满足检索条件的密文数据返回给数据检索者。
④ 数据检索者使用密钥将检索结果解密,得到明文数据。
有时服务器返回的密文数据中可能包含不满足检索条件的冗余数据,此时数据检索者还需要对解密后的明文数据进行二次检索,即在本地剔除冗余数据。

(3) 安全模型

通常认为数据所有者和数据检索者是完全可信的,而服务器属于攻击者,其对用户的敏感数据和检索条件比较好奇。目前大部分密文检索方案均假设服务器是诚实但好奇的(Honest-but-Curious,HBC),即服务器会忠实地执行数据检索者提交的检索请求,并返回相应的检索结果,同时其可能会利用自己所掌握的一切背景知识来进行分析,期望获得真实的敏感数据和检索条件。

3 密文检索分类

根据应用场景的不同,密文检索技术可以分为对称密文检索(Symmetric Searable Encrption, SSE)和非对称密文检索(Asymmetric Searable Encrption,ASE)两大类:

  • 对称密文检索:在对称密钥环境下,只有数据所有者拥有密钥,也只有数据所有者可以提交敏感数据、生成陷门即数据所有者和数据检索者为同一人
  • 非对称密文检索:在非对称密钥环境下,任何可以获得数据检索者公钥的用户都可以提交敏感数据,但只有拥有私钥的数据检索者可以生成陷门

根据检索的数据类型的不同,密文检索技术可以分为关键词检索和区间检索两大类:

  • 关键词检索:主要用于检索字符型数据,如查询包含关键词“云存储”的文档。最初,关键词检索的研究以单关键词检索为主,后来逐渐扩展到多关键词检索、模糊检索以及Top-k检索
  • 区间检索:主要用于对数值型数据进行范围查询,如查询学生信息表中年龄属性小于18的学生。根据属性的数目,区间检索又可进一步分为单维区间检索多维区间检索

(二)早期安全检索技术

1 PIR技术 @定义3-1

PIR(Private Information Retrieval,隐私信息检索)技术的研究主要针对公开数据库,其目标是允许用户在不向服务器暴露查询意图的前提下,对服务器中的数据进行查询并取得指定内容。

保护查询意图:专利
根据服务器的数目以及用户与服务器之间的交互轮数的不同,可将PIR技术分为4大类:单服务器的多服务器的单轮交互的以及多轮交互的。目前主要研究的是单轮交互的PIR问题

定义3-1 (单轮交互的PIR问题)@
设存在 ≥ 1 ≥1 k1个服务器,其存储的内容完全相同,均为 n个比特的信息 = { 1 , 2 , … , } =\{_1,_2,…,_\} X={x1,x2,,xn},且服务器之间不会进行相互通信。 A A A希望对服务器中的数据进行查询,并得到 _ xi ,其具体查询过程如下:

  1. A A A生成一个随机数 r,并根据 r i生成 k个查询 { 1 , 2 , … , } \{_1,_2,…,_\} {q1,q2,,qk},然后将其分别发送给个服务器;
  2. 各服务器分别返回相应的查询结果: { ( 1 ) , … , ( ) } \{(_1),…,(_)\} {Ans(q1),,Ans(qk)}
  3. A A A根据 r { ( 1 ) , … , ( ) } \{(_1),…,(_)\} {Ans(q1),,Ans(qk)}计算得到正确的 _ xi

如果在上述查询过程中,任意服务器均不了解关于 i的任何信息,则称这一交互是PIR的。换句话说,如果 A A A进行了两次查询,分别访问了 _ xi ′ _′ xi ,则服务器对这两次查询所见的视图在概率分布上没有区别,即
P r [ V i e w j ( X , i ) = V i e w ] = P r [ V i e w j ( X , i ′ ) = V i e w ] Pr[View_j(X,i)=View]=Pr[View_j(X,i^{'})=View] Pr[Viewj(X,i)=View]=Pr[Viewj(X,i)=View]

2 PIRK技术以及SPIR技术

(1) PIRK技术 不简答

PIR方案假设数据是二进制的,且客户端已经了解待获取的数据在数据集中的位置。但是在实际检索场景中,客户端一般都是输入一个感兴趣的关键词,然后服务器根据该关键词找到对应的数据内容。为此,提出了PIRK(Private Information Retrieval by Keywords)技术。

定义3-3 (PIRK问题)
设存在 k个服务器,其存储的内容完全相同,均为 n个长度为 l的字符串 = { 1 , 2 , … , } =\{_1,_2,…,_\} S={s1,s2,,sn},且服务器之间不会进行相互通信。 A A A感兴趣的关键词是一个长度为的字符串 w
如果存在一个协议使A能够得到所有满足 = _= sj=w j,且任意服务器均不了解关于 w的任何信息,则称该协议是 ( , , ) (,,) PIRK(l,n,k)的。
需要注意的是,此定义只包含了找到 = _= sj=w的过程,至于找到 _ sj之后如何获取 _ sj对应的数据内容,则可以通过运行一般的PIR协议来完成。

(2) SPIR技术

(a) SPIR问题 @

从服务器的角度来看,PIR技术仅保护了客户端的查询意图,而对服务器中的数据集缺乏保护。因此,由PIR技术进一步发展至SPIR(Symmetric Private Information Retrieval)技术,其目标是将保护范围扩大到服务器

SPIR问题与PIR问题相似,但是在其基础上增加了一项要求: A A A不了解 _ xi之外的任何信息。换句话说,如果存在两个数据源 = { 1 , 2 , … , } =\{_1,_2,…,_\} X={x1,x2,,xn} = { 1 , 2 , … , } =\{_1,_2,…,_\} Y={y1,y2,,yn},且 = _=_ xi=yi。则对于这两个数据源, A A A查询第 i份数据,所见的视图应当没有任何区别,即
P r [ V i e w A ( X , i ) = v i e w ] = P r [ V i e w A ( Y , i ) = v i e w ] Pr[View_A(X,i)=view]=Pr[View_A(Y,i)=view] Pr[ViewA(X,i)=view]=Pr[ViewA(Y,i)=view]
任意 N N N服务器的PIR方法都可以转换为 N + 1 N+1 N+1服务器、同样数量级复杂度的SPIR方法。

(b) SPIR技术 @

Bob有n个秘密 { m 1 , m 2 , . . . , m n } \{m_1,m_2,...,m_n\} {m1,m2,...,mn} ,Alice想获得其中的1个,但是Bob不知道Alice获取的是哪一个,同时Alice也不知道Bob剩下的 n − 1 n-1 n1个秘密中的任何一个。Alice和Bob共享数 g g g h h h

  1. Alice私有随机数r,并计算 y = g r h α y=g^{r} h^{α} y=grhα,将y传给Bob
  2. Bob私有随机数 { k 1 , k 2 , . . . , k n } \{k_1,k_2,...,k_n\} {k1,k2,...,kn},计算 B i = y / h i B_i=y/h^i Bi=y/hi,将 c i = ( g k i , m i B k i ) , = 1 , ⋯ , n c_i=(g^{k_i},m_i B^{k_i}), =1, ⋯ , n ci=(gki,miBki)i=1,,n 传给Alice
  3. Alice计算得到 m α = b / a r m_α=b/a^{r} mα=b/ar,其中 b = m α B k α , a = g k α b = m_α B^{k_α}, a=g^{k_α} b=mαBkα,a=gkα

SPIR技术要求保护客户端查询意图不被服务器知道的同时,也对服务器中的数据集加以保护,使得客户端无法了解所查询信息以外的任何信息。

  1. 客户端生成私有随机数r,并计算 y = g r h α y=g^{r} h^{α} y=grhα,将y传给服务器
  2. 服务器生成私有随机数 { k 1 , k 2 , . . . , k n } \{k_1,k_2,...,k_n\} {k1,k2,...,kn},计算 B i = y / h i B_i=y/h^i Bi=y/hi,将 c i = ( g k i , m i B k i ) , = 1 , ⋯ , n c_i=(g^{k_i},m_i B^{k_i}), =1, ⋯ , n ci=(gki,miBki)i=1,,n 传给客户端
  3. 客户端计算得到 m α = b / a r m_α=b/a^{r} mα=b/ar,其中 b = m α B k α , a = g k α b = m_α B^{k_α}, a=g^{k_α} b=mαBkα,a=gkα

3 ORAM技术 不简答

ORAM技术的目标是在读写过程中向服务器隐藏用户的访问模式。这里,访问模式是指客户端向服务器发起访问所泄露的信息,包括操作是读还是写、操作的数据地址、操作的数据内容等。与PIR的不同之处在于,PIR只考虑保护客户端的查询意图;而ORAM保护的内容更为广泛。

定义3-4 (ORAM系统)

  • 用户的输入序列 Y:定义为一组输入 ( o 1 , o 2 , … , o n ) (o_1,o_2,…,o_n) (o1,o2,,on)
  • 用户的输入 o o o:代表用户的操作类型操作数据内容操作地址 o = ( o p , d a t a , i ) o=(op,data,i) o=(op,data,i)
    • o p op op o p = r e a d op=read op=read d a t a = ∅ data=∅ data=
    • o p op op o p = w r i t e op=write op=write d a t a data data是用户写入的明文内容。
  • 访问模式 A ( Y ) A(Y) A(Y):对于用户发起的一个输入序列 Y = ( o 1 , o 2 , … , o n ) , Y=(o_1,o_2,…,o_n), Y=(o1,o2,,on)假设经过翻译后,在服务器实际实施的序列为 Y = ( O 1 , O 2 , … , O m ) Y=(O_1,O_2,…,O_m) Y=(O1,O2,,Om) A ( Y ) A(Y) A(Y)记录了 Y Y Y中各输入的访问地址 i i i,以及 Y Y Y是读还是写。
    • 当操作是时, A ( Y ) A(Y) A(Y)还记录了用户希望服务器写入的内容。具体地, A ( Y ) = ( ( o p 1 , E d a t a 1 , i 1 ) , … , ( o p m , E d a t a m , i m ) ) A(Y)=((op_1,Edata_1,i_1 ),…,(op_m,Edata_m,i_m)) A(Y)=((op1,Edata1,i1),,(opm,Edatam,im)),其中 E d a t a Edata Edata是从服务器的角度写入的密文内容。
    • 当操作是时, E d a t a = ∅ Edata=∅ Edata=

如果对于系统中任意两个输入序列 Y Y Y Y ′ Y^{′} Y,从服务器的角度来看,访问模式 A ( Y ) A(Y) A(Y) A ( Y ′ ) A(Y^{′}) A(Y)是不可区分的,则认为这个系统是一个ORAM系统。

其基本解决思想是:设计一种转换协议,将1次访问转换为k次访问,从而保证两组访问经过转换之后无法区分

(三)对称密文检索

在对称密文检索方案中,数据所有者和数据检索者为同一方。该场景适用于大部分第三方存储,也是近几年本领域的研究热点。一个典型的对称密文检索方案包括如下算法:

  • Setup算法:该算法由数据所有者执行,生成用于加密数据和索引的密钥;
  • BuildIndex算法:该算法由数据所有者执行,根据数据内容建立索引,并将加密后的索引和数据本身上传到服务器;
  • GenTrapdoor算法:该算法由数据所有者执行,根据检索条件生成相应的陷门(又称“搜索凭证”),然后将其发送给服务器;
  • Search算法:该算法由服务器执行,将接收到的陷门和本地存储的密文索引作为输入,并进行协议所预设的计算,最后输出满足条件的密文结果。

对称密文检索的核心与基础部分是单关键词检索。目前,SSE可以根据检索机制的不同大致分为三大类:

  • 基于全文扫描的方法
  • 基于文档-关键词索引的方法
  • 基于关键词-文档索引的方法

1 基于全文扫描的方案 O ( n s ) O(ns) O(ns)@

  • n:服务器上存储的文件数目
  • s:文件平均长度

异或运算:a、b两个值不同时,异或结果为1;否则为0
异或性质 ( a ⊕ b ) ⊕ a = b (a⊕b)⊕a=b (ab)a=b

该方案的核心思想是对文档进行分组加密,然后将分组加密结果与一个伪随机流进行异或得到最终用于检索的密文。检索时,用户将检索关键词对应的陷门发送给服务器,服务器对所有密文依次使用陷门计算密文是否满足预设的条件,若满足则返回该文档。

精卫填海——大数据安全与隐私保护_第41张图片
精卫填海——大数据安全与隐私保护_第42张图片

  • Setup算法:数据所有者生成密钥 ′ , ′ ′ ^{′},^{′′} k,k,伪随机数 1 , 2 , … , _1,_2,…,_ S1,S2,,Sl,伪随机置换以及伪随机函数 F, f
  • BuildIndex算法:假设文档的内容为关键词序列 1 , 2 , … , _1,_2,…,_ w1,w2,,wl
    对于关键词 _ wi,数据所有者首先将其加密得到 ′ ′ ( ) _{^{′′}} (_) Ek(wi),并将 ′ ′ ( ) _{^{′′}}(_) Ek(wi)拆分为 _ Li _ Ri两个部分;
    然后,使用伪随机数 _ Si计算 ( ) _{_ }(_) Fki(Si),其中 = ′ ( ) _=_{^{′}} (_) ki=fk(Li)
    最后,将 ( , ( ) ) (_,_{_ } (_)) (Si,Fki(Si)) ( , ) (_,_) (Li,Ri)经过异或运算生成密文块 _ Ci
  • GenTrapdoor算法:当需要搜索关键词 w时,数据所有者将 ′ ′ ( ) = ( , ) _{^{′′}} ()=(,) Ek(w)=(L,R)以及 = ′ ( ) =_{^{′}}() k=fk(L)发送给服务器;
  • Search算法:服务器依次将密文 _ Ci ′ ′ ( ) _{^{′′}}() Ek(w)进行异或运算,然后判断得到的结果是否满足 ( , ( ) ) (,_{} ()) (S,Fk(S))的形式。如果满足,则说明匹配成功,并将该文档返回。

基于全文扫描的方案需要对每个密文块进行扫描并计算,在最坏的情况下,检索一篇文档的时间与该文档的长度呈线性关系,检索效率较低

目前,人们主要集中于研究基于文档-关键词索引和基于关键词-文档索引的密文关键词检索方案,其将索引从密文中独立出来,即数据本身可以采用任意加密算法加密,检索功能由索引实现。

2 基于文档-关键词索引的方案 O ( n ) O(n) O(n)@

精卫填海——大数据安全与隐私保护_第43张图片

基于文档-关键词索引的方案的核心思路是为每篇文档建立单独的索引,且服务器在检索时需要遍历全部索引,因此,这类方案的检索时间复杂度与文档数目成正比。
(key,value)
布隆过滤器利用位数组表示集合,并可以快速判断一个元素是否属于该集合。记位数组的长度为 m,集合为 = 1 , … , ={_1,…,_} S=x1,,xn

首先,构造各位置均为0的初始数组 B F BF BF,并选取 k个Hash函数 h 1 , … , h ℎ_1,…,ℎ_ h1,,hk,这些Hash函数可以将集合中的元素映射位数组中的某一位。
然后对于各元素 _ xi,为其计算 k个Hash值 h 1 ( ) , … , h ( ) ℎ_1 (_),…,ℎ_ (_) h1(xi),,hk(xi),并将位数组中的相应位置设为1。
当想要判断元素 y是否属于集合 S时,我们同样使用Hash函数 h 1 , … , h ℎ_1,…,ℎ_ h1,,hk为其计算 k个值 h 1 ( ) , … , h ( ) ℎ_1 (),…,ℎ_ () h1(y),,hk(y),**如果位数组 B F BF BF中的相应位置均为1,我们则认为 y S中的元素。**但实际上,由于Hash函数的计算结果可能存在冲突, y有可能并不属于 S

如下图所示的例子,如果 h 1 ( ) = h 2 ( ) ℎ_1 ()=ℎ_2 (_) h1(y)=h2(xi) h 2 ( ) = h 1 ( ) ℎ_2 ()=ℎ_1(_) h2(y)=h1(xj),则会发生误判。
精卫填海——大数据安全与隐私保护_第44张图片
借助于布隆过滤器,人们提出了一种基于文档-关键词索引地秘闻关键词检索方案
使用布隆过滤器为每篇文档分别构造索引,并使用伪随机函数为每个关键词计算两遍伪随机数,其一将关键词作为输入,其二将文档标识作为输入,从而同一关键词在不同文档中的计算结果不一致

精卫填海——大数据安全与隐私保护_第45张图片
上述方案在检索判定时只需要计算若干次伪随机数,速度比基于全文扫描的方法提高很多。然而,由于布隆过滤器的特性,会有一定的概率返回不包含查询关键词的文档。

  • Setup算法:数据所有者生成 r个密钥 1 , … , _1,…,_ k1,,kr以及伪随机函数 f
  • BuildIndex算法:对于包含 t个关键词 1 , … , _1,…,_ w1,,wt的文档 D D D,数据所有者首先为其生成一个位数组 B F ( D ) BF(D) BF(D),并置 B F ( D ) BF(D) BF(D)所有位均为0。然后,对于每个关键词 _ wi
    • 以关键词 _ wi作为输入计算 r个值: 1 = ( , 1 ) , … , = ( , ) _1=(_,_1 ),…,_=(_,_ ) x1=f(wi,k1),,xr=f(wi,kr)
    • 以文档标识 i d id id作为输入计算 r个值: 1 = ( , 1 ) , … , = ( , ) _1=(,_1 ),…,_=(,_ ) y1=f(id,x1),,yr=f(id,xr)
    • B F ( D ) BF(D) BF(D) 1 , … , _1,…,_ y1,,yr r个值对应的位置设为1,并对 B F ( D ) BF(D) BF(D)进行随机填充
  • GenTrapdoor算法:数据所有者为检索关键词 w计算 r个值: 1 ′ = ( , 1 ) , … , ′ = ( , ) ^{′}_1=(,_1 ),…,^{′}_=(,_ ) x1=f(w,k1),,xr=f(w,kr),然后将这 r个值发送给服务器;
  • Search算法:根据陷门,服务器为文档 D D D计算 r个值 1 ′ = ( i d , 1 ′ ) , … , r ′ = ( , r ′ ) _{1}^{′}=(id,^{′}_1),…,{^{′}_r}=(,^{′}_r) y1=f(id,x1),,yr=f(id,xr),并检查 D D D对应的索引 B F ( D BF(D BF(D)中,这 r个值对应的位置是否都为1。若是,则说明文档 D D D包含 w w w ,并将其返回给用户。

3 基于关键词-文档索引的方案 O ( 1 ) O(1) O(1) 不简答

在基于文档-关键词索引的方案中,查询效率与文档数目线性关系,导致这类方案难以应用于大数据场景。为此,提出了基于关键词-文档索引的方案。
此类方案在初始化时为每个关键词生成包含该关键词的文档标识集合,然后加密存储这些索引结构。基于关键词-文档索引的方案不需要逐个检索每篇文档,其检索时间复杂度仅与返回的结果数目线性关系,因此查询效率远高于前两类方案。

基于关键词-文档索引的方案
索引包括一个数组 A A A以及一个查找表 T T T
其核心思路是首先为包含关键词 _ wi的第 j篇文档构造节点 , j _{,j} Ni,j,此节点包含该文档的标识下一个节点的加密密钥及其在数组 A A A中的存储位置,然后将此节点加密保存在数组 A A A中。
最后,将第一个节点 , 1 _{,1} Ni,1的加密密钥以及存储位置异或一个掩码后存储在查找表T中。
检索时,服务器首先通过查找表 T T T找到检索关键词对应的第一个节点的信息,然后对数组A进行查找和解密,直到获得检索关键词对应的最后一个节点。

  • Setup算法:数据所有者生成密钥 1 , 2 , 3 _1,_2,_3 K1,K2,K3,对称加密算法Enc,伪随机置换 φ , π φ,π φ,π以及伪随机函数 f
  • BuildIndex算法:给定文档集合 D D D,数据所有者首先对其进行分词得到关键词集合 δ ( D ) δ(D) δ(D),并为每个关键词 ∈ δ ( D ) _∈δ(D) wiδ(D)生成所有包含该关键词的文档集合 D ( ) D(_) D(wi)。然后,初始化计数器 c t r = 1 ctr=1 ctr=1、数组 A A A以及查找表 T T T。对于各关键词 _ wi, 1 ≤ ≤ ∣ δ ( D ) ∣ 1≤≤|δ(D)| 1iδ(D)
    • 生成密钥 , 0 _{,0} Ki,0
    • 对于 1 ≤ ≤ ∣ D ( ) ∣ − 1 1≤≤|D(_ )|−1 1jD(wi)1:首先生成密钥 , _{,} Ki,j,然后构造节点 , = < ( , ) ) ∣ ∣ , ) ∣ ∣ φ ( 1 ) ( c t r + 1 ) > _{,}=<(_{,}))||_{,)}||φ_(_1 ) (ctr+1)> Ni,j=<id(Di,j))Ki,j)φ(K1)(ctr+1)>,其中 ( ( , ) ) (_{(,)}) id(D(i,j)) D ( ) D(_) D(wi)中第 j篇文档的标识。最后,使用密钥 ( , − 1 ) _{(,−1)} K(i,j1)加密节点 ( , ) _{(,)} N(i,j),并将其保存在数组A的第 φ ( 1 ) ( c t r ) φ_{(_1)}(ctr) φ(K1)(ctr)个位置,即 [ φ ( 1 ) ( c t r ) ] = ( ( , − 1 ) ) ( ( , ) ) [φ_{(_1 )}(ctr)]=_{(_(,−1) ) }(_{(,)}) A[φ(K1)(ctr)]=Enc(K(i,j1))(N(i,j)),同时令 c t r = c t r + 1 ctr=ctr+1 ctr=ctr+1
    • 对于 = ∣ D ( ) ∣ =|D(_ )| j=D(wi):构造节点 ( , ∣ D ( ) ∣ ) = < ( ( , ∣ D ( ) ∣ ) ) ∣ ∣ 0 ∣ ∣ > _(,|D(_ )| )=<(_(,|D(_ )| ) )||0^ ||> N(i,D(wi))=<id(D(i,D(wi)))0kNULL>,使用密钥 ( , ∣ D ( ) ∣ − 1 ) _(,|D(_ )|−1) K(i,D(wi)1)加密该节点,并将其保存在数组A的第 φ ( 1 ) ( c t r ) φ_{(_1)} (ctr) φ(K1)(ctr)个位置,即 [ φ ( 1 ) ( c t r ) ] = ( ( , ∣ D ( ) ∣ − 1 ) ) ( ( , ∣ D ( ) ∣ ) ) [φ_{(_1 )}(ctr)]=_{(_(,|D(_ )|−1))}(_{(,|D(_ )|)}) A[φ(K1)(ctr)]=Enc(K(i,D(wi)1))(N(i,D(wi))),同时令 c t r = c t r + 1 ctr=ctr+1 ctr=ctr+1
    • T [ π ( 3 ) ( ) ] = < ( ( , 1 ) ) ∣ ∣ ( , 0 ) > ⨁ ( 2 ) ( ) T[π_{(_3 )}(_ )]=<_(_{(,1)})||_(,0)>⨁_{(_2 )}(_) T[π(K3)(wi)]=<addrA(N(i,1))K(i,0)>f(K2)(wi),其中 ( ( , 1 ) ) _ (_{(,1)}) addrA(N(i,1))为节点_(,1)在数组 A A A中的存储位置。最后,对数组 A A A以及查找表 T T T中剩下的0进行混淆;
  • GenTrapdoor算法:数据所有者为检索关键词w生成陷门 = ( π ( 3 ) ( ) , ( 2 ) ( ) ) =(π_{(_3 )}(),_{(_2 )}()) t=(π(K3)(w),f(K2)(w))
  • Search算法:服务器首先根据陷门 = ( γ , η ) =(γ,η) t=(γ,η)得到 θ = T [ γ ] θ=T[γ] θ=T[γ]。如果 θ ≠ ⊥ θ≠⊥ θ=,则通过计算 θ ⨁ η θ⨁η θη得到 < α ∣ ∣ ′ > <α||^′> <αK>,然后使用 ′ ^′ K解密 A [ α ] A[α] A[α]保存的节点,并得到该节点对应的文档标识以及后续节点在数组 A A A中的存储位置和解密密钥,从而依次获得其后续节点的内容。最后服务器将检索到的文档标识返回给数据所有者。
    精卫填海——大数据安全与隐私保护_第46张图片

4 小结:检索方案的比较

  1. 全文扫描方案要求服务器检索需遍历整个文件,时间复杂度为 O ( n s ) O(ns) O(ns)(n 为服务器上存储的文件数目,s 为文件平均长度),效率极低。
  2. 采用“文件-关键词”构建思想的 SSE 方案以文件为基本单位,使其在文件更新(该操作以文件为基本单位)时,只需更新当前使用的数据结构,具有较高的效率。由于检索是以关键词为基本单位进行,要求服务器遍历所有文件的数据结构,花费 O ( n ) O(n) O(n)时间,效率较低。
  3. 采用“关键词-文件”构建思想的 SSE 方案处理以关键词为基本操作单位的检索操作时,只需 O ( 1 ) O(1) O(1)时间,具备较高的效率。由于文件更新的基本操作单位为文件,而该思想的基本构建单位为关键词,使得文件更新时,服务器需重新构建适应更新后状态以关键词为基本单位的索引,造成较大开销。

5 检索方案的安全性

(1) 文档-关键词方案的安全性

为证明该方案的安全性,首先需要形式化地定义选择关键词语义安全IND-CKAIND2-CKA(更为严格),并证明该方案满足这些安全性。

选择关键词语义安全IND2-CKA的含义是:
对于两个数据文档 0 _0 V0 1 _1 V1,仅凭其密文索引无法对二者进行区分

为了定义IND2-CKA,先定义如下游戏:

游戏3-1

  1. Setup过程:挑战者 C C C创建一个关键词集合 S S S,并将其发送给敌手 A A A(可将敌手 A A A视作一个概率多项式时间(PPT)算法)。 A A A选择 S S S的若干个子集,这些子集的集合记为 S ∗ S^* S,并将 C C C返回给 C C C。此处,一个子集可以看成一个数据文档。 C C C运行Setup算法,并对 S ∗ S^* S的每个元素运行BuildIndex算法,最后将全部索引及其对应的子集发送给 A A A
  2. Query过程:敌手 A A A向挑战者 C C C请求关键词 x陷门 _ Tx,并在任意索引上运行Search算法以判定该索引是否包含 ;
  3. Challenge过程:在运行若干次Query之后,敌手 A A A S ∗ S^* S中选择两个非空子集 0 _0 V0 1 _1 V1 ,且 ∣ ( 0 − 1 ) ∪ ( 1 − 0 ) ∣ ≠ 0 |(_0−_1)∪(_1−_0)|≠0 (V0V1)(V1V0)=0 ( 0 − 1 ) ∪ ( 1 − 0 ) (_0−_1)∪(_1−_0) (V0V1)(V1V0)中的任意关键词均未被查询过。 A A A 0 _0 V0 1 _1 V1发送给 C C C C C C随机抛掷硬币 b,并在 _ Vb上运行BuildIndex算法,最后将对应的结果发给 A A A
  4. Response过程:敌手 A A A给出对 b的猜测 ′ ^′ b

我们将上述游戏的优势定义 = ∣ P r ⁡ ( ′ = ) − 1 / 2 ∣ _=|Pr⁡(^′=)−1/2| AdvA=Pr(b=b)1/2

定义3-5 称一个SSE方案是IND2-CKA安全的,如果任何敌手A在上述游戏中的优势都是可忽略的。

定理 3-1 如果函数是一个伪随机函数,则基于布隆过滤器的方案 ϵ 1 \epsilon_1 ϵ1满足IND2-CKA安全性。

IND2-CKA安全性缺陷

(2)关键词-文档方案2的安全性

∆ = 1 , … , ∆={_1,…,_} =w1,,wd为关键词集合,为每篇文档分别构造索引,具体步骤如下:

  • Setup算法:数据所有者生成密钥 K K K以及伪随机置换函数 π \pi π
  • BuildIndex算法:假设数据所有者为文档集合中的第 c t r ctr ctr篇文档 D D D构造索引,首先初始化一个长度为 d d d的数组 A A A,然后对于关键词集合中的各关键词 ∈ ∆ _∈∆ wi,如果文档 D D D包含关键词 _ wi,则执行如下操作:
    • 计算 = π K ( ∣ ∣ ) =\pi_K(_ ||) r=πK(wictr)
    • A [ i ] A[i] A[i]设置为 ⨁ ( w ∣ ∣ 0 ) ⨁(w_ ||0^) (wi0k),并在数组 A A A中没有存储数据的位置填充随机串
  • GenTrapdoor算法:数据所有者为检索关键词 w w w生成陷门 1 = π ( ∣ ∣ 1 ) , … , = π ( ∣ ∣ ) _1=\pi_ (||1),…,_=\pi_ (||) r1=πK(w1),,rn=πK(wn),其中n为文档集合中的文档总数,即每篇文档对应的陷门不同;
  • Search算法:对于文档 D D D对应的数组 A A A,如果存在 1 ≤ ≤ ∣ ∣ 1≤≤|| 1jA,使得 [ ] ⨁ []⨁_{} A[j]rctr的后 k k k位均为0,则输出1;否则,输出0。

定理3-2 如果 π \pi π是伪随机置换函数,则上述方案满足IND2-CKA安全性。

显然,虽然上述方案可以满足IND2-CKA安全性,但是由于Search算法直接暴露了关键词 w w w的明文内容,该方案实际上是不安全的。究其根本原因,在于IND2-CKA安全性只考虑了索引和陷门孤立的安全性,而检索操作需要将索引和陷门二者同时作为输入,还需要考虑二者结合的安全性。

为此,人们提出了4个新的安全性的定义:

  • 非适应性语义安全NS
  • 非适应性不可区分性NI
  • 适应性语义安全AS
  • 适应性不可区分性AS

NS=NI

这里介绍非适应性语义安全NS适应性语义安全AS,它们的安全级别关系是NS。在描述具体的安全性定义之前,首先介绍几个辅助概念:
定义3-7(查询历史) 一个查询历史 H H H包括两个组成部分:被查询的文档集合 D = { 1 , … , } D=\{_1,…,_\} D={D1,,Dn}以及查询关键词列表 W = { 1 , … , } W=\{_1,…,_\} W={w1,,wq},即 H = ( D , W ) H=(D,W) H=(D,W)

定义3-8(访问模式) 一个查询历史H的访问模式α是所有查询返回的文档列表 α ( ) = ( ( 1 ) , … , ( ) ) \alpha()=((_1 ),…,(_ )) α(H)=(D(w1),,D(wq))

定义3-9(搜索模式) 一个查询历史H的搜索模式 δ δ δ是一个对称的 q × q q×q q×q矩阵,表示两次查询的关键词是否相等
当且仅当 = _=_ wi=wj时,矩阵 δ ( H ) δ(H) δ(H) i i i j j j列的元素为1即 δ ( ) [ , ] = 1 δ()[,]=1 δ(H)[i,j]=1;否则, δ ( ) [ , ] = 0 δ()[,]=0 δ(H)[i,j]=0

定义3-10(轨迹) 一个查询历史 H H H的轨迹 t t t包括文档集合中每篇文档的长度以及访问模式和搜索模式: ( ) = ( ∣ 1 ∣ , … , ∣ ∣ , α ( ) , δ ( ) ) ()=(|_1 |,…,|_ |,\alpha(),δ()) t(H)=(D1,,Dn,α(H),δ(H))

定义3-11 (非适应性语义安全)

Real是如下的一个游戏过程:

  1. 挑战者运行Setup算法获得密钥;
  2. 敌手选择查询历史 H = ( D , W ) H=(D,W) H=(D,W)
  3. 挑战者对文档集合 D D D加密得到密文 [ D ] [D] [D],并运行BuildIndex算法得到索引 I I I。同时,运行GenTrapdoor算法为查询关键词列表 W W W中的各关键词 _ wi生成陷门 _ ti
  4. 输出 ( , [ D ] , 1 , … , ) (,[D],_1,…,_) (I,[D],t1,,tq)

Sim是如下的一个模拟过程:

  1. 敌手选择查询历史 H = ( D , W ) H=(D,W) H=(D,W)
  2. 挑战者根据轨迹 t ( H ) t(H) t(H)模拟生成 ( , [ D ] , 1 , … , ) (,[D],_1,…,_) (I,[D],t1,,tq)
  3. 输出 ( , [ D ] , 1 , … , ) (,[D],_1,…,_) (I,[D],t1,,tq)

称一个密文检索方案是非适应性语义安全的,如果对于任意多项式能力的敌手,均存在一个多项式时间模拟算法,使得Real和Sim的输出结果无法区分

定义3-12 (适应性语义安全)

Real是一个如下的游戏过程:

  1. 挑战者运行Setup算法得到密钥;
  2. 敌手选择文档集合 D D D
  3. 挑战者对文档集合 D D D加密得到密文 [ D ] [D] [D],并运行BuildIndex算法得到索引$I4;
  4. 敌手根据密文 [ D ] [D] [D]和索引 I I I选择第一个查询关键词 w 1 w_1 w1
  5. 挑战者运行GenTrapdoor算法生成关键词 w 1 w_1 w1对应的陷门 t 1 t_1 t1
  6. 对于 2 ≤ i ≤ q 2≤i≤ q 2iq
    6.1)敌手根据 [ D ] [D] [D] I I I以及前 i − 1 i-1 i1次的陷门 t 1 , … , t i − 1 t_1,…,t_{i-1} t1,,ti1选择查询关键词 w i w_i wi
    6.2)挑战者运行GenTrapdoor算法生成关键词 w i w_i wi对应的陷门 t i t_i ti
  7. 输出 ( , [ D ] , 1 , … , ) (,[D],_1,…,_) (I,[D],t1,,tq)

Sim是一个如下的模拟过程:

  1. 敌手选择文档集合 D D D
  2. 挑战者根据轨迹 t ( D ) t(D) t(D)模拟生成密文 [ D ] [D] [D]以及索引 I I I
  3. 敌手根据密文 [ D ] [D] [D]和索引 I I I选择第一个查询关键词 w 1 w_1 w1
  4. 挑战者根据轨迹 t ( D , w 1 ) t(D,w_1) t(D,w1)模拟生成陷门 t 1 t_1 t1
  5. 对于 2 ≤ i ≤ q 2≤i≤ q 2iq
    5.1)敌手根据 [ D ] [D] [D] I I I以及前 i − 1 i-1 i1次的陷门$t1,…, t i − 1 t_{i-1} ti1选择查询关键词 w i w_i wi
    5.2)挑战者根据轨迹 t ( D , w 1 , … , w i ) t(D,w_1,…,w_i) t(D,w1,,wi)模拟生成陷门 t i t_i ti
  6. 输出 ( , [ D ] , 1 , … , ) (,[D],_1,…,_) (I,[D],t1,,tq)

称一个密文检索方案是适应性语义安全的,如果对于任意多项式能力的敌手,均存在一个多项式时间模拟算法,使得Real和Sim的输出结果无法区分

上述两种安全性说明了仅凭轨迹信息就能模拟出与原始方案不可区分的方案,这表明轨迹是密文检索方案唯一泄露的信息。非适应性安全定义和适应性安全定义的主要区别在于敌手的攻击能力,其中前者的背景知识是敌手一次性选定的,而后者的敌手可以根据以往的背景知识选择下一次需要获得的背景知识。

适应性安全高于非适应性

  • 文档-关键词 非适应性语义安全
  • 关键词-文档 适应性语义安全

(四)非对称密文检索(不细考 适用场景和算法组成)

非对称密文检索是指数据所有者(数据发送者)和数据检索者(数据接收者)不是同一方的密文检索技术。与非对称密码体制类似,数据所有者可以是了解公钥的任意用户,而只有拥有私钥的用户可以生成检索陷门。一个典型的非对称密文检索过程如下:

  • Setup算法:该算法由数据检索者执行,生成公钥PK和私钥SK
  • BuildIndex算法:该算法由数据所有者执行,根据数据内容建立索引,并将公钥加密后的索引和数据本身上传到服务器
  • GenTrapdoor算法:该算法由数据检索者执行,将私钥和检索关键词作为输入,生成相应的陷门(又称“搜索凭证”),然后将陷门发送给服务器;
  • Search算法:该算法由服务器执行,将公钥、接收到的陷门和本地存储的索引作为输入,进行协议所预设的计算,最后输出满足条件的搜索结果。

1 BDOP-PEKS方案

2 KR-PEKS方案

3 DS-PEKS方案

4 小结:三种方案比较

(五)密文区间检索

1 早期工作

(1) 基于桶式索引的方案

主要思路:将属性值域进行分桶,并为各分桶分配一个唯一的标识,记录的索引即为其属性值所在分桶的标识。当需要进行检索时,用户将与检索区间相交的分桶的标识集合发送给服务器,服务器随后将这些分桶内的全部密文数据作为检索结果返回给用户。
方案特点:实现简单,在一定程度上保证了敏感数据的机密性。但是,服务器返回的检索结果中可能包含大量的冗余数据,需要客户端进行二次检索。此外,客户端还需要将分桶策略保存在本地。

(2) 基于B+树和传统加密技术的方案

主要思路:为数据构造B+树,并使用传统加密技术将各节点分别加密后存储服务器。当需要进行检索时,服务器将密文节点返回给用户,由用户在解密后进行判断,然后通知服务器下一个需要查询的密文节点。
方案特点:客户端工作量较大,且需要服务器和客户端之间进行多轮交互操作

精卫填海——大数据安全与隐私保护_第47张图片

2 基于矩阵加密的方案 @

矩阵加密是密文区间检索方案中一种常用的对称加密技术,其用于安全地计算两个向量的内积。矩阵加密具有实现简单、运算效率高、适用于处理高精度数据等优势,但是安全性较差

假设 d d d为向量的维度,需要计算数据向量 P P P查询向量 Q Q Q的内积。基础的矩阵加密方案的工作流程如下:

  • ASPE.setup(d):输出一个 d × d d×d d×d的可逆矩阵 M M M
  • ASPE.data_enc(P,M):输出 P ^ = M T P \hat{P}=M^TP P^=MTP
  • ASPE.query_enc(Q,M):输出 Q ^ = M − 1 P \hat{Q}=M^{-1}P Q^=M1P
    易知,
    P ^ ⋅ Q ^ = M T P ⋅ M − 1 P = ( M P T ) T ⋅ M − 1 P = P T M M − 1 P = P ⋅ Q \hat{P} \cdot \hat{Q}=M^TP \cdot M^{-1}P= (MP^T)^T \cdot M^{-1}P= P^TM M^{-1}P=P\cdot Q P^Q^=MTPM1P=(MPT)TM1P=PTMM1P=PQ

密文向量保留了明文向量的内积
精卫填海——大数据安全与隐私保护_第48张图片

定理3-4 如图3-8所示,已知在一个原点为O的坐标系中存在一个单位圆,上半圆周上有A、B、C3个不同的点,OA和OB,OB和OC,OA和OC之间的夹角分别为θ1,θ2,θ3,其中0<θi<π,i=1,2,3。那么当且仅当cosθ3

推论3-1 已知在一个原点为O的坐标系中存在一个圆,上半圆周上有V、VL、VH3个不同的点,OV、OVL、OVH与横坐标的夹角分别是θ,θL,θH ,其中0<θ,θL,θH<π 。那么当且仅当cos(θH-θL) 精卫填海——大数据安全与隐私保护_第49张图片

基于以上定理以及推论,我们可以将区间判断映射为单断言。假设属性值域为 [ − D , D ] [-D,D] [D,D],如图3-9所示,值映射函数 将值 v v v映射为角度 θ θ θ。由于该映射函数在 v ∈ [ − D , D ] v∈[-D,D] v[D,D]时是单调递增的,那么对于任意 v 1 > v 2 , v 1 , v 2 ∈ [ − D , D ] v_1>v_2,v_1,v_2∈[-D,D] v1>v2,v1,v2[D,D],其对应的映射角度 θ 1 , θ 2 θ1,θ2 θ1,θ2必然满足 θ 1 > θ 2 , θ 1 , θ 2 ∈ [ 0 , π ] θ_1>θ_2,θ_1, θ_2∈[0,π] θ1>θ2,θ1,θ2[0,π] 。因此,对于属性值 v v v和检索区间 ( v L , v H ) , v ∈ ( v L , v H ) (v_L,v_H), v∈(v_L,v_H) (vL,vH)v(vL,vH)的充分必要条件是 θ L < θ < θ H θ_L<θ<θ_H θL<θ<θH,即 c o s ( θ H − θ L ) < c o s ( θ − θ L ) c o s ( θ − θ H ) cos(θ_H-θ_L)cos(θHθL)<cos(θθL)cos(θθH)。通过如下公式,可以将判断条件中的 θ θ θ θ L , θ H θ_L,θ_H θL,θH进行分离,然后使用矩阵加密对其进行保护:
c o s ( θ − θ L ) = c o s θ c o s θ L + s i n θ s i n θ L = [ c o s θ s i n θ ] [ c o s θ L s i n θ L ] cos(θ-θ_L)=cosθcosθ_L+sinθsinθ_L=\begin{bmatrix}cosθ&sinθ\\\end{bmatrix}\begin{bmatrix}cosθ_L\\sinθ_L\\\end{bmatrix} cos(θθL)=cosθcosθL+sinθsinθL=[cosθsinθ][cosθLsinθL]
c o s ( θ − θ H ) = c o s θ c o s θ H + s i n θ s i n θ H = [ c o s θ s i n θ ] [ c o s θ H s i n θ H ] cos(θ-θ_H)=cosθcosθ_H+sinθsinθ_H=\begin{bmatrix}cosθ&sinθ\\\end{bmatrix}\begin{bmatrix}cosθ_H\\sinθ_H\\\end{bmatrix} cos(θθH)=cosθcosθH+sinθsinθH=[cosθsinθ][cosθHsinθH]
具体的基于矩阵加密的单维区间检索方案步骤如下:

  • Setup:输出一个 2 × 2 2×2 2×2的可逆矩阵 M M M
  • BuildIndex( v v v, M M M):计算得到 θ = F ( v ) θ=F(v) θ=F(v)以及 I = [ c o s θ s i n θ ] I= \begin{bmatrix}cosθ\\sinθ\\\end{bmatrix} I=[cosθsinθ],然后输出 I ^ = M T I \hat{I}=M^TI I^=MTI
  • GenTrapdoor( v L v_L vL, v H v_H vH, M M M):计算得到 θ L = F ( v L ) , θ H = F ( v H ) θ_L=F(v_L), θ_H=F(v_H) θL=F(vL),θH=F(vH)以及 T L = [ c o s θ L s i n θ L ] , T H = [ c o s θ H s i n θ H ] T_L= \begin{bmatrix}cosθ_L\\sinθ_L\\\end{bmatrix},T_H= \begin{bmatrix}cosθ_H\\sinθ_H\\\end{bmatrix} TL=[cosθLsinθL],TH=[cosθHsinθH],同时计算 T r a n g e = c o s ( θ H − θ L ) T_{range}=cos(θ_H-θ_L) Trange=cos(θHθL),然后输出 I ^ = M T I \hat{I}=M^TI I^=MTI运行矩阵加密运算得到 T ^ L = M − 1 T L , T ^ H = M − 1 T H \hat{T}_L=M^{-1}T_L,\hat{T}_H=M^{-1}T_H T^L=M1TL,T^H=M1TH,输出 T ^ = { T 1 ^ , T 2 ^ , T r a n g e } \hat{T}=\{\hat{T_1},\hat{T_2},T_{range}\} T^={T1^,T2^,Trange},其中 T 1 ^ , T 2 ^ \hat{T_1},\hat{T_2} T1^,T2^并不是固定地分别对应 T ^ L , T ^ H \hat{T}_L,\hat{T}_H T^L,T^H,其对应关系是随机的;
  • Search( I ^ , T ^ \hat{I},\hat{T} I^,T^):进行单断言 T r a n g e < ( I ^ ⋅ T 1 ^ ) ( I ^ ⋅ T 2 ^ ) T_{range}<(\hat{I}\cdot\hat{T_1})(\hat{I}\cdot\hat{T_2}) Trange<(I^T1^)(I^T2^)判断,如果为真,则输出1,否则,输出0。

由于上述方案为各记录分别构造索引,因此,检索时,也需要依次判断各记录是否满足检索条件,即该方案的检索效率记录数目成正比。

3 基于谓词加密的方案

基于不同类型的谓词加密技术,谓词加密可以分为对称谓词加密非对称谓词加密 。在基于谓词加密的方案中,假设所有值均为整数

目标:判断属性值 u ∈ [ 1 , n ] u∈[1, n] u[1,n]是否属于区间 Q ⊂ [ 1 , n ] Q\subset[1,n] Q[1,n]
思路:为属性值 u u u构造向量 = 1 , 2 , ⋯ , ={_1, _2, ⋯, _} x=x1,x2,,xn,其中若 i = u i = u i=u,则 = 1 _=1 xi=1;否则 = 0 _=0 xi=0
为区间Q构造向量 = 1 , 2 , ⋯ , ={_1, _2, ⋯, _} v=v1,v2,,vn,其中 i ∈ i∈ iQ,则 = 0 _=0 vi=0;否则 = 0 _=0 vi=0
于是判断 u u u是否属于 Q Q Q就等价于判断向量 x x x v v v的内积是否为0。
而对称谓词加密方案提供了在不公开 x x x v v v的前提下判断内积是否为0的方法。

该方法虽然实现简单,但计算量与向量长度n 成正比,导致该方法检索效率过低。考虑到现实应用场景中大多为实数型数据,因此向量的长度将非常大,超出接受能力。

4 基于等值检索的方案

基于等值检索的密文区间检索方案,其核心思想是将区间检索转换为等值检索,然后使用现有的基于关键词-文档索引的密文关键词检索方案完成查询。将区间检索转换为关键词检索,有利于将这两种检索方式进行结合。

直观上,可以将每个属性值看作一个关键词,然后通过枚举检索区间内的属性值,直接将区间检索转换为多轮等值检索,然而这种方法不适用于处理数值精度较高或者检索区间较大的情况。因此,研究者希望可以将检索区间映射为少量关键词,从而限制陷门的大小。

可以使用线段树中的节点来表示属性值和检索区间,并令每个节点对应一个关键词。如图3-7所示,假设属性值域为[0,7],属性值为5的记录对应的关键词即为节点101,10*,1**,***对应的关键词。检索时,假设检索区间为[1,6],其对应的最小节点集合为{001,01*,10*,110},则分别使用这些节点对应的关键词进行单关键词检索,最后对检索结果求并集。

精卫填海——大数据安全与隐私保护_第50张图片

5 基于保序加密的方案

保序加密(Order-Preserving Encryption,OPE)是一种保持数值顺序关系的加密算法,其算法本身可以应用于各种场景,并不仅限于区间检索。

定义3-13 (保序加密) 给定加密算法E,如果对于任何密钥k,以及数值数据x和y(x E k ( x ) < E k ( y ) E_k(x)Ek(x)<Ek(y),则称E是保序的。

6 小结:区间检索四种方案优缺点比较

由于谓词加密方案本身实现了可证明安全,因此,基于谓词加密的密文区间检索方案普遍安全性较高。但是其基本运算操作为双线性映射,从而检索效率较低,不适用于处理高维度高精度数据

基于矩阵加密的方案虽然安全性不如谓词加密方案,但是其基本运算操作为乘法和加法,因此,检索效率较高,且可以方便地处理高精度数据

基于等值检索的方案灵活性较大,根据用户对于安全性、效率和存储空间的要求,可以采用不同的关键词构造方式。由于这类方法主要基于密文关键词检索方案,因此,容易将区间检索和关键词检索相结合。

保序加密由于其本身的特征,使得密文直接泄露了明文的排序特征,因此安全性较低。但是对于经过保序加密的数据,可以使用任意明文数据结构和检索方式对其进行检索,所以在安全性要求不高的场景中,保序加密具有良好的表现。

第四章 安全处理技术

(一)安全处理技术

1 同态加密:算法组成、正确性、全同态加密、语义安全性、紧凑性

同态加密(Homomorphic Encryption,HE)的思想最早是由Rivest等人于1978年提出的,其基本思想是:在不解密的前提下,能否对密文数据进行任意的计算,且计算结果的解密值等于对应的明文计算的结果

以云计算应用场景为例。以同态加密处理数据的整个处理过程大致是这样的:

  • Alice对数据进行加密。并把加密后的数据发送给Cloud;
  • Alice向Cloud提交数据的处理方法,这里用函数f来表示;
  • Cloud在函数f下对数据进行处理,并且将处理后的结果发送给Alice;
  • Alice对数据进行解密,得到结果。

根据f的限制条件不同,同态加密方案实际上分为了两类:

  • 全同态加密(Fully Homomorphic Encryption, FHE):这意味着HE方案支持任意给定的f函数,只要这个f函数可以通过算法描述,用计算机实现。通常FHE的开销较大。
  • 类同态加密(Somewhat Homomorphic Encryption, SWHE):这意味着HE方案只支持一些特定的f函数。SWHE方案稍弱,但也意味着开销会变得较小,容易实现。

一个同态加密方案 ε ε ε通常由以下四个算法组成
KeyGen算法:输入安全参数 λ λ λ λ λ λ通常用来刻画密钥的比特长度),生成公钥 p k p_k pk和私钥 s k s_k sk,即 ( p k , s k ) ← K e y G e n ( λ ) (p_k,s_k)←KeyGen(λ) (pk,sk)KeyGen(λ)
Encrypt算法:输入明文 ∈ { 0 , 1 } ∈ \{0,1\} m{0,1}和公钥 p k p_k pk,得到密文 c,即 ← E n c r y p t ( p k , ) ← Encrypt(p_k, ) cEncrypt(pk,m)
Decrypt算法:输入私钥 s k s_k sk和密文 c,得到明文 m ,即 ← D e c r y p t ( s k , ) ← Decrypt(s_k, ) mDecrypt(sk,c)
Evaluate算法:输入公钥 p k p_k pk t t t比特输入的布尔电路 C和一组密文 1 , 2 , ⋯ , _1, _2, ⋯ , _ c1,c2,,ct,其中 ← E n c r y p t ( p k , ) , i = 1 , 2 , ⋯ , t _ ← Encrypt(p_k, _), i = 1,2, ⋯ ,t ciEncrypt(pk,mi),i=1,2,,t,得到另一个密文 ∗ ^∗ c,即 ∗ ← E v a l u a t e ( p k , , ) ^∗ ← Evaluate(p_k, , ) cEvaluate(pk,C,c),其中 = ( 1 , 2 , ⋯ , ) = (1, 2, ⋯ , ) c=(c1,c2,,ct)
布尔电路由模2加法门模2乘法门组成,加密方案的明文空间为 { 0 , 1 } \{0,1\} {0,1}

定义4-1(正确性)* 一个方案 ε = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) ε=(KeyGen, Encrypt, Decrypt, Evaluate) ε=(KeyGen,Encrypt,Decrypt,Evaluate)对一个给定的 t t t比特输入的布尔电路 C是正确的,如果对任何由 K e y G e n ( λ ) KeyGen(λ) KeyGen(λ)输出的密钥对 ( p k , s k ) (p_k,s_k) (pk,sk),以及任何明文比特 1 , 2 , ⋯ , _1, _2, ⋯ , _ m1,m2,,mt和任何密文 = 1 , 2 , ⋯ , , ← E n c r y p t ( p k , ) ( i = 1 , 2 , ⋯ , t ) = _1, _2, ⋯ , _, _ ← Encrypt(pk, _) (i = 1,2, ⋯ ,t) c=c1,c2,,ct,ciEncrypt(pk,mi)(i=1,2,,t), 都 有 D e c r y p t ( , E v a l u a t e ( p k , , ) ) = ( 1 , 2 , ⋯ , ) Decrypt(_, Evaluate(p_k, , )) = (_1, _2, ⋯ , _) Decrypt(sk,Evaluate(pk,C,c))=C(m1,m2,,mt)
定义4-2(同态加密) 一个方案 ε = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) ε=(KeyGen, Encrypt, Decrypt, Evaluate) ε=(KeyGen,Encrypt,Decrypt,Evaluate)对一类布尔电路 C ℂ C是同态的,如果对所有的布尔电路 ∈ C ∈ ℂ CC ε ε ε都是正确的。
定义4-3(全同态加密)* 一个方案 ε = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) ε=(KeyGen, Encrypt, Decrypt, Evaluate) ε=(KeyGen,Encrypt,Decrypt,Evaluate)全同态的,如果对所有的布尔电路, ε ε ε都是正确的。
定义4-4(可忽略函数) μ ( ) : → \mu() : → μ(n):NR N是自然数集, R是实数集,称函数 μ ( ) \mu() μ(n) 是可忽略的,如果对任意多项式 ( ⋅ ) (\cdot) p(),存在 0 ∈ _0 ∈ N0N,使得对所有的 > 0 > _0 n>N0,都有 μ < 1 / ( ) \mu_ < 1/() μn<1/p(n)

语义安全性是相对于被动敌手(也称监听敌手)而言的,这种敌手只是被动地获取密文而非主动进行攻击。语义安全性是指敌手无法区分一个密文是两个确定明文中的哪一个的加密,即使这两个明文是敌手自己选择的也是如此。对于公钥加密方案而言,这正是选择明文攻击下的不可区分安全性,又 称 多 项 式 安 全 。

一 个 方 案 ε = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) ε=(KeyGen,Encrypt, Decrypt, Evaluate) ε=(KeyGen,Encrypt,Decrypt,Evaluate)的语义安全性可通过一个游戏(也称实验)来定义,将这个游戏记为 G a m e A , ε ( λ ) Game_{A,ε}(λ) GameA,ε(λ),其中 A A A为敌手(可视作一个概率多项式时间(PPT)算法), λ λ λ为安全参数。

游戏4-1 G a m e A , ε ( λ ) Game_{A,ε}(λ) GameA,ε(λ)的执行过程如下:
① 挑战者运行 ( p k , s k ) ← K e y G e n ( λ ) (p_k, s_k) ← KeyGen(λ) (pk,sk)KeyGen(λ) ,将 p k p_k pk发送给敌手 A A A
② 敌手 A A A得到 p k p_k pk,并产生一对等长的消息 0 , 1 _0, _1 m0,m1
③ 挑战者选择 b ∈ { 0 , 1 } b ∈ \{0,1\} b{0,1},计算 ∗ ← E n c r y p t ( p k , ) ^∗ ← Encrypt(p_k, _) cEncrypt(pk,mb)
,并将 ∗ ^∗ c发送给敌手 A A A
④ 敌手 A A A根据 λ λ λ ∗ ^∗ c输出一个比特 ′ ∈ { 0 , 1 } ^′ ∈ \{0,1\} b{0,1},可理解
′ ← A ( λ , ∗ ) ′ ← A(λ, ^∗) bA(λ,c)
⑤ 如果 ′ = ^′ = b=b,则游戏成功并输出1,否则游戏失败并输出0。

从上述游戏的执行过程中可以看出,敌手 A A A可以不顾密文而均匀随机地输出一个比特 ′ ^′ b,成功的概率为1/2。一般地,把一个敌手 A A A成功的概率超过1/2的量 称 为 其 成 功 的 优 势 , 记 为 A d v A , ε ( λ ) = P r [ G a m e A , ε ( λ ) = 1 ] − 1 / 2 Adv_{A,ε}(λ) =Pr[Game_{A,ε}(λ)= 1] − 1/2 AdvA,ε(λ)=Pr[GameA,ε(λ)=1]1/2

定义4-5(语义安全性)* 一个方案 ε = ( K e y G e n , E n c r y p t , D e c r y p t , E v a l u a t e ) ε=(KeyGen, Encrypt, Decrypt, Evaluate) ε=(KeyGen,Encrypt,Decrypt,Evaluate)是语义安全的,如果任何PPT敌手 A A A游戏4-1中成功的优势都是可忽略的,即对任何PPT敌手 A A A,都存在一个可忽略函数 λ ,使得 A d v A , ε ( λ ) ≤ μ ( λ ) Adv_{A,ε}(λ) ≤\mu(λ) AdvA,ε(λ)μ(λ)
显然,根据定义4-3,有一种平凡的方法可将任何公钥加密方案转化为全同态加密方案。将Evaluate算法取为首先用Decrypt解密所有的密文 c c c,然后将所对应的明文作为 的输入计算其值,即 E v a l u a t e ( p k , , c = ( D e c r y p t ( s k , 1 ) , D e c r y p t ( s k , 2 ) , … , D e c r y p t ( s k , ) ) Evaluate(p_k, , c = (Decrypt(s_k, _1), Decrypt(s_k, _2), … , Decrypt (s_k, _ )) Evaluate(pk,C,c=C(Decrypt(sk,c1),Decrypt(sk,c2

你可能感兴趣的:(笔记,big,data,安全,web安全)