量子コンピュータで2人の“Covert”⁉️ガチャ
English version is https://zenn.dev/yyu/articles/c45bb407e14594 .
はじめに
“Covert Lottery” とは論文Card-Based Covert Lottery[1]で導入された用語である。これはプレイヤーの秘密の希望を入力し、
- それらが衝突しないのであれば希望通りにし
- そうでないなら、ランダムな結果を出力する
というプロトコルである。たとえば将棋などで2人のプレイヤーが先手・後手を決める場合に使うことができる。この2人のプレイヤーはそれぞれ先手・後手のどちらにしたいという希望があるものとするが、一方でこの希望を相手に明らかにしてしまうと、戦略が流出する可能性がある。したがってこのプレイヤー2人がCovert Lotteryを行えば、各々の希望が先手・後手の希望が噛み合った(衝突していない)時にはそれを出力し、一方で2人ともが先手・後手のいずれかを希望した場合はランダムに決定する。このようにすれば2人のプレイヤーは自分の入力した希望通りとなったのか、それとも衝突してランダムに決定されたのか知ることができないため、戦略が流出しない。
元論文ではこのようなプロトコルをカードベース暗号[2]で構成しているが、筆者が軽く読んだ限りでは量子コイントスでも達成できそうであったため、この記事では量子コイントスでこれをどのように達成するかについて議論する。
この記事にもし何かの誤りがあったとしてもこの記事の筆者の落ち度であるので、コメントなどで気軽に教えてほしい。
2人のCovert Lotteryを行う関数
この節では元論文で説明されている2人のCovert Lottery(先手・後手を秘密に決定する)についてまず説明する。いま2人のプレイヤーとしてアリスとボブがいるものとする。アリスの入力を
そして
ただし
議論の前に、この後すぐに使うので先に表記として
さて、この関数
ここで
元論文では、
BB84ベースの2人による量子Covert Lottery
それでは実際に量子コンピュータを利用したナイーブなプロトコルについて説明する[4]。今、アリスとボブの2人が先手・後手を決めたいと考えている。前節と同様に
まずは簡単さを優先したプロトコルを紹介し、そのあとどのような問題があるかを見ていくことにする。
プロトコル
-
アリスは1bitの乱数
と、先手・後手の希望x \xleftarrow{\text{rnd}} \{0, 1\} を選択するa \in \{0, 1\} -
アリスは
を用いて次の4つ量子状態から1つa, x を選択する\ket{\psi_{a,x}} \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \left\{ \begin{array}{lcl} \ket{\psi_{0,0}} & \equiv & \ket{0} \\ \ket{\psi_{0,1}} & \equiv & \ket{1} \\ \ket{\psi_{1,0}} & \equiv & \ket{+} \\ \ket{\psi_{1,1}} & \equiv & \ket{-} \end{array} \right. - ただし
とする\ket{\pm} \equiv \frac{1}{\sqrt{2}}\left(\ket{0} \pm \ket{1}\right)
- ただし
-
アリスはボブへ量子ビット
を送信する\ket{\psi_{a,x}} -
ボブは量子状態
を受信し、ボブの希望\ket{\psi_{a,x}} を選択するb \in \{0, 1\} -
ボブは次のような基底状態
で\mathcal{B}_{\overline{b}} を測定し、測定結果を\ket{\psi_{a,x}} とするy \mathcal{B}_{\overline{b}} \equiv \left\{\ket{\psi_{\overline{b},0}}, \ket{\psi_{\overline{b},1}}\right\} -
を利用することに注意する\overline{b}
-
-
ボブはアリスへ
を送信するy -
アリスは
を受けとり、y [5]をボブへ送信しプロトコルの結果とするa \oplus x \oplus y
このプロトコルだけ見せられても実際に正しく動作しているのかよく分からないと思うので、アリスの変数
|
|
|||||
|
|
|||||
|
|
|||||
|
|
|||||
|
|
|||||
|
|
|||||
|
|
|||||
|
|
このようにアリスとボブの先手・後手の希望が異なる時に限って最終的な出力
なぜこのようになるのか?そのアイディアをまとめると
-
のときは(5)の測定結果a = \overline{b}\,(\Rightarrow a \ne b) はアリスの乱数y と必ず一致するx - 一方で
のときはa \ne \overline{b} が乱数になるため、y は最終的に乱数とXORするので乱数となりOKであるa \oplus x \oplus y
- 一方で
-
なときはa = \overline{b} なので、したがってx = y のXORはキャンセルされてa \oplus x \oplus y が計算されるa
参加者の性質
このプロトコルでは(7)で最後にアリスの手元で行なわれる計算が最終的な結果となるため、アリスが不誠実であればここで結果を意図的に変更できる。したがってこれは少なくともアリスがセミオネスト[6]であるという仮定の下でしか上手くいかない。
確率的な情報リーク
あらかじめ述べておいた脆弱性として、このプロトコルは確率でボブの情報(先手・後手の選択)がアリスへリークする。どういうことかを次のような具体的な例で考える。
- アリスは
を選んだため、送信するのはa = 0, x = 0 となる\ket{0} - ここでもしボブが
を選んだとする\overline{b} = 1\,(\Rightarrow b = 0) - このとき
を\ket{0} で測定するため、50%ずつの確率で\left\{\ket{+}, \ket{-}\right\} またはy = 0 が発生するy = 1 - ここでもし
となった場合はアリスへの情報リークはないy = 0
- ここでもし
- 一方でもしここで
が生じた場合、y = 1 で測定した場合には100%で\left\{\ket{0}, \ket{1}\right\} なため、y = 0 であることがリークする\overline{b} = 1
したがって、このプロトコルは最終的な結果は
CZゲートと1量子ビットの測定型量子計算
先にプロトコルで利用する
CZゲート
ただし
- 1番目の量子ビットの状態が
であれば、2番目の量子ビットに何もしない\ket{0} - 1番目の量子ビットの状態が
であれば、2番目に\ket{1} 量子ゲートを作用させるZ
今、例として
ここで、各量子ビットについている
1量子ビットの測定型量子計算
さらに、この
今1量子ビット目にある
この
これはアダマールゲート
もし射影測定で直交する
なおアダマールゲート
この一連の操作で生じたことというのは、1番目の量子ビット
2人のブラインド量子Covert Lottery
ここからはやや複雑な方法に挑戦する。先にアイディアを述べると、これはブラインド量子計算[10]のような方法で、前節では古典的に行なっていたXORのような操作を量子2量子ビットのもつれで行うようなイメージである。
プロトコル
-
アリスはランダムな角度
を選ぶ\theta \xleftarrow{\text{rnd}} \left\{0, \frac{1\pi}{4}, \dots, \frac{7\pi}{4}\right\} -
アリスは次のような1量子ビット
を作成しボブへ送信する\ket{+_\theta} \ket{+_\theta} \equiv \frac{1}{\sqrt{2}}\left(\ket{0} + e^{-i\theta}\ket{1}\right) -
ボブはアリスから受けとった
と\ket{+_\theta} を次のような\ket{+} ゲートで結合するCZ CZ\ket{+_\theta}_1\ket{+}_2 -
は次のように整理できるCZ\ket{+_\theta}_1\ket{+}_2 CZ\ket{+_\theta}_1\ket{+}_2 = \frac{1}{\sqrt{2}}\ket{0}_1\ket{+}_2 + \frac{e^{-i\theta}}{\sqrt{2}}\ket{1}_1\ket{-}_2
-
-
アリスは希望
と乱数a \in {0, 1} を選び、それに基づいて次のような角度x \xleftarrow{\text{rnd}} \{0, 1\} を選びボブへ送信する\delta \delta := \left\{ \begin{array}{ll} \theta + x\pi& \text{if}\; a = 0 \\ \theta + \frac{\pi}{2} + x\pi & \text{if}\; a = 1 \end{array} \right. -
ボブは受けとった
から次のような基底\delta を用意して1番目の量子ビットを測定し、その結果を\left\{\ket{0} \pm e^{i\delta}\ket{1}\right\} とするy \in \{0, 1\} -
ボブは希望
を選び、それによって次から基底b \in \{0, 1\} を作成する\mathcal{B}_{\overline{b}} \left\{ \begin{array}{lcl} \mathcal{B}_{0} & \equiv & \left\{\ket{\pm}\right\} \\ \mathcal{B}_{1} & \equiv & \left\{\frac{1}{\sqrt{2}}\left(\ket{0} \pm i\ket{1}\right)\right\} \end{array} \right. -
ボブは2番目の量子ビットを
で測定して結果を\mathcal{B}_{\overline{b}} として、z をアリスへ送信するz -
アリスはプロトコルの出力として
を得るa \oplus x \oplus z
動作の解説
手順(5)の測定がややこしい。
-
のときy = 0 \begin{align*} HR_Z(\delta)\ket{+_\theta} &= H\left(\ket{0} + e^{-i\theta}\cdot e^{i\delta}\ket{1}\right) \\ &= H\left(\ket{0} + e^{i(\delta - \theta)}\ket{1}\right) \end{align*} -
のときy = 1 XHR_Z(\delta)\ket{+_\theta} = XH\left(\ket{0} + e^{i(\delta - \theta)}\ket{1}\right)
したがって
2番目の量子ビット | ||||
---|---|---|---|---|
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
このように
-
ボブの基底が
のとき\{\ket{\pm}\} \ket{\pm}\bra{\pm}\left(\frac{1}{\sqrt{2}}(i\ket{0} + \ket{1})\right) = \left(\frac{1}{2}i \pm \frac{1}{2}\right)\ket{\pm} - したがって
となる確率はいずれも\ket{\pm} \left|\frac{1}{2}i \pm \frac{1}{2}\right|^2 = \sqrt{\left(\frac{1}{2}\right)^2 + \left(\frac{\pm 1}{2}\right)^2}^2 = \frac{1}{2}
- したがって
-
ボブの基底が
のとき\{\frac{1}{\sqrt{2}}\left(\ket{0} \pm i\ket{1}\right)\} \left(\frac{1}{\sqrt{2}}\left(\ket{0} \pm i\ket{1}\right)\right)\left(\frac{1}{\sqrt{2}}\left(\bra{0} \pm i\bra{1}\right)\right)\left(\frac{1}{\sqrt{2}}(i\ket{0} + \ket{1})\right)\\ \,\\ = \left\{ \begin{array}{ll} \left(\frac{1}{2}i + \frac{1}{2}i = i\right)\frac{1}{\sqrt{2}}\left(\ket{0} + i\ket{1}\right) & \text{if}\; \frac{1}{\sqrt{2}}\left(\ket{0} + i\ket{1}\right) \\ \\ \left(\frac{1}{2}i - \frac{1}{2}i = 0\right)\frac{1}{\sqrt{2}}\left(\ket{0} - i\ket{1}\right) & \text{if}\; \frac{1}{\sqrt{2}}\left(\ket{0} - i\ket{1}\right) \end{array} \right. - したがって
が観測される確率は\frac{1}{\sqrt{2}}\left(\ket{0} + i\ket{1}\right) であり、一方で|i|^2 = 1 が観測される確率は\frac{1}{\sqrt{2}}\left(\ket{0} - i\ket{1}\right) となる|0|^2 = 0
- したがって
したがって、
さて、アリスが後手を選んだ状態はよく知られた状態
ブロッホ球のZ軸から見た時の位置関係
このあとボブは手順(6)で基底
そして手順(8)の最終的な結果は、
x
アリスの乱数プロトコルの手順(4)では、なぜアリスが乱数
2番目の量子ビット | |||
---|---|---|---|
|
|||
|
|||
|
|||
|
これはブロッホ球では次の図の赤い部分のどちらかとなる。
つまり、ナイーブなプロトコルで説明したように
- ボブとアリスの選択肢が不一致であったためか
- それとも選択肢は一致していたが、乱数
によるものかx = 1
という上記2つの区別がボブにとってつかないようにする。
Covert Lotteryとガチャ
元論文でもCovert Lotteryと呼ばれているように、これは先手・後手の決定とは別にくじに使うことができる。元論文ではこの2人のCovert Lotteryを任意の多人数へ拡張して次のような説明をしている。
-
人のn 参加者がP_1, \dots P_n 個の景品m のうちいくつか(0個もOK)が欲しいと考えているI_1, \dots, I_m - 景品
について、プレイヤーはI_i または0 を投票する1 - このとき
- もし1人のプレイヤー
のみがP_j を投票し、それ以外の全プレイヤーが1 を投票していれば0 が景品P_j を入手するI_i - 一方で複数のプレイヤーが
を投票した場合は、そのプレイヤーの中からランダムに1人を決定する1
- もし1人のプレイヤー
つまり、2人のCovert Lotteryも上記のように考えると、2人のプレイヤーにおいて次のようになる。
- どちらか1人のみ景品が欲しい場合はそちらに景品が当選する
- 2人ともが景品が欲しい・欲くない場合はランダムに当選者が選択される
つまり複数のプレイヤー間で、プレイヤーの希望を隠蔽したまま景品をなるべく希望に沿う形で当選させることができる。たとえば欲しくない景品が当選したので転売するといったことはあるだろうと思うので、そういったことをなるべく少なくできるかもしれない。
まとめ
アリスがセミオネストであるという仮定をなんとか取り除けないか多少は考えたものの、すぐには思いつかなかったのでいったんこのままで公開することにした。もしよい方法を思いついたという方がいれば教えてほしい。
また元論文では今回紹介した2人のプロトコルを任意の人数へ拡張していたため、そちらも量子プロトコルで達成できないか?というのを考えてみたい。
参考文献
-
この論文のことを今後は「元論文」という呼ぶことにする。 ↩︎
-
この文書を読むうえではカードベース暗号の知識は必要ないが、これはこれで非常におもしろいので、たとえばカード組を用いた秘密計算といった文献を読むとよい。 ↩︎
-
元論文では矢印の上に
$
(LaTeX表記では\xleftarrow{\text{$}}
)の記号を利用してランダムを表現しているが、Zennのパーザーの都合(?)でこの表記が数式として認められなかったため表記を変更した。 ↩︎ -
この記事では量子コンピュータの基本的な演算の知識を前提としている。このあたりは拙著の量子コンピュータを利用した公平なガチャ#古典計算機と量子コンピュータなどを参考にしてほしい。 ↩︎
-
はXOR演算を表す。 ↩︎\oplus -
プレイヤーが「セミオネスト(semi-honest)」であるとき、このプレイヤーはプロトコルの指示には違反しないが、プロトコルの指示に従う限りで(できるなら)他プレイヤーの情報を奪うといった不誠実な振る舞いをする。 ↩︎
-
記号
はテンソル積を表す。 ↩︎\otimes -
ゲートは1番目・2番目の量子ビットを入れかえても量子的な効果に違いはない。これは数式で言うとCZ となることを意味する。したがって実際にはこの説明で1番目や2番目などと区別する必要性はないが、順番を明瞭にしないまま説明するのも不要な混乱を与えると考えてここでは順番を明示した。 ↩︎\ket{0}\bra{0}\otimes I + \ket{1}\bra{1}\otimes Z = I \otimes \ket{0}\bra{0} + Z \otimes \ket{1}\bra{1} -
ブラインド量子計算はセキュアクラウド量子計算とも呼ばれ、実際の計算内容や入力を秘密にしたまま量子計算を代行してもらう技術である。ブラインド量子計算について得に知らなくてもこの文書は読めるように書いたつもりだが、詳細が気になる方は観測に基づく量子計算といった本がおすすめできる。 ↩︎
Discussion