連日、「ビットコイン」に代表される仮想通貨(暗号通貨)がニュースで取り上げられています。ビットコインは「ブロックチェーン」と呼ばれる画期的な技術によって構築されています。
この連載では、ブロックチェーンの仕組みやブロックチェーンを支える技術などを解説しています。前回はブロックチェーンの基本的な仕組みを紹介しました。
今回は、「ハッシュ関数」や「公開鍵暗号方式」、「電子署名」といったブロックチェーンを支える「暗号化技術」を取り上げます。
暗号化のベースとなる「ハッシュ関数」
インターネット上でやり取りされるデータは、常に傍受されるリスクがあります。ブロックチェーンも例外ではありません。そのため、内容を読み取れないように変換してやり取りをします。この変換のことを「暗号化」といいます。
連載の第1回でも解説した「ハッシュ値」を算出する「ハッシュ関数」も暗号化技術の1つです。ハッシュ値とは「ハッシュ関数という暗号化技術(計算方法)を用いて、あるデータを一定のデータ長の値に変換したもの」です。
ハッシュ値は「変換前のデータに戻せない」「変換前のデータが少しでも変わると全く異なる数値になる」という特徴を持っています。それらの特徴によって、データが破損していたり、改ざんされてないかを調べるのに利用したり、パスワードなどの重要なデータを安全に保管する方法として利用したりできます。
ブロックチェーンで採用される「公開鍵暗号方式」
ハッシュ値の性質を利用した暗号化技術には、幾つかの方法(種類)があります。中でも、ブロックチェーンは「公開鍵暗号方式」を採用しています。
公開鍵暗号方式は、インターネット上でやり取りするデータの機密性と真正性を担保するために利用されます。機密性とは、データの中身を読み取られないようにすることです。また、真正性とは、送信者が正しいかを確認できるようにすることです。
公開鍵暗号方式では、自分だけが知っている「秘密鍵(プライベートキー)」と、外部に公開している「公開鍵(パブリックキー)」という2つの暗号鍵を用います。秘密鍵は自分だけが持っているべきで、公開鍵は自分以外に教えてもよいものです。
公開鍵は秘密鍵から作られますが、公開鍵から秘密鍵を知ることはできません。ブロックチェーンでは、これらの鍵を用いて解読の難しい英数字の文字列にデータを変換して暗号化します。
また、暗号化されたデータを元に戻すことを「復号」といいます。公開鍵暗号方式では、2つの鍵を使い分けてデータの暗号化・復号を行います。秘密鍵で暗号化したデータは、公開鍵を用いてデータを復号します。一方、公開鍵によって暗号化された内容は秘密鍵を持っている人だけしか閲覧できません。
データの送信者の真正性を証明する「電子署名」
例えば、Aさんが暗号通貨をBさんに送金した場合を考えてみましょう。送金する人(Aさん)はまず、自分の秘密鍵を用いて取引内容を暗号化します。次に、暗号化されたデータをブロックに入れてもらうためにデータを送信します(これを「ブロードキャスト」といいます)。
その際、暗号化されたデータは、Aさんの公開鍵でしか復号できません。Aさんの公開鍵で復号して取引内容を確認できるということは、送金した人はAさんであることを証明することにもなります。
ブロードキャストされた取引データを受け取ったマイナーは、Aさんの公開鍵で復号することで、Aさんが送ったと確認できたらブロックに記録していきます。
このように、送信された内容が確実にAさんが行ったと証明する方法を「電子署名」といいます。電子署名は、ハッシュ関数や公開鍵暗号方式の特性を組み合わせてできた技術です。
電子署名は、紙の契約書にサインするような役割を持ちます。紙の契約書にサインすることは、「その人(利用者本人)がサインをしたことの証明」「他の契約書に代替できず、サインした契約書のみに有効」ということになります。電子署名も同様に2つの役割を果たしてます。
取引内容に対して電子署名を行うことで、正しい暗号通貨の所有者だけが送金できる仕組みをつくることができます。
電子文書の作成時刻を証明する「タイムスタンプ」
電子署名に欠かせない技術に「タイムスタンプ」があります。暗号化技術ではありませんが、ブロックチェーンを支える重要な技術の1つです。
タイムスタンプといってよくイメージされるのが、ファイルの作成・変更時間などのように自動的に付与されるものでしょう。タイムスタンプは、電子文書の作成時刻を証明するための技術です。
タイムスタンプをブロックに埋め込むことで、そのデータが「いつ作成されたか」を証明する証拠となります。万が一、大きく時刻がずれていればそのブロックは改ざんされたものであるという1つの指標になります。
ブロックチェーンにおいて、タイムスタンプは「改ざんされたブロックかどうか」を判断するというセキュリティの面で大切な意味を持っています。
暗号化技術が安全性や信頼性を高めるための仕組みをつくっている
今回紹介した技術によって、ブロックチェーンでは「データの作成者が特定できる」「それが本人であることを証明できる」「データ作成がいつ行われたかが分かる」「それが改ざんできなくなる(改ざんがあれば、検知できる)」という特徴を備えることができます。
ブロックチェーンの安全性や信頼性を高めるための仕組みが暗号化技術によって成り立っています。
次は、ブロックチェーンを支える技術の1つである「分散型システム」を紹介します。
コメント