0 一些前置內(nèi)容
0.1 對稱加密
??通信雙方使用同一個密鑰,通過使用加密算法配合上密鑰來加密,解密過程采用加密過程的逆過程配合密鑰即可。
??常見的對稱加密算法有DES、AES等。
??對稱加密的缺點:不能在不安全的網(wǎng)絡(luò)上傳輸密鑰,一旦密鑰泄露則加密通信失敗。
0.2 非對稱加密(公鑰加密)
??非對稱加密使用了一對密鑰——公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰可以發(fā)送給任何請求它的人。非對稱加密使用公鑰對數(shù)據(jù)進行加密得到密文,使用私鑰對數(shù)據(jù)進行解密得到原數(shù)據(jù)。
??比如,你向銀行請求發(fā)送數(shù)據(jù),銀行將一個公鑰發(fā)給你,自己保留與之對應(yīng)的公鑰。你使用公鑰對數(shù)據(jù)進行加密后發(fā)給銀行,那么只有私鑰的持有者——銀行才能對你的消息解密。
??與對稱加密不同的是,銀行不需要將私鑰通過網(wǎng)絡(luò)發(fā)送過去,因此安全性大大提高。
??常見的非對稱加密算法有RSA、ECC。
0.3 RSA
密鑰準備
??假設(shè)Alice和Bob要在網(wǎng)上進行加密通信,則他們使用RSA來加密解密信息的過程如下:
- 隨機選擇兩個不相同的素數(shù) p , q p,q p,q。
- 將 p , q p,q p,q相乘,記 n = p × q n=p×q n=p×q。
- 計算 n n n的歐拉函數(shù) φ ( n ) \varphi(n) φ(n),歐拉函數(shù)證明,當 p , q p,q p,q為不相同的素數(shù)時, φ ( n ) = ( p ? 1 ) ( q ? 1 ) \varphi(n)=(p-1)(q-1) φ(n)=(p?1)(q?1)。
- 隨機選擇一個整數(shù) e e e,滿足兩個條件: φ ( n ) \varphi(n) φ(n)與 e e e互質(zhì),且 1 < e < φ ( n ) 1<e<\varphi(n) 1<e<φ(n)。
- 計算 e e e對于 φ ( n ) \varphi(n) φ(n)的模逆元素 d d d,即找到一個元素 d d d滿足 e d = 1 m o d ?? φ ( n ) ed=1\mod\varphi(n) ed=1modφ(n)。
- 最終把 ( e , n ) (e,n) (e,n)封裝成公鑰, ( d , n ) (d,n) (d,n)封裝成私鑰。
加密
??利用公鑰
(
e
,
n
)
(e,n)
(e,n)計算
C
=
M
e
m
o
d
??
n
C=M^e\mod n
C=Memodn。其中,
C
C
C為密文,
M
M
M為明文。
解密
??RSA證明,
C
d
=
M
e
m
o
d
??
n
C^d=M^e\mod n
Cd=Memodn,所以
M
=
C
d
m
o
d
??
n
M=C^d \mod n
M=Cdmodn,利用私鑰
(
d
,
n
)
(d,n)
(d,n)即可解密。
0.4 數(shù)字簽名
??數(shù)字簽名是只有發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息發(fā)送者發(fā)送信息真實性的一個有效證明。它類似于寫在紙上的普通的物理簽名,只不過使用了公鑰加密技術(shù)來實現(xiàn)。
簽名過程
??發(fā)送報文時,發(fā)送方用一個哈希函數(shù)從報文文本中生成報文摘要,然后用發(fā)送方的私鑰對這個摘要進行加密,這個加密后的摘要作為數(shù)字簽名和報文一起發(fā)送給接收方。接收方首先用與發(fā)送方一樣的哈希函數(shù)從接收到的原始報文中計算出報文摘要,接著再用公鑰來對報文附加的數(shù)字簽名進行解密,如果這兩個摘要相同,那么接收方就能確認該報文是發(fā)送方的。
0.5 數(shù)字證書
背景
??Alice對Bob使用數(shù)字簽名技術(shù)發(fā)送信息,看似天衣無縫,但是仍忽略了一個問題,在驗證身份時,Bob需要用到Alice的公鑰,公鑰在發(fā)布的時候是公開的,攻擊者如果在Alice發(fā)布公鑰時,攔截下來,將自己的公鑰發(fā)布出去,Bob拿到了攻擊者的公鑰,反而會將攻擊者發(fā)來的信息當場Alice的信息,而把Alice發(fā)來的信息當成攻擊者的信息。
??數(shù)字證書的作用就是防止Alice的公鑰被偽造。
數(shù)字證書
??Alice需要找到一個CA機構(gòu)(負責簽發(fā)證書、認證證書、管理已頒發(fā)證書的機關(guān)),CA將證書的頒布機構(gòu)、有效期、Alice的公鑰、持有者等信息用CA的私鑰進行簽名,將簽名值和這些信息打包起來(即數(shù)字證書)頒發(fā)給Alice。如果需要通信,Alice將自己的證書交給Bob,Bob拿出數(shù)字證書中的簽名值,用CA中心的公鑰進行解簽(CA中心的公鑰是無法篡改的)得到摘要A ,再對證書中的信息作摘要,得到摘要B。如果二者相等,說明證書未被篡改過,因此就可以確認公鑰確實是Alice的。
1 可證明安全性
1.1 語義安全性
什么是安全
??安全是基于信任構(gòu)建的標準“可滿足性”;簡單來說,你相信“它”是安全的,“它就是安全的”。
??安全基于信任而不是基于試驗的原因是試驗往往需要很高的代價。
信任源
??信任源具有動態(tài)性,受外部因素的影響,信任可能成立也可能不成立。一旦不成立,基于該信任構(gòu)建的安全也就不成立。
??信任源具有穩(wěn)健性。其穩(wěn)健性越高,代價越高。
??現(xiàn)代密碼學的信任基礎(chǔ)是對數(shù)學難題的信任。若某個數(shù)學難題是難解的,那么基于該難題構(gòu)建的密碼算法是可證明安全的。
可證明安全性起源
??1982年Goldwasser和Micali等學者提出了語義安全性定義,將可證明安全的思想首次帶入安全協(xié)議的形式化分析中,他們也因此獲得2012年圖靈獎。
何為語義安全
??語義安全是密碼學中的術(shù)語。如果已知某段未知文段的密文不會泄露任何該文段的其余信息,則稱該密文是語義安全的。
??該概念相似于香農(nóng)的完善保密性定義。完善保密性意味密文不會泄露任何明文的信息,而語義安全側(cè)重表示被揭露的信息不會被實際竊取。
語義安全的主要成分
- 攻擊者
- 計算能力:通常為多項式級,即計算能力可以用一個多項式表達
- 先驗知識:攻擊者已知的信息,及由這些信息推導出的知識,如公鑰、密文、算法等
- 攻擊目標
- 直觀目標:破解密鑰、明文
- 實際目標:破解明文語義
??在語義安全中,假設(shè)攻擊者能夠獲得最強的信息獲取能力,獲得所有的公開信息(例如算法的公開參數(shù)和算法等),計算能力的最大上限(一般考慮能夠具有解決多項式的問題和能力)。攻擊目標限定于只需能夠獲得1比特的信息。
以上述兩者為基礎(chǔ),如何定義安全?
??攻擊者破解密文并獲得其明文任意1比特語義的“優(yōu)勢”可忽略,這里的“優(yōu)勢”是攻擊者成功概率減去1/2的部分,則該公鑰加密的算法是語義安全的(具體地說是選擇明文攻擊下語義安全的)。
語義安全性最大的精髓
??將攻擊者的攻擊能力最大化,攻擊目標最小化,不限制攻擊者的具體攻擊方式。這樣的好處是既不會陷于某種攻擊方式而喪失普遍性,又構(gòu)造了最有利于攻擊者的情況,若仍能夠說明密碼算法的安全,則密碼算法是真的安全。
1.2 攻擊者/挑戰(zhàn)者模型
過程:
- 攻擊者自己任意選擇兩個消息 M 0 M_0 M0?和 M 1 M_1 M1?。(注意,這兩個是攻擊者自己選的)
- 攻擊者把這兩個消息發(fā)送給挑戰(zhàn)者。
- 挑戰(zhàn)者運行加密算法,加密 M b M_b Mb?(b=0或1),把加密結(jié)果發(fā)送給攻擊者。
- 攻擊者看到加密結(jié)果后,猜測這個加密結(jié)果是由 M 0 M_0 M0?加密來的,還是由 M 1 M_1 M1?加密來的。
1.3 攻擊者/挑戰(zhàn)者模型的應(yīng)用:ElGamal與數(shù)學難題
ElGamal加密算法思想
- S e t u p ( k ) Setup(k) Setup(k):輸入安全參數(shù) k k k,選擇階為大素數(shù) q q q的乘法群 G \mathbb{G} G,選擇群 G \mathbb{G} G的一個生成元 g g g,選擇一個隨機數(shù) s ∈ Z q ? s\in Z_q^* s∈Zq??,計算 P = g s P=g^s P=gs,輸出公鑰 P K = ( q , G , g , p ) PK=(q,\mathbb{G},g,p) PK=(q,G,g,p),私鑰 S K = s SK=s SK=s。
- E n c ( P K , M ) Enc(PK,M) Enc(PK,M):輸入公鑰 P K PK PK和明文 M M M,選擇隨機數(shù) r ∈ Z q ? r\in Z^*_q r∈Zq??,計算并輸出密文 C = ( g r , P r ? M ) C=(g^r,P^r·M) C=(gr,Pr?M)。
- D e c ( S K , C ) Dec(SK,C) Dec(SK,C):輸入私鑰 S K SK SK和密文 C C C,分解 C = ( C 1 , C 2 ) C=(C_1,C_2) C=(C1?,C2?),計算并輸出 M ′ = C 2 / C 1 S K M'=C_2/C_1^{SK} M′=C2?/C1SK?。
依賴的數(shù)學難題——Decisional Diffie-Hellman(DDH)
??給定兩個元組
(
g
a
,
g
b
,
g
a
b
)
(g^a,g^b,g^{ab})
(ga,gb,gab)和
(
g
a
,
g
b
,
R
)
(g^a,g^b,R)
(ga,gb,R),其中
g
g
g是階為大素數(shù)
q
q
q的乘法群
G
\mathbb{G}
G的生成元,
a
,
b
∈
Z
q
?
a,b\in Z_q^*
a,b∈Zq??,
R
∈
G
R\in\mathbb{G}
R∈G均為隨機數(shù),如何判斷哪個元組是Diffie-Hellman元組。
??Diffie-Hellman元組:形如
(
g
a
,
g
b
,
g
a
b
)
(g^a,g^b,g^{ab})
(ga,gb,gab)的元組。
ElGamal加密算法的可證明安全性
??如果存在某個攻擊者A能夠以不可忽略的優(yōu)勢攻破ElGamal加密算法,則存在一個算法B能利用該攻擊者來求解DDH問題,即將攻擊者A的攻擊能力歸約到求解DDH問題上。但是求解DDH問題的算法并不存在,因此也就不存在這樣的攻擊者可以攻破ElGamal算法,因此ElGamal算法是安全的。
歸約過程
- 已知 ( g a , g b , Z ) (g^a,g^b,Z) (ga,gb,Z)為DDH元組的概率為 1 2 \frac{1}{2} 21?。
- 若 Z = g a b Z=g^{ab} Z=gab,攻擊者猜對的概率為 P r [ d = d ′ ∣ Z = g a b ] = ε Pr[d=d'|Z=g^{ab}]=\varepsilon Pr[d=d′∣Z=gab]=ε。
- 若 Z = R Z=R Z=R,攻擊者猜對的概率為 P r [ d = d ′ ∣ Z = R ] = 1 2 Pr[d=d'|Z=R]=\frac{1}{2} Pr[d=d′∣Z=R]=21?。
- 假設(shè)攻擊者能攻破ElGamal算法,則 ε > 1 2 \varepsilon>\frac{1}{2} ε>21?。利用該特性,算法B可以求解DDH問題。
1.4 其他問題
什么是安全參數(shù)
??因子分解問題的求解復(fù)雜度約為
O
(
2
ln
?
(
n
)
ln
?
(
ln
?
(
n
)
)
)
O(2^{\sqrt{\ln(n)\ln(\ln(n))}})
O(2ln(n)ln(ln(n))?)。
??在RSA加密算法中,當密鑰長度n為1024bits時,RSA算法的破解復(fù)雜度約為
2
84
2^{84}
284,當n為2048bits時,RSA算法的破解復(fù)雜度為
2
125
2^{125}
2125。
??從之前的課程中我們了解到,
2
80
2^{80}
280破解復(fù)雜度是密碼算法安全性的一個分水嶺,超過這個復(fù)雜度的算法才具有實用的安全性。密鑰長度直接能影響破解的復(fù)雜度,越長的加密密鑰會有越高的破解復(fù)雜度,但同時也會帶來更大的計算開銷。
??安全參數(shù)是量化安全性的重要依據(jù)。因為非對稱密碼加密需要一個統(tǒng)一的量化標準來衡量它的安全性,于是就引入了安全參數(shù)。所有可證明安全的密碼算法都有量化安全性。安全參數(shù)與攻擊者優(yōu)勢一般成倒數(shù)關(guān)系,安全參數(shù)越大,破解方案的復(fù)雜度會成指數(shù)級升高。
為什么隨機數(shù)堆加密算法的安全性至關(guān)重要
??從信息論的角度來說,熵代表不確定性,對于任何一個函數(shù),函數(shù)的輸入熵一定大于等于輸出熵,加密算法也不例外。確定性算法無法增加輸出的熵,但密碼算法要做到安全性,必須要使輸出滿足一定的隨機性,即熵足夠大。隨機數(shù)則作為一個橋梁,引入隨機數(shù)可以增加輸入熵,理論上符合信息論的觀點。
為什么完善保密性中沒有引入隨機數(shù)
??因為完善保密性要求明文盡可能滿足均勻分布(輸入滿足高熵),要求密鑰也是隨機的(采用一次一密的方式)。從這兩點我們也可以看出完善保密性在現(xiàn)實中并不具有實用性。
可證明安全
??可證明安全:基本思想基于數(shù)學中的反證法,通過“規(guī)約”的方式將密碼算法安全性規(guī)約到某個公認的數(shù)學難題, 比如大數(shù)分解,素數(shù)域離散對數(shù)分解問題.。若存在攻破密碼算法的攻擊方式,,則可以利用該方式構(gòu)造出攻破數(shù)學難題的方法。
2 基于身份加密(IBE)
Boneh D, Franklin M. Identity-based encryption from the Weil pairing[J]. SIAM journal on computing, 2003, 32(3): 586-615.
2.1 公鑰基礎(chǔ)設(shè)施(PKI)
傳統(tǒng)公鑰加密體制的局限性
??公鑰加密體制雖然很好,但是也有很多潛在的問題。一個最大的問題就是,每個人的公鑰都是無意義的一串類似隨機數(shù)的東西,在加密的時候,加密者怎么知道一個公鑰就是接受者的公鑰呢?如果加密過程中公鑰使用錯誤,密文就不能被正確的接收者所解密。同時,這很可能就將信息透露給了錯誤的用戶,甚至透露給惡意用戶。實際上,現(xiàn)實生活中確實存在這樣的攻擊方法:惡意用戶欺騙加密者,將接收者的公鑰替換為自己的公鑰并告知加密者,同時加密者無法得知收到的公鑰是否為接收者的。
PKI的核心功能
??在網(wǎng)絡(luò)上因為彼此不能見面,因此偽造身份是十分容易的。基于這個原因,用戶是不能直接把自己的公鑰發(fā)到網(wǎng)上的,因為他不能證明這個公鑰是他自己的,即使是加數(shù)字簽名也沒用,就像身份證不能自己來造一樣,自己的數(shù)字簽名沒有可信度,也容易偽造。這時需要一個可信第三方來管理這些密鑰。PKI提供了這個可信的第三方,即CA(證書中心)。
??簡單來說,向發(fā)送方證明接收方的公鑰是“哪一個”或者說將接收方與某個公鑰綁定。當接收方公鑰不再有效時,告知發(fā)送方,接收方的公鑰已被撤銷。
CA在PKI中的作用
- Alice想要和Bob進行通信,她會首先向CA詢問Bob的公鑰。
- CA用自己的私鑰簽發(fā)Bob的公鑰,即生成證書發(fā)給Alice。
- Alice使用CA的公鑰驗證后即可使用Bob的公鑰。
CA的其他功能
??CA也有撤銷用戶公鑰的能力,即不再簽發(fā)相應(yīng)用戶的公鑰。
PKI存在的實際問題
??在實際應(yīng)用中,發(fā)送方的數(shù)量是非常多的。每次發(fā)送方加密數(shù)據(jù)之前,都要詢問CA接收方的公鑰是什么(即獲得接收方公鑰的證書),或是詢問CA接收方的公鑰是否依然有效。于是CA成為了PKI的性能瓶頸。
PKI存在問題的本質(zhì)原因
??公鑰是隨機生成的,與用戶沒有天然綁定關(guān)系。CA的存在就是通過一種外力人為地將公鑰和用戶身份進行綁定。
2.2 IBE簡介
核心要求——讓用戶及其公鑰有天然的綁定關(guān)系
??為了使這個公鑰與用戶形成天然的綁定,這個公鑰直接或間接的是用戶的某些自然屬性,且因為公鑰具有唯一性,所以自然屬性需要有唯一性。
屬性=身份=公鑰
??有沒有一種可能,可以讓公鑰就是用戶的身份呢?所謂身份,就是指一串跟用戶相關(guān)的有意義的數(shù)字,比如身份證號、姓名、郵箱等。加密者在加密過程中,不再需要使用一堆無意義的數(shù)字作為公鑰了,而是直接使用接收者的身份進行加密。這樣一來,加密者就不需要向可信第三方詢問接收者的公鑰了。
IBE的發(fā)展
- 1984年,Shamir提出了基于身份體制的概念(IBC),但并沒有找到實現(xiàn)方法。
- 20世紀90年代,實現(xiàn)了基于身份簽名方案(IBS)。
- 2000年或2001年,實現(xiàn)了首個基于身份加密方案(IBE)。
IBE的定義
-
S
e
t
u
p
Setup
Setup算法
- 輸入:安全參數(shù)
- 輸出:系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù)
-
E
x
t
r
a
c
t
Extract
Extract算法
- 輸入:系統(tǒng)秘密參數(shù),用戶的身份信息(公鑰)
- 輸出:用戶私鑰
-
E
n
c
Enc
Enc算法
- 輸入:系統(tǒng)公開參數(shù),接收方的身份信息(公鑰),明文
- 輸出:密文
-
D
e
c
Dec
Dec算法
- 輸入:接收方私鑰,密文
- 輸出:明文
2.3 IBE的應(yīng)用——基于BF-IBE的郵件系統(tǒng)
- 初始化階段
- 密鑰生成中心(KGC)運行 S e t u p Setup Setup算法(輸入:安全參數(shù)),生成系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù)
- 用戶加入階段
- 令新加入用戶的郵箱地址為ID,KGC運行 E x t r a c t Extract Extract算法(輸入:系統(tǒng)秘密參數(shù),ID),生成并授予該用戶私鑰
- 郵件安全傳輸階段
- 令接收方的郵件地址為ID,發(fā)送方運行 E n c Enc Enc算法加密郵件(輸入:系統(tǒng)公開參數(shù),ID,郵件內(nèi)容),生成密文C并發(fā)送給接收方
- 接收方用私鑰解密出郵件內(nèi)容
2.4 雙線性映射
定義
??令
G
1
\mathbb{G}_1
G1?和
G
2
\mathbb{G}_2
G2?分別為兩個階為大素數(shù)
q
q
q的加法循環(huán)群和乘法循環(huán)群,我們稱滿足以下條件的映射
e
^
:
G
1
×
G
1
→
G
2
\hat{e}:\mathbb{G}_1×\mathbb{G}_1\rightarrow\mathbb{G}_2
e^:G1?×G1?→G2?為雙線性映射:
- 雙線性性:對 ? P , Q ∈ G 1 \forall P,Q\in\mathbb{G}_1 ?P,Q∈G1?與 a , b ∈ Z q a,b\in Z_q a,b∈Zq?,都有 e ^ ( a P , b Q ) = e ^ ( P , Q ) a b \hat{e}(aP,bQ)=\hat{e}(P,Q)^{ab} e^(aP,bQ)=e^(P,Q)ab成立。
- 非退化性:若 P P P為群 G 1 \mathbb{G}_1 G1?的生成元,則 e ^ ( P , P ) \hat{e}(P,P) e^(P,P)是群 G 2 \mathbb{G}_2 G2?的生成元。
- 可計算性:對 ? P , Q ∈ G 1 \forall P,Q\in\mathbb{G}_1 ?P,Q∈G1?,映射 e ^ ( P , Q ) \hat{e}(P,Q) e^(P,Q)在有效時間內(nèi)可計算。
密碼學中還給出了另一種形式的雙線性映射形式:
IBE的實現(xiàn)
- S e t u p ( k ) Setup(k) Setup(k):輸入安全參數(shù) k k k,分別構(gòu)造大素數(shù) q q q階加法群與乘法群 G 1 \mathbb{G}_1 G1?與 G 2 \mathbb{G}_2 G2?與雙線性映射 e ^ : G 1 × G 1 → G 2 \hat{e}:\mathbb{G}_1×\mathbb{G_1}\rightarrow\mathbb{G}_2 e^:G1?×G1?→G2?,設(shè) P P P是 G 1 \mathbb{G}_1 G1?的一個生成元(原根),設(shè)置明文的二進制長度為 n n n,定義兩個密碼學哈希函數(shù) H 1 : { 0 , 1 } ? → G 1 H_1:\{ 0,1\}^*\rightarrow\mathbb{G}_1 H1?:{0,1}?→G1?和 H 2 : G 2 → { 0 , 1 } n H_2:\mathbb{G}_2\rightarrow\{ 0,1\}^n H2?:G2?→{0,1}n,隨機選擇 s ∈ Z q s\in Z_q s∈Zq?,計算 P s ← s P P_s\leftarrow sP Ps?←sP,輸出系統(tǒng)公開參數(shù) p a r a m s = < q , G 1 , G 2 , e ^ , n , P , P s , H 1 , H 2 > params=<q,\mathbb{G}_1,\mathbb{G}_2,\hat{e},n,P,P_s,H_1,H_2> params=<q,G1?,G2?,e^,n,P,Ps?,H1?,H2?>以及系統(tǒng)秘密參數(shù) s s s。
- E x t r a c t ( s , I D ) Extract(s,ID) Extract(s,ID):輸入系統(tǒng)秘密參數(shù) s s s和用戶 I D ∈ { 0 , 1 } ? ID\in\{ 0,1\}^* ID∈{0,1}?,輸出私鑰為 d I D = s H 1 ( I D ) d_{ID}=sH_1(ID) dID?=sH1?(ID)。
- E n c ( I D , m ) Enc(ID,m) Enc(ID,m):用戶 I D ∈ { 0 , 1 } ? ID\in\{ 0,1\}^* ID∈{0,1}?和明文 m m m,選擇隨機數(shù) r ∈ Z q r\in Z_q r∈Zq?,輸出密文 C = < r P , H 2 ( e ^ ( H 1 ( I D ) , P s ) r ) ⊕ m > C=<rP,H_2(\hat{e}(H_1(ID),P_s)^r)\oplus m> C=<rP,H2?(e^(H1?(ID),Ps?)r)⊕m>。
- D e c ( C , d I D ) Dec(C,d_{ID}) Dec(C,dID?):令 C = < U , V > C=<U,V> C=<U,V>,用戶 I D ID ID的私鑰為 d I D d_{ID} dID?,則解密 C C C,輸出明文 m = V ⊕ H 2 ( e ^ ( d I D , U ) ) m=V\oplus H_2(\hat{e}(d_{ID},U)) m=V⊕H2?(e^(dID?,U))。
依賴的數(shù)學難題——Computational Bilinear Diffie-Hellman(CBDH)
??令
G
1
\mathbb{G}_1
G1?和
G
2
\mathbb{G}_2
G2?分別為兩個階為大素數(shù)
q
q
q的加法循環(huán)群和乘法循環(huán)群,
e
^
:
G
1
×
G
1
→
G
2
\hat{e}:\mathbb{G}_1×\mathbb{G}_1\rightarrow\mathbb{G}_2
e^:G1?×G1?→G2?為雙線性映射,
P
P
P是
G
1
\mathbb{G}_1
G1?的一個生成元,任意給定
a
P
,
b
P
,
c
P
∈
G
1
aP,bP,cP\in\mathbb{G}_1
aP,bP,cP∈G1?,其中
a
,
b
,
c
∈
Z
q
a,b,c\in Z_q
a,b,c∈Zq?,則不存在一個有效的算法計算
e
^
(
P
,
P
)
a
b
c
\hat{e}(P,P)^{abc}
e^(P,P)abc。
IBE的安全性證明
證明雙線性映射的結(jié)合律
e
^
(
a
,
b
+
c
)
=
e
^
(
a
,
b
)
?
e
^
(
a
,
c
)
\hat{e}(a,b+c)=\hat{e}(a,b)*\hat{e}(a,c)
e^(a,b+c)=e^(a,b)?e^(a,c)
證明:
已知
b
,
c
b,c
b,c屬于加法群,不妨設(shè)
g
g
g為生成元,
b
=
r
g
,
c
=
s
g
b=rg,c=sg
b=rg,c=sg;
e
^
(
a
,
b
+
c
)
=
e
^
(
a
,
(
r
+
s
)
g
)
=
e
^
(
a
,
g
)
(
r
+
s
)
?????
?????
=
e
^
(
a
,
g
)
r
?
e
^
(
a
,
g
)
s
?????
=
e
^
(
a
,
r
g
)
?
e
^
(
a
,
s
g
)
=
e
^
(
a
,
b
)
?
e
^
(
a
,
c
)
\hat{e}(a,b+c)\\ =\hat{e}(a,(r+s)g)\\ =\hat{e}(a,g)^{(r+s)}\ \ \ \ \ \\ \ \ \ \ \ =\hat{e}(a,g)^r*\hat{e}(a,g)^s\\ \ \ \ \ \ =\hat{e}(a,rg)*\hat{e}(a,sg)\\ =\hat{e}(a,b)*\hat{e}(a,c)
e^(a,b+c)=e^(a,(r+s)g)=e^(a,g)(r+s)??????????=e^(a,g)r?e^(a,g)s?????=e^(a,rg)?e^(a,sg)=e^(a,b)?e^(a,c)
運用雙線性映射證明密文的可解密性
H
2
(
e
^
(
d
I
D
,
U
)
)
=
H
2
(
e
^
(
H
1
(
I
D
)
,
P
s
)
r
)
H_2(\hat{e}(d_{ID},U))=H_2(\hat{e}(H_1(ID),P_s)^r)
H2?(e^(dID?,U))=H2?(e^(H1?(ID),Ps?)r)
證明:
H
2
(
e
^
(
d
I
D
,
U
)
)
=
H
2
(
e
^
(
s
H
1
(
I
D
)
,
r
P
)
)
=
H
2
(
e
^
(
H
1
(
I
D
)
,
s
P
)
r
)
=
H
2
(
e
^
(
H
1
(
I
D
)
,
P
s
)
r
)
H_2(\hat{e}(d_{ID},U))\\ =H_2(\hat{e}(sH_1(ID),rP))\\ =H_2(\hat{e}(H_1(ID),sP)^r)\\ =H_2(\hat{e}(H_1(ID),P_s)^r)
H2?(e^(dID?,U))=H2?(e^(sH1?(ID),rP))=H2?(e^(H1?(ID),sP)r)=H2?(e^(H1?(ID),Ps?)r)
2.5 IBE總結(jié)
IBE與傳統(tǒng)公鑰加密的不同
??IBE的公鑰可以是具有唯一標識用戶作用的自然信息或者自然屬性。
密鑰托管問題
??用戶的私鑰由密鑰生成中心KGC生成,因此KGC知道所有用戶的私鑰,存在“詐騙”和“泄露”的風險。
用戶黑名單管理和密鑰吊銷問題
??一旦用戶私鑰泄露,無法通過更新公鑰的方式撤銷泄露的私鑰。
密鑰托管問題的解決方案
- IBE+傳統(tǒng)公鑰加密:加密時需要同時使用接ID和傳統(tǒng)公鑰,但無需PKI。
- “不經(jīng)意”的IBE私鑰生成技術(shù):一個用戶對應(yīng)多個私鑰,使密鑰生成中心無法知道用戶選的是哪個私鑰,基于私鑰的取證技術(shù),使得若攻擊者使用了非用戶選定的私鑰來解密,可以被發(fā)現(xiàn)。
3 基于屬性加密(ABE)
Sahai A, Waters B. Fuzzy identity-based encryption[C]//Annual international conference on the theory and applications of cryptographic techniques. Springer, Berlin, Heidelberg, 2005: 457-473.
3.1 傳統(tǒng)訪問控制
??假設(shè)Alice詢問某數(shù)據(jù)庫,有以下三種傳統(tǒng)的控制方法:
自主訪問控制 (DAC)
??用戶有權(quán)對自身所創(chuàng)建的訪問對象進行訪問,并可將這些對象的訪問權(quán)授予其他用戶和從授予權(quán)限的用戶收回其訪問權(quán)限。
??特點:由數(shù)據(jù)庫所有者自行設(shè)置數(shù)據(jù)的訪問權(quán)限。
強行訪問控制(MAC)
??由系統(tǒng)(通常為專門設(shè)置的系統(tǒng)安全員)對用戶所創(chuàng)建的對象進行統(tǒng)一的強制性控制,按照規(guī)定的規(guī)則決定哪些用戶可以對那些對象進行什么樣的操作,即使是創(chuàng)建者,在創(chuàng)建一個對象后,也可能無權(quán)訪問該對象。
??特點:由系統(tǒng)管理員統(tǒng)一設(shè)置文件與數(shù)據(jù)使用者的秘密等級,每個數(shù)據(jù)庫使用者只能訪問密級小于等于他的文件。
基于角色的訪問控制(RBAC)
??對系統(tǒng)操作的各種權(quán)限不是直接授予具體的用戶,而是在用戶集合與權(quán)限集合之間建立一個角色集合。每一種角色對應(yīng)一組相應(yīng)的權(quán)限。一旦用戶被分配了適當?shù)慕巧?,該用戶就擁有了此角色的所有操作?quán)限。
??通過定義角色的權(quán)限,并對用戶授予某個角色從而來控制用戶的權(quán)限。這樣使得不必每次在創(chuàng)建用戶時都進行分配權(quán)限的操作,只要分配用戶相應(yīng)的角色即可。用戶和權(quán)限邏輯分離,方便權(quán)限管理,減少系統(tǒng)的開銷。
傳統(tǒng)訪問控制存在的問題
- 數(shù)據(jù)庫以明文形式存放,通過驗證用戶權(quán)限實現(xiàn)數(shù)據(jù)訪問,其安全性完全依賴用戶對服務(wù)器安全性的信任。
- 若數(shù)據(jù)庫服務(wù)器存在漏洞,導致攻擊者獲得管理員權(quán)限,則該攻擊者可以繞開訪問控制策略獲得數(shù)據(jù)。
- 若數(shù)據(jù)庫管理員本身與攻擊者合謀,同樣可以導致訪問控制策略失效。
- 傳統(tǒng)的訪問控制方法無法保證云計算環(huán)境下的數(shù)據(jù)安全性。
- 數(shù)據(jù)集中的云平臺更容易成為攻擊目標。
- 云平臺缺乏可信性。
??傳統(tǒng)的訪問控制存在問題的本質(zhì)是:數(shù)據(jù)庫管理員擁有最高級別的權(quán)限,這將成為攻擊者的重點攻擊目標。
3.2 ABE簡介
起源
??模糊的基于身份加密,即不同的基于身份公鑰被同一個私鑰解密。
定義
??簡而言之,ABE就是看屬性集合與策略是否相匹配的一個公鑰加密游戲。
??與傳統(tǒng)方法不同的是,設(shè)計者將屬性集合與策略嵌入到了用戶私鑰與密文中,這樣一來,私鑰與密文輸入解密算法嘗試解密的過程,實際也就是屬性集合與策略相匹配的過程,倘若能夠匹配成功,則算法順利完成解密操作,用戶可成功恢復(fù)出明文數(shù)據(jù)。倘若匹配失敗,則用戶無法恢復(fù)明文,解密失敗。
分類
-
KP-ABE:以明文的屬性做公鑰,以訪問控制策略生成對應(yīng)的私鑰。
-
CP-ABE:以訪問控制策略做公鑰加密明文,以用戶的屬性生成對應(yīng)的私鑰。
KP-ABE(基于密鑰策略的屬性加密,Key-Policy ABE,KP-ABE)是將策略嵌入到用戶密鑰中,屬性嵌入到密文中。密鑰對應(yīng)于一個訪問結(jié)構(gòu)而密文對應(yīng)于一個屬性集合,解密當且僅當屬性集合中的屬性能夠滿足此訪問策略。這種設(shè)計比較接近靜態(tài)場景,此時密文用與其相關(guān)的屬性加密存放在服務(wù)器上,當允許用戶得到某些消息時,就分配一個特定的訪問策略給用戶,其應(yīng)用場景則更加偏向于付費視頻網(wǎng)站、日志加密管理等等。如果用戶想解密多個文件,那么他必須擁有多個可以滿足匹配的秘鑰,否則不能解密多個文件。
CP-ABE(基于密文策略的屬性加密,Ciphertext-Policy ABE,CP-ABE)是將策略嵌入到密文中,屬性嵌入到用戶密鑰中。密文對應(yīng)于一個訪問結(jié)構(gòu)而密鑰對應(yīng)于一個屬性集合,解密當且僅當屬性集合中的屬性能夠滿足此訪問結(jié)構(gòu)。
CP-ABE基于屬性的加密運用密碼機制保護數(shù)據(jù),由數(shù)據(jù)擁有者規(guī)定訪問密文的策略,將屬性集合與訪問資源相關(guān)聯(lián),數(shù)據(jù)使用者可以根據(jù)自己的授權(quán)屬性的訪問密文信息,該技術(shù)適合隱私數(shù)據(jù)共享等訪問類應(yīng)用。
CP-ABE由于策略嵌入密文中,這就意味著數(shù)據(jù)擁有者可以通過設(shè)定策略去決定擁有哪些屬性的人能夠訪問這份密文,也就相當于對這份數(shù)據(jù)做了一個粒度可以細化到屬性級別的加密訪問控制,CP-ABE的應(yīng)用場景一般是公有云上的數(shù)據(jù)加密存儲與細粒度共享。
KP-ABE與CP-ABE的應(yīng)用差異
- KP-ABE適合于加密方與訪問控制方分離的場景,能夠?qū)崿F(xiàn)用戶對特定數(shù)據(jù)的訪問。如數(shù)據(jù)安全采集與共享。
??上圖中的傳感器,可以采集聲音、溫度、震感三種信息,我們可以將其視為單一屬性1、2、3。由于單一屬性天然不具備訪問策略,所以采用以明文屬性做公鑰的KP-ABE加密方式。數(shù)據(jù)中心負責存儲加密的三種信息。用戶如果需要訪問某些信息的話,需要向密鑰生成中心獲取相應(yīng)的訪問控制策略。
??這種訪問控制方式,便于用戶的增減,而不需要改變傳感器的設(shè)置。用戶拿到相應(yīng)的私鑰后可以向數(shù)據(jù)中心獲取數(shù)據(jù)。
- CP-ABE適合于加密方與訪問控制方一體的場景,能夠?qū)崿F(xiàn)數(shù)據(jù)對特定用戶開放。如企業(yè)數(shù)據(jù)安全存儲與共享。
CP-ABE由于策略嵌入密文中,這就意味著,數(shù)據(jù)擁有者可以通過設(shè)定策略去決定擁有哪些屬性的人能夠訪問這份密文,也就相當于對這份數(shù)據(jù)做了一個粒度可以細化到屬性級別的加密訪問控制。
??管理員選擇訪問控制策略作為公鑰加密文件并上傳,當經(jīng)理、職員等信息檢索方具備的屬性滿足訪問策略的時候,就能夠用私鑰解密密文。
??在CP-ABE方案中,文件的上傳方并沒有數(shù)據(jù)管理員那么高的權(quán)限,它只能上傳數(shù)據(jù),并通過訪問策略規(guī)定數(shù)據(jù)查看人。文件上傳方除了掌握自己上傳的文件之外,并不能知道其他文件上傳方的文件。
ABE定義
-
S
e
t
u
p
Setup
Setup算法
- 輸入:安全參數(shù)
- 輸出:系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù)
-
E
x
t
r
a
c
t
Extract
Extract算法
- 輸入:系統(tǒng)秘密參數(shù),用戶的訪問控制策略(KP-ABE)或若干屬性(CP-ABE)
- 輸出:私鑰
-
E
n
c
Enc
Enc算法
- 輸入:系統(tǒng)公開參數(shù),明文的若干屬性(KP-ABE)或訪問控制策略(CP-ABE),明文
- 密文
-
D
e
c
Dec
Dec算法
- 輸入:私鑰,密文
- 輸出:明文
3.3 CP-ABE的實例
3.4 ABE總結(jié)
??ABE是密碼學與傳統(tǒng)訪問控制的“有機結(jié)合”。在實際應(yīng)用中,ABE與傳統(tǒng)訪問控制最大的不同是,ABE不需要信任服務(wù)器,即使服務(wù)器是惡意的或者被攻破,也不會導致數(shù)據(jù)泄露。
?? 第④部分由L3H_CoLin編寫,有一些修改。??
4 代理重加密(PRE)
4.1 ABE的缺陷
??針對公司數(shù)據(jù)管理的CP-ABE需要管理員(加密方、訪問控制方)對任一企業(yè)文件選擇訪問控制策略,并以該策略為公鑰,使用Enc算法加密文件,最后將生成的文件上傳至云端。這個訪問控制方是必不可少的。
??另外如果數(shù)據(jù)擁有者僅為普通個人用戶,則難以制定專業(yè)的、合理的訪問控制策略,難以為數(shù)據(jù)共享者提供在線的私鑰生成和分法服務(wù)。因為用戶的數(shù)量一多起來,對訪問控制策略的計算效率是一個很大的挑戰(zhàn),包括密鑰的生成和分發(fā)也需要在線進行,也很難保證密鑰在傳輸過程中的安全性。
??這就需要引出代理重加密(PRE)的概念了。
4.2 PRE簡介
??如上圖所示,兩人要想通過云存儲交換文件,使用對稱密鑰加密存儲。Bob想要獲得Alice的文件并成功解密,總不能要求Alice發(fā)送對稱加密的密鑰給Bob,這是絕對不安全的,而且文件密鑰傳輸需要兩人同時在線,也產(chǎn)生了不便。
??如果采用公鑰加密呢?Bob想解密Alice的文件,同樣不能要求Alice發(fā)送私鑰。但Alice可以將Bob所需的文件下載解密后再使用Bob的公鑰加密上傳。這樣雖然可以能夠在兩人不同時上線的情況下完成文件傳輸,但增加了Alice的加解密成本。
??由此,2003年Ivan等人正式提出PRE作為這個問題的一個解決方案:
??在PRE體系下,Alice只需要生成一個神奇的重加密密鑰,將其發(fā)送給云端后云端可以使用重加密密鑰將文件變成Bob可以解密的文件,這樣Alice就無需自己進行加解密操作。
PRE優(yōu)點
- Alice和Bob無需同時在線
- Alice生成重加密密鑰的開銷較少
PRE定義
-
Setup
?
\operatorname{Setup}
Setup算法:
- 輸入:安全參數(shù)
- 輸出:系統(tǒng)公開參數(shù)和系統(tǒng)秘密參數(shù)
-
Extract
?
\operatorname{Extract}
Extract算法(僅在基于身份類的PRE中才存在):
- 輸入:系統(tǒng)秘密參數(shù),用戶的身份
- 輸出:私鑰
-
Enc
?
\operatorname{Enc}
Enc算法:
- 輸入:系統(tǒng)公開參數(shù)、Alice公鑰、明文
- 輸出:原始密文
-
Dec-1
?
\operatorname{Dec-1}
Dec-1算法:
- 輸入:Alice私鑰,初始密文
- 輸出:明文
-
RK
?
\operatorname{RK}
RK算法:
- 輸入:Alice私鑰、Bob公鑰
- 輸出:重加密密鑰
-
ReEnc
?
\operatorname{ReEnc}
ReEnc算法:
- 輸入:重加密密鑰,初始密文
- 輸出:重加密密文
-
Dec-2
?
\operatorname{Dec-2}
Dec-2算法:、
- 輸入:重加密密文,Bob私鑰
- 輸出:明文
基于IB-PRE的安全云數(shù)據(jù)存儲與共享文章來源:http://www.zghlxwxcb.cn/news/detail-445874.html
4.3 PRE的實例
文章來源地址http://www.zghlxwxcb.cn/news/detail-445874.html
4.4 PRE的其它問題
- 細粒度控制問題:打破“全或無”的共享模式。當云端拿到重加密密鑰之后,可以對所有Alice的文件進行轉(zhuǎn)換,從而讓Bob獲取,這顯然是不合理的。
- 多次重加密的問題:打破一個密文只能以重加密共享一次的問題,就是說一個被Alice私鑰加密的文件經(jīng)過重加密密鑰轉(zhuǎn)換后變成Bob的私鑰可以解密的文件,這個文件是否可以繼續(xù)被其他的重加密密鑰轉(zhuǎn)換為其他用戶可以解密的文件?
- 雙向重加密的問題:打破一次重加密過程只能實現(xiàn)Alice→Bob或Bob→Alice的單向共享
- 復(fù)雜多特性PRE方案的設(shè)計問題:使得一個PRE具有上面所描述的多個特性
4.5 總結(jié)
- 什么是安全,現(xiàn)代密碼為什么安全
- 基于信任構(gòu)建的標注可滿足性
- 現(xiàn)代密碼的安全性基于對數(shù)學難題的信任構(gòu)建
- 如何構(gòu)建
- 可證明安全性
- 科學定義安全標準(安全性定義),特別是對攻擊者的定義
- 基于數(shù)學難題嚴格證明安全性
- 利用數(shù)學難題的求解復(fù)雜度量化現(xiàn)代密碼算法的安全性
- 基于身份加密
- 是公鑰體制的一種,但不同于傳統(tǒng)公鑰加密
- 以身份信息作為公鑰,取消了對可信第三方的需求
- 基于雙線性映射構(gòu)建,實用性有保障
- IBE啟發(fā)了多功能公鑰密碼的發(fā)展
- 密文數(shù)據(jù)安全存儲與共享
- 簡單的對稱加密和公鑰加密可以實現(xiàn)安全存儲,但是不便于安全共享
- 對稱密碼:需要發(fā)送方和接受方同時在線
- 公鑰密碼:增加了發(fā)送方的通信和計算開銷
- 常規(guī)對稱密碼和公鑰密碼主要解決安全通信與存儲問題,并不考慮安全共享
到了這里,關(guān)于【密碼學】高級密碼學-1的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!