ビットコインにおける匿名性を高める技術

[仮想通貨・ブロックチェーン Advent Calendar 2016](http://qiita.com/advent-calendar/2016/blockchain) の15日目の記事です。

# ビットコインのプライバシー問題

昨今のビットコインの話題の一つに、**プライバシー問題**があります。

ビットコインは匿名性が高いと言われていますが、それは完全な匿名ではありません。
ビットコインには個人を表すデータはなく、ビットコインアドレスも現実の個人と結び付けられている訳ではありませんが、
例えば過去の取引記録や、利用するウォレットや取引所、IPアドレスなどのデータから、個人や組織が特定されてしまう可能性があります。

ビットコインのすべての取引はインターネット上に公開されているので、アドレスから過去の入出金先と入出金量の記録(いつ・誰が・誰に・いくらで)を、誰でも見ることができてしまいます。
その場合、個人であれば何にいくらお金を使っているのか、どれだけのお金を持っているのか、
企業であれば顧客からいくらお金を受け取っているのか、取引先や従業員にいくら支払っているのかが見られてしまうことになります。
これでは、プライバシーに係る取引はビットコインで行うことができません。

加えて、ビットコインはコインの記録も追跡することができます。もし不正な取引や犯罪に使われた「汚染されたコイン(tainted)」であると分かったら、そのコインは嫌がられるかもしれません。
これはビットコインの「お金としての価値」を揺らがすことになります。

このような問題を解決するため、**ビットコインの匿名性を高めることは非常に重要**とされています。

# 匿名性を高める技術

現在では、ビットコインの匿名性を高めるための様々なアイディアやサービスが生まれています。
よく名前の出るもの、最近目にしたものを中心にピックアップしてみて、以下のようにまとめました。

- ミキシング技術を用いたもの
    - CoinJoin
    - Dash (Darksend)
- ゼロ知識証明を用いたもの
    - Zcash
- リング署名を用いたもの
    - Monero (CryptoNight)
- 準同型暗号を用いたもの
    - Confidential Transaction

## CoinJoin

CoinJoin は、入出金先(誰が・誰に)の匿名化に有効な**ミキシング技術**です。
ユーザがビットコインを利用すると、その取引はランダムで選ばれた同時期の他のユーザの取引と混ぜ合わされ、一つのトランザクションに集約されます。集約されたトランザクションは、それぞれの出金先に再分配されます。
こうしたミキシング(撹拌)技術の仕組みによって、取引の入金元と出金先との紐付けを断ち、追跡できなくすることができます。

こうしたミキシングサービスは、以前は企業などが中央集権的に運用していため、仲介となる企業にコインを持ち逃げされるリスク、取引のログが見られてしまうリスクがありました。
CoinJoin はそうした仲介なしに、ユーザ同士が集まることでミキシングを実現しています。

難点としては、ユーザ同士が同じタイミングに集まらなければならないこと、仲介となるサーバが必要になること、があります。

<!--
最近では、支払いをオフチェーンで行うことによりスケーラビリティを向上させた Tumblebit というミキシングサービスもあるそうです。
-->

## Dash

Dash は、CoinJoin の考えに基いて匿名性を強化した仮想通貨です。
Darksend と呼ばれる仕組みを取り入れており、ユーザの取引は一度「トランザクションプール」に集められてから、再分配されるようになっています。
CodeJoin の実用的な実装の一つと言えます。

<!--
他にも、X11 と呼ばれる11種のハッシュ関数を組み合わせたハッシュアルゴリズムを採用することでセキュリティを強化しています。
また、2015年3月に InstantX という即時取引可能な機能が追加されたことで、Darkcoin から Dash に改名されました。
-->

## Zcash 

Zcash は、入出金先と入出金量(誰が・誰に・いくらで)の匿名化を可能とする仮想通貨です。
**ゼロ知識証明**という暗号技術を用いることで、取引が発生したこと以外のすべての情報を隠蔽し、閲覧用の鍵を持つ人だけが取引の内容を見ることができます。

ゼロ知識証明は、自分の持っている命題が真であることを、それ以外の情報を伝えずに相手に示す技術です。
Zcash では、ユーザがビットコインアドレスを所有していることを、誰からいくらのコインを受け取ったかの内容を明かすことなく証明します。
これにより、追跡を不可能にするだけでなく、入出金量も非公開にすることができます。

しかし、ゼロ知識証明はまだ新しい暗号技術ということもあり、いくつかのバグ検証が必要とのことです。
また証明にはそれなりの計算量が必要で、取引を検証するのに2分ほどかかるそうなので、現段階で調べた結果では最も匿名化のレベルは高いものの、まだ実用には遠そうな印象を受けました。

ゼロ知識証明の原理についてはこちらが勉強になりました。
http://www.atmarkit.co.jp/ait/articles/1510/20/news007_2.html

## Monero

Monero は、CryptoNight アルゴリズムに基づいた仮想通貨です。
CryptoNight アルゴリズムでは **リング署名** という技術を使用しています。

リング署名は、あるグループの一員であれば誰でも署名が可能で、かつその署名は誰のものかは分からず、グループの誰かのものであることのみを証明できる技術です。
これにより、誰が入金したのかを隠匿し、ミキシングと同等の効果が得られます。ただ、CoinJoin とは異なり、取引を混ぜ合わせる仲介がいなくとも匿名化が可能な点がメリットです。

また、Monero ではリング署名にワンタイムキーを組み合わせることで、取引が追跡できないようにしています。
ユーザのアドレスがマスターキーの役割を果たし、取引の度にマスターキーからワンタイムアドレスを生成します。取引のアドレスはワンタイムアドレスとなるため、取引からユーザを追跡することはできません。

## Confidential Transaction

Confidential Transaction は、Blockstream というサイドチェーン(ビットコインと他のチェーンを連携させる)技術を推進している企業が開発している技術です。

これは CoinJoin が入出金先(誰が・誰に)の匿名化が可能な一方で、入出金量(いくらで)の匿名化ができない課題を解決するものです。
ボロミアン・リング署名という、Monero で使用されているリング署名のパフォーマンスを改善したアルゴリズムを使用している他、**準同型暗号による秘匿計算** を利用しているのが特徴となります。

準同型暗号は、暗号化されたデータを復号することなく、平文の演算を可能とする暗号技術です。
Confidential Transaction では、取引の入出金量が隠蔽されていても、取引におけるすべての入出力の合計を比較して確かめることで検証することができます。

しかしながら、Confidential Transaction もまだパフォーマンスに難はあるようで、通常の取引に比べると約20倍の時間がかかるようです。

準同型暗号については、こちらが勉強になりました。
http://www.atmarkit.co.jp/ait/articles/1508/14/news001.html

# まとめ

ビットコインにおけるプライバシー問題と、その解決策となる技術について調べ、ここ1年2年ほどで様々な解決策が模索されていることが分かりました。

まだ課題の多い分野ではありますが、古い技術も新しい技術も組み合わせて、次々と課題解決がチャレンジされていくのはわくわくしますね。
引き続き動向を追っていけたらと思います。

# 参考
- Bitcoinの代わりとして注目を集める追跡不能の仮想通貨「Zcash」とは？ http://gigazine.net/news/20160127-zcash/
- Monero http://cryptpark.com/coindata/monero-xmr/
- ビットコインミキサーとは何か？自分のプライバシーを守る方法 http://btcnews.jp/what-is-bitcoin-tx-mixing/
- Bitcoinとプライバシー http://www.slideshare.net/visvirial/bitcoinbitcoin20150720
- Dash http://jpbitcoin.com/altcoin/darkcoin
- Zcash 概要・ZEC価格・売買方法まとめ https://coincheck.com/blog/2625
- Monero http://cryptpark.com/coindata/monero-xmr/
- Monero 概要・特徴・価格まとめ https://coincheck.com/blog/2303
- Bitcoinの匿名性を向上させるConfidential Transactions http://techmedia-think.hatenablog.com/entry/2015/12/31/002253
- ビットコインのプライバシーが守られる、コンフィデンシャル・トランザクションについて1 https://www.coin-portal.net/2016/06/12/9703/
- ビットコインのプライバシーが守られる、コンフィデンシャル・トランザクションについて2 https://www.coin-portal.net/2016/06/12/9739/
- Blockstream Creates ‘Confidential Transactions’ to Boost Bitcoin Security https://cointelegraph.com/news/blockstream-creates-confidential-transactions-to-boost-bitcoin-security