【完全保存版】ブロックチェーンの署名と検証をしっかりと学ぼう!
1 署名について
0 はじめに
まずは、「署名」について学んでいきましょう。
「そんなのわかっているよー」という方も是非少しお付き合いください。
この部分は認識の不足があるかもしれません。(私はそうでした。)
1 署名とは
「署名」とは、契約書などに自分の名前を書くことですね。
これにより、本人が文書に同意していることが示されます。
2 偽造防止の観点について
では、この署名において、偽造が防止されるのは、この自分で書いた部分だけでしょうか?
実際は、この契約の中身が偽造されたら大変ですね。
「100万円で土地を売る」ことに合意していたはずが、「10万円」に偽造されていたら大変です。
3 中身の偽造防止について
このように、中身の偽造を防ぐために、双方が同じ契約書を持ち合うなどします。
例えば、何か契約をした時、「控え」を受け取りますね。
これがあることで、お互いに中身を勝手に変えることを防いでくれます。
また、第三者を立てることもあるかもしれません。
4 署名で重要な観点について
このように、署名では
本当にあなたがサインしたのか
中身は偽造されていないか
の2点が重要であると考えられます。
2 デモを行おう
では、デモを使って、署名を実際にやって見ましょう。
最初は「秘密鍵・公開鍵」から始まりますが、「署名」も後で出てきます。
3 キーペア(秘密鍵・公開鍵)について
では、「Random」を押して、いろいろな秘密鍵・公開鍵を作って見ましょう。
なお、「Private Key」が「秘密鍵」で「 Public Key」が「公開鍵」です。
ここで重要なのは、「秘密鍵」から「公開鍵」が作られるということです。
「秘密鍵⇨公開鍵」は「楕円曲線暗号」を用いて計算されています。
そして、「公開鍵⇨秘密鍵」を求めることは非常に困難であるという特徴があります。
だからこそ、公開鍵を公開しても、今のところは問題ありません。
(量子コンピュータの発展に伴い、今後どうなるかはわかりません。)
4 署名について
では「Signatures」の「Sign」から署名を行ってみましょう。
1 署名に必要なもの
ポイントは「メッセージ」と「秘密鍵」という2つの情報を使って、署名を行うということです。
中身が改ざんされていないことを後から確認するために、中身である「メッセージ」も署名に必要です。
2 メッセージについて
また、メッセージを変えると、署名も変わることも確認してみてください。
繰り返しになりますが、署名は中身が改ざんされていないという観点も重要であるためです。
3 先頭の文字について(参考)
また、先頭が必ず30から始まることに気づいた方もいるかもしれません。
ここでは、その理由は扱いません。
ご興味のある方は、下の記事などをご参照ください。
5 検証について
次に、「verify」をしてみましょう。
1 検証に必要なもの
「メッセージ」と「公開鍵」、「署名」の3点があれば、検証できることがわかりました。
2 公開鍵の求め方
もう少し踏み込んでみましょう。
この実態は、「メッセージ」と「署名」の2つがあれば、「公開鍵」が求まります。
そして、この公開鍵が与えられたものと一致するかで、検証ができます。
3 おすすめのDemoサイトについて
この辺りは、こちらのサイトでデモを行うと、解像度が上がると思います。
とはいえ、少しわかりにくいところもあるので、どこかのタイミングで、記事にしようと思います。
6 実際のトランザクションについて
では、「Transaction」について見てみましょう。
ポイントは「メッセージ」です。
トランザクションの中身自体がメッセージであるということを確認することができます。
「検証」もやっていることは同じです。
「メッセージ」と「署名」と「公開鍵」がこのように揃っています。
この3つがあれば検証ができたのでしたね。
7 ブロック上での署名の役割について
では、実際にブロックの中でどのように扱われるのかを見てみましょう。
1 トランザクションと署名について
下のように、それぞれのトランザクションに署名がついています。
ちなみに、この辺りの前提については、こちらの記事で紹介しています。
先にこちらをみていただくことがオススメです。
2 メッセージの改ざんについて
ここで、私がメッセージを改ざんしてみました。
すると、全体が赤くなってしまいました。(ご不明の場合は、上の記事参照)
しかし、「Mine」を押せば大丈夫でしたね。
これにより、全体は緑色になりました。
でも署名の部分は赤いままです。
3 署名の改ざんについて(できません)
改ざんにより、下のようなことが起こっています。
メッセージは改ざんできたかもしれませんが、秘密鍵を持っていないので、新しく署名を作ることができません。
結果、下のように、署名は改ざんすることができないため、検証は失敗します。
これにより、メッセージが改ざんされたことがわかります。
以上が、署名や検証についての説明でした。
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊