【初めてのブロックチェーン】ブロックチェーンを実現する暗号技術
インターネットに匹敵する革新的な技術として注目されているのが「ブロックチェーン」です。ブロックチェーンといえば、暗号資産に使われている技術ですが、決して「ブロックチェーン=暗号資産」ではありません。ブロックチェーンは、暗号資産だけでなく、様々な領域に応用すべく開発や実験が行われており、将来は医療、食品、流通、保険、著作権保護といったジャンルへの活用が見込まれています。
今回はブロックチェーンを構成する暗号技術に関して解説していきます。
ブロックチェーンを実現する「公開鍵暗号方式」
ブロックチェーンのブロック生成にも、ウォレットアドレスの生成にも、トランザクションの生成にも「公開鍵暗号」が関わっています。また改ざんが行なわれていないかをチェックする「ハッシュ関数」も、ブロックチェーンにはなくてはならないものです。これらの技術について解説します。
「鍵」というと金庫や玄関のドアなどを想像しますね。当たり前ですが、開けるときと閉めるときで同じ鍵を使用します。これをデータの暗号化で表すと「共通鍵暗号方式」といいます。この方式は、データを暗号化する鍵と暗号化したデータを復号する鍵が共通です。暗号化したデータはこの共通鍵があれば誰でも復号できます。共通鍵暗号方式ではデータの送信者と受信者が同じ鍵を持っておく必要があります。このため、インターネット上で使う場合には、鍵の受け渡しを安全に行なうことが難しいという課題がありました。
公開鍵暗号方式は、データを暗号化する鍵と暗号化したデータを復号する鍵が異なります。それぞれ公開鍵、秘密鍵と呼びます。公開鍵は名前のとおり公開可能な鍵で、インターネット上でやり取りしてもかまいません。その代わり、秘密鍵を他者に知られないように管理します。金庫や玄関のドアの例でいうと、閉める鍵と開ける鍵は別物で、閉める鍵はみんなに渡しておくが、開ける鍵は自分しか持っていない状態のことをいいます。
公開鍵暗号方式はブロックチェーンのみならず、電子署名、SSL通信などに利用されています。ブロックチェーンで利用する場合、データを暗号化するのは公開鍵、暗号化したデータを復号するのは秘密鍵です。
公開鍵暗号方式のイメージ
暗号化して欲しい情報は公開鍵を使って暗号化し、秘密鍵を使って暗号を解きます。暗号を作成してもらう相手に公開鍵を渡しますが、この鍵が誰かに盗まれたからと言って暗号が破られる心配がありません。一方で暗号を解くには秘密鍵が必要なのでこの秘密鍵は絶対に盗まれないようにする必要があります。
公開鍵から秘密鍵を作るには莫大な時間がかかる
公開鍵暗号には「秘密鍵から公開鍵を作成するのは容易だが、公開鍵から秘密鍵を探し出すには莫大な時間が必要となる」という性質があります。その声質を実現できるのが中学校や高校の数学で習う「素因数分解」です。
例を上げて説明します。569と773という2つの素数をかけると、439837になります。ところが、439837を素因数分解し569と773という2つの素数を得るには、地道な計算が必要となります。これが秘密鍵を探すのに時間がかかる理由です。今は3桁の素数を指定しましたがもっと桁数が多い素数を指定したものを「RSA暗号」といいます。
ビットコインなどのブロックチェーンで用いられているのは、ECDSA(楕円曲線暗号)という暗号です。ECDSA暗号もRSA暗号と同じ性質を利用した暗号です。
ECDSA暗号はサーバにかかる負荷がRSA暗号より少ないことがわかっており、鍵のサイズが大きくなりがちなブロックチェーンで効率よく暗号が利用できます。