Hash Function - 改竄の検出を支える 3 つの耐性
ハッシュ関数は、任意の長さのデータを固定長の値に変換する関数です。変換後の値をハッシュ値と呼びます。ここで扱うのは、その中でも改竄の検出に耐える性質を持つ暗号学的ハッシュ関数で、通信のエラー検出だけを目的とした関数(CRC、Cyclic Redundancy Check など)は対象外です。SHA-256 の内部の計算手順も扱いません。 ...
ハッシュ関数は、任意の長さのデータを固定長の値に変換する関数です。変換後の値をハッシュ値と呼びます。ここで扱うのは、その中でも改竄の検出に耐える性質を持つ暗号学的ハッシュ関数で、通信のエラー検出だけを目的とした関数(CRC、Cyclic Redundancy Check など)は対象外です。SHA-256 の内部の計算手順も扱いません。 ...
Shamir’s Secret Sharing(SSS)は、1 つの Secret を n 個の Share に分け、そのうち異なる任意の k 個以上で復元できる秘密分散方式です。復元に必要な個数 k を閾値(threshold)と呼び、(k, n) threshold scheme と表します。 ...
デジタル署名は、秘密鍵の持ち主だけが作れて、対になる公開鍵を持つ誰もが検証できるデータです。メッセージに署名を添えると、受け取った側は「秘密鍵の持ち主がこのメッセージを承認した事」と「メッセージが署名の後に書き換えられていない事」を確かめられます。ここで説明するのは、署名の役割と使われ方です。楕円曲線の数学的な計算手順には踏み込みません。 ...
Timed-release Cryptography(時限公開暗号)は、あらかじめ作成した暗号文を、将来の条件が成立するまで復号できないようにする仕組みです。方式の前提が守られていれば、暗号化した本人も条件成立前には復号できません。 ...
Merkle Tree(マークルツリー、ハッシュ木)は、データの並びを 2 つずつハッシュ関数で畳み込み、最後に 1 つの値にまとめる木構造です。まとまった 1 つの値をルートハッシュと呼びます。全件を持つ側は、データ 1 件と少数のハッシュだけを渡して、その 1 件が並びに確かに含まれていた事を相手に検証させられます。 ...
Merkle Tree の構築方法は 1 通りに決まっていません。奇数の葉をどう組むか、葉と内部ノードをどうハッシュするか、葉をどう並べるかは、それぞれのプロトコルが決める設計事項です。ルートハッシュが何を保証しているのかは、この規則を決めて初めて確定します。 ...