CipherMode 列挙型

定義

暗号化に使用するブロック暗号モードを指定します。

public enum class CipherMode
public enum CipherMode
[System.Serializable]
public enum CipherMode
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum CipherMode
type CipherMode = 
[<System.Serializable>]
type CipherMode = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type CipherMode = 
Public Enum CipherMode
継承
CipherMode
属性

フィールド

CBC 1

CBC (Cipher Block Chaining) モードは、前のブロックの演算結果を次に引き継ぎます。 平文の各ブロックは、暗号化される前に、前のブロックの演算結果である暗号文とビットごとの排他的 OR 演算によって組み合わされます。 これにより、平文に同一のブロックが多数含まれている場合でも、それらのブロックはそれぞれ異なった暗号文へと暗号化されます。 最初の平文ブロックの場合は、暗号化される前に、ビットごとの排他的 OR 演算によって初期化ベクターと組み合わされます。 暗号文ブロックの 1 つのビットが破損すると、対応する平文ブロックも破損します。 さらに、後続ブロックの、元の破損ビットと同位置にあるビットも破損してしまいます。

CFB 4

CFB (Cipher Feedback) モードは、一度に 1 ブロック全体を処理するのではなく、平文を少しずつ処理して暗号文を生成します。 このモードでは、長さが 1 ブロックで、複数のセクションに分割されたシフト レジスタを使用します。 たとえば、ブロック サイズが 8 バイトで、一度に 1 バイトずつ処理される場合、シフト レジスタは 8 個のセクションに分割されます。 暗号文の 1 つのビットが破損すると、対応する平文のビットが 1 つ破損し、シフト レジスタも破損します。 この結果、不良なビットがシフト レジスタからシフト アウトするまで、続けて処理される平文中のいくつかのビットも破損してしまいます。 既定のフィードバック サイズはアルゴリズムによって異なる可能性がありますが、通常は 8 ビットまたはブロック サイズのビット数になります。 フィードバックのビット数は、FeedbackSize プロパティを使用して変更できます。 CFB をサポートするアルゴリズムでは、このプロパティを使用してフィードバックを設定します。

CTS 5

CTS (Cipher Text Stealing) モードは、任意の長さの平文を処理し、その平文と同じ長さの暗号文を生成します。 このモードは、平文の最後の 2 ブロック以外については、CBC モードと同じように動作します。

ECB 2

ECB (Electronic Codebook) モードは、各ブロックを個別に暗号化します。 同じメッセージに含まれる同一の平文ブロック、または同じキーで暗号化された別のメッセージに含まれる平文ブロックは、同一の暗号文ブロックに変換されます。 重要: このモードは、複数のセキュリティ悪用の扉を開くので、推奨されません。 暗号化する平文に繰り返しが多い場合、生成された暗号文に含まれるあるブロックが一度に 1 ブロックずつ解読される可能性が高まります。 ブロック分析を使用して暗号化キーを判断することもできます。 また、悪意のある攻撃者が、攻撃に気付かれることなく個別のブロックを置き換えたり、交換したりすることもできるので、攻撃に気付かれることなくブロックを保存したり、他のポイントでストリームに挿入したりすることも可能になります。

OFB 3

OFB (Output Feedback) モードは、一度に 1 ブロック全体を処理するのではなく、平文を少しずつ処理して暗号文を生成します。 このモードは CFB とほとんど同じですが、シフト レジスタへの入力方法だけが異なります。 暗号文の 1 つのビットが破損すると、平文の対応するビットが破損します。 ただし、暗号文に余分なビットや欠落しているビットがあると、平文はその位置から破損してしまいます。

注釈

ブロック暗号アルゴリズムは、一度に 1 バイトではなく、ブロック単位でデータを暗号化します。 最も一般的なブロック サイズは 8 バイトです。 各ブロックは大量に処理されるため、ブロック暗号はストリーム暗号よりも高いレベルのセキュリティを提供します。 ただし、ブロック暗号アルゴリズムは、ストリーム暗号よりも実行速度が遅くなる傾向があります。

ブロック暗号では、ブロックごとに同じ暗号化アルゴリズムが使用されます。 このため、プレーン テキストのブロックは、同じキーとアルゴリズムで暗号化されると、常に同じ暗号テキストを返します。 この動作は暗号を解読するために使用できるため、以前のブロック暗号化からのフィードバックに基づいて暗号化プロセスを変更する暗号モードが導入されます。 結果として得られる暗号化は、単純なブロック暗号化よりも高いレベルのセキュリティを提供します。

適用対象

こちらもご覧ください