公開鍵暗号方式、ビットコインの暗号化技術を知る

ビットコインには高度な暗号技術が使われ、取引の信頼性を高めています。このレッスンでは、ビットコインの暗号技術について大まかに説明します。

電子署名で本人であることを証明する

ビットコインでは、公開鍵暗号方式という暗号技術が使われています。公開鍵暗号方式では、秘密鍵と公開鍵の2つの鍵が存在します。秘密鍵は自身のみが使う鍵で、暗証番号などと同じように、他人に教えてはいけない性質のものです。

公開鍵はその名の通り、オンライン上で公開されている、他人に渡すことも可能な鍵です。ビットコインの送金は秘密鍵を使って行われます。公開鍵にひも付くアドレスに送られたビットコインは、公開鍵を生成した秘密鍵でのみ署名でき、ビットコインを使用することができます。

例えばAさんがBさんにビットコインを送金したい場合、Aさんは自身の取引を秘密鍵で電子署名します。次に、Bさんのアドレスに対してビットコインを送ります。Bさんがこのビットコインの所有権を証明するためには、このアドレスにひも付いた秘密鍵が必要となります。

Bさんは、自身の秘密鍵を使ってこのビットコインの所有を証明します。このように、ビットコインは保管されているアドレスにひも付いた秘密鍵でのみ使用できる仕様になっています。

秘密鍵と公開鍵は必ずセットで使う

公開鍵暗号方式で重要なことは、この秘密鍵と公開鍵がビットコインにおいては必ずセットで使われることです。ビツトコインの取引はすべて公開されているため、それぞれの取引に秘密鍵でなされた署名が入っていることを確認できます。

そして、ビツトコインの所有者のみが、ビットコインのアドレスにひも付いた秘密鍵を持っています。つまり、どのアドレスに今いくらビットコインがあるか、簡単に調べられるわけです。

しかし、取引の履歴や現在のビットコインの所持状況が分かっても、ほかの秘密鍵にひも付いているアドレスの中のビットコインは使えません。実際にビットコインを使えるのは、ビットコインアドレスにひも付く秘密鍵の所有者のみという仕組みになっています。

逆にいうと、アドレスにひも付いた秘密鍵が他人に知られてしまうと、他人がそのアドレスにあるビットコインを使うこともできてしまいます。秘密鍵の取り扱いには十分に注意しましょう。

秘密鍵から公開鍵とアドレスが作られる

ビットコインの送金時に指定する送り先の「ビットコインアドレス」は秘密鍵から生成されます。専門的な内容になりますが、まず疑似乱数生成器(RNG)を用いて、秘密鍵を生成します。次に秘密鍵から楕円曲線暗号という暗号を使って公開鍵を生成します。

さらに公開鍵をSHA-256のハッシュ関数に2回かけて、最後にBase58エンコードにかけることでビットコインアドレスが完成します。Base58エンコードは、人間が読みやすいように数字の「0,1」とアルファベットの「O,I」を除外した英数字の58種類を使ったランダム値です。

これらのプロセスは非可逆であり、ビットコインアドレスからは秘密鍵を割り出せません。ただし、秘密鍵を生成する疑似乱数生成器に脆弱性がある場合や、同じシードを使ってしまうと、同じ乱数を生成してしまい、乱数衝突(コリジョン)を起こしてしまいます。

乱数衝突が起こると、複数の秘密鍵が同時に存在し、勝手に使われる恐れもあります。また、秘密鍵から生成した公開鍵が重複する可能性もゼロではありませんが、2の96乗分の1の確率といえば、その可能性が低いことが分かるでしょう。

公開鍵から秘密鍵は割り出せない

公開鍵は秘密鍵から楕円曲線暗号を使って生成されます。この楕円曲線暗号は一方向性のある暗号技術といえます。つまり、一方向の計算は容易でもその逆は容易ではないという意味です。

楕円曲線暗号は、アメリカの数学者ニール・コビッツ博士によって1985年に発表されました。この暗号技術は、多くのデータ暗号化に利用されています。その理由は、楕円曲線暗号の逆算の壁を破るアルゴリズムがいまだに発見されていないからです。

ビットコインの送金システムは公開鍵から秘密鍵を割り出せないことに価値があります。もしこれが可能だとすれば、世界中のセキュリティシステムが破られるということを意味します。

●ビットコインで使われている暗号方式

暗号 発表年 発表者
楕円曲線暗号 1985年 ビクタ・ミラー
ニール・コブリッツ
公開鍵暗号方式 1976年 ホイットフィールド・ディフィー
マーティン・ヘルマン
SHA256 2001年 NSA(アメリカ国家安全保障局)

秘密鍵は他言無用

秘密鍵はアドレスからビットコインを送るときに使う電子署名の役割を担うため、大切に保管しなければなりません。ビットコインの暗号技術はどれも優れたものですが、秘密鍵さえあれば同じ技術を使って暗号鍵を割り出し、ビットコインアドレスにたどり着くことは容易です。

秘密鍵を外部に漏らしてしまうということは、自分の財布を見知らぬ人に手渡しているようなものです。このため秘密鍵は、完壁に暗記するか紙に写し、金庫などにしまうなどの厳重な管理が必要です。

また、秘密鍵の文字列をすべて暗記してしまえば盗まれることはありませんが、秘密鍵は「5K38ZKiJBMmsk9iLcaakHfMa6FoZpLKpmhyogaZnjossPc49J7e」のようなランダムな文字列であるため、正確に覚えるのは現実的に困難です。

取引所などにビットコインを預けている場合は、その取引所が秘密鍵を管理しているため、自分で秘密鍵を管理する必要はありません。しかし、その取引所に何らかのトラブルなどが発生するリスクを考えると、極力自身で秘密鍵を管理した方が安全といえます。

改ざんできない3つの理由

「なぜ管理者がいないのに、不正や改ざんができないのか?」と不思議に思われるかもしれません。その理由は3つあります。まずlつめに、ブロックチェーンでは、中央に特定のサーバーがありません。

多数の参加者でデータを共有しているので、中央のサーバーを書き換えてデータの改ざんを行うということができません。これにより、ハッキングを行いネットワークの一部に侵入して、ある一部のデータを破損したとしても、ほかの場所のデータから復元することができます。

2つめは、ブロックがチェーン(鎖)でつながっているという点です。ブロックチェーンのブロックは特定の関数に基づきハッシュ化されているので、ブロック内のデータを変えるとハッシュ化されたデータも変わってしまいます。

つまり、ブロックを作るのにコストがかかっており、さらにそのコストをかけた証拠(プルーフ・オブ・ワーク)が前のブロックに残っているので、同じだけのコストをかけないと改ざんできないしくみとなっています。

3つめは、途中で改ざんをしてブロックチェーンが枝分かれした場合も、「一番長いチェーンが正しい」というルールがあるので、それ以外の枝分かれしたチェーンは白動的に破棄されてしまいます。このように、管理者がいない状態でも不正や改ざんができない状態を作り上げてしまったところにブロックチェーンの特徴があります。

1ビットコインの取引は改ざんの意味がない

ビットコインの取引には秘密鍵と公開鍵が必要です。仮にハッカーが取引を改ざんしたとしても、そのアドレスにひも付いている鍵を保有していない限り、ビットコインを引き出せません。また改ざんされた取引はマイナーによって検証され、正常な取引として承認されません。

2秘密鍵と公開鍵を逆の用途で使うことはできない

ユーザーは秘密鍵をビットコインの取引に署名することで、自身のビットコインを送金することができます。一方公開鍵は、アドレスを生成する目的で使われるため、ビツトコインの取引に署名をしても意味がありません。

3データの暗号化はしていない

ビットコインは複数の暗号技術を使うことで、ネットワークの安全性を確保しています。ただし、データを暗号化するためではなく、データの正しさを検証するために使われています。

4秘密鍵をなくしてはいけない

秘密鍵と公開鍵は対をなしているため、秘密鍵を紛失してしまうと、二度とビットコインを取り出せなくなってしまいます。秘密鍵は絶対になくさないようにしましょう。

5アドレスから秘密鍵は作れない

すべてのビツトコインアドレスは秘密鍵とひも付いています。しかしビットコインアドレスから秘密鍵を割り出すことは、ほぼ不可能です。そのため、ビットコインアドレスはオンライン上で公開されていても問題ないということになります。

6同じ秘密鍵が複数作られることはあるの?

秘密鍵を生成する疑似乱数生成器に脆弱性がある場合、同じ乱数を生成してしまい、乱数衝突(コリジョン)を起こすことがあります。乱数衝突が起こると、複数の秘密鍵が同時に存在してしまい、勝手に使われる恐れもあります。秘密鍵は取引所やウォレットが作っているので、もしその作成方法の中に脆弱性が発見されたと分かったとき、ただちにほかの取引所やウォレットに自分のビツトコインを移しておきましょう。

7公開鍵暗号は様々なところで使われている

公開鍵暗号は、インターネットのさまざまなところでセキュリティを高めるために使われています。例えば、メール内容やファイルの暗号化、また通信の安全性を高めるためのSSL認証局や、ファイルの偽装や改ざんを防ぐための電子署名サービスでも使われています。

8ビットコインは高度な暗号技術を使用している

ビットコインでは、40年前から使われ続けている信頼性の高い暗号技術が使われています。このセキュリティの高さから、2009年以来大きなトラブルもなく正常に使われています。前ページで説明したSHA256を使ったハッシュ関数や、公開鍵暗号のための楕円曲線暗号以外にもいくつかの暗号技術が使われています。これらは、数学やコンピューター・サイエンスを駆使し開発された高度な技術です。

ウォレットでアドレスを作ろう
秘密鍵から公開鍵ビツトコインアドレスを作ることは、手間さえかけれは手動で自作可能です。ただし、かなりの工数が必要になるので、通常はビットコインウォレットをダウンロードし、ウォレットにビットコインアドレスを生成してもらうのが一般的です。

コンテンツ一覧

  1. ネットワーク用語

    Felica【Mobile 関連用語】
  2. ネットワーク用語

    SIMカード【Mobile 関連用語】
  3. ネットワーク用語

    輻輳【Mobile 関連用語】
  4. ネットワーク用語

    テザリング【Mobile 関連用語】

ピックアップ

  1. 利用される暗号資産

最新コンテンツ


PAGE TOP