ブロックチェーンの暗号について、自分なりの理解で書いてみます。
暗号といえば、私などはエドガー・アラン・ポーの「黄金虫」を思い浮かべます。
数学的な推理のおもしろさに黄金虫という昆虫が絡んだ神秘的な物語に衝撃を受けたものです。
コンピュータ時代、実務で使われる暗号は、「黄金虫」のような謎解き的なものではないようです。暗号には素数が使われます。
謎はわかっており、あとは解く力があるかどうかが問われる実務で、素数の暗号が非常に便利な特性があるからです。
素数とは、1とそれ自身でしか割り切れない数のことです。
30以下の素数を挙げると、
2、3、5、7、11、13、17、19、23、29です。
ちなみに1は素数ではありません。
ブロックチェーンの暗号は、公開鍵と秘密鍵の組み合わせでつくられます。
たとえば、23と29という2つの素数を掛け合わせると
23×29=667 となります。
ちなみに667は、1とそれ自身以外でも割り切れたので素数ではありません。
この場合、667が公開鍵、23と29が秘密鍵となります。
23×29が667だということは、電卓ですぐに解けますが、
667が23と29の掛け合わせだということは、素因数分解してみないとわかりません。つまり時間がかかります。ここがミソです。
192896999171(公開鍵)という数が公開されても、
それが323123と596977(秘密鍵)の掛け合わせだと、わかるには時間がかかります。
コンピュータの時代なので、実際に使われている秘密鍵の桁数は数千桁にもおよびます。
これだけの桁数になると、人力ではどうにもならない。紙とペンを持つ気にもなりませんね。
効率よく答えを出す方法がないので、コンピュータはこの暗号を解くために、
総当たり戦法をとります。
2で割ってみて、3で割ってみて、5で割ってみて、、、
と順番に、まさに力ずくで、秘密鍵を探り当てるわけです。
自転車の鍵の暗証番号を0000から9999まで回してみるようなものです。
これを数千桁の数字でやらされるのだから、いかに専用の超高速マシンでもたまったものではありません。電気代が大変なコストになっているそうです。
よってこの作業をマイニング(採掘)と呼びます。
理論的には、秘密鍵の桁数はどこまででも増やせるので、解読に数万年、数億年かかる暗号をつくることも可能なのです。
宇宙が終わるころ解ける暗号をつくってどうするの? という話ですが、、、、
ビットコインではマイニングに10分程度かかるほどの難しさの暗号にして、
一番早く暗号解読(マイニング)した者に、褒美のコインが与えられる仕組みになっています。
暗号が簡単すぎると、同時に解かれるケースが出てきて混乱するし、難しすぎると非効率になる。桁数の調整で、難しさを調整できるので、非常に使い勝手のよい暗号法なのです。