No234 ブロックチェーンとは何ぞや?
前回まではピアツーピア(P2P)ネットワークについて解説をしました。
今回からいよいよブロックチェーンについて解説を行います。
少し難しい目の話が続くかもしれませんが、よろしくおつきあい
くださいませ。
1. はじめに
最初に少々お断りをしておきます。
ブロックチェーンはここ数年で一般化した用語かと思いますが、
その内容や技術的な側面についての解説は極端に少ないようです。
筆者も今回の記事を書くためにいろいろ探してみたのですが、検索
してもビットコインの投資宣伝ページばかりが上位にきてしまい、
技術解説のページを見つけるのに苦労しました。
ましてや、素人向けの正確な解説ページとなると皆無といって良く
誤解記事やウソ記事が大手を振って歩いている状況のようです。
この理由はブロックチェーンが様々な技術(特に暗号化技術)の
組み合わせでできており、それを網羅的に解説するためには書き手
側に相応の知識が要るためではないかと思います。
本メルマガ(がんばりすぎないセキュリティ)はセキュリティ関連
の知識を一般の方々にわかりやすく解説し、身に付けていただく
ことを目的としています。
その意味では本メルマガに最適テーマなのですが、正直に言いまして
筆者の技量では少々荷が勝ちすぎる面があるのが実際のところです。
いつものように平易でウソのない解説をこころがけますが、誤解や
間違いが混じっていないとも限りません。
もしお気付きの点がございましたら、是非ご指摘をお願いします。
2. ブロックチェーン=ビットコイン?
ブロックチェーンの考え方はビットコインの登場時まで遡ります。
いえ、正確には2008年に公開された論文"Bitcoin:A Peer-to-Peer
Electronic Cash System"(ビットコイン:ピュアP2Pでの電子通貨
システム)が最初になります。
この論文は学会誌掲載ではなく、とあるメーリングリストで投稿
されたものだそうで、原文は英文で9ページと短いもので、筆者は
"Satoshi Nakamoto"。(日本人ぽい名前ですが、誰かはよくわから
ないナゾの人物)
その原文は以下のサイトでPDF形式で公開されています。
https://bitcoin.org/bitcoin.pdf
また、その日本語版(有志による訳)が以下で公開されています。
https://www.kk-kernel.co.jp/qgis/HALTAK/FEBupload/nakamotosatoshi-paper.pdf
この論文はタイトルからわかる通り、P2Pネットワークを使って
ビットコインという仮想通貨を実現する方法についての論文です。
その実現の技法としてブロックチェーンという方式を考案したと
いうわけです。
このブロックチェーンという考え方は、何もビットコインに限らず
いろんなシーンで使えるんじゃない?ということから様々な分野で
検討と応用が始まっている、のが2021現在の状況です。
この論文は(知識がある前程で)省略された部分が多く、一読では
理解しづらい点がたくさんあります。
その解説書というわけではないですが、オージス総研(大阪瓦斯
のグループ会社でオブジェクト指向(システム開発技法の一つ)で
有名な会社)の樋口さんがわかりやすい解説をされています。
「ビットコイン論文からさぐる ブロックチェーンのヒント」
https://www.ogis-ri.co.jp/otc/hiroba/technical/bitcoinpaper/
筆者も上記のオージス総研の解説はとても参考になりました。
3. ブロックチェーンの目的
ビットコインというと「デジタル通貨」であることや投資の対象
としての側面が目立ちますが、上記の論文での主な主張はそこに
はありません。
Satoshi Nakamotoの狙いは「P2Pで安全な取引を行う方法」に
ありました。
ここでのキーワードは2つです。
一つは「P2P」であることで、もう一つは「安全な取引」です。
P2Pについては、前回と前々回で解説したように、特定のサーバ
を用いずにクライアント(端末)同士で通信を行う方式を指します。
もう一つの「安全な取引」とは、後でトラブルにならないように
双方の合意をすることです。
実世界では、借金をするなら銀行、不動産取引なら不動産会社、と
いった具合に信頼できる第三者を利用して「安全な取引」を実現
します。
こういった第三者を間に入れて取引をするとコストがかかります。
そのコストをなくせないのか?というのがSatoshi Nakamotoの狙い
であり、その実現のためにブロックチェーンという方式を提案した
わけです。
4. 「安全な取引」に必要なこと
実世界では、契約書に相互に押印やサインを行います。
また、契約書の各ページに割印をして改ざんを防いだりします。
では、電子取引では何が守られれば「安全な取引」と言えるので
しょうか?
必要となるのは以下の3点です。
1)双方が合意した証明
→電子署名という方式を使って証明する。
2)双方の合意内容が変更(改竄:かいざん)できないこと
→電子署名とタイムスタンプによって実現する。
3)作成したデータが消失しないこと
→P2Pネットワーク上に複数のコピーを作成する
この3点については、次回以降で詳細に述べます。
今回はその前提となる電子署名について簡単に述べておきます。
5. 電子署名
さて、このメルマガでも何度か登場している電子署名の話になり
ます。
電子署名をキチンと理解するには
・ハッシュ関数
・公開鍵暗号
の理解が欠かせません。
ですが、ハッシュ関数+公開鍵暗号に加えて電子署名までキチン
と解説しますと、それだけで数回のメルマガが必要となります
ので、今回はお時間のない方向けに、超ダイジェスト版でお届け
します。
詳しく知りたい方はそれぞれに本メルマガのバックナンバーを
文末に掲げていますので、是非ご覧ください。
6. ハッシュ関数
まず、ハッシュ関数です。
これは元のデータをルールに従って加工してコンパクトなデータを
得る計算方法です。この計算で得た値のことをハッシュ値、元データ
からハッシュ値を計算することをハッシュ化と言います。
ハッシュ関数の特徴として、元データがほんの少しでも違っている
と全く異なる値が得られる点にあります。
この特徴を利用して、データを改竄(かいざん)されていない証明が
できます。
元データを少しでも変更すると変更後のデータから得られるハッシュ
値は元のものと全く違うものになります。
このハッシュ値をチェックすれば、データ変更されていないことが
証明できるというわけです。
ですが、データ改竄時にハッシュ値もあわせて改竄されてしまうと
どうにもなりません。
詳しい話は、No183で解説をしていますので、上記でよくわからない
という方は是非ご覧ください。
「No183 暗号っぽいけど暗号じゃないハッシュ関数ってナニ? 」
https://note.com/egao_it/n/neb859006c961
7. 公開鍵暗号
ここで登場するのが、公開鍵暗号です。
これはハッシュ値の改竄の防止に使われます。
公開鍵暗号というのは、暗号化と復号(暗号化したデータを元に
戻すこと)に二つの異なる鍵を使う暗号化方式です。
二つの鍵は秘密鍵と公開鍵と呼ばれ、公開鍵の方は文字通り公開を
しても秘密鍵を逆算できないという変わった性質を持つ暗号方式です。
さて、ここではアリスからボブにメールなどでデータを送るケース
を考えましょう。
アリスは公開鍵暗号を用いて、次のように電子署名を作ります。
1. 取引データを作る
2. 取引データからハッシュ関数でハッシュ値を求める
3. ハッシュ値を(アリスしか知らない)秘密鍵で暗号化する。
4. 取引データ+暗号化ハッシュ値をボブに送る
この最後に暗号化したデータ(暗号化ハッシュ値)を電子署名と
呼びます。
ボブは受け取った取引データと暗号化ハッシュ値を確認すれば
(途中で第三者に)改竄されていないと確信できます。
1.電子署名(暗号化ハッシュ値)を公開鍵で復号(元に戻す)
し、ハッシュ値を得る
2.取引データからハッシュ関数でハッシュ値を求める
(アリスが行った2.と同じ処理を行う)
3.上記で求めた二つの値を比較する。
→一致していれば、改竄されていないと言える。
もし、悪意のあるイブが途中でデータを横取りして改竄できたと
しても、アリスの持つ秘密鍵を持っていませんから、正しい電子
署名を付けることができませんから、改竄がバレるというわけです。
公開鍵暗号の詳細については約3年前とやや古い記事ですが、ウソ
は書いていませんので、改めて公開しておきます。
「No84 https その5(公開鍵暗号1)」
https://note.com/egao_it/n/n85193789c7af
「No85 https その6(公開鍵暗号2)」
https://note.com/egao_it/n/n63aed1a30c9e
今回は、ブロックチェーンの目的と前段の予備知識で終わりまし
たが、次回からはブロックチェーンの内部の話に入っていきます。
次回もお楽しみに。
(本稿は 2021年11月に作成しました)
このNoteは私が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.html