メインコンテンツまでスキップ

1. Introduction (はじめに)

1. Introduction (はじめに)

DSA [FIPS-186-4] および ECDSA [X9.62] は2つの標準的なデジタル署名スキームです。これらはさまざまなプロトコルにおいてデータの完全性と検証可能な真正性を提供します。

DSA および ECDSA の特徴の1つは, 各署名生成のために新しいランダム値 (以下 k と呼びます) を生成する必要があることです。効果的なセキュリティのためには, k は暗号学的に安全なプロセスを使用して, モジュラー整数の集合からランダムかつ一様に選択されなければなりません。そのプロセスにおけるわずかな偏りでさえ, 署名スキームに対する攻撃に利用される可能性があります。

暗号学的に安全なランダム性のソースの必要性は, 安全な乱数生成が困難な一部のアーキテクチャ, 特にスマートカードなどの組み込みシステムにおける DSA および ECDSA 署名スキームの展開の妨げとなることが証明されています。これらのシステムでは, Public-Key Cryptography Standards (PKCS, 公開鍵暗号標準) #1 [RFC3447] (Probabilistic Signature Scheme (PSS, 確率的署名スキーム) ではなく "type 1" パディングを使用) および ISO 9796-2 [ISO-9796-2] で指定されている RSA 署名アルゴリズムが, 計算コストが高いにもかかわらず, しばしば好まれます。これは RSA (このようなパディングスキームを使用した場合) が決定論的であり, したがってランダム性のソースを必要としないためです。

DSA および ECDSA のランダム化された性質は実装のテストをより困難にします。自動テストでは, 実装が十分に高品質なランダム性のソースを使用しているかどうかを確実に検出できません。これにより, 実装プロセスは壊滅的な障害に対してより脆弱になり, システムが展開され攻撃を受けた後にしばしば発見されます。

"ランダム" 値 k を生成するための決定論的プロセスを使用することにより, DSA および ECDSA を決定論的スキームに変換することが可能です。そのプロセスは, 署名スキームに期待される検証可能性および偽造不可能性の特性を維持するために, いくつかの暗号学的特性を満たさなければなりません。すなわち, 署名の秘密鍵を知らない者にとって, 入力メッセージから対応する k 値へのマッピングは, ランダムかつ一様に選択された関数 (メッセージの集合から可能な k 値の集合への関数) が返すものと計算上区別不可能でなければなりません。

この文書はそのような手順を記述します。この手順には以下の特徴があります:

  • 生成される署名はプレーンな DSA および ECDSA と完全に互換性を保ちます。署名を検証するエンティティは変更する必要がなく, k を生成するために使用されるプロセスを認識する必要もありません。

  • 鍵ペアの生成は変更されません。既存の秘密鍵を決定論的 DSA および ECDSA で使用できます。

  • 決定論的 DSA および ECDSA の使用は, 秘密値または公開値の追加のストレージ要件を意味しません。

  • 決定論的 DSA および ECDSA は, プレーンな DSA および ECDSA と同じ入力, すなわち暗号学的に安全なハッシュ関数を使用して署名されるメッセージに対して計算されたハッシュ値に対して適用できます。

この文書で指定されている決定論的 (EC)DSA の定義においていくつかの比較的恣意的な選択がなされました。これは可能な限り普遍的に適用可能にするために行われ, 含まれるテストベクタの有用性を最大化します。いくつかの可能な変種の議論については Section 3.6 を参照してください。

鍵ペアの生成には依然としてランダム性のソースが必要であることに注意すべきです。ランダム性の品質が問題となる組み込みシステムでは, 鍵ペアの生成がより制御された条件 (例えば, 特別なスマートカード初期化手順中または宣誓した代理人の物理的管理下) で行われるように手配できることがしばしばあります。または, 鍵を他の場所で生成してデバイスにインポートすることさえできます。決定論的 DSA および ECDSA は署名生成時のランダム性の必要性のみを扱います。