第二章 基本技術與原理
第三節 相關的定義與假設
強 RSA 假設是一個比 RSA 更強的假設,RSA 假設是說在一個模數 (Modulus) 之下,要找某數的 次方根是很難的,其中 是一個固 定的公開值;而強 RSA 假設則是說要找出任意 次方根都是困難的。此假 設最早是由[4][14]提出來的。
n e e∈Z>1
e
定義3.
強 RSA 問題( Strong-RSA problem ):令 n= pq 其中 為一般RSA
個元素的子循環群,令
n
問題中的模數 n,即 p 、Q 為強質數,且令 G 為 Z*n 的一個含
#G G = ⎢⎡log2
( )
#G ⎤⎥。給定 n 和某一個 z∈G,強 RSA 問 題 就 是 要 找 到 一 組 ( u , e ) 其 中 u∈G 且 e∈Z>1 滿 足(mod ) z≡ue n 。
.
強 假設 :令 為安全參數。任意一個滿足定義 要求的 ,對任何機率的多項式時間演算法
假設1
RSA (Strong-RSA Assumption) 3.G
n A,A
RSA
間演算法 ,所有的 ,和所有足夠大的安全參數 ,都會滿足下方這 能解 強 問題的機率皆可忽略。正規一點的寫法如下:對所有機率的多項式時
樣的式子
Α c>0 G
Pr⎡⎣z≡ue(mod )n ∧gcd( , ( ))eφ n = ∧ < <1 1 e n z: ∈R G u e; ( , )← Α( , )n z ⎤⎦≤ G−c
第
ro-knowledge interactive prove system) (Interactive proof system)
roof of knowledge of predicates)
來向驗證者證明他知道某些秘密的實際值能滿足判斷式。而我們
(
,)
1能造出來的資訊分佈為不可分辨的話,則代表 V∗ 與 P 的互動並不會造成
Check if
Check if
gt = g ys c discrete logarithm lying in a given interval )[10]:令 、 為 中的元 素。一個數對Check if
( )
t s cX c
g =g − y ∈G
( )
s= −t c x−X s
c c∈R
{ }
0,1 k{ }
0,1 ( G k)t∈ ±R ε +
( ) gt ∈G
Verifier Prover
圖表 3. 離散對數值落在給定區間的知識簽章
另一類是有關表示方式的知識簽章。其實定義 5 的離散對數也可以看成 是某數對單一基底的表示方式。我們舉較單純的兩基底模式來作介紹,更多 基底的模式可類推。
定義8.
表 示 方 式 的 知 識 簽 章 (Signature of knowledge of a representation) 令 、 、 為 中 的 元 素 。 一 值 組是一個證明者知道 相對
於基底 、 的表示方式,對一訊息
y g h G
(
c s s, ,1 2) { }
∈ 0,1 k× ±{ }
0,1ε(G+ +k) 1× ±{ }
0,1ε(G+ +k) 1 y=g hx rg h m∈
{ }
0,1∗ 造出的知識簽章。驗證者可 由是否 c=H y g h y g h(
|| || || c s1 s2 ||m)
來驗證。此簽章造法為由一知道 x 者,任選一兩個隨機的 t1、t2∈ ±
{ }
0,1ε( G+k) 再算出 c=H y g h g h(
|| || || t1 t2 ||m)
、 。下圖即為此證明系統的原始的互動式版本。
與
x r
1 1
s = −t c s2 = −t2 c
Check if
1 2 1 2( )
t t s s
g h = yg h ∈G
s
1 1
s = −t cx
,
s2 = − rt2 cc c∈R
{ }
0,1 kt
1、
t2∈ ±R{ }
0,1 ε( G+k) g ht1 t2(∈G)Verifier Prover
圖表 4.表示方式的知識簽章
第三章 一個具層級性的動態群體簽章系統
本文中底層所採用的群體簽章系統和[2]中曾提到,應用兩種不同的簽章 系統,來結合出群體簽章系統的作法是一樣的。第一個簽章系統的目的在於 管理者需簽署一個憑證給要加入群體的使用者,而第二個簽章系統才真正用 來簽出群體簽章。在第二個簽章系統中運用了知識簽章的技巧,以使群體簽 章的大小不用再與群體成員個數相關[10]。廢止成員的觀念,採用的是[15]中 的新作法,在系統中加入時間的觀念,讓成員可以自行更新群體簽章金鑰,
來達成一個廢止機制。大致來說:我們的系統是以[15]中所提的群體簽章系 統為基礎,導入層級的觀念並作相關修改。新增了一開始的層級初始步驟以 決定層級間的關係。並在參與程序中增加可限定使用者合法時限的功能。
第一節 參數定義
本系統主要是以[15]中的群體簽章系統加以演變,大部分參數將繼續沿 用,但仍有為了避免混淆而作的修改與新增部分,因此還是將所有系統所需 參數介紹如下。
a. ε >1、h、 p 為系統的安全參數, λ1、λ2、γ1、γ2 的取法需滿足 以下的關係:
(1) λ ε λ1>
(
2+h)
+2(2) λ2 >4 p
(3) γ1 >ε γ
(
2+h)
+2(4) γ2 > +λ1 2
b. 定義如下的區間 Λ =⎡⎣2λ1 −2 , 2λ2 λ1+2λ2⎤⎦、Γ =⎡⎣2γ1 −2 , 2γ2 γ1+2γ2⎤⎦,
1 2
( )
1 2 1 21. 層級初始 (Hierarchy initialization)
1.1. 決定各群體的階級高低及權力領域之關係,繪出類似如下之似樹狀圖,
1
(mod ) 近均勻分布(Uniform distribution)。步驟 2.3、2.4 仍依[15]中設定。
'
送給 GMi 且證明下列事實:
C2
4. 更新 (Update) (使用者 Ui j, 由時間 k 至 時間 k+1)
在時間 k 時,使用者 Ui j, 所擁有的私密金鑰為 ski j k, , =(xi j, ,si j k, , ,ti j k, , +1), 在 進 入 時 間 k+1 後 , 將 所 持 金 鑰 更 新 為 ski j k, , +1=(xi j, ,si j k, , +1,ti j k, , +2) 其 中
( )
, 2 , 3 , ,, , 1 , , 1 ei k ei k ei d(mod )
i j k i j k i
s + = t + + ⋅ +⋅⋅⋅⋅⋅⋅ n ti j k, , +2 =
(
ti j k, , +1)
ei k,+1(modni)。這是一個要達成前進式安全 (Forward secure) 必需的作法,讓每個時段 使用者的成員憑證不同,可以往後更新但無法往前回溯出之前的憑證,所以 簽章金鑰推導的過程必須是一個不可逆的程序,在更新過後即將舊的金鑰和 更新元件丟棄,如此便能保證在時段 k 入侵的攻擊者無法得到時段 k 之前 的簽章金鑰來偽造時段 k 之前的簽章,這樣才能達到前進式安全的特性。這 種觀念和更新方法主要是由[16]中來的。而我們又在參與程序根據欲給定使 用者的時限有技巧的給予憑證,可以讓一個在時段 c~d 間為合法的成員,到 達時段 d 之後,即無法繼續更新出合法的簽章金鑰,因此可達到使用者時限 (Time-bounded) 的設定。
5. 廢止 (Revoke) (在時段 k 時廢止使用者 Ui j, ,其合法時段為 c ~ d )
5.1. 管理者 GMi 利用更新的演算法算出 si j k, , 、si j k, , +1、…、 (即 在時段 k 之後到時段 d 之間所有時期之憑證,亦為簽章之私密金鑰),
並依其對應時間將其分別公佈在廢止憑證列表
, , i j d
s Ui j,
,
RLi k 、RLi k, +1 、……、
,
RLi d 中。
5.2. 管理者發出訊號指示系統行進到下一個時間。
在時段 k 時,若需對一成員,撤除其可合法代替群體簽章的權力,也就 是在給定某使用者合法時限後,時限未到即需將某使用者當時與之後的憑證
廢止的話,就必須執行此廢止程序。實際作法是系統需維護一組憑證廢止列
簽名程序中,主要是以 ElGamal 的加密方法來加密簽章者所持的憑證,
ii. 算出 ,並隨機選取 ,
示,傳送此簽章中的 部分,讓群體管理者用解開簽章用的私密金
體管理者 有權限能解開群體 的簽章的話,那麼 就會被 所
整除,因此步驟 8.1 中
GMI Gi Ti TI
0 0
( ) ( ) ( ) (mod
i i
I
i
I I
T T
T T
T T
KI K K K
= ⋅ = = i M) 可求得 ,再用 相同於群體設定時的抗碰撞雜湊函數 將 對應至一個 中的值,
此值即為群體 的私密金鑰
Ki
'
H Ki
ni
Z
Gi xi。然後經過驗證程序確定此簽章為正確的形 式且非被廢止的憑證所簽出,因為在驗證程序的後半部需用到 xi,因此步驟 8.1 必須先作。步驟 8.3 則是用 xi 來作 ElGamal 解密,算出的 即為此簽 章的憑證。最後在步驟 8.4 再附上一個知識簽章,證明前一步驟中用來解密 的
s
xi 確實為群體 Gi 的私密金鑰 xi。
第四章 安全性證明
要證明我們系統的安全性,大約可分為幾部分:(1)各群體的群體簽章架 構是安全的。(2)層級架構中用來解開群體簽章的私密金鑰,確實只能由上層 的管理者往下層推導。(3)若下層的成員兼為上層的管理者,本文架構之安全 也不會受到影響。(4)對[15]群體簽章架構中的改變,使用者加入群體時可決 定其合法時限之設計,可以證明是安全的。第一節介紹的是第(1)部分,由於 我們的層級架構是以[15]為基礎,因此我們會介紹此架構中滿足的安全性與 相關證明步驟,並加以適當的修改,以符合本文中之架構,原始版本詳細步 驟可參閱[15]。第二節介紹(2)、(3)、(4),是將基礎架構運用在我們的系統中 所需考慮的其他相關證明。
第一節 基礎架構的安全性
有關[15]中群體簽章架構的安全性,在該篇文中已有詳細證明,本節會 簡介其證明過程並重新考慮在本系統中之安全性。
定理1.
在強 RSA 的假設條件之下,[15]中的群體簽章系統是建立在對於 成員憑證和成員私密值的統計性零知識互動式證明。證明:
根據之前關於零知識互動式證明系統的介紹,一個零知識的互 動式證明系統,必須滿足完整性、完美性、和零知識。1. 完整性:若證明者確實知道秘密值,則一定能通過證明。這部分可顯 而易見地透過簽章與驗證程序來確定:若簽章者確實知道當時間的憑 證和成員的私密值,則必可簽出能驗證通過的正確簽章。
2. 完美性:若有一證明者 P∗ 有很大的機率能說服驗證者 V ,則須存
在一個知識擷取者 E, 可利用 E P∗ 與回轉 (rewind) 的技巧來擷
iii. 故 可 知 c− =c δ , 且 s2 s2
{ }
( 2m>dmax。
證明:
因為各個時期的憑證值 s,皆是由更新值 t 得來,因此我們考慮 簽章時所需的金鑰時,可考慮私密值 x 和更新值 t [15]。我們要將強 RSA 的問題轉化到產生新合理值組(
xi j, ,ti j k, ,)
的問題。方式是若有一個攻擊者能 由 K 個(x , t)值組得到一個私密值 ˆx 與對應此值而在某個大於時段 或小於時段 的合法 t 值,則我們能利用此攻擊者來解強 RSA 問題,違背強 RSA 假設,所以此攻擊者不存在。
dmax
kmin
假設 M 是一個攻擊者,它被允許參加 次參與程序來獲得這 個 合理值組 ,然後會輸出一組合法值組
K K
(
xi j, ,ti j k, ,) (
x tˆ, i h m, ,)
。則我們可用一個演算法 A,A 可呼叫 M ,其輸入為強 RSA 問題的輸入
( )
n z, ,輸出為滿足的值組 。 (mod )
z≡ue n
(
u e,)
A的步驟如下:Algorithm1
( )
n z,1. 隨機選取(1) xi,1、xi,2、……、xi K, ∈ ΛR ,當作 組合法的私密 值,與(2) 個時段 、 、……、
K
K k1 k2 kK,當作 組 t 值的時 段,與(3) 個時段 、 、……、
K
K d1 d2 dK,當作此 組 (x , t) 值組的最末合法時限,即截止時段,其中
K
j j
k ≤d ,∀ ∈j
{
1,...,K}
。並亂數選取所有時段滿足 ei k, ∈Γk 的 e 值。
2. 令 a≡zei k,min⋅ei k,min+1⋅⋅⋅⋅⋅⋅ei d,max(mod )n 。
3. 隨機選取 r∈ ΛR ,再令 a0i ≡air(mod )n 。
(1) 若 m<kmin,則
Î z≡
(
zα(ti h m, , )β)
(ei m, δ⋅⋅⋅ei d, )(modni),所以值組( )
u e, = ⎜⎛⎜zα(ti h m, , ) ,β(
ei m, ⋅⋅⋅δ ei d,)
⎞⎟⎟(
, ,min 1 ,max 1 , ˆ抗性、有追溯效力的公開廢止性與向後式無連結性。
們可以設計一演算法利用 A 來解決延伸的 Diffie-Hellman 判決假設
9. 向後式無連結性:此群體架構滿足無連結性,這裡要說的是即使因憑
不含,則 g c d T. .
{ }
j 不整除 Ti )2。6. 輸出 Hb⋅F H
(
r1,Hr2,...Hrn)
a證明:
因為此群體簽章具有完美性,所以若能在時間[ ]
c d, 之外造出第五章 結論
本章將討論本架構中可獨立出來之一個角色,即解章者 (Opener),其功 能只在於解開簽章,取出簽出此章的憑證。最後則是結論與未來研究方向。
第一節 解章者
我們所使用的階層性 (Hierarchy),主要是著重在解開簽章的功能。因為 在此種階層性架構中,通常層級的設定與成員的加入較易控制,層級為較大 的架構,可在一開始即設定好。而成員的加入可指定需與欲加入群體之群體 管理者執行參與程序。所以在後來的使用上,反而解開簽章會變成一個可以 有階級觀念的常用功能。所以本篇論文中真正的階層性是指在解開簽章的功 能中,擁有較上層解章功能的管理者,除了可解開所屬群體的簽章外,還可 以解開其下方所轄群體的簽章。這樣的解章 (Open) 功能,我們可以把它獨 立出來,成為一個解章者的身份。
其實我們群體簽章的匿名性,主要是因為我們用了 ElGamal 加密法將憑 證給加密起來,因此若需要解開簽章的話,需要的金鑰便是 ElGamal 的解密 金鑰,即我們架構中的各群體 Gi 的 xi 值。所以如果有一個使用者,他擁 有某一群體 Gi 的 xi 值,就能擁有該群體解章者的功能。
在我們的架構中,如果我們要讓解章者跟群體管理者一樣能解開其下方 所轄階層的簽章的話,那就要再額外讓解章者知道自己所屬群體的 值。
有了 值後,假設群體 是群體 可管轄的一個群體,那群體 的 解章者要開啟群體 的簽章的話,因為 會整除 ,所以只需利用
有了 值後,假設群體 是群體 可管轄的一個群體,那群體 的 解章者要開啟群體 的簽章的話,因為 會整除 ,所以只需利用