見出し画像

暗号通貨を理解するために必要な、たったひとつの数学的知識

暗号通貨は、名前のとおり現代暗号理論の上に成り立っています。

現代の暗号理論の理解のためには数学(の特定分野)の知識が欠かせません。

よって、暗号通貨を理解するためのは数学を理解する必要があります。

ぶっちゃけ、挫けますよね。

よくわからないものに投資するのは良くないと一念発起して、名著「マスタリング・ビットコイン」や結城先生の「暗号技術入門-秘密の国のアリス」を書店で手に取ったものの、数式にめげて書棚に戻したりとか。買ってきたものの読まずにホコリが被っているとか。

実際、深く理解するのは難しいです。そして、暗号通貨が理系オタクのオハジキでなくなった今となっては、深く理解する必要なんて無いのかもしれません。

なので、本稿では、難しいことは一旦放棄します。カジュアルに捉えて、暗号通貨のブロックチェーンが安全であることを理解した気分になるために必要なたったひとつの事柄を紹介します。数学は使いません。小学校算数の知識があれば十分です。

...

世の中には、解を求めるのはやたら難しいが解の検算は簡単にできる、という性質をもつ問題がある

これが、たったひとつの事柄です。そして、この性質を持つ問題は、身近なところに割とあったりします。

...

大抵の計算は、解を求めるのと検算をするのは概ね同じくらい難しい(同じくらい簡単)です。

2 - 1 = 1 の検算は 1 + 1 = 2 ですね。 2 × 3 = 6 の検算は 6 ÷ 3 か 6 ÷ 2。掛け算より割り算のほうが苦手ですか? ならば、電卓を使えると考えてください。計算のときと同じ手間で検算ができますよね?

さて、それでは、この問題を解いてください。

問1. 「○ × □ = 667   ○と□に入る数字を求めよ」

…意地悪をする気はありませんから答えを書きます。23 と 29 です。でも挑戦し、答えなしで解を求めることが難しいことは体感してみてください。

では検算。23 × 29 は電卓で簡単に計算できます。暗算で解ける方もいらっしゃるでしょう。

数学に深入りしませんが、問1のような問題はコンピュータでエレガントに解くことはできないとされています。言い換えると力技で解く方法しか見つかっていないということです。

現代の暗号理論は、概ね上記のような「力技しか解く方法が見つかっていない」問題を応用しています。

読者の中には「え? 力技で解けるなら膨大な数のコンピュータを投入されたら危ないんじゃないの?」という感想を持つ方もいらっしゃると思いますが、実際その通りです。

でも、たとえば全世界のコンピュータを集結しても解くのに100年かかるのであれば、たぶん100年間は安全なわけです。10万年かかるのであれば、もう解けないのと一緒です。解けた頃に、人類が存在しているかどうか怪しいですよね。

数学というと完璧を追い求めるような印象を持つ方も多いと思いますし、実際に厳密であることは確かなのですが。暗号のように現実社会に応用されるときには、事実上安全という使われ方もされます。

今回紹介した"たった一つの知識"は、暗号通貨を支えるブロックチェーンの至る所で使われています。具体例を紹介したいところですが、長くなりましたし、"たった一つ"でなくなりますので。

今回はこれくらいで。

...

以下余談です。

上記で挙げた問1 は実際に身近な暗号技術で使われています。

Web サイトの多くが https による暗号化通信をサポートしていますが、その暗号基盤 RSA は、問1の難しさをもたらす数学的性質を使っています。数学的に書くと桁数が大きな2つの素数からなる合成数の素因数分解……いや、今回は難しいことは話さない約束でしたね。

Bitcoin および Monacoin を含むオルトコインでは、楕円曲線暗号という別種類の暗号基盤を採用しています。しかし「検算だけは簡単」という性質を持つという点では同じです。

(注: 本稿は Monappy で公開している記事に若干の修正を加えたものです。)

この記事が気に入ったらサポートをしてみませんか?