技術共有

【暗号】ストリーム暗号の基本概念

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ストリーム暗号を紹介する前に、まず基本的な前提条件となる知識ポイントの XOR 演算を理解しましょう。

1.排他的論理和演算(XOR)

演算規則:0と同じ、1と異なる

特徴: 1 つのビットを 2 回 XOR 演算し、元のビットに戻すことができます。

プレーンテキスト: 1100

キー: 0101 (暗号化)

暗号文: 1001

キー: 0101 (復号化)

プレーンテキスト: 1100

アドバンテージ:この可逆性により、XOR 演算を暗号化変換と復号化変換の両方に使用できるようになります。

欠点:攻撃者がキーを推測または取得できた場合、XOR を介して簡単に復号化できます。

XOR 演算が暗号化と復号化に同時に使用できる理由はその可逆性にありますが、これはセキュリティが完全にキーの隠蔽に依存しているという欠点でもあります。

2. ワンタイムパッドアルゴリズム (OTP)

(1) 定義

ワンタイム パッド (OTP) はストリーム暗号アルゴリズムであり、その実装がいくつかの重要な原則に厳密に従っている限り、理論上最も安全な暗号化方式の 1 つであると考えられています。

1.  キーは平文と同じ長さでなければなりません: これは、各暗号化で、暗号化されるメッセージとまったく同じ長さのキーが使用されることを意味します。

2.  キーは本当にランダムでなければなりません: キーのすべてのビットは、パターンや予測可能性を持たずにランダムに生成される必要があります。

3.  キーは一度だけ使用する必要があります: 複数のメッセージの暗号化に同じキーを使用してはなりません。使用しないと、暗号文間の相関関係を使用してメッセージの内容が推測される可能性があります。

4.  キーは秘密にしておく必要があります: キーの配布と保管は、第三者によるアクセスを防ぐために非常に安全である必要があります。

(2) メリットとデメリット

アドバンテージ:

  • キーはランダムに生成され、1 回だけ使用されます
  • 無条件に安全
  • 暗号化と復号化は加算演算であるため、より効率的です。

欠点:

  • キーの長さは少なくとも平文の長さと同じであるため、キーの共有が難しくなり、実用的ではありません。

3. ストリーム暗号の定義

ワンタイム パッド暗号化アルゴリズムを研究するとき、人々は鍵の管理と長さの問題を解決しようとします。キーのほんの一部を提供するだけで平文を暗号化するためのすべてのキーを生成する方法があれば、ストリーム暗号はこの考えに基づいて開発されました。

(1) ストリーム暗号の基本的な考え方

        ストリーム暗号では、小さなキー (シードまたは初期化ベクトルと呼ばれることが多い) が擬似乱数生成器 (PRNG) を通じて使用され、平文と同じ長さの擬似乱数キー ストリームが生成されます。このキーストリームは平文と XOR 演算されて暗号文が生成されます。同様に、復号化プロセスでは、暗号文と同じキー ストリームを XOR して平文を復元します。

けキーストリームを生成する z=z_0z_1z_2...そして、次のルールを使用してプレーンテキスト文字列を比較します x = x_0x_1x_2 ...暗号化するには:
y=y_0y_1y_2...=Ez_0(x_0)Ez_1(x_1)Ez_2(x_2)...

線形フィードバック シフト レジスタは、通常、疑似ランダム キーを生成するために使用されます。この原理についてはここでは説明しません。

(2) アルゴリズム処理

暗号化と復号化のプロセスは次のように説明できます。

  • キーストリームの生成: 暗号化側と復号化側の両方が、同じキーと初期化ベクトル (IV) を使用して擬似乱数ジェネレーター (PRNG) を初期化します。 PRNG は、内部状態に基づいて一連の擬似ランダム ビットを生成し、キー ストリームを形成します。
  • 暗号化プロセス: 送信者は、生成されたキー ストリームと平文に対してビット単位の排他的論理和 (XOR) 演算を実行して、暗号文を取得します。 XOR 演算の性質上、同じ演算を異なるビットで元に戻すことができます。
  • 復号化プロセス: 受信者は同じキーと IV を使用して PRNG を再初期化し、暗号化されたときと同じキー ストリームを生成します。次に、受信側は暗号文とキー ストリームに対して XOR 演算を実行して、元の平文を復元します。

(3) ストリーム暗号の設計原則

ストリーム暗号の設計原則は、特定のセキュリティ プロパティを持つキーストリームを生成できるキーストリーム ジェネレーターの作成に重点を置いています。キー ストリーム シーケンスには次のプロパティが必要です。

  1. 巨大なサイクル : キー ストリームの期間は、キー ストリームの同じセグメントの再利用を防ぐのに十分な長さである必要があります。再利用すると、暗号化されたデータのパターンが暴露され、暗号解析者がさまざまなメッセージの類似点と相違点を比較して攻撃を実行できるようになります。理論的には、n ビットのキー空間の場合、理想的なサイクル長は 2n-1 でなければなりません。実際には、期間が長いほど、キー ストリームが繰り返される頻度が減り、暗号システムのセキュリティが向上することを意味します。

  2. 良好な統計的特性 : キーストリームは、真にランダムなビット シーケンスのように見える必要があります。つまり、0 と 1 の均等な分布、2 つ以上の連続したビット間の独立性、予測されたパターンや周期性がないことなど、さまざまな統計テストを満たす必要があります。優れた統計特性は、ストリーム暗号セキュリティの重要な要素であるキー ストリームの予測不可能性を保証するのに役立ちます。

  3. 線形解析に対する耐性 : ストリーム暗号は、暗号解析者がキーストリームと平文または暗号文の間の線形相関を見つけてキーまたは平文を回復しようとする線形解析に耐性がある必要があります。これには通常、キーストリーム ジェネレーターの出力が非線形であるか、少なくとも単純な線形システムの解法によるキーストリームまたはキー自体の推論を防ぐのに十分な非線形コンポーネントが含まれている必要があります。