暗号プリミティブは、コンピュータセキュリティシステムの暗号プロトコルを構築するために頻繁に使用される、確立された低レベルの暗号 アルゴリズムです。 [1]これらのルーチンには、一方向ハッシュ関数や暗号化関数などが含まれますが、これらに限定されません。
根拠
暗号化システムを作成する際、設計者は暗号化プリミティブを最も基本的な構成要素として使用します。このため、暗号化プリミティブは、正確に定義された信頼性の高い方法で 1 つの非常に特定のタスクを実行するように設計されています。
暗号プリミティブは構成要素として使用されるので、非常に信頼性が高く、つまり仕様どおりに機能する必要があります。たとえば、暗号化ルーチンがX回のコンピュータ操作でのみ解読可能であると主張しているのに、Xよりはるかに少ない操作で解読された場合、その暗号プリミティブは失敗しています。暗号プリミティブが失敗すると、それを使用するほぼすべてのプロトコルが脆弱になります。暗号ルーチンの作成は非常に難しく、信頼性をテストするには長い時間がかかるため、新しい暗号システムのニーズに合わせて新しい暗号プリミティブを設計することは、基本的に決して賢明ではありません (安全でもありません)。その理由は次のとおりです。
- 設計者は、暗号プリミティブに関係する数学的および実用的な考慮事項に精通していない可能性があります。
- 新しい暗号化プリミティブを設計するのは、その分野の専門家であっても、非常に時間がかかり、エラーが発生しやすくなります。
- この分野のアルゴリズムは適切に設計されている必要があるだけでなく、暗号学者コミュニティによって適切にテストされる必要があるため、暗号ルーチンが設計の観点からは適切に見えても、エラーが含まれている可能性があります。このような精査にうまく耐えることは、アルゴリズムが実際に使用できるほど安全であるというある程度の自信 (実際、これまでのところ、唯一の自信) を与えます。暗号プリミティブのセキュリティ証明は一般に利用できません。
暗号プリミティブは、 TLS、SSL、SSHなどのあらゆる暗号システムの構成要素の 1 つです。暗号システムの設計者は、セキュリティを決定的に証明する立場にないため、使用するプリミティブを安全であるとみなす必要があります。プロトコルで使用できる最適なプリミティブを選択すると、通常、利用可能な最高のセキュリティが提供されます。ただし、どの暗号システムでも構成上の弱点が発生する可能性があり、それを回避するのは設計者の責任です。
暗号プリミティブを組み合わせる
暗号プリミティブは、それ自体では非常に制限されているため、暗号システムではありません。たとえば、暗号化アルゴリズムのみでは、認証メカニズムも明示的なメッセージ整合性チェックも提供されません。セキュリティ プロトコルで組み合わせる場合にのみ、複数のセキュリティ要件に対応できます。たとえば、エンコードされているだけでなく、改ざんから保護されている (つまり、機密性と整合性が保護されている) メッセージを送信するには、 DESなどのエンコード ルーチンとSHA-1などのハッシュ ルーチンを組み合わせて使用できます。攻撃者が暗号化キーを知らない場合、メッセージ ダイジェスト値が有効になるようにメッセージを変更することはできません。
暗号プリミティブを組み合わせてセキュリティ プロトコルを作成すること自体が、完全な専門分野です。ほとんどの悪用可能なエラー (つまり、暗号システムの不安全さ) は、プリミティブの設計エラー (常に慎重に選択されたと仮定) ではなく、使用方法 (つまり、プロトコル設計の悪さ、バグのある実装、または十分注意を払っていない実装) に起因します。プロトコルの数学的分析は、この記事の執筆時点では成熟していません。[要出典] BAN ロジックなど、自動化された方法で検証できる基本的なプロパティがいくつかあります。完全な検証の方法さえあります (例: SPI 計算) が、それらは非常に面倒で自動化できません。プロトコル設計は、深い知識と多くの練習を必要とする芸術です。それでも間違いはよくあります。実際のシステムの実例は、ここにあるOpenSSL 脆弱性ニュース ページで確認できます。
よく使われるプリミティブ
- 一方向ハッシュ関数(一方向圧縮関数とも呼ばれる)—メッセージの縮小ハッシュ値を計算します(例:SHA-256)。
- 対称鍵暗号 -エンコードに使用したのと同じ鍵でデコード可能な暗号文を計算する(例: AES)
- 公開鍵暗号 -エンコードに使用した別の鍵(例:RSA)でデコード可能な暗号文を計算する
- デジタル署名- メッセージの作成者を確認する
- ミックスネットワーク- 多くのユーザーからの通信をプールして、誰が何を発信したかを匿名化する
- プライベート情報取得-サーバーがどの項目が要求されたかを知らなくてもデータベース情報を取得
- コミットメントスキーム- 選択した価値観を他の人には隠したまま、後で明らかにすることができる。
- 暗号的に安全な疑似乱数生成器
- 非対話型ゼロ知識証明
参照
参考文献
- ^ 「暗号プリミティブ - 用語集 CSRC」。csrc.nist.gov 。 2021年9月19日閲覧。
