仮想通貨における暗号技術
通常、通貨には偽造防止技術が施されています。バイカラー・クラッド、異形斜めギザ、微細文字、すき入れ、すき入れバーパターン、ホログラム etc... しかしながら、これらの技術を使っても完全に偽造不能にすることはできません。最終的には、法的な規制が必要です。
しかしながら、仮想通貨のセキュリティルールは、純粋な技術的な強制が必要で、暗号理論を多用しています。
暗号学的ハッシュ関数
まずハッシュ関数のポイントは以下3点
- 任意のサイズの任意の文字列を入力として使える
- 決められたサイズの出力を生成する
- 効率的に計算できる
これは、数学的に言えば、nビットの文字列のハッシュ計算にかかる時間はO(n)で表せるってこと
暗号的なハッシュ関数はこれらに以下3つの属性が必要です。
-
衝突耐性(collision resistance)
これは、2つの値x,yがx≠yでありながら、H(x)=H(y)であるようなものをけして見つけられない場合、ハッシュ関数は衝突耐性があるってこと。「見つけられない」と表現した理由は、厳密には、入力空間のほうが大きいので、衝突が存在しないわけではないためです。衝突耐性が難しい理由はこれで、この辺は別記事でまとめていきたいです。 -
秘匿性(hiding)
ハッシュ関数の出力y=H(x)が与えられたとき、入力のxを明らかにする現実的な方法がないってこと。この秘匿性を実現するためには、xの正解候補の値が存在してはいけない訳で、xの集合は大きく散らばっていなければいけない。 -
パズル親和性(puzzle friendiliness)
y = H(x)となるyが与えられたとき,xを導くのが難しいってこと。要するにハッシュ値から入力の一部を特定するために,多くの計算コストを要するという性質です。