定義:ハッシュベース暗号は、1970年代後半にレスリー・ランポートとラルフ・マークルによって初めて開発されました。ハッシュベース暗号は、そのセキュリティが選択された暗号化ハッシュ関数のセキュリティに数学的に基づくデジタル署名アルゴリズムを作成します。
ハッシュベース暗号について
ハッシュ関数は、任意のコンテンツの一意の識別子です。また、任意の大きさの平文データを受け取り、特定の長さのユニークな暗号文に変換するプロセスでもあります。ハッシュ関数は、入力文字列(通常は任意の長さ)を受け取り、固定サイズの「ダイジェスト」を出力として返します。SHA2、SHA3、Blake2などの一般的な暗号化ハッシュ関数は、256~512ビットの範囲のダイジェストを生成します。
ハッシュベースの署名方式は、1回限りの署名スキーム(OTS)、つまり1つのメッセージにのみ署名するためにキーペアを使用しなければならない署名スキームから始まります。OTSキーペアを使用して2つの異なるメッセージに署名すると、攻撃者は簡単に署名を偽造することが可能となってしまいます。
しかし、マークルが提案したのは、機能するN個の異なるメッセージに署名する機能を保持する方法でした。
1.まず、N個のランポートのキーペアを作成します。例としては、(PK_1, SK_1)、\ dots、(PK_N, SK_N)です。
2.次に、各公開鍵をマークるのハッシュツリーの1つの葉に割り当て(下記参照)、ツリーのルートを計算します。このルートは、新しいマークル署名スキームの「マスター」公開鍵として機能します。
3.署名者は、署名に使用するために、すべてのランポート公開鍵と秘密鍵を保持します。
マークルツリー(またはハッシュツリー)は、各葉ノードがデータブロックの暗号化ハッシュ値でラベル付けされ、各非葉ノードがその子ノードのラベルの暗号ハッシュでラベル付けされるツリーとして表されるデータ構造です。ハッシュツリーを使用すると、大規模なデータ構造の内容を効率的かつ安全に検証できます。
上記のマークルツリーの各ブロックレベルは、トランザクション(T0-T7)に由来する高次のハッシュ化を反映しています。後続のハッシュ値(H)は、先行するすべてのハッシュの合計(H01234567)として表される最高のブロックレベルに達するまで、最初のトランザクションより上位のブロックレベルごとにハッシュ関数を介して渡されます。
最下位レベルのハッシュ値はリーフと呼ばれ、リーフに関連付けられているトランザクション(T)のハッシュ値が含まれています。レベル3と4は、リーフとそれに続くハッシュ(またはノード)のハッシュの結果です。最後に、最高のブロックレベルのマークルルートには、すべてのトランザクションデータの要約が単一の値として含まれています。
マークルの最初のアプローチ以来、パフォーマンスが向上した多くのハッシュベースの署名スキームが発明されてきました。XMSS、Leighton-Micali(LMS)、SPHINCS、およびBPQSスキームは最近の例です。典型的なデジタル署名技術とは異なり、ほとんどのハッシュベースの署名スキームはステートフルであるため、署名には秘密鍵の更新が必要です。
ステートフルハッシュベースの署名技術を使用して署名するには、使用されたワンタイムキーを追跡し、それらが繰り返されないようにする必要があります。スキームXMSS、LMS、およびBPQSはステートフルですが、SPHINCSスキームはステートレスです。SPHINCSの署名は、XMSSやLMSの署名よりも大きくなります。BPQSは、ブロックチェーンシステムを念頭に置いて作成されました。WOTS +ワンタイム署名技術に加えて、SPHINCSはHORST少数回(ハッシュベース)署名メカニズムを採用しています。HORSTは、古い数回の署名技術(ハッシュしてランダムなサブセットを取得)を強化したものです。
量子安全デジタル署名のために(構造化格子に基づいて)、NISTによって標準化される3つのデジタル署名アルゴリズム*は、次のとおりです。
- CRYSTALS-Dilithium
- FALCON
- SPHINCS+
これは、ハッシュベースの署名が量子安全であり、よく理解されているという事実により、選択および承認されました。
*追加情報 - BSI推奨 Kryptografie quantensicher gestalten