定理(UC)の証明のアイデア
ρがφをUC模倣しているとき、πρ/φがπをUC模倣することを示したい。
πが呼び出す複数のφインスタンスのうち、
ある一つのφインスタンスを除いた残りのすべてのインスタンスの実行を
環境のなかに取り込む。
そのように拡大してできた環境に対する、ρによるφのUC模倣性は、
πρ/φによるπのUC模倣性を意味する。
定理(UC)の証明
ρがφをUC模倣しているとする。πρ/φがπをUC模倣することを示したい。
(以下、πρ/φをπρと略記する。)
それには、補題(DummyA)より、
あるシミュレータAπがあって、どのような環境Zにおいても、πをπρに見せることを示せばよい:
- EXECπ,Aπ,Z ≡c EXECπρ,Z. (∀Z)
(一般に、EXECπ,Z := EXECπ,Aε,Zとかく。Aεはダミー攻撃者)
ρはφをUC模倣しているので、
あるシミュレータSがあって、どのような環境Zρにおいても、φをρに見せる
- EXECφ,S,Zρ ≡c EXECρ,Zρ. (∀Zρ)
このSを用いて目的の(πをπρに見せる)シミュレータAπを構成する。
Aπ:
- [Zから] Zから入力(m, id=(sid, pid), c)を受け取ると、
- ※ Zはダミー攻撃者とπρを実行しているつもり。
- ※ sidがπ内の何番目のρかを指定。
- コードcがプロトコルρを表すならば、(m, id)をSsid(sidに対応するシミュレータS)に渡す。
- (まだSsidがZ内に存在しないなら、(m, id)を入力としてSsidを起動する。)
- そうでなければ、 mをパーティPidに送る。
- [パーティから] パーティまたはサブパーティからメッセージmを受け取ったら、
- 送信者がサブパーティφsid,pidならば、mをSsidに送る。
- そうでなければ、 m を Z に渡す。
- [内部Ssidから]
- 内部Ssidがサブパーティにメッセージを送ったら、そのままサブパーティに送る。
- 内部SsidがZへの値を出力したら、そのままZに渡す。
矛盾を導くために、あるZについて、Aπがπρのシミュレーションに失敗すると仮定する:
πは高々t個のφインスタンスを呼び出すとし、各l∈[0..t]についてハイブリッドモデルを構成する。
l-ハイブリッド:
- EXECπ,A,Z(k,z)の実行において、
- πの呼び出す、最初のl個のφインスタンスへの書き込み要求(値やメッセージ)はそのままφインスタンスに渡す。
- πの呼び出す、残りの(t-l)個のφインスタンスへの書き込み要求は、(対応する)ρインスタンスに渡す。
- l-ハイブリッドの出力を EXECπ,A,Zl(k,z)とかく。
Aπに自明な修正を施し(ρインスタンスとのメッセージを、ダミー攻撃者のように、スルーする)、A'πとすると、
- EXECπ,A'π,Zt ≡ EXECπ,Aπ,Z ※ すべてφインスタンス
- EXECπ,A'π,Z0 ≡ EXECπρ,Z ※ すべてρインスタンス.
よって、背理法の仮定より、∃l ∈ [1..t]について、
- EXECπ,A'π,Zl ≠c EXECπ,A'π,Zl-1
となる。
このlについて、環境Zρを構成する。
Zρ: (z, l)を入力として、
- Z, A'π, π, φ1, ..., φl-1, ρl+1, ..., ρtを内部で起動し、
- EXECπ,A'π,Zlの実行をシミュレートする。ただし、
- l番目のπのサブルーチンインスタンスとのやり取りは、自身の攻撃者とパーティとのやりとりに接続する。
明らかに、
- EXECφ,S,Zρ(k, (z,l)) ≡ EXECπ,A'π,Zl(k,z)
- EXECρ,Zρ(k, (z,l)) ≡ EXECπ,A'π,Zl-1(k,z)
よって、
これは、Sが任意の環境においてφをρに見せるとの仮定に反する。
Q.E.D.
最終更新:2010年01月13日 21:21