This article has been translated from English to Japanese.
このレッスンでは、ビットコインやその他の暗号通貨におけるデジタル署名の実際の仕組みについて学んでいく。
この段階に到達するには、まずデジタル署名を作成するために必要な「構成要素」であるいくつかの技術的な概念を学ばなければならなかった。
これらの概念に詳しくない場合は、以前のレッスンで初心者にもわかりやすく説明されている。さらに詳しく知りたい場合は、上記のリンクを参照してほしい。
デジタル署名はどのように作成されるのか?
デジタル署名がどのように作成されるのか、順を追って見てみよう。
- ビットコインを送信する際、ウォレットがトランザクションメッセージを作成する。このメッセージには、送信したいビットコインの量や受信者のアドレスなどの情報が含まれる。
- このメッセージはハッシュ関数にかけられる。
- ハッシュ関数は「メッセージハッシュ」または単に「ハッシュ」と呼ばれる出力を生成する。
- このメッセージハッシュは、お客様の秘密鍵で暗号化される。
- 暗号化されたメッセージハッシュは「デジタル署名」となる。
このプロセスのフローチャートは以下の通りである。
このプロセスが完了すると、お客様のウォレットには2つの「アイテム」が作成される。
- 取引メッセージ
- デジタル署名(トランザクションメッセージの暗号化ハッシュ)
この時点では、まだビットコインネットワークには何も送信されていない。
お気づきでないかもしれないが、デジタル署名を作成するには、取引メッセージ自体が「材料」として必要となる。
つまり、デジタル署名を作成するには秘密鍵だけを使用するのではなく、秘密鍵とトランザクションメッセージのハッシュの両方を使用する。
つまり、このデジタル署名を別のトランザクションに使用することはできない。このデジタル署名を2番目のトランザクションで使用しようとすると、ビットコインネットワークによって拒否される。なぜなら、デジタル署名は最初のトランザクションのデータのみに基づいているからだ。
すべてのデジタル署名は、特定のトランザクションに固有のものである。
デジタル署名はどのようにして検証されるのか?
特定のビットコインアドレスからビットコインを使用するには、そのアドレスに関連付けられた 公開鍵とペアになっている秘密鍵の「所有権」(または知識)を証明しなければならない。
しかし、秘密鍵を公開することなくこれを実行したい。
デジタル署名は、実際の秘密鍵を公開することなく、公開鍵と関連付けられた秘密鍵を知っていることを証明するために使用できる。
では、この仕組みを見てみよう。
- ビットコインの取引を開始すると、ウォレットソフトウェアは実際には3つの「アイテム」をビットコインネットワークに提供する。すなわち、オリジナルの取引メッセージ、デジタル署名、そして公開鍵(送信したいビットコインが現在保管されているアドレスに関連付けられている)である。
- ビットコインノードがこれらの「アイテム」を受信すると、それらを分離する。
- 元の取引メッセージを取得し、あなたが以前に使用したのと同じハッシュ関数にかける。(すべてのビットコインソフトウェアは同じハッシュ関数を使用する。)デジタル署名については、あなたが提供した公開鍵を使用して復号化する。
- 両方のハッシュが比較される。
- 両方のハッシュは完全に一致しているか?
- 両方のハッシュが一致した場合、これはあなたが送金しようとしているビットコインの実際の所有者であることを証明する。
このプロセスのフローチャートは以下の通りである。

ここで注目すべき点は2つある。
1. 公開鍵で暗号を解読できるということは、送信者の身元が証明されるということである。
ステップ3で、ノードがデジタル署名を解読できれば、これはあなたの「身元」を証明する。
秘密鍵と公開鍵は数学的にリンクしているため、私の公開鍵でメッセージを解読できるということは、私が自分の秘密鍵でメッセージを暗号化したということになる。
もしあなたがメッセージを解読できなかった場合、それは他の誰かの秘密鍵で暗号化されたことを意味する。つまり、そのメッセージは私から送られたものではないということだ。
2. 完全に一致するハッシュは、メッセージが改ざんされていないことを証明する。
ステップ6で、両方のハッシュが完全に一致していることを確認することで、元のメッセージが改ざんされていないことを確実にすることができる。
これは重要なことである。なぜなら、デジタル署名が暗号化されているのとは異なり、ビットコインの取引はすべて公開されているため、元の取引メッセージは平文で表示されるからだ。
どんなにわずかな変更でも、まったく異なるハッシュが生成されることを覚えておいてください。 もし誰かがノードへの送信途中のオリジナルのトランザクションメッセージを傍受し、それを改ざんして(ビットコインを自分のアドレスに送るようにするなど)、メッセージがハッシュ関数を通過すると、デジタル署名とはまったく異なるハッシュが生成されます。
手書きの署名が特定の文書と人を結びつけるように、暗号学を利用した「デジタル署名」は、暗号学的に、アイデンティティを特定のメッセージと結びつける。
まとめ
デジタル署名が作成され、検証される仕組みについて理解したところで、トランザクションに「署名」するということが実際に何を意味するのか、また、送信者が送信したいビットコインの所有権を検証するために、送信者の「デジタル署名」がどのように使用されるのかについて、全体像を以下に説明する。

