1. TOPTOP
  2. Webサービス

ビットコインを支える技術 「高度な暗号技術(公開鍵暗号)」について ~「アフター・ビットコイン: 仮想通貨とブロックチェーンの次なる覇者」より

|

the_textbook_of_the_most_friendly_block_chain_1

アフター・ビットコイン」は技術書ではありません。ビットコインの基幹技術であるブロックチェーン技術が与える社会的影響やその応用について説く本です。ですがブロックチェーン技術を応用した仮想通貨である、ビットコインの技術的な要素を知る上で、大変分かりやすい本であるとも思います。

そこでエコテキブログでは、本書の内容をベースとしてビットコインを支える技術について、もう少し踏み込んで解説をしていきます。本書ではビットコインを支える技術として3つの要素をあげています。

  • 高度な暗号技術
  • ブロックチェーンの仕組み
  • プルーフ・オブ・ワーク

今回の記事では、これらのうちビットコインが「暗号通貨(crypto-currency)」と呼ばれるゆえんになった、暗号技術について解説をしていきます。

送金に必要な電子署名

ビットコインは「通貨」です。その送金を確実に行うためには「二重使用」と「偽造」についての対策が欠かせません。具体的には「電子署名(=digital signature)」という技術が使われます。正しい「電子署名」ができる人だけがビットコインの送金(次の人に対してビットコインを受け渡すこと)ができます。

本書ではさくっとP.29で「デジタル署名」と説明されています。ただし、この「デジタル署名」を理解するためには、先に「公開鍵暗号」という暗号技術について理解が必要となります。

秘密鍵の暗号化文書を公開鍵で復号化

public_key_cryptography_after_bitcoin_1

「公開鍵暗号」とは「特定の人(ペアとなる秘密鍵を持つ人)を指名してその人だけが所定の操作をすることが可能にする暗号技術」のことを指します。公開鍵はその名の通り鍵がインターネット上で公開されていますが、秘密鍵は特定の人しか内容が分かりません。

なお、公開鍵暗号にはいくつかの種類があり、その中でもビットコインでは暗号技術として非常に高度な「楕円曲線暗号」という技術を用いています。

公開鍵暗号は素因数分解の原理に基づいたアルゴリズム

「公開鍵がインターネット上に公開されているならば、力づくで計算をして暗号文書を解読できるのでは?」と思われた方、非常に鋭い視点です。確かに力づくで暗号化文書を解読をすることは可能です。

例えば3367という数字を考えてみましょう。3367はある2つの素数xとyの積を表します。

3367 = x * y

ただしxとyは11から97までの数字について1つずつ組み合わせを試さないといけないので、解を求めるために時間がかかります。一方で、特定の人だけはすでに”x=37″という数字がすでに分かっていたとしましょう。

x = 37
3367 = 37 * y
y = 91

すると特定の人は、yが91という素数であることがすぐに分かります。ビットコインの公開鍵暗号におきかえると、3367が公開鍵で、37が秘密鍵に相当します。

実際にはこういった素因数分解の考え方を応用して、ビットコインのネットワークでは膨大な桁数の数字が用意されています。解を導くためには気の遠くなるほどの大変な時間を必要とします。ほとんどの場合、解読作業に必要とする労力と経済的インセンティブが合いません。

ビットコインの電子署名とは

ビットコインの場合、マイナー(採掘者)が公開鍵を見て素数同士の組み合わせをコンピュータを使って計算します。この計算の過程でマイナーが正しい素数同士の組み合わせを発見すると、ビットコインの送付者と特定の受取人の取引が真正なものであることが証明されます。その証明によって送金の受け渡しが完了します。

このようにマイナーが公開鍵を見て、暗号化された文書について解読に成功すること(数値の組み合わせを見つけること)を「電子署名」と言います。