初心者でも絶対にわかる“秘密鍵・公開鍵とハッシュ関数” 仮想通貨とブロックチェーンの基礎知識

 

sa-2
こんにちは。

sa2(@sa2fdi)と申します。

真面目な記事を挙げていますが、実は最近Youtuberになりました。笑

借金して仮想通貨を買った僕が、Youtuberになったワケ

是非一度ご覧ください。

自己紹介はこちらから。

 

仮想通貨投資には、前提となる知識が必須になります。

それぞれの仮想通貨の特徴を理解し、優位性を見出すためにはブロックチェーン技術に対する基礎的な知識が絶対に必要なのです。

 

ブロックチェーンの魅力は大きく「分散管理」「鉄壁のセキュリティ」の2つに集約されていきます。

管理者不在でも回るシステムや高いセキュリティは、現代の最新暗号技術がふんだんに使われることで成り立っているのです。

以下の記事で紹介したウォレットという概念も、暗号技術への見識がなければ、真に理解することは難しいでしょう。

 

 

この記事では初心者でも直感で理解できるように、技術的な話をマイルドにまとめていければと思っております。

 

 

 

ブロックチェーンは暗号技術によって成り立っている

 

我々は現代のネット社会において、知らず知らずのうちに暗号技術を基盤として成り立っているサービスを使っています。

もともと暗号というものは、「ある文書を特定の人だけが読めるようにして秘密事項を届ける」ために生まれました。

技術の発達とコンピュータの発達とともにその用途は多岐にわたるようになりました。

 

・データのアクセス権を特定の人物に付与する

・データの作成者を証明する

・データが発生した日時を証明する

・データの内容が作成時点と一致している(改ざんされていない)ことを証明する

 

こういった形で、暗号技術は幅広く世の中で使われています。

さて、ブロックチェーンまたは仮想通貨における暗号技術の使われ方を見ていきましょう。

 

公開鍵暗号システムとは

 

ブロックチェーンには不特定多数の参加者が混在し、その中で特定の相手に対して取引(仮想通貨の送金など)を行っていくことになります。

ここで必要となる仕組みは、「ある指名した相手のみが一定の手続きを可能とする」といったシステムです。

例えばAさんがBさん宛にコインを送付するとき、Bさんのみがそのコインを動かせるという設定をして送付しなければなりません。

このときに利用されるのが公開鍵暗号技術です。

 

 

公開鍵暗号技術には、「公開鍵」と「秘密鍵」という2つの道具が使用されます。

1つの公開鍵に対して、対応する秘密鍵が1つ存在するという形になります。

そしてある公開鍵で暗号化されたデータは、対応する秘密鍵を使用しなければ使うことができません。

そして、公開鍵は取引相手が利用できるように公開し、秘密鍵は自分のみが扱う秘匿情報として保護しなければなりません。

例えばAさんがBさん宛に暗号データを送るときには、Bさんの公開鍵を利用してデータを暗号化し、その後Bさんにデータを送ります。

そしてBさんは自分だけが持っているBさん専用の秘密鍵を利用してデータを解読し、元のデータを使用可能にすることができます。

 

 

これを、ブロックチェーン上の送金に置き換えます。

まず、公開鍵が仮想通貨のウォレットアドレスに当たります。

仮想通貨ウォレットの記事で解説しましたが、ウォレットアドレスは、対応する秘密鍵を使用することで着金したお金を動かすことができるようになります。

ウォレットアドレスとは、公開鍵をアドレス用に文字列に置き換えたものだと考えてください。

「AさんがBさんのウォレットアドレスにコインを送る」というのはある意味比喩表現と言えます。

Bさんのアドレスを指定して送金を実行した瞬間、コインは移動するのではなく、公開鍵によって暗号化されるのです。

そして、対応する秘密鍵はBさんしか持っていないため、Bさんにしか動かせない。

あたかもBさんの手元にコインを送ったかのような状態になるのです。

これが、仮想通貨/ブロックチェーンの送金の仕組みです。

急激に参加者が増えた仮想通貨界隈では、これを意識せずにただコインを送付しているようなイメージを持っている人が非常に多いと思われます。

ただ仮想通貨を便利に使いたい、だけならばこれで問題ありません。

ただし仮想通貨投資で成功したいなら、こういった基本的知識を身に着けて、投資対象を比較できるようにならなければいけないと私は考えます。

 

 

公開鍵と秘密鍵の仕組み

 

公開鍵暗号の基本的な成り立ちは、「秘密鍵を用いて公開鍵による暗号化を解読できるが、公開鍵を分析しても秘密鍵にたどり着くことはない」というところにあります。

これを図式化すると、次のようになります。

「A→Bの方向へは簡単に計算で求められるのに対し、B→Aの方向への計算で割り出すのはとてつもなく困難である」

という組み合わせの方程式が、公開鍵暗号となります。

このような数学的難問について、簡易版の例を挙げます。

いわゆる、「素因数分解の長旅」です。

ある2つの素数xとyがあり、それらを掛け合わせた数をzとします。

xとyを所与とすれば、zは単純な掛け算で計算することができます。

しかし、zを所与としてもxとyの組み合わせを瞬時に(もしくは効率的に)解く方法はありません。

例えば、z=436,388,872,757 だけがわかっていてもxとyの組み合わせは1つ1つ素数の掛け合わせを検証していかなければわかりません。

しかし仮に自分だけがy=105,517 であることを知っていればx=4,135,721だと簡単に計算し、xとyの組み合わせがわかるのです。

お分かりいただけたでしょうか。

yが秘密鍵にあたり、暗号化されたzは4,135,721と105,517の掛け合わせであると解読できたのです。

これは簡易的な例にすぎませんが、実際はより数学的に高度な方程式を、より巨大な桁数によって計算させる形となります。

これの究極の形が、次で紹介するハッシュ関数です。

 

 

ブロックチェーン技術の根幹:ハッシュ関数とは

 

最重要とも呼べるブロックチェーン関連技術が、ハッシュ関数です。

正確には「一方向ハッシュ関数」であり、一言でいうと次のようになります。

「任意の定数を入力したとき、その答えとして導かれる値を事前に予想することができない関数」です。

この答えをハッシュ値と呼びます。

ハッシュ値は一定の桁数の英数字で表されます。

どんなデータを入力値としても、全てある一定の桁数に変換されるため、非常に扱いやすくなります。

もちろん、通常の関数と同様にある定数に対して、必ず同じ値が答えとなります。

しかし、入力する値によって答えがどうなるか全く想像することができないのがハッシュ関数です。

暗号として、突破するのが非常に困難で優秀であると言えます。

もっと言えば、入力する値が少しでも違えば、全く違う答え・ハッシュ値が導き出されることになります。

この特性を活かして、ハッシュ関数は公開鍵暗号の作成のためだけでなく、データが改ざんされていないかをチェックするために用いられます。

取引データをブロックチェーンに記録するとき、送付されたデータが改ざんされてないかを、元のデータと比較するのは非常に困難なことです。

大きなデータであればそれだけ比較検証することは難しくなります。

しかし、元のデータと送付されたデータをハッシュ関数に入力値として放り込めば、出てきた値を比較するだけでよいため非常に簡単です。

仮に、送付されたデータが元のデータと少しでも違う場合には、全く違うハッシュ値が得られることになります。

こうして、ブロックチェーンではデータの確からしさを保っています。

暗号技術によって、堅牢な取引管理台帳として機能していることがお判りいただけたのではないでしょうか。

 

 

 

 

bitFlyer ビットコインを始めるなら安心・安全な取引所で