前回の記事で ブロックチェーン はネットワークにいる全員で台帳を共有していると言いましたね。
参考:中学生でもわかる!ブロックチェーンの仕組み
それでは「悪い人が誰かの台帳にアクセスして書き換えることができるのでは?」と疑問に思う方もいるでしょう。もちろん ブロックチェーン にはデータの不正利用を防ぐ仕組みがあります。今回は不正を防ぐための3つの暗号技術について初心者にも分かりやすく説明します。
1.特定の人にしか見られないようにする暗号技術:公開鍵暗号化方式
ブロックチェーン に用いられる1つ目の暗号技術は公開鍵暗号化方式です。この技術によって、データを盗み見られたり、書き換えられたりすることを防いでいます。鍵による暗号化は共通鍵と公開鍵があります。 ブロックチェーン に用いられている公開鍵暗号化方式をより理解するために、まずは従来の方式である共通鍵暗号化について説明します。
共通鍵暗号化方式は二人が共通の鍵を持っていて、データを暗号化、復号化する方法です。これは、データを送りたい相手に事前に共通鍵を渡しておく必要があるのですが、どうやって共通鍵を渡すかが難しい点です。
情報が漏洩しやすいインターネット上で共通鍵を渡すことは危険であるため、厳重に管理されたルートで相手に渡す必要があります。また、第三者に共通鍵が流出した場合、簡単にデータを開封されてしまいます。このような鍵配送問題を解決したのが公開鍵暗号化方式です。
公開鍵暗号化方式の最大の特徴は暗号化するための鍵と復号化するための鍵が異なるということです。受信者はあらかじめ暗号化用の鍵を送信者に渡しておきます(相手に渡すため公開鍵と言われています)。
そして、暗号化された情報を復号化するための鍵は自分だけが持っておきます(自分だけが持っておくので秘密鍵と言われています)。
そして、送信者は事前に渡された公開鍵でデータを暗号化しておくります。この場合、もしデータが盗まれたとしても秘密鍵がなければ第三者は暗号文を読みとくことができません。
このデータを読むことが出来るのは秘密鍵を持っている受信者のみです。公開鍵暗号化方式は共通鍵暗号化方式の鍵配送問題を解決した暗号方式であり、情報漏洩を防ぐことができます。
しかし、注意すべき点は秘密鍵の管理です。秘密鍵が流出すると情報を盗まれる可能性があるため、秘密鍵の管理は慎重に行う必要があります。
2.本人を証明するためのしくみ:電子署名
ブロックチェーンに用いられる2つ目の暗号技術は電子署名です。これは紙の文書におけるサインの役割を果たすもので、ネット上のなりすまし対策のために作られました。
電子署名は上記で説明した秘密鍵と公開鍵を利用していますが、注意すべき点は、電子署名と公開鍵暗号方式では鍵の役割が違うことです。
<公開鍵暗号方式>
秘密鍵:暗号文を復号化する。開鍵:平文を暗号化する
<電子署名>
秘密鍵:平文に署名をする 公開鍵:署名が正しいか検証する
では、電子署名は具体的にどのようにして行われるのでしょうか?メールを例にして説明します。
まず、一郎さんはまい子さんにメールを送るとき、通常のメッセージ(平文)と同時に、秘密鍵によって暗号化したメッセージ(暗号文)も同時に送ります。この過程で、送信するデータを秘密鍵を用いて暗号化することを電子署名といいます。
暗号化されたメッセージを受け取ったまい子さんは、誰の公開鍵で読めるか試してみます。すると、太郎さんの公開鍵で暗号文を読むことができました。さらに、解いた暗号文と平文を比べると一致していました。
こうして、確かに一郎さん本人からのメールだということが分かりました。このように、電子署名を用いると本人が送ったことを証明することができます。
3.データを瞬時に照合できるしくみ:ハッシュ関数
ブロックチェーンに用いられる3つ目の暗号技術はハッシュ関数です。ハッシュ関数とは、どんな値を入力しても256ビットの長さの文字列が出てくる関数のことです。
どんなに長いまたは短い文字列を入力しても、一定の長さのハッシュ値が出てきます。また、入力値が一文字違うだけで、全く異なる文字列がでてきます。
ハッシュ関数の重要な特徴は一方向性です。データをハッシュ化するのは簡単ですが、ハッシュ化された結果から元のデータを推測することは不可能となっています。では、ハッシュ関数はどのように活用されているのでしょうか?
例えば、オンラインで音楽ファイルなどのデータをダウンロードするときにハッシュ関数が役に立ちます。ダウンロード中にデータが破損する可能性がありますが、ダウンロード後に膨大なデータを隅々までチェックして破損しているかどうか調べるのは大変な作業です。
その際、ダウンロードしたデータのハッシュ値と、ダウンロード元のサイトに載っているハッシュ値を比較します。比較した結果、2つのハッシュ値が一致していれば、正常にダウンロードされたことが確認できます。
ビットコインのブロックチェーンではデータを受け取った後、その送信元のデータのハッシュ値と照合して本物かどうか確認するために使われています。
4.ブロックチェーンの不正を防ぐしくみ
これまでの説明で、ブロックチェーンには3つの暗号技術が用いられていること分かりましたね。では、この公開鍵暗号方式・電子署名・ハッシュ関数を使ってどのように不正を防いでいるのでしょうか?複雑ですが下記の図にまとめました。
手順は下記のとおりです。
①データの送信者は受信者へ公開鍵を渡しておく。
②送信者はデータをハッシュ化し、さらに秘密鍵で暗号化する(電子署名)
③送信者は暗号化されていないデータと電子署名を受信者へ送信する
④受信者は暗号化されていないデータとをハッシュ化し、電子署名を公開鍵で復号化する。
⑤受信者は送信者の公開鍵で復号化することにより、本人から送られたことを確認する。
⑥受信者は2つのハッシュ値を比較してデータが改ざんされていないことを確認する。
このように、ブロックチェーンでは3つの暗号技術を応用することによって、より暗号化の強度を高めています。
5.最後に
いかがだったでしょうか?ブロックチェーンには暗号技術以外にも、さまざまな技術が採用されており、これらの組み合わせによって取引の安全性が保たれています。
株式会社BAPは2016年からブロックチェーン開発を手がけています。大手企業のコンサルティングから有望なスタートアップまで幅広い経験を積むことが出来ました。見積依頼、コンサルティングの依頼、開発委託などのお問い合わせはいつでも受け付けております。
どうぞお気軽にご相談ください。お問い合わせはこちらまで。