ハッシュ関数とは?

用語集

仮想通貨とハッシュ関数

 

ハッシュ関数とは、インターネット上の通信で用いられる暗号化技術のひとつです。
仮想通貨とブロックチェーンの技術には、ハッシュ関数がいたるところで用いられています。


ハッシュ関数とは

 

まずは、ハッシュ関数を簡単に説明しましょう。
とあるデータの文字列Aを、ハッシュ値生成プログラムBに入力すると、常に同じハッシュ値Cが得られるようになっています。しかしハッシュ値CをプログラムBに逆入力してもAにはなりません。 またAの文字列を1文字でも変更すると、出力されるハッシュ値はCとは一致しません。

これによって、Aが改ざんされているかどうかが簡単にわかることと、ハッシュ値CからAの内容が推定出来ないという性質が得られます。この性質が、暗号通信や改竄防止に役に立つため、仮想通貨にはハッシュ関数が使われます。 暗号とハッシュ値の最大の違いは、暗号は復号できるのに対して、ハッシュ値は復号(※)できないことです。 (※復号とは、暗号化されたデータを元に戻すことです)

暗号は、どんな複雑なものであれ、一定の手順を踏めば必ず復号できて、当事者間で情報を共有できます。一方で、ハッシュ値は復号できません。では何の為にハッシュ値を用いるかというと、「ハッシュ値が同じならば、その基になったデータは同じであることが証明できる」という目的のためです。つまり、改ざんされていないこと、あるいは秘密の文字列を相手が持っていること(パスワードなど)を証明する為に用いられます。

優秀なハッシュ関数生成プログラムは、文字列Aから高速にハッシュ値が生成できること、同じハッシュ値を持つ異なる文字列を見つけることが困難であること、などが要求されます。ハッシュ関数は、仮想通貨以外にもインターネットで日常的に利用されているパスワードや、特定の文字列を見つけるための検索エンジンなどにも利用されています。


仮想通貨とハッシュ関数

 仮想通貨とブロックチェーンには様々なハッシュ関数が用いられています。マイニング(採掘)はハッシュ値を見つけ出す作業ですし(※)、トランザクションデータやウォレットのセキュリティにもハッシュ関数が用いられています。(※ マイニングの用のハッシュ値は、復号できるように設計されている)

英語圏で仮想通貨を暗号化通貨(Cryptocurrency)と呼ぶのは、元々はビットコインがハッシュ関数を用いてマイニングされることに起因しています。 とはいえ、ハッシュ関数は厳密には暗号ではありませんから、日本で暗号化通貨と呼ばれることは少なく、仮想通貨という呼称が定着したのはある意味正しかったのかもしれません。