【和訳】Mimblewimble explained like you’re 12
これはミンブルウィンブルと呼ばれる暗号資産の送金情報を秘匿するためのプロトコルについての記事を、翻訳したものです。出典元はここでBEAMとよばれるプロジェクトを参考に解説してあります。ミンブルウインブルはBEAMやGrinまたLitecoinで活用されるプロトコルですが、その仕組みについて12才の子供でも分かるような解説があったので、ここに翻訳することを決めました。より多くの人に暗号資産の面白さが伝わればと思います。
~~本文~~
ミンブルウインブル(Mimblewimble)は公開型ブロックチェーンから個人情報を隠すためのおかしな名前の技術である。この名前は、人々が秘密を言いふらすのを防ぐためのハリーポッターの呪文から名づけられた。
サトシナカモトのビットコイン論文には「プライバシー」についての章があり、ナカモトはビットコインのプライバシーの制限について言及している。この制限は、悪意ある人がビットコインから流出するデータを不正に使うことでさらに悪くなる。これは、個人名を開示しないからビットコインは匿名だと思っていた人たちを驚愕させる。それではどのようなデータが開示されているのか、またどうしてかについて見ていこう。
ビットコインは2つの要件を満たすために3つの秘密を言いふらす
ビットコインはトランザクションごとに次の3つの情報を公開する
- 送信アドレス
- 金額
- 受信アドレス
ビットコインはプライバシーを嫌っているから上記の情報を公開するわけではない。どんな貨幣システム(ゴールド、現金、物々交換)でも次の2つの要件を満たすためにそれらの情報を開示する。
- 送信金額と受信金額が等しいことを確認する必要がある。
もし私があるアドレスから1コインを送信して、あるアドレスに2コイン受信するようなトランザクションが作れたら暗号通貨は成り立たない。 - 私が他人の銀行口座から送金処理ができないこと(自分の口座からのみ可能)。
キャッシュカードとPINコードもしくはオンラインバンキングのパスワードを知っているもの、または暗号資産の場合は秘密鍵を持っているものからトランザクションが送られたことを確認する必要がある。
ビットコインはこの2つの要件を満たすために3つの秘密を流出する。
私がミンブルウインブルについてしようとしている主張は、3つの秘密の内の1つも漏らさないで2つの要件を満たすことだ。
これから簡単な算数を使って10才の子供に、またちょっと高度な数学を使って12才の子供に説明をしようと思う。
掛け算は簡単だが、因数分解は難しい
多くの人は算数を怖がっていて、エッセイの中にあったりすると読み飛ばしてしまうものだ。あなたも算数は嫌いかな?
もし紙とペンを渡して2分間あげたら、上記の算数は解けるよね?整数の掛け算はとても簡単だ。コンピュータを使えば、さらに大きな整数の掛け算が一瞬でできてしまう。
では、すこしだけ問題を変えてみよう。?マークを左側へ移動してみよう。
もし紙とペンを渡して2分間あげたら、上記の算数は解けるかな?たぶんできないだろう。?マークをちょっと移動しただけで、一気に難しい問題になってしまった。
簡単にするために、ここでは楕円曲線についての話はしない。実際の暗号システムでは、適当な数を使っているわけではなく、楕円曲線ポイントと呼ばれる特別な数を使っている。だけど、同じ数学的な性質を使っていることには同じである。それは、掛け算は簡単だけど、因数分解は難しいということだ。
情報を隠し所有者を確認するために掛け算の性質を利用する
では以下の隠されている数が何かを尋ねたらどうだろうか。
?マークが左辺にあるので、簡単には解けないはずだ。不足している要素を探すのは難しい
では、その要素が23と83だと教えたとしよう。私が本当のことを言っているのかを確認してみよう。私の主張を確認するには、掛け算をするだけだでよい。掛け算は簡単なはずだ。
これなら簡単に計算できるし、確かに隠されていた要素23と83を使うと20,348,031と等しくなる。
たとえ私が嘘を言っていたとしても、それらの数では右辺の数と合わないので、嘘を簡単に見破ることができるはずだ。私はその隠されている要素について嘘を言うことができないし、推測したり計算したりすることはできない。事前にその数を知っていないといけないということだ。
ここまではただの掛け算だった。10才の子供なら知ってるよね。そして、これで暗号通貨にとっての2つの大事なことを達成できた。
- 私たちは情報を隠したかったはずだ。そして、今どうやればいいか既に知っている。それは、未知数を掛け合わせることで情報を隠すことができる。これは解読することを難しくする。
- また、秘密鍵を持っていることを証明したかった。そして、今どうやればいいか既に知っている。それは、左辺の要素を公開することだ。
掛け算の基礎的な性質を利用することで、これらを達成することができた。
トランザクションの数量を隠す
では、大きな秘密の数を使い掛け算することで情報を隠すトリックを使ってみよう。ビットコインが漏らす3つの情報のうちの1つは送金金額であった。ビットコインブロックチェーンを通して5ビットコインを送信する時、この数は「5」という平文として表させる。では、他の数で乗算してこの数を隠してみよう。以下の[ amount ]を言い当てることができるかな?
上の等式はミンブルウインブルで表される金額に少し似ているが、正確ではない。ミンブルウインブルでは、送信者と受信者がお互いに以下のような数を作り出す。
これをペダーセンコミットメント(Pedersen commitment)と言う。重要なことは、これには金額部分(amount-part)と鍵部分(key-part)が含まれていることだ。
ここで、送信者と受信者の両者がトランザクションを作ることに協力することに注意してほしい。これはビットコインと異なる点だ。これは受信者のアドレスを公開する必要がなくなるが、しかし、送信者が受信者とコミュニケーションをとるための別な方法が必要になる。Beamは、送信者と受信者がペダーセンコミットメントを交換するための安全なBBSシステム(これはブロックチェーンとは独立している)を取り入れている。
別々にまたは一緒に、3番目の数を2つの数に乗算できる
次はちょっと高度な数学を扱うことにしよう。アイルランドでは12才になるまでは以下の数学は教わらない。
3で2と4を掛け算したい場合、2+4=6と足し算をしてから6*3=18とするか、2×3=6と4×3=12としてから6+12=18と計算することができる。
ここで心に留めてもらいたいポイントは、3番目の要素で2つの数を掛け算する場合、2つを加算して乗算するか、または1番目と3番目を乗算し、2番目と3番目を乗算することができることだ。この両者の計算方法は等しいということだ。
送信金額が受信金額と等しいことを証明する
「受信した金額 ー 送信した金額 = 0 」になることが貨幣システムにおける1つの要件だったことを思い出してみよう。私があなたに5ユーロ渡し、あなたが5ユーロ受け取る。5 - 5 = 0。これを上記のトリックを使って証明することができる。
ミンブルウインブルのトランザクションは2つのペダーセンコミットメントから成る:1つは送信金額で、もう1つは受信金額
例えば、送信者が5コイン送信し、受信者が5コインを受信すると、
big number1で送信金額を乗算してbig number1で受信金額を乗算するかわりに、以下のように数をくくってやることができる。
5 - 5 = 0。big number1でそれを乗算してもゼロのままだ。残りは以下のようになる。
または単に以下となる。
金額部分が消えた!金額は未知数(big number)で乗算させることで見えなくなる。そして、金額を公開せずに、その数がゼロになったことを確認できた。
金額部分が消えた理由は、送信金額と受信金額が等しいから。もしそれらが等しくなければ、ゼロになるはずはないであるし、さらに、以下のように鍵部分がそれ以上の数になってしまうだろう。
したがって、トランザクションカーネル(transaction kernel)は、秘密鍵である23と83で割り切ることができなくなるはずだ。Beamプロトコルはこのトランザクションを不正なものとして拒否する。
では、何が残ったのかというと以下の鍵部分のみだ。
これは、送信者と受信者の秘密鍵(key1, key2)をbig numberで乗算することで出来上がる大きな数である。
そして、トランザクションカーネルが秘密鍵で割り切れるのには2つの理由がある。
- 金額部分がゼロになるから
- 鍵部分が秘密鍵である83と23を含む数で乗算されているから
そして、これらは貨幣システムを作るための2つの要件だった!
- 金額部分がゼロになれば、送信金額-受信金額=0である。言い換えると、送信金額と受信金額は等しい。要するに、消えたお金はなく、また作られたものもない。この要件は達成できた。初めに、未知数で送信金額と受信金額を乗算することでその金額を秘匿化し、その金額をゼロへ打ち消す。
- 2番目の要件は、秘密鍵の所有者によってトランザクションが作られたことを証明することだった。送信者は秘密鍵でトランザクションカーネルを割り切れることを見せることで証明する。言い換えると、それはカーネルを構成する要素であった。
ミンブルウインブルは間違いなくビットコイン以上にビットコインの目標を達成する(その目標がプライバシーであれば)。他の匿名コインと違って(これらはビットコインに難読性を追加している)、ミンブルウインブルは削除することで達成する。私たちは今年初めに実装を始めたことを嬉しく思い、BEAMは2018年の終わりまでにはリリースしたいと思っている。
Battle Of The Privacycoins: What We Know About Grin And Beam’s Mimblewimble