ストレージ証明の機能

ストレージ証明とは、証明者(サーバ)P が、検証者(クライアント)V から預ったデータ M を(捨てたり壊したりしないで)完全に保持していることを証明するプロトコル。

ストレージ証明においては、データMは非常に大きなサイズとなることを想定している。証明サイズを、データMのサイズに比べ、なるべく小さくすることがポイント。

(ストレージ証明は、その証明サイズがデータサイズと同程度でよいのなら、通常のデジタル署名やMACで容易に実現される。)


ストレージ証明 (Kg, St, V, P):

  • (pk, sk) ← Kg()
  • (t, M*) ← St(sk, M)    ※ a file-storing algorithm
  • 0/1 ← (V(pk, t, sk), P(pk, t, M*)) 

完全性(completeness)

∀(pk, sk) ← Kg(),  ∀M ∈ {0,1}*,  ∀(t, M*) ← St(sk, M)
  • (V(pk, t, sk), P(pk, t, M*)) = 1.


ストレージ証明の安全性

セットアップゲーム

  • (pk, sk) ← Kg()
  • 公開鍵pkを入力として攻撃者Aを起動:
    • AがファイルMのストアを要求したら、
      • (t, M*) ← St(sk, M) を計算し、(t, M*)をAに返す。
    • Aが、あるファイルMをストアさせる際に得たタグtについて、そのストレージ証明の実行を要求したら、
      • V(pk, t, sk)にしたがって相手をする。
  • Aは(t,P')を出力して停止する。 ただし、
    • t : AがあるファイルMをストアさせる際に得たタグ
    • P' : 証明者アルゴリズム。

P' がε-許容可能 であるとは、
  • Pr[ (V(pk,t,sk), P') = 1 ] ≧ ε.

定義 (ε-健全)

ストレージ証明 (Kg, St, V, P)がε-健全であるとは、
  • あるエクストラクタ Extr が存在し、
  • 任意の攻撃者Aについて、
  • Aがセットアップゲームの結果、あるファイルMについて、ε-許容可能である証明者P'を出力したならば、
    • ネグリジブルな確率の例外を除いて、ExtrがP'を利用してMを復元できること、すなわち
    • M = Extr(pk, sk, t, P')
であることを云う。


ストレージ証明の構成


私的検証可能ストレージ証明 Priv = (Kg, St, V, P)

部品
  • ρ-erasure code(割合ρ以上の符号語から全体ファイルをデコード可能な線形符号)C
  • 対象鍵暗号 Enckenc
  • メッセージ認証子 MACkmac
  • 擬似ランダム関数 f : {0,1}* x Kprf → Zp

パラメータ
  • B ⊆ Zp : チャレンジ集合
  • l : ランダムインデックス集合の大きさ

Kg() :
  • kenc ← Kenc
  • kmac ← Kmac
  • return sk = (kenc, kmac).

St(sk, M) :
  • { mi }1≦i≦n = M' ← C(M)     ※ 以下、各符号語miは必要な場合はZpの要素と考える。
  • kprf ← Kprf,   α ← Zp
  • t0 = n || Enckenc(kprf || α),  t = t0 || MACkmac(t0).
  • i ∈ [1..n] : σi ← fkprf(i) + α mi     ※ σiはmiのMAC
  • M* = M' ∪ { σi }1≦i≦n
  • return (t, M*).

(V(pk, t, sk), P(pk, t, M*)) :
  • [V → P] :
    • (kenc, kmac) = sk, t0 || mac = t
    • kmac を用いて、macの正しさを確認
    • kenc を用いて、t0から、kprf とαを復号。
    • l個のランダムインデックス I(⊆ [1..n])を選択、i ∈ I : vi ← B
    • Send Q = {(i, vi)}i ∈ I.
  • [P → V] :
    • { mi } ∪ { σi } = M*
    • μ ← Σ(i, vi)∈Qvi mi
    • σ ← Σ(i, vi)∈Qviσi
    • Send (σ, μ).
  • [V] :
    • return σ  =?  Σ(i, vi)∈Qvifkprf(i) + αμ.

スキームの観察
構成について
  • 証明者Pはファイルの各ブロックmiのMACであるσiを保持。
  • 検証者Vは、ランダムに選択したl個のブロックのランダムな線形結合μ=Σ(i, vi)∈Qvi miのMACを要求する。
  • 証明者PはチャレンジμのMACとして、各ブロックのMACの線形結合であるσ=Σ(i, vi)∈Qviσiを答える。
    • 利用しているMACスキームの準同型性のおかげで、MACの線形結合σが意味を持つ。

安全性について
与えられたチャレンジQ = {(i, vi)}i ∈ Iについて、
検証式の係数であるfkprf(i)やαは検証者にしか見えない乱数だから、
  • σ  =  ? Σ(i, vi)∈Qvifkprf(i) + αμ
を満たす (σ, μ) を答えるためには、証明者は、インデックス集合Iに属するiについて、{mi}も{σi}も捨てられない。

ところが、Q = {(i, vi)}i ∈ I においてインデックス集合Iはランダムに選ばれるから、証明者は結局どの{mi}も{σi}も捨てられない。


定理 (私的検証可能ストレージ証明 Priv)
もしも
  • MAC が偽造不可能で、
  • ENC が意味論的安全で、
  • f が擬似ランダム関数である
ならば、
  • ω = 1/#B + (ρn)l/(n-l+1)l
とするとき、
  • ε ≧ ω かつ ε-ωが非無視可能であるようなεについて、
私的検証ストレージ証明 Priv はε-健全と言える。

証明について
上に見たように、検証者Vを説得するには、正しい{mi}について
  • μ ← Σ(i, vi)∈Qvi mi
と計算するしかない。

ランダムに選ばれたQについて、O( n/(ε-ω) )回、P'にそのようなμを答えさせれば、線形代数(行縮約)を用いて、{mi}の割合ρを復元できる。


公的検証可能ストレージ証明 Pub = (Kg, St, V, P)

部品
  • ρ-erasure code(割合ρ以上の符号語から全体ファイルをデコード可能な線形符号)C
  • 双線形写像 e : G x G → GT,   G = <g> : 位数p
  • ハッシュ関数 H : {0,1}* → G
  • 署名スキーム (Skg, SSig, Svfy)

パラメータ
  • B ⊆ Zp : チャレンジ集合
  • l : ランダムインデックス集合の大きさ

Kg() :
  • (spk, ssk) ← SKg
  • α ← Zp,  v = gα
  • return sk = (α, ssk), pk = (v, spk).

St(sk, M) :
  • { mi }1≦i≦n = M' ← C(M)    ※ 以下、各符号語miは必要な場合はZpの要素と考える。
  • (α, ssk) = sk
  • name ← Zp,  u ← G
  • t0 = name||n||u,  t = t0||SSigssk(t0)
  • i ∈ [1..n] : σi ← ( H(name||i) umi )α    ※ σiはmiの署名
  • M* = M' ∪ { σi }1≦i≦n
  • return (t, M*).

(V(pk=(v,spk), t, sk), P(pk, t, M*)) :
  • [V → P] :
    • spk を用いてタグtの正しさを確認して後、 name||n||u = t.
    • l個のランダムインデックス I(⊆ [1..n])を選択、i ∈ I : vi ← B
    • Send Q = {(i, vi)}i ∈ I.
  • [P → V] :
    • { mi } ∪ { σi } = M*
    • μ ← Σ(i, vi)∈Qvi mi
    • σ ← Π(i, vi)∈Qσivi
    • Send (σ, μ).
  • [V] :
    • return e(σ,g)  =?  e(Π(i, vi)∈QH(name||i)vi uμ, v).


スキームの観察
構成について
  • 証明者Pはファイルの各ブロックmiの署名であるσiを保持
  • 検証者Vは、ランダムに選択したl個のブロックのランダムな線形結合μ=Σ(i, vi)∈Qvi miの署名を要求する。
  • 証明者Pはチャレンジμの署名として、各ブロックの署名の(乗法的)線形結合であるσ=Π(i, vi)∈Qσiviを答える。
    • 利用している署名スキームの準同型性のおかげで、署名の線形結合σが意味を持つ。

安全性について
与えられたチャレンジQ = {(i, vi)}i ∈ Iについて、証明者*は、あるμについて、
  • σ = ( Π(i, vi)∈Q H(name||i)vi uμ )α
を答えなければならない。(双線形写像の非退化性)

公開情報g, v=gαから、このようなσ=wαを作り出すのは、ハッシュ関数H(・)の操作不可能なランダム性を仮定すると困難。ここで、
  • w  =  Π(i, vi)∈Q H(name||i)vi uμ の g に関する離散対数がわからないことが効く。

定理 (公的検証可能ストレージ証明 Pub)
もしも
  • 署名スキームが存在的偽造不可能で、
  • 群Gについて計算的ディフィー・ヘルマン仮定が成り立つ
ならば、
  • ω = 1/#B + (ρn)l/(n-l+1)l
とするとき、
  • ε ≧ ω かつ ε-ωが非無視可能であるようなεについて、
ハッシュ関数Hに関するランダムオラクルモデルのもとで、公的検証ストレージ証明 Pub はε-健全と言える。

証明について
上に見たように、検証者Vを説得するには、正しい{mi}について
  • μ ← Σ(i, vi)∈Qvi mi
と計算するしかない。

ランダムに選ばれたQについて、O( n/(ε-ω) )回、P'にそのようなμを答えさせれば、線形代数(行縮約)を用いて、{mi}の割合ρを復元できる。


文献

  • [SW 08]
  • [AKK 09]
  • [JK07]
  • [BJO 09]























最終更新:2011年05月02日 12:38