2023年6月14日 5 min read

国家による暗号政策とビットコインの設計思想

ご存じのようにビットコインや普段何気なく使っているインターネットは計算機科学分野での成果物、特に暗号技術に支えられています。ですが、ビットコインを支える暗号技術と、その他のインターネットサービス(例えばブラウザーなど)を支える暗号技術とでは少し毛色が違うモノが使われていることはご存じでしょうか。

例えば、電子署名としてビットコインではECDSA方式のうちsecp256k1という亜種を利用しています。一方、PDFへの電子署名などでは複数の方式がサポートされますが、secp256k1には対応していません。

サトシナカモトはなぜ、こうした技術選考を行ったのでしょうか。今回はこのへんを掘り下げてみようと思います。

ビットコインが利用している技術

現在デファクトの実装であるBitcoin Coreによると、ビットコインでは次のような暗号技術が利用されていることが分かります。

  • SHA-256 - ハッシュ関数: トランザクションIDやアドレスをつくる際に利用されている
  • RIPEMD-160 - ハッシュ関数: アドレスをつくる際に利用されている
  • ECDSA - 楕円曲線デジタル署名方式: ビットコインではsecp256k1というパラメータを用いるバージョンが利用されている

ちょっと面白い事実として、ビットコインホワイトペーパーではハッシュ関数や電子署名方式として上記を採用する、といった言及はされていない点があります。そのため、なぜこれを選んだのか、というところはビットコイン登場の惣明期に、サトシナカモトと直接メーリングリストでやり取りした開発メンバーだけがあずかり知る事なのかもしれません。

ということで、本当のところを分からないわけなので、独自に考察してみようと思います。

なぜSHA-256なのか

SHA-256は、2001年にアメリカ国家安全保障局(NSA)により設計され、アメリカ国立標準技術研究所(NIST)によりFIPS PUB 180-4として標準化されました。標準化というのは、技術仕様をドキュメントとして定めることで、これに準拠してシステムをつくることで関連する機器同士が正しく連携して動作することを保証できます。

NISTによる標準化というのはとても大事な事象で、本日のメイントピックでもあります。なぜ、アメリカという国が標準化をリードしているのでしょうか。

この背景を理解するのには歴史を知る必要があります。歴史上、暗号技術というのは軍事色の強いものでした。第二次世界大戦でのエニグマ暗号機の話が有名ですね。エニグマについては個人的におすすめの映画「イミテーション・ゲーム」にて詳細を楽しめます。まだ見たことない方は是非。機械式の暗号解読機ボンベにワクワクが止まらなくなります。
さて、こうした国家による暗号政策については外務省が「国家による暗号政策」としてレポートにまとめていました。2001年の資料と古いのですが、当時の先進国での暗号に対する認識が垣間見えてとても読み応えがあります。2001年といえば暗号技術が飛躍的に発展し始めた頃であり、NISTがSHA-256やAES暗号化を標準化した年でもあります。そのため、国防から民間への技術開放の様子が伺えます。また、私人のプライバシー保護との観点で方針がガラッと変わった国がでてきた点にも触れられており、歴史の転換点での雰囲気が見て取れ興味深いです。

さて、アメリカの話に戻しますと、その後の冷戦を経て諜報活動と暗号技術とは切り離せない関係になりました。結果、暗号技術はアメリカにおいて軍需品規制の対象となりました。つまり、アメリカ国外への輸出には許可が必要になったということですね。
さらに、ここがアメリカらしい(というか当時の国側の考えは皆おなじ様子)のですが、この規制により国が暗号の強度や方式を制御することで、アメリカは他国の通信を読めるが逆に他国はアメリカの通信が読めない、といった世界を実現しようとしていたようです。上述レポートでは鍵預託型の規制を志向していた歴史が整理されており、なかなか強烈です。

こうした思惑もあり、国防としての側面もあるのですから、アメリカが標準化をリードすることは理にかなっているように思えますね。

2001年のNISTによる暗号技術の標準化は、候補となる技術を公募し、そこからハッシュ関数はこれ、暗号化はこれ、電子署名はこれ、と1つ1つ丁寧に選定する手順が踏まれました。民間でも広く使われることを目的としており、選定過程は比較的透明性高く行われました。結果、標準化された技術は十分に安全な暗号強度があり、ライセンスがフリーであり、且つ一般的には国といえども中を勝手に読むことの出来ないとても公共性の高いものであるとされています。そのため、現在のインターネットではNIST標準化された暗号技術がふんだんに利用されています。上述の通り、ビットコインもSHA-256を利用しています。

ビットコインでの暗号技術選定

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to ビットコイン研究所.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.