IBE和ABE简述

IBE和ABE简述

基础知识

首先列举这样一个问题,公钥加密体制中,每个人的公钥都是一串类似随机的字符串,那么在进行加密的时候,发送者什么知道一串公钥就是接收者的公钥呢?倘若使用公钥失误,那么就会造成正确的接收者无法正确的接收信息。这就容易导致不安全,如,欺骗发送方,将接收者的公钥替换为自己的公钥并告知发送方,就有可能导致泄密。 如果说引入一个可信的第三方,用来存储对应用户的对应公钥,那么当用户数量增大到一定程度就会导致数据库维护相当困难,而大量的用户同时请求公钥查询的时候,也可能导致DOS(拒绝服务攻击)极其不方便,这就引入了基于身份的密码体制IBE。

IBE

所谓基于身份的密码体制,其实就是将接收者的身份揉入到公钥里面,这样直接使用带身份的公钥进行加密。

定义

S

e

t

u

p

(

λ

)

Setup(\lambda)

Setup(λ):输入安全参数

λ

\lambda

λ后(安全参数

λ

\lambda

λ与加密系统生成的明文空间和密文空间的大小有关),会产生对外公开的公共参数 PK 和仅由 PKG 知道的主密钥 MSK。

K

e

y

G

e

n

(

M

S

K

P

K

I

D

)

KeyGen(MSK,PK,ID)

KeyGen(MSK,PK,ID):PKG 收到用户身份 ID 时,将非公开的主密钥 MSK,公共参数

P

K

PK

PK 和用户身份 ID 作为算法的输入参数,输出对应用户的私钥

S

K

I

D

SK_{ID}

SKID​。

E

n

c

r

y

p

t

(

P

K

M

I

D

)

Encrypt(PK,M,ID)

Encrypt(PK,M,ID):输入公共参数 PK,用户身份 ID 和明文消息 M,这里公共参数 PK 和用户身份 ID 作为公钥对明文消息 M 进行加密,输出密文信息 CT。

D

e

c

r

y

p

t

(

P

K

C

T

S

K

I

D

)

Decrypt(PK,CT,SK_{ID})

Decrypt(PK,CT,SKID​):输入公共参数 PK,密文信息 CT 和用户私钥

S

K

I

D

SK_{ID}

SKID​,只有对应用户使用自己的私钥

S

K

I

D

SK_{ID}

SKID​和一组公开参数 PK 才能对密文信息 CT 进行 解密。 图解如下:

ABE

设想这样一个问题,身份虽然是一个有意义的字串,但是如果加密时候身份信息输入错误,也可能导致接收者解密失败。比如说,本来一个文件是要加密给Alice的,但是如果把身份错误地输入成了Aliec,那么Alice本身就不能解密信息了。 那么,能不能构造一种方案,只要身份类似,就能正确解密呢? 另外,如果想把这条加密消息公布出去,只让符合要求的人群才能够解密呢? 换句话说,只要身份中正确字符的个数超过了规定的阈值范围,就能够正确的解密,这就诞生了基于属性的加密。

不同于身份加密,属性加密体制中使用属性集合来代表用户的身份而不是ID,属性集合由一个或者多个属性构成,通过合理的配置共享策略(由属性以及之间关系所组成的一个逻辑表达式。用于判定谁有资格解密这个密文的),使得策略与属性集合相匹配,来达到私密的数据共享。

当前ABE分为两类,即,CP-ABE、KP-ABE。

CP-ABE

基于密文策略的属性加密,Ciphertext-Policy ABE,CP-ABE。是将策略嵌入到密文中,属性嵌入到用户密钥中。密文对应于一个访问结构(也就是策略),而密钥对应于一个属性集合,解密当且仅当属性集合中的属性能够满足此访问结构。 由于策略嵌入密文中,这就意味着数据拥有者可以通过设定策略去决定拥有哪些属性的人能够访问这份密文,也就相当于对这份数据做了一个粒度可以细化到属性级别的加密访问控制。 同样,如果将属性集合与访问资源相关联,数据使用者可以根据自己的授权属性去访问对应资源,该技术适合隐私数据共享、公有云存储等访问类应用。 一句话,也就是限定了访问人,限定谁能访问这个资源。

密文策略的属性加密算法主要由四步组成,分别是:系统初始化、加密操作、私钥产生、解密操作。具体过程如下: (1)

S

e

t

u

p

(

s

)

(

p

u

b

,

m

s

k

)

Setup(s) \rightarrow (pub,msk)

Setup(s)→(pub,msk):输入系统参数,由密钥生成中心随机生成公共参数和系统主密钥

(

p

u

b

,

m

s

k

)

(pub,msk)

(pub,msk) 。 (2)

E

n

c

r

y

p

t

(

m

,

p

u

b

,

A

)

E

Encrypt(m,pub,A)\rightarrow E

Encrypt(m,pub,A)→E :使用用户公钥

p

u

b

pub

pub和访问策略

A

A

A对明文

m

m

m进行加密,生成密文

E

E

E。 (3)

K

e

y

G

e

n

(

p

u

b

,

m

s

k

,

γ

)

s

k

KeyGen(pub,msk,\gamma) \rightarrow sk

KeyGen(pub,msk,γ)→sk:将主密钥

m

s

k

msk

msk和用户公钥

p

u

b

pub

pub以及用户属性集

γ

\gamma

γ作为输入,密钥生成中心运行概率算法为用户生成私钥

s

k

sk

sk。 (4)

D

e

c

r

y

p

t

(

E

,

s

k

)

m

Decrypt (E,sk) \rightarrow m

Decrypt(E,sk)→m:使用用户的属性集与访问策略进行匹配,若不满足策略,停止解密操作,若满足,用户使用私钥

s

k

sk

sk对密文

E

E

E进行解密,输出为明文

m

m

m 。

KP-ABE

基于密钥策略的属性加密,Key-Policy ABE,KP-ABE。是将策略嵌入到用户密钥中,属性嵌入到密文中。密钥对应于一个访问结构而密文对应于一个属性集合,解密当且仅当属性集合中的属性能够满足此访问策略。 这种设计比较接近静态场景,此时密文用与其相关的属性加密存放在服务器上,当允许用户得到某些消息时,就分配一个特定的访问策略给用户,其应用场景则更加偏向于付费视频网站、日志加密管理等等。如果用户想解密多个文件,那么他必须拥有多个可以满足匹配的秘钥,否则不能解密多个文件。 一句话,也就是限定了资源,即,访问者可以访问哪些资源

密钥策略的属性加密算法也与密文策略的属性加密算法一样由以上四步组成,且系统初始化和解密操作与 CP-ABE 是一样的,主要区别就是在加密阶段和私钥生成阶 段,具体过程如下: (1)

S

e

t

u

p

(

s

)

(

p

u

b

,

m

s

k

)

Setup(s) \rightarrow (pub,msk)

Setup(s)→(pub,msk):输入系统参数,由密钥生成中心随机生成公共参数和系统主密钥

(

p

u

b

,

m

s

k

)

(pub,msk)

(pub,msk)。 (2)

E

n

c

r

y

p

t

(

m

,

p

u

b

,

γ

)

E

Encrypt(m,pub,\gamma)\rightarrow E

Encrypt(m,pub,γ)→E:使用用户公钥

p

u

b

pub

pub和用户属性集

γ

\gamma

γ 对明文m 进行加密,生成密文

E

E

E。 (3)

K

e

y

G

e

n

(

p

u

b

,

m

s

k

,

A

)

s

k

KeyGen(pub,msk,A) \rightarrow sk

KeyGen(pub,msk,A)→sk:输入主密钥

m

s

k

msk

msk和用户公钥

p

u

b

pub

pub以及访问策略

A

A

A,密钥生成中心运行概率算法为用户生成私钥

s

k

sk

sk。 (4)

D

e

c

r

y

p

t

(

E

,

s

k

)

m

Decrypt (E,sk) \rightarrow m

Decrypt(E,sk)→m:使用用户的属性集与访问策略进行匹配,若不满足策略,停止解密操作,若满足,用户使用私钥

s

k

sk

sk对密文

E

E

E进行解密,输出为明文

m

m

m。

参考

基于身份的密码体制是什么? 丁俊梅. 基于身份的加密方案研究与实现[D].山西大学,2018. 王荣荣. 基于属性的可搜索加密方案研究与实现[D].西安电子科技大学,2018. 属性加密技术及基于属性的访问控制技术描述 基于属性加密方案(CP-ABE,KP-ABE)

相关推荐

荣耀区等级上限开放说明
77365bet体育在线投注

荣耀区等级上限开放说明

📅 06-28 👁️ 3172
$三六零(SH601360)$ 360到底值多少钱一?一、政企安全业务。公司2020年政企安全业务8亿,利润约2.4亿。...
无法连接宽带网络?跟随这份全面指南轻松解决