ビットコインが楕円曲線暗号法(ECDSA)を採用した理由
ビットコインを発明し、未だその正体が分かっていないサトシ・ナカモト。そんなサトシが残した約2年間の文章を、小宮自由氏の解説と共に紹介する連載「サトシ・ナカモトが残した言葉〜ビットコインの歴史をたどる旅」の第30回。
まずサトシのメールの前に、本連載の元になっている書籍『ビットコイン バイブル:サトシナカモトとは何者か?』の著者フィル・シャンパーニュ氏の解説も掲載する。
フィル・シャンパーニュ氏の解説
非対称暗号化に使われる暗号法アルゴリズムには多様なタイプがある。ここでは、RSAではなく楕円曲線暗号法(ECDSA)を使う理由をサトシが述べていて、そのメインの理由は取引のサイズ(バイト数)である。サトシがECDSAの利用を決めたのは、取引サイズを可能な限り小さくしてブロックを処理可能なサイズに収めるためだった。
Re:新規加入者のテスト 誰か1ドルで画像を買いませんか? サトシ・ナカモト 2010年01月29日 午後12時22分13秒
それではサトシの投稿をみていこう。
========================
注文時のお勧めの支払方法:
1. 販売者が持つ静的IPへ、購入者がコメントを付けて送る
2. 販売者が新しいビットコインアドレスを作成し、購入者に教え、そこに購入者が送る。これがウェブサイトのソフトウェアでの標準的な方法になります。
RSAとECDSAの違いは、実行可能ファイルのサイズではなく、データのサイズです。ブロックチェーン、ビットコインアドレス、ディスクスペース、帯域の要求が全て、何十倍も大きかったら、非実用的だと思いました。また、メッセージにはRSAを使っても、ビットコインネットワーク全体の稼働にはECDSAを使い、それと平行してメッセージ*1 の部分だけはRSAを使う、というのはまだ合理的でしょう。その場合には、現在までに実装されているものは全て、今まで通り実装されます。
これを実行する最善の手法は、ずっとあとになってから見つかるでしょう。メッセージの伝達に使うのは、別個の(たぶん既存の)Eメールかインターネットメッセンジャーのインフラになるかもしれず、RSAと違い、取引にメッセージのハッシュを組み込めば、その取引がメッセージで指定された注文であると証明できます*2 。他人にハッシュを強制突破されてショートメッセージを暴露されないように、メッセージにはソルトを入れる必要があります。
========================
【訳注】
*1 ビットコインのトランザクションに関連するデータや情報のこと。具体的には、トランザクションを生成する際に、そのトランザクションが正当であることを証明するためのデジタル署名の一部としての「メッセージ」を指している可能性が高い。
*2 具体的なフローの説明をする。まず、販売者が何らかの商品やサービスに関する「注文」や「請求」をメッセージとして生成し、そのメッセージを購入者に送信する。購入者はこのメッセージを受け取り、それを確認した上で、そのメッセージに対するデジタル署名を生成する。このデジタル署名は、購入者がメッセージの内容(つまり、注文や請求)に同意し、それに基づいてビットコインを支払う意志があることを証明するものである。
次に、購入者はこの署名されたメッセージ(またはそのハッシュ値)をビットコインのトランザクションとしてブロックチェーンにブロードキャストする。これにより、メッセージの内容が公開されることなく、そのメッセージが正当であること(つまり、購入者がその内容に同意していること)がブロックチェーン上で証明される。このような方法を使用することで、ビットコインのトランザクションを通じて、販売者と購入者の間での取引の詳細や合意を確認・証明することができる。
解説
ビットコインは通信データ量圧縮のために様々な技巧を凝らしてます。
ビットコインのブロックチェーンでは過去全てのデータを保存しているので、一つ一つのトランザクションの通信量が大きくなると、比例して総データ量も大きくなります。また、トランザクションのデータ量が大きくなると、通信が完了する時間も遅くなり、これはビットコインのパフォーマンスを下げる要因となります。
これらの理由から、サトシはRSAよりデータ量が小さいECDSAをビットコインで採用するに至りました。
小宮自由