属性ベース暗号(鍵ポリシー型)の機能
- 暗号文は、いくつかの属性の集合γでラベル付けされる。
- 復号鍵は、アクセス構造Aを表現する。
- 暗号文の属性集合γが復号鍵のアクセス構造Aを満たす γ∈A ときのみ、復号できる。- ただし、対象とできるアクセス構造は単調なもの。
属性ベース暗号(鍵ポリシー型)スキーム
ABE = (Setup, Enc, KeyGen, Dec):
- (PK, MK) ← Setup
- E ← Enc(PK, m, γ)
- D ← KeyGen(PK, A, MK)
- m/⊥ ← Dec(PK, D, E)
完全性 (completness)
∀(PK, MK) ← Setup
∀A : アクセス構造
∀D ← KeyGen(PK, A, MK)
∀γ:属性集合、∀m, ∀E ← Enc(PK, m, γ)
について
- γ∈A ならば Dec(PK, D, E) = m.
属性ベース暗号(鍵ポリシー型)の安全性
ポイントは結託耐性。様々なアクセス構造Ajに対応する秘密鍵Djをかき集めてきても、γ not∈ ∪j Ajであるならば、そのようなγを属性集合とする暗号文の復号には、秘密鍵の集まり∪jDjはまったく役立たないこと。
ゲーム
- 攻撃者Aを起動し、ターゲットとなる属性集合γを得る。
- (PK, MK) ← Setupを実行し、PKをAに渡す。
- Aが望むだけ以下を複数回繰り返す: ※ 秘密鍵クエリ
- 攻撃者Aがアクセス構造Ajに対応する秘密鍵を要求したら、
- γがAjを満たさないことを確認する。
- Dj ← KeyGen(PK, Aj, MK)を実行し、DjをAに渡す。
- 攻撃者Aより2つの平文M0, M1 を受け取り、 ※ チャレンジクエリ
- b ← {0,1}、 E ← Enc(PK, Mb, γ)
- Eを返す。
- Aが望むだけ以下を複数回繰り返す: ※ 秘密鍵クエリ
- 攻撃者Aがアクセス構造Ajに対応する秘密鍵を要求したら、
- γがAjを満たさないことを確認する。
- Dj ← KeyGen(PK, Aj, MK)を実行し、DjをAに渡す。
- Aはb'を出力して停止する。
攻撃者Aのアドバンテージ:
- AdvA(s) =def | Pr[b=b'] - 1/2 |
定義
属性ベース暗号 ABE = (Setup, Enc, KeyGen, Dec) が選択的属性集合攻撃に対し識別不可能であるとは、どのような効率的な攻撃者Aについても上記のゲームにおけるアドバンテージAdvA(s)が無視可能であることを云う。
属性ベース暗号の構成1
アクセス構造
アクセス構造は木 T で表現:
- 各内部ノードxは閾値ゲート
- numx : ノードxの子ノードの数。
- kx : ノードxの閾値。(0 < kx ≦ numx)
γ∈Tの判定:
- すべての葉ノードを偽に初期化。
- 属性集合γに含まれる各属性について、対応する葉ノードを真にセット。
- 上位ノードに値を再帰的に伝播。
- ルートノードの真偽を出力。
記号:
- parent(x) : xの親ノード
- att(x) : 葉ノードxについてのみ定義。属性を表す。
- index(x) : xの子ノードとしてのインデックス。
部品
- 双線形写像 e : G1 x G1 → G2, #G1 = #G2 = 素数p
- ラグランジュ係数 {Δi,S(x)}i∈S
- S ⊆ Zp
- i ∈ S, Δi,S(x) =def Πj∈S,j≠i (x - j) / (i - j).
- 次数が#S-1以下の任意の多項式q(x)について、Σi∈S q(i)Δi,S(x) = q(x) となる。
構成
Setup (n) :
- y ← Zp, g1 = gy, g2 ← G1
- t1, ・・・, tn+1 ← G1
- N = {1, 2, ・・・, n+1}
- return PK = (g1,g2,t1,・・・,tn+1), MK = y.
- ※ T(X) =def g2Xn Πi=1,...,n+1tiΔi,N(X) ( = g2Xn gh(X) with deg h = n+1 )
- ※ T(i) = g2in ti for i ∈ N
Enc (m, γ, PK) :
- s ← Zp
- return E = (γ, E' = m・e(g1,g2)s, E'' = gs, {Ei = T(i)s }i∈γ ).
KeyGen (T, MK, PK) :
- ※ Tの各ノードxに次数dxの多項式qxを配置
- Tの各ノード x : dx = kx - 1
- ルートノード r : ※ 主秘密をルートノードにセット
- qr(0) = y,
- 他の任意のdr個の点における値をランダムに選択。
- その他のノード x : ※ 親ノードparent(x)の秘密情報を子ノードxに分散
- qx(0) = qparent(x)(index(x)),
- 他の任意のdx個の点における値をランダムに選択。
- ※ Then
- 各葉ノード x : ※ 各葉ノードの秘密情報qx(0)を暗号化。これにより、ルートの秘密情報である主秘密を復元できないようにする。
- rx ← Zp, Dx = g2qx(0)T(i)rx, Rx = grx
- return D = { (Dx, Rx) }x : 葉ノード.
Dec (E, D) :
- return E' / DecNode(E, D, r). ※ rはルートノード
DecNode (E=(γ,E',E'',{Ei}), D= {(Dx,Rx)}, x) :
- x : 葉ノード :
- i = att(x) ∈? γ:
- return e(Dx, E'') / e(Rx, Ei)
- else return ⊥
- else // x : 内部ノード
- z :xの子ノード:
- Sx ← Fz≠⊥である子ノードzからなる、任意の要素数kxの集合
- return Πz∈SxFzΔi=index(z),index(Sx)(0)
スキームの観察
暗号文
- E = (γ, E' = m・e(g1,g2)s, E'' = gs, {Ei = T(i)s }i∈γ )
において、mを直接隠しているのは、G2要素である
これは、
に等しい。
MK = y は秘密鍵Dの構成において、ルートノードにセットされ、それが再帰的に子ノードに秘密分散されて秘密鍵Dの値となった。
分散先である各葉ノードでT(i)sなどを用いて、
を得る。これらは再帰的にe(E'', g2)yを構成する。
定理 (ABE)
判定双線形ディフィー・ヘルマン仮定が成り立つならば、ABEは選択的属性集合攻撃に対し識別不可能である。
構成2
Large Universe Construction [Waters 11]
Setup () :
- Choose a group G of prime order p with generator g
- α, a ← Zp
- Choose a hash function H : {0,1}* → G
- PK = (g, e(g,g)α, ga), MSK = gα.
Encrypt (PK, (M,ρ), PT) : ※ M : l x n
- s, y2,・・・, yn ← Zp
- i ∈ [1..l] : λi = (s, y2,・・・, yn)・Mi
- r1,・・・, rl ← Zp
- CT = (C = PT・e(g,g)αs, C' = gs, (Ci = gaλi H(ρ(i))-ri, Di = gri)i=1,...,l).
KeyGen (MSK, S) :
- t ← Zp
- SK = (K = gαgat, L = gt, (Kx = H(x)t)x∈S).
Decrypt(CT, SK) :
- I = {i : ρ(i)∈S}
- {ωi}i∈I : the set of constants for I
- ※ Σi∈I ωi Mi = (1,0,・・・, 0)
- return C・e(C', K)-1・Πi∈I { e(Ci, L)・e(Di, Kρ(i)) }ωi.
定理 (Large Universe Construction)
判定q-平行BDHE仮定が成り立つならば、Large Universe Constructionは選択的攻撃に対し識別不可能である。
Bethencourt-Sahai-Waters
- PK = (g, h = gβ, f = g1/β, e(g,g)α)
- MK = (β, gα)
- 暗号文
- (M・e(g,g)αs, hs, (gsy, H(att(y))sy)y∈Y)
- 属性集合鍵
- (g(α+r)/β, (grH(j)rj, grj)j∈S)
最終更新:2011年11月01日 14:17