.NET Framework の暗号モデル

.NET Framework には、多くの標準的な暗号化アルゴリズムの実装が用意されています。これらのアルゴリズムは使いやすく、既定のプロパティはできる限り安全に設定されています。さらに、.NET Framework 暗号モデルのオブジェクト継承、ストリーム デザイン、および構成は、拡張性に非常に優れています。

オブジェクト継承

.NET Framework セキュリティ システムには、派生クラス継承の拡張可能なパターンが実装されています。階層構造は次のとおりです。

  • SymmetricAlgorithmHashAlgorithm などのアルゴリズム タイプ クラス。このレベルは抽象的です。

  • RC2SHA1 などのアルゴリズム タイプ クラスから継承するアルゴリズム クラス。このレベルは抽象的です。

  • RC2CryptoServiceProviderSHA1Managed などのアルゴリズム クラスから継承するアルゴリズム クラスの実装。このレベルは完全に実装されています。

この派生クラスのパターンを使用すると、新しいアルゴリズムを追加したり、既存のアルゴリズムに新しい実装を追加したりできます。たとえば、新しい公開キー アルゴリズムを作成するには、AsymmetricAlgorithm クラスから継承します。特定のアルゴリズムの新しい実装を作成するには、そのアルゴリズムの非抽象派生クラスを作成します。

ストリーム デザイン

共通言語ランタイムは、対称アルゴリズムとハッシュ アルゴリズムを実装するためにストリーム指向のデザインを使用します。このデザインの中核となるのは、Stream クラスから派生する CryptoStream クラスです。ストリーム ベースのすべての暗号オブジェクトは、オブジェクトのデータ転送部分を処理するために、単一の標準インターフェイス (CryptoStream) をサポートします。すべてのオブジェクトは標準インターフェイス上に構築されるため、複数のオブジェクトをチェインできます (たとえば、ハッシュ オブジェクトの後ろに暗号オブジェクトを追加できます)。また、データ用の中間ストレージを必要とせずに、データに対して複数の操作を実行できます。ストリーミング モデルを使用すると、より小さなオブジェクトからオブジェクトを構築することもできます。たとえば、暗号化アルゴリズムとハッシュ アルゴリズムの組み合わせを、そのオブジェクトがストリーム オブジェクトのセットから構築されている場合でも、単一のストリーム オブジェクトと見なすことができます。

暗号の構成

暗号の構成によって、アルゴリズムの特定の実装をアルゴリズム名に解決でき、.NET Framework 暗号クラスに拡張性が提供されます。アルゴリズムの独自のハードウェア実装やソフトウェア実装を追加したり、実装を任意のアルゴリズム名に割り当てたりすることができます。構成ファイルにアルゴリズムが指定されていない場合は、既定の設定が使用されます。暗号の構成の詳細については、「暗号化クラスの設定」を参照してください。

参照

概念

暗号化の概要

その他の技術情報

暗号タスク
暗号サービス