文章目录
7 函数加密(FE)
7.1 FE的背景
在函数加密产生以前,对密文的解密是“全部”或没有的方式,即要么知道解密的全部结果,要么完全不知道解密的结果。即使是在访问控制加密中,我们也只是对信息的接收方进行控制(KP-ABE),或者是控制信息在不同人之间的具有不同的获取情况(CP-ABE),没有对解密的结果进行再运算。
函数加密可以简单的理解为在解密结果的基础上再进行一个函数的运算,得到一个函数值作为返回结果。
7.2 FE简介
思想
FE把对密文的访问需求抽象成一个函数。运用该函数生成解密密钥,解密运算包含针对明文的预定义函数运算,会直接输出函数值而非原明文。
函数加密的核心要求:如何实现对密文的灵活访问。
函数加密的思想和代理重加密(PRE)的思想在一定程度上相似,PRE将用发送方私钥的脱密和用接收方的公钥加密结合成一个步骤,达到了保护明文和发送方私钥的效果;FE将用发送方私钥的脱密和一个函数运算结合在了一起,达到了保护明文的效果,由于解密使用了一种特殊的私钥,所以也不会泄露发送方的私钥信息。
大一统特征
- 函数加密是一个非常广泛的概念,涵盖公钥加密、基于身份的加密、基于属性的加密、可搜索加密、谓词加密等很多基于公钥加密的概念
- 谓词加密:私钥对应谓词 f f f,密文对应属性向量 I I I,当且仅当 f ( I ) = 1 f(I)=1 f(I)=1时,密文才能正常解密
- 内积加密:密文和密钥都和向量相关联,用密钥解密密文会得到两个向量的内积
泛函的概念
定义
K
K
K为键空间,定义
X
X
X为明文空间,定义在
(
K
,
X
)
(K,X)
(K,X)上的泛函表示为函数集
F
:
K
×
X
→
{
0
,
1
}
∗
F:K×X\rightarrow\{ 0,1\}^*
F:K×X→{0,1}∗。
F
F
F中的函数
f
f
f是确定性函数,键空间
K
K
K包含一个空键
ϵ
\epsilon
ϵ,
ϵ
\epsilon
ϵ为所有从密文直接可得到的有关明文的信息(无需解密),比如明文长度。实际应用中
K
K
K可以是和明文计算有关的状态、属性、特征等信息,决定了函数如何对明文进行运算,例如,
K
K
K在常规公钥加密中是指定的接收者,在ABE中是明文的属性。
FE的概念
对于泛函
F
F
F的函数加密系统可以实现:
- C C C是加密 m m m的密文, m ∈ X m\in X m∈X
- s k f k sk_{fk} skfk是关于 f k f_k fk的密钥, f ∈ F , k ∈ K f\in F,k\in K f∈F,k∈K
- 用 s k f k sk_{fk} skfk解密 C C C得到 f ( k , m ) ∈ { 0 , 1 } ∗ f(k,m)\in\{ 0,1\}^* f(k,m)∈{0,1}∗
FE的定义
-
S
e
t
u
p
算法
Setup算法
Setup算法
- 输入:安全参数
- 输出:秘密参数 m s k msk msk,公钥 p k pk pk
-
K
e
y
G
e
n
KeyGen
KeyGen算法
- 输入:秘密参数 m s k msk msk,函数 f k f_k fk
-
E
n
c
Enc
Enc算法
- 输入:公钥,明文 m m m
- 输出:密文
-
D
e
c
Dec
Dec算法
- 输入:私钥,密文
- 输出: f ( k , m ) f(k,m) f(k,m)
FE的应用
7.3 用FE表达标准的公钥加密系统
定义
k
i
:
=
{
1
,
ϵ
}
k_i:=\{ 1,\epsilon\}
ki:={1,ϵ},其中
i
i
i表示第
i
i
i个用户,1表示可以解密,
ϵ
\epsilon
ϵ表示不可以解密,则函数
f
f
f定义为:
f
(
k
i
,
m
)
=
{
m
,
i
f
k
i
=
1
l
e
n
(
m
)
,
i
f
k
i
=
ϵ
f(k_i,m)=\left\{\begin{matrix}m,if\ k_i=1\\ len(m),if\ k_i=\epsilon \end{matrix}\right.
f(ki,m)={m,if ki=1len(m),if ki=ϵ
即如果 k i = 1 k_i=1 ki=1,则密钥 s k f k i sk_{fk_i} skfki可以解密密文得到明文 m m m,否则,解密得到明文长度。
思考:为什么输入密钥错误的情况下还要反馈一个信息呢,会造成信息泄露吗
这里的明文长度
l
e
n
(
m
)
len(m)
len(m),其实是没有泄露任何信息的,因为在一个公钥加密系统中,加密采用的公共参数和加密算法都是公开的,比如说我们采用RSA(安全参数N取1024),那么我们加密后的密文长度一定是1024的整数倍,这是因为在加密过程中采用了随机非对称填充的方法。即使明文长度不是1024的整数倍,依然可以看作是最近比明文长度大的一个1024的倍数。
7.3 用FE表达标准的谓词加密
7.4 FE的一个简单构造
从实现的角度上看,这个FE其实是
s
s
s个公钥加密体系的缝合,它有
s
s
s个公开参数和
s
s
s个主密钥,加密的过程中直接将明文的函数值作为公钥加密的明文输入,那么解密的时候也只能得到明文的函数值,在式中用
F
(
k
i
,
m
)
F(k_i,m)
F(ki,m)表示。
8 同态加密(HE)
8.1 HE的背景
函数加密的缺陷
若函数过于复杂,接收者的解密开销较大。
同态加密的思想
实现的是无密钥方对密文的计算,等价于对明文的计算。
8.2 应用场景
单一用户的同态加密场景
用户的所有明文
{
m
i
}
i
∈
[
1
,
N
]
\{ m_i\}_{i\in[1,N]}
{mi}i∈[1,N]对服务器保密,且函数
f
(
)
f()
f()是服务器私有,对用户保密,用户仅得到关于
f
(
)
f()
f()的计算结果。
多发送方的同态加密场景
8.3 HE简介
HE的能力
与FE相比,无解密密钥的(不可信)服务器可以先对多个密文进行计算之后,再由接收者解密,接收者不必对每一个密文解密再计算,从而节省计算代价和通信代价。
在单一用户和多发送场景,若函数是服务器私有的,接收者也不能获得该函数。
在多发送场景,接收者只能得到最后的结果,无法获知发送方密文对应的明文信息。
HE的定义(公钥的HE)
-
K
e
y
G
e
n
KeyGen
KeyGen算法
- 输入:安全参数
- 输出:私钥 s k sk sk和公钥 p k pk pk
-
E
n
c
Enc
Enc算法
- 输入:公钥 p k pk pk,明文 m m m
- 输出:密文 c c c
-
D
e
c
Dec
Dec算法
- 输入:密文 c c c,私钥 s k sk sk
- 输出:明文 m m m
-
E
v
a
l
Eval
Eval算法
- 输入:公钥 p k pk pk,若干密文<c_1,…c_t>,运算函数 f f f
- 输出:根据 f f f运算的新密文 c ′ c' c′
HE的定义(对称的HE)
-
K
e
y
G
e
n
KeyGen
KeyGen算法
- 输入:安全参数
- 输出:私钥 s k sk sk和公钥 p k pk pk
-
E
n
c
Enc
Enc算法
- 输入:密钥 s k sk sk,明文 m m m
- 输出:密文 c c c
-
D
e
c
Dec
Dec算法
- 输入:密文 c c c,密钥 s k sk sk
- 输出:明文 m m m
-
E
v
a
l
Eval
Eval算法
- 输入:公开参数 p k pk pk,若干密文<c_1,…c_t>,运算函数 f f f
- 输出:根据 f f f运算的新密文 c ′ c' c′
同态的性质
- 简洁性:解密密文 c ′ c' c′的复杂度与对密文操作的函数 f f f无关。
- 函数隐私性:应用中,若函数 f f f是服务器私有的,新密文 c ′ c' c′不会泄露 f f f的信息。
8.4 HE的同态性及分类
同态性
- 同态性:如果一个加密算法具有针对运算 " ∗ " "*" "∗"的同态性,则以下等式成立:
- ∀ m 1 , m 2 ∈ M \forall m_1,m_2\in M ∀m1,m2∈M,其中 M M M是明文空间
- E n c ( m 1 ) ∗ E n c ( m 2 ) = E n c ( m 1 ∗ m 2 ) Enc(m_1)*Enc(m_2)=Enc(m_1*m_2) Enc(m1)∗Enc(m2)=Enc(m1∗m2)
分类
8.4 同态加密的应用
同态加密被广泛应用到许多方面,例如:安全云计算、密文检索、机器学习的隐私保护、安全多方计算、零知识证明、私有信息抽取等。
云计算场景
8.5 HE的局限
- 所有的输入必须用同一个密钥加密
- 没有完整性检查
9 访问控制加密(ACE)
9.1 背景
传统的加密系统仅考虑读权限,在实际应用中,写权限同样重要,写权限可以阻止恶意信息的发送。
S
好
→
加密
R
坏
S
坏
→
签名
R
好
S
坏
→
R
坏
S_好\xrightarrow{加密}R_坏\\ S_坏\xrightarrow{签名}R_好\\ S_坏\rightarrow R_坏
S好加密R坏S坏签名R好S坏→R坏
对于第一种情况,我们应该采用加密的方式让而恶意的接收方无法解密密文;对于第二种情况,我们应该采用数字签名的方式让善意的接收方能够区分恶意文件;对于第三种情况,我们需要防范两个恶意的收发方,在网络中传播恶意文件(或ACE)解决。
9.2 ACE简介
一个恶意的发送方可以直接将信息以明文的形式广播出去,或者隐藏再密文的随机数中,通过次信道传送恶意信息。
由此,我们引入一个第三方对信息流进行控制,并把它命名为净化器。
净化器的作用:监督所有传播的信息,并销毁任何恶意的信息。(类似于防火墙)
ACE的提出
为什么要降低净化器的能力
因为它长时间在线,可信度较高的话,其运行维护的难度会加大;由于其可信度较高,受到攻击的可能性会更多,降低第三方的可信度,即使被攻破仍然不会造成对数据安全性的威胁。
图示
ACE的定义
-
S
e
t
u
p
Setup
Setup算法:
- 输入:安全参数,访问控制策略 P P P
- 输出:公开参数 p p pp pp( p p pp pp定义了明文空间、 S a n San San前的密文空间和 S a n San San后的密文空间)
-
M
K
G
e
n
MKGen
MKGen算法:
- 输入: p p pp pp
- 输出:主公私钥对 ( m p k , m s k ) (mpk,msk) (mpk,msk)
-
E
K
G
e
n
EKGen
EKGen算法:
- 输入:主私钥,和一个身份标识 I D ID ID
- 输出: I D ID ID的加密密钥 e k I D ek_{ID} ekID
-
D
K
G
e
n
DKGen
DKGen算法:
- 输入:主私钥,和一个身份标识 I D ID ID
- 输出: I D ID ID的解密密钥 d k I D dk_{ID} dkID
-
R
K
G
e
n
RKGen
RKGen算法:
- 输入:主私钥
- 输出:精华密钥 r k rk rk
上述算法由可信第三方执行。
-
E
n
c
Enc
Enc算法:
- 输入:一个加密密钥 e k I D ek_{ID} ekID和一个明文 m m m
- 输出:加密后的密文 c c c
-
S
a
n
San
San算法:
- 输入:净化密钥 r k rk rk,密文 c c c
- 输出:净化后的密文 c ′ c' c′
-
D
e
c
Dec
Dec算法:
- 输入:密文 c ′ c' c′和解密密钥 d k I D dk_{ID} dkID
- 输出:明文 m m m或 ⊥ \bot ⊥
ACE的安全性定义
- 对于接收者来说,满足不可读规则
发送者匿名性:没人能得到发送者的信息。
信息匿名性:仅合法接收者可以得到信息的内容。 - 对于发送者来说,满足不可写规则
如果通信被访问控制策略禁止的话,发送者无法向接收者发送信息。
10 总结
- 安全与信任的关系;现代密码学中可证明安全的思想;语义安全的概念。
- PKI的作用;性能问题;IBE的概念;为什么IBE能避免KPI。
- 双线性映射的运算。
- CP-ABE和KP-ABE的核心功能和区别。
- 代理重加密的概念和应用模式;可搜索对称加密的应用模式。
- 可搜索公钥加密的概念和应用模式;两种关键字攻击。
- 函数加密的概念和应用模式;同态加密的概念和与函数加密的区别。
- 同态加密的应用场景。
- 访问控制加密的概念和应用模式;净化器的作用。
- ABE加密与传统访问控制的区别; ACE和传统访问控制的区别。