NSAとビットコイン:ハッシュ化アルゴリズム「SHA-256」のルーツ
SupraOracles
広く使われているハッシュアルゴリズムのルーツを辿ると、アメリカの諜報機関に由来するものであることがわかります。
SHA-256の成り立ち
Secure Hash Algorithm 256-bit (SHA-256) は、広く使われている暗号ハッシュ関数で、異なる入力が与えられたときに256ビットの固定サイズの出力を生成します。ハッシュ関数のSHA-2ファミリーに属し、最も初期のSHA-1ハッシュ関数に先行しており、数字が大きくなるほどハッシュ出力の長さが長くなりますが、これについては後述します。
SHA-256の起源は、米国の諜報機関、すなわち国家安全保障局(NSA)に遡ることができる。この機関のエンジニアは、このアルゴリズムの開発に多大な投資を行い、2001年に初めて公開しました。SHA-256を開発した主な目的は、MD5やSHA-1といった以前のハッシュ関数を最適化することでしたが、既知のいくつかの攻撃ベクトルに対して脆弱であることが判明しました。
興味深いことに、SHA-256は、デジタル署名、パスワード保存、メッセージ認証コードなど、サイバーセキュリティに広く応用されています。また、例えばBitcoinのようなブロックチェーンで使われるプルーフ・オブ・ワークのコンセンサス・アルゴリズムにも採用されています。
このアルゴリズムは、ブロックと呼ばれる塊で入力されたデータを、一連の数学的演算によって処理する。SHA-256の出力は256ビットのハッシュで、名前の由来にもなっています。このハッシュは一意の入力に対して一意です。
ハッシングアルゴリズムは、与えられた入力を受け取って、その出力を難解にする仕組みです。異なる2つの入力から同じ出力が得られることはなく、入力の1桁を変えるだけで、全く異なる出力が得られます。
SHA-256の主な特徴の1つは、衝突攻撃に対する耐性です。つまり、2つの異なる入力から同じハッシュ化された出力を生成することは、計算上不可能です。つまり、2つの異なる入力から同じハッシュ化された出力を生成することは計算上不可能であり、その出力は常に一意の入力セットに対応するため、出力を遡ってチェックすることができます。
しかし、“preimage resistant”もあるため、トランザクションのハッシュ値から送信者の秘密鍵を推測することは実質的に不可能です。このように、公開鍵と秘密鍵の両方を併用することで、透明性と安全性の相乗効果が得られるのです。
これだけ聞くと非常に安全そうですが、SHA-256アルゴリズムの開発者がバックドアを作り、将来のある時点でそれを使うことを計画しているのではないか、と考える人も存在します。その可能性を論じる前に、ビットコインネットワークを例に、ハッシュが実用上どのように機能するかをより具体的に見てみましょう。その後、米国のスパイ機関や潜在的な利益相反に関する、より推測的な側面を検討することができます。
ビットコインのコードに含まれるSHA-256
皮肉なことに、SHA-256はビットコインの機能の中心であり、多くの人がドルの支配的な役割を脅かすものだと考えているため、おそらく米国政府は猛烈に反対しているはずです。これは、私たちが生き続けている悲劇的な物語を思い起こさせるもので、私たちの行動はしばしば予期せぬ形で私たちを苦しめることになります。ビットコインが政府機関によって作られたという考え方は、明らかに支持されないでしょう。
ビットコインの文脈では、SHA-256はプルーフ・オブ・ワークのコンセンサスメカニズムに不可欠です。ご存知のように、プルーフ・オブ・ワークのマイナーは、ノンスと呼ばれる特定のハッシュ値を見つけることを含む数学的問題を解くために競い合います。残りのヘッダーデータと組み合わせてSHA-256でハッシュ化すると、最終的に約10分ごとに新しいブロックヘッダーが出力されます。
ブロックにはすべてヘッダーが含まれ、前のブロックのハッシュ、各ブロック内のトランザクションのMerkleルート、タイムスタンプ、ノンスといった重要なメタデータが格納されています。ブロックのヘッダーがSHA-256を使ってハッシュ化されていることは、既にご存知かもしれませんね。。
ブロックの一意な識別子となるnonceを生成するためと、ブロックヘッダを生成するために2回使用されるのです。ノンスは過去のブロックと未来のブロックを結びつけ、ビットコインの連続性の完全性を維持します。
ビットコインのヘッダーは、SHA-256を使用して、さまざまな入力と出力を暗号化します。
さらに、ビットコインアドレスは公開鍵から派生して、その公開鍵は楕円曲線デジタル署名アルゴリズム(ECDSA)を通じて秘密鍵から派生します。公開鍵は、SHA-256と欧州で開発されたRIPEMD-160を組み合わせてハッシュ化され、160ビットのハッシュとなります。
RIPEMD-160は、出力サイズが短いため、一般にSHA-256よりも高速で、速度が重要な特定のアプリケーションに適しています。前述のアルゴリズムを組み合わせた結果のハッシュは、Base58Checkというものを使ってエンコードされ、最終的なビットコインアドレスが生成されます。
さらに、ビットコインの取引は、ビットコインを送る前に、送信者の秘密鍵でデジタル署名を行い、所有権を証明します。つまり、取引データをSHA-256でハッシュ化し、そのハッシュを送信者の秘密鍵を使って前述のECDSAで署名します。
こうして得られた電子署名は取引データに含まれ、ネットワーク上の他の参加者はその後、送信者の公開鍵を使って署名が有効であることを確認することができます。このように、セキュリティと透明性を両立させることで、ブロックチェーンという時代が誕生したのです。
NSAはビットコインへのバックドアを持っているのか?
スパイ組織がビットコインネットワークにバックドアを持っていて、ハードマネー支持者たちを引きずり出すために待ち構えているという噂があります。まず、文脈を理解しましょう。
諜報機関のネットワークは秘密に包まれています。諜報機関の主な目的の1つは、その活動を難解にし、影で働くことにあります。多くの人々は、ミッションクリープによって、諜報機関は時間の経過とともに徐々にその力を増していくため、諜報機関が提供する利益よりも大きな脅威を国民に与えるのではないかと、ますます心配するようになっています。
NSAの歴史を考えると、NSAは、たとえ確固たる証拠によって自分たちの不正行為が明らかになったとしても、国民に対して率直であることに関して、あまり信頼されていません。NSAは、海外で活動する外国人テロリストを調査していると主張しながら、アメリカ国民を不適切にスパイしていたとして、大々的に非難された経緯があります。
この証拠は、エドワード・スノーデンが機密文書をリークし、PRISMと呼ばれるNSAが行っている極秘のデータ収集・監視プログラムを明らかにしたことで明るみに出ました。これは2013年のことで、ビットコインが誕生して間もなくのことでした。
PRISMは1978年に制定された外国情報監視法の下で認可されたもので、当初はテロやスパイ活動、その他国家安全保障に関連する行為に従事する米国在住の外国人を監視するために作られたものでした。しかし、このプログラムは、特に犯罪を犯していない、またはその疑いがない人々のデータが収集されていたため、個人のプライバシー権を侵害するとして批判を浴びるようになりました。
プライバシー擁護団体からの反発にもかかわらず、期限切れとなったPRISMは、2018年に更新されました。それでもPRISMは、NSAが外国の個人や企業と通信したユーザーについて、電話の会話、SMSメッセージ、電子メール、検索履歴、ファイル転送、クラウドストレージ上の写真、暗号化されたチャットなど、幅広いデータを収集できるようにしました。PRISMは、個人のプライバシー権と国家安全保障の適切なバランスに関して、引き続き議論の的となっています。
PRISMに関与したとされる企業の中には、Google、Microsoft、Facebook、Apple、Yahooなどの大手ハイテク企業が含まれており、読者を驚かせることはないでしょう。企業はユーザーデータに対する合法的な要求に応じる必要がありますが、多くの企業はNSAが自社のサーバーに違法または不適切なアクセス権を付与したことを否定しています。
結論
NSAがSHA-256のバックドアを利用して、個人を特定したり、ウォレットから資金を引き出したりする陰謀が進行中ではないか、と考える人もいます。しかし、NSAがいくつかのハッシュアルゴリズムの開発に貢献したという事実を除けば、そのような証拠はありません。したがって、NSAがビットコインの開発とあまり関係がないとは考えにくいものとなります。
SHA-256がビットコインの設計に不可欠な要素であることを知れば、ビットコインとその後に続く多くのものをもたらしたサトシと一緒に、自分の役割を果たしたアンクルサムに脱帽せざるを得ません。まさに「魔が差した」と言えるでしょう。しかし、ビットコインのコードへのバックドアについて心配する必要はあるのでしょうか。とはいえ、これは財務的なアドバイスでもありません。様々な角度からこの世界を見ていくことで、豊富な知見が得られるのではないでしょうか。