EBU7140 セキュリティと認証 (1) 共通の暗号化アルゴリズム

序文

主にEBU7140コースの内容に基づいて構成されており、より試験指向です~

ブロック 1: 入門コース、従来の暗号化方法。

Block2: 公開鍵暗号化の原理と応用。

ブロック 3: いくつかの特定のセキュリティ プロトコル テクノロジ (ファイアウォール Kerberos 認証プロトコルなど)。

ブロック 4: 電子メール セキュリティ、ネットワーク セキュリティ。

B1

ネットワークセキュリティの重要性は言うまでもありません。軍事分野でのコミュニケーション、日常生活でのやり取り…

この講座のタイトルは「セキュリティと認証」ですが、セキュリティと認証とは何を意味するのでしょうか?

セキュリティ システム: データ送信のセキュリティ違反を抑止、防止、検出、修正します。

セキュリティ システム: データ送信におけるセキュリティ違反を防止、防止、検出、修正します。

セキュリティアーキテクチャ セキュリティアーキテクチャ

セキュリティアーキテクチャは主に、データ情報を漏洩するセキュリティ攻撃、セキュリティ攻撃を検出・防止・回復するセキュリティ機構、攻撃を防ぐプロセスセキュリティサービスの3つの内容で構成されます。

セキュリティ攻撃には主に次の種類があり、いずれも比較的理解しやすいものです。

1701581604261

セキュリティ攻撃もパッシブ攻撃とアクティブ攻撃に分けられます。

セキュリティの仕組み: 「セキュリティ」は抽象的なものであり、提供できないことはわかっています。しかし、暗号化などのセキュリティ攻撃をより困難にすることで、システムは「より安全」であると言えます。暗号化

セキュリティ サービス: たとえば、セキュリティ認証 認証はユーザーの権限を識別し、アクセス制御は許可されたユーザーのみにアクセスを許可し、データの機密性と整合性を検証します...

下の図はいくつかの用語を示しています。概念はテストされないと思います。質問文中に出現したときの意味を知る必要があるだけです。

画像-20231203134408877

上から下へ: 平文 (暗号化されていないデータ)、暗号化、暗号文、復号化、キー (暗号化と復号化に使用され、使用法は特定の暗号化アルゴリズムによって異なります); 暗号化、ハッシュ アルゴリズム、デジタル署名 (暗号化アルゴリズムを通じて確実に送信されました)私による); アクセス制御、データの機密性、データの完全性、否認防止、ID 認証。画像-20231203134942164

3 つは包括的な関係であり、セキュリティはいくつかの基本的な定義であり、メカニズムはセキュリティを使用するいくつかのアルゴリズムであり、サービスは Mechanicsim と組み合わせて実装されるいくつかの機能です。

ネットワークセキュリティモデル

簡単に説明すると、情報を送信する際、ネットワーク セキュリティ サービスを利用して暗号化して相手に送信し、相手はネットワーク セキュリティ サービスを利用して復号化してデータを取得します。1701583057001

暗号化の例

シーザー暗号

最も古くて最も単純な暗号化方式: Caesar Cipher、文字シフト。カエサルはこの方法を使って士官たちとコミュニケーションをとりました。画像-20231203135900106

暗号文がシーザーによって暗号化されていることがわかっていれば、解読は非常に簡単で、最大 25 回の試行で答えを得ることができます。

バージニア暗号

ヴィジェネール暗号: 多アルファベット置換。これは本質的に複数のシーザー暗号の結果です。

平文文字列とキー文字列 (暗号化用) が必要です。1701583540014

画像-20231203140434357

たとえば、プレーン テキスト M で最初のキーが S の場合、それはパスワード テーブルの文字 E に対応します。

プレーン テキスト Y、2 番目のキーは T で、R に対応します。

アルゴリズム: (プレーンテキストの対応する文字 + キーの対応する文字) mod 26 (A は 0 としてカウントされます)

復号化: (暗号文に対応する文字 - 鍵に対応する文字) mod 26 (A は 0 としてカウントされます)

ローター暗号化

ローター暗号化: 多層ローラーの機械的構造。

シングルローラー:

1701584519743

暗号化ごとに、ホイールを左に動かします。

複数のローラー: ローラーの異なる層が異なる速度で回転します。

これはドイツで発明された暗号機ですが、その後徐々に解読されていきました。

グリルの暗号化

グリルのグリル暗号化: オクルージョンにグリル パターン領域を使用します。送信側と受信側の両方がグリッド マップを共有する必要があります。

画像-20231203142409238

データの一部が取得されるたびに、グリッド チャートが時計回りに回転され、データの別の部分が取得されます。

暗号化方式の分類

  • ステガノグラフィー: データを隠し、直接検出できない暗号化方式。たとえば、ピクセルの最下位ビットを調整したり、オーディオ ファイルのスペクトル調整や周波数シフトを使用したり...本質的には、プレーン テキストは一見しただけでは見えないということです。

  • 暗号: 暗号文はあなたに与えられ、この紙に書かれており、これがデータです。ただし、それを表示するには復号化する必要があります。

  • 暗号化方式:Substitution & Transposition の方が分かりやすいです。

  • 使用されるキーの数: 対称暗号化および転置および非対称暗号化。暗号化と復号化に 1 つのキーを使用するのが対称暗号化です。

  • 平文処理方式:ストリーム暗号とブロック暗号 ストリーム暗号とブロック暗号。一度に 1 つの要素を処理する場合と、ブロック内の複数の要素を処理する場合の違い。

以前のシーザー暗号はストリーム暗号化と考えられますが、グリルはブロック暗号化と考えるべきだと思います。

ストリーム暗号化 1: 単純な XOR

ストリーム暗号化の例を挙げると、簡単に言うと、平文とキーをビットごとに XOR 演算して暗号文を取得し、復号化するために再度 XOR 演算します。ビットが 0 または 1 と 2 回 XOR 演算されると、ビット自体が取得されるためです。

画像-20231224142256770

計算量が少なく暗号化も高速です。しかし、それは単純すぎます。平文と暗号文がわかれば鍵もわかりますが、メッセージを改ざんした後に攻撃者を検出することはできません。情報が改ざんされていないことを確認するパリティ チェックのようなメカニズムはありません。 。

ストリーム暗号化 2: ワンタイムパッド

2 番目のストリーム暗号化方式はワンタイムパッドと呼ばれ、破棄できません。つまり、送信のたびに、送信する情報と同じ長さの新しいランダム鍵が使用され、暗号文と平文の間に統計的な関係はなく、この鍵が暗号化に使用されます。問題は鍵をどうやって相手に送るかですが、鍵が大きすぎてアルゴリズムがエラーを起こしやすいのです。

ブロック暗号化 1: 順序が乱れています

たとえば、{1,2,3,4,5,6,7,8,9,10} から {3,1,2,10,7,5,4,8, まで、10 文字ごとに順序を並べ替えます。 6,9}。

画像-20231224143239261

ブロック暗号化 2: プレイフェアスクエア暗号

Playfairの四角いパスワードは最初は少し分かりにくかったですが、理解するととても面白く感じました。

まず、キーを使用して 5*5 暗号化正方行列を生成します。例えば、キーが「MY SECRET CODE IS」の場合、重複する文字とスペースを削除して正方行列で書かれた「MYSECRTODI」に変更し、残りの部分を文字の順番に埋めていきます。アルファベットで登場します。

1703400024911

平文の場合は、まず平文を文字の組み合わせのペアに分割し、特定の文字の組み合わせが繰り返される場合は、2 番目の文字の組み合わせを X または Q に置き換えます。

1703400165306

文字の各ペアについて、まず、暗号化された正方行列内で対応する文字の位置を見つけます。

  1. それらが同じ行と列にない場合、それらは長方形の 2 つの対角線を形成し、それらを長方形の他の 2 つの対角線の文字に置き換えます。

1703400279889

  1. それらが同じ行にある場合は、両方を右側の文字に置き換えます。

1703400308311

  1. 同じ列にある場合は、以下の文字に置き換えてください。

1703400332750

とても安全ですが、とても複雑です。問題は、キー (暗号化マトリックスの生成に使用されるキー) が漏洩できないことです。漏洩しなければ、それで終わりです。

鍵合意 鍵合意

上記はより伝統的な暗号化方法の一部ですが、基本的な問題は、キーが漏洩できないことです。そのため、当時は、双方が鍵をネゴシエートする何らかの方法が必要でしたが、そうでないと、最初に鍵を送信するときに鍵が傍受された場合、その後の情報送信は透過的になってしまいます。

キーをクラッキングするための主な攻撃方法は 2 つあり、1 つは暗号解析攻撃で、使用される可能性のある暗号化方式と、その方式の平文およびキーの一部の暗号化ルールをクラッキングします。たとえば、シャーロック・ホームズ(踊る男)の章がありますが、当時、MiXin は文字ごとに異なる動きをする小さな人物のシンボルを作成したばかりで、シャーロック・ホームズは英語で e が最も頻繁に現れるという規則から始まり、 e. に対応する記号を取得し、その後に他の文字が続きます...徐々に亀裂が生じました。

2 番目の方法はブルート フォース アタックです。別のキャンパスに移動したとき、3 桁のパスワード ロックがあり、隣の寮のクラスメートに暴力的に試してもらったことを覚えています。ただし、1 つ異なる点があります。それは試用版のパスワードであり、ここでのブルート フォース クラッキングは試用版のキーです。

暗号化アルゴリズムの安全性を評価するにはどうすればよいでしょうか? 実際、どんなパスワードも遅かれ早かれ必ず解読されます (最悪の場合、解読には 50 年、100 年、10,000 年かかりますか?)。これは決して解読できないことを意味しますが、次のことを意味します。

  1. クラッキングの費用対効果は高くなく、クラッキングに必要な人的資源、財政的および物的資源はキーの価値ほど良くありません。クラスメートにメモを渡すと、誰も解読できないでしょうし、核爆弾の暗号のようなものなので、多くの人が見ているのでしょう。
  2. 平文の有効期間はクラッキング時間よりも短いです。たとえば、軍は「今夜総攻撃が開始されます。明日の正午に敵が勃発し、状況は終わります」というメッセージを送信します。

割れ目

アイザックの暗号解読

シャーロック・ホームズと同じように、手紙の頻度に基づいて推測します。

画像-20231224150352021

せいぜい25回シフトすればいつでも解けますよね?

しかし、より効果的な解読方法は、ベクトルを使用して確率を計算することです. 深層学習における分類問題の予測も同様です. 特定のアルゴリズムを使用して、異なるキーが正解である確率を定量化し、最終的に比較して選択しますキーである可能性が最も高いオフセットであり、不正確な予測値を気にする必要はありません(興味がある場合は、私の記事を参照してください: Deep Learning (5) Softmax Regression: Introduction to Classification Algorithms 、ファッション -MINIST データ セットのロード方法 - CSDN ブログ)。

1703401974314

上の表は現在の暗号文における文字の出現頻度(暗号文ベクトルと呼んでいます)で、下の図は字幕の統計的な出現頻度(頻度ベクトルと呼んでいます)です。

クラッキング方法: 暗号文ベクトルをシフトし、周波数ベクトルと乗算して予測確率を計算します。シフト値を 1 から 25 まで試し、各予測値の大きさを計算し、最終的に最大値を取得します。

1703402083556

バージニア州の暗号解読

ヴィジェネール暗号は 26*26 の長方形であり、対応する位置にある文字は平文と鍵を通じて見つけられます。つまり、キーは単純な数値オフセットではなく、文字列です。

まず、キーの長さを推測する必要があります。繰り返される組み合わせの出現回数を見てみましょう(2~3文字くらいでしょうか?)

1703402831149

繰り返される組み合わせのより一般的な距離は 3 であるようです。そのため、キーは 3 の倍数です (アルゴリズムに依存せずにこれを見つけるのは非常に困難です)。

次に、暗号文のシフト オフセットを試行し、オフセットと各オフセットで発生する数値の重複を記録します。たとえば、下の図はシフト +2 のオフセットを示しています。

1703402913331

オフセットと繰り返しは次のとおりです。

画像-20231224153018033

そして、キーの長さは 3 の倍数である可能性が高いことがわかっています。次に、暗号文を 3k、3k+1、3k+2 の 3 つの等しい部分に分割します。

画像-20231224153127390

次に、これら 3 つのデータ セットに対して、Isaac の暗号クラッキングと同様のベクトル クラッキング操作を実行し、それらを合計して最も可能性の高いキーを取得します。

原則として、Isaac 暗号と Vigenère 暗号の最初の違いは、Vigenère 暗号は abcabcabc などのキー文字列が何度も繰り返される Isaac 暗号であることです。Vigenère 暗号の長さを 3 と見積もるとします。この場合、位置 3k の文字列は a で暗号化されたシーザー暗号に相当し、位置 3k+1 の文字列は b で暗号化され、位置 3k+2 の文字列は c で暗号化され、それぞれ Isaac 暗号を使用して解読できます。 。

従来の暗号化

対称暗号化を使用したブロック暗号化アルゴリズムは、従来の暗号化とも呼ばれます。

Feistel アルゴリズム: パスワードをブロックし、複数回の暗号化を実行するアルゴリズム。より典型的なのは DES です。

DES データ暗号化規格は暗号化規格です。固有の DES アルゴリズムが多数あります。

b9b70bf83ca39e1f461c945e70ab6b9

64 ビットのデータを取得し、置換テーブルを使用して右の 32 ビットを 48 ビットに拡張し、キーと XOR してから、s-box 置換テーブルを通じて 32 ビットに置換し、左の 32 ビットと XOR して取得します。右 32 ビットの新しいラウンド、次のラウンドでは、右 32 ビットが新しい左 32 ビットになります。

キーは 64 ビットのキーで、順列テーブルの後に 56 ビットになり、各ラウンドでは、シフト後に順列テーブルが 48 ビットになり、48 ビットのメッセージと XOR 演算されます。

S-Box の 1 つ目の機能はキー操作の長さを圧縮することであり、2 つ目はセキュリティを強化することです。

1703885492600

DES セキュリティはキーの長さに関係し、S-box は特定の置換 (つまり、置換テーブルとキーの長さ) の選択に関係します。

DES 56 ビット キーは比較的安全ではないため (とはいえ、私を驚かせるには十分だと思いますが)、複数の DES を使用できます。

デュアル DES

異なるキーを使用した DES 暗号化を 2 回実行。

EK 1 ( EK 2 ( m ) ) E_{K1}(E_{K2}(m))EK1 _( EK2_ _(メートル))

最初は、k1 k2 を 2 回暗号化したのと同じ効果を持つキー k3 を見つけることができると考えましたが、そうなると 2 回の暗号化は無意味になってしまいます。しかし、アルゴリズムの特性上、それは起こり得ないようです。

シングル DES キー レベルは 256で、ダブル DES キー レベルは257です。

Double DES を突破する方法: ミートインザミドル攻撃。一度だけ暗号化された場合の double DES の中間値が X (つまり、E_{K2}(m) または D_K1©) であると仮定すると、double DES を解読するには、既知の平文と暗号文のペアが 2 つだけ必要になります。

  1. 平文はすべての可能なキーを使用して 1 回暗号化され、暗号文はすべての可能なキーを使用して 1 回復号化されます。どのキー ペアが同じ中間値 X を持つかを確認します。
  2. このキー ペアを使用して、既知の平文と暗号文の別のセットを確認します (オプション)。同じ中間値 X が得られた場合、このキー ペアが正しいことを意味します。

TDEA

トリプルDES。

C = EK 3 ( EK 2 − 1 ( EK 1 ( m ) ) ) C=E_{K3}(E_{K2}^{-1}(E_{K1}(m)))C=EK3 _( EK2_ _ 1( EK1 _(メートル)))

-1 は復号化を表します。復号化はその逆で、K3 は復号化、K2 は暗号化、K1 は復号化します。

AES

コンピューターの計算能力の進歩に伴い、DES は相対的に安全ではなくなったため、新しい暗号化標準 AES が導入されました。

基準は次のとおりです。

  1. 128 ビット、192 ビット、256 ビットの 3 つのキー長をサポートする必要があります。
  2. ブロック サイズは 128 ビットのみです。
  3. いくつかの部分に分割して個別に処理する Feistel アルゴリズム (1 つのデータの場合、左右 2 つの部分に分割) とは異なり、AES はデータ全体を毎回処理します。

当時、米国国立標準技術研究所は、より安全なアルゴリズムを見つけることを期待して、AES 標準を策定し、アルゴリズムの実装を広く募りました。より有名な作品はRijndaelです。

ラインダール

簡単に言うと、以下の4つのラウンドに分かれています。

画像-20231230151610413

  1. S-box バイトの置換。1 バイトは 8 ビットで、最初の 4 ビットは 16 行を表し、最後の 4 ビットは 16 列を表します。置換テーブルで対応する置換項目を見つけます。

    画像

  2. 行シフト、異なる行シフトは異なります。

    画像

  3. 列 MixMixColumns では、列に定数行列を乗算して新しい列を取得します。

    画像

    例えば:

    ここに画像の説明を挿入します

  4. ラウンド キーに AddRoundKey を加えた場合、このステップは実際の暗号化とみなされ、キーは状態マトリックスと XOR 演算されます。一般に、キー拡張はユーザー キーに基づいて実行され、複数ラウンドのキーが生成され、暗号化の各ラウンドに異なるキーが使用されます。

    画像

全体的なプロセスは、ラウンド キーを 1 回追加し、次に置換バイト、行のシフト、列の混合、ラウンド キーの追加の 4 つの部分を N_{r-1} 回繰り返します。

しかし実際には、この暗号化方法は見た目ほど複雑ではなく、キー 2 を128回試行する必要さえなく、2 100回で十分です (おそらく何らかのキー分析技術に基づいていると思われます)。

動作モード

運用モードは、暗号化方式を改良するための手法であり、原則として、同じ鍵で同じ暗号化結果が得られることを避けるように努めますが、これはこれまでの暗号化方式の最大の欠点でもありました。いずれにせよ、同じキーでは同じ暗号化結果が得られるため、最大でも2,128 回のブルート フォース試行になります。

ECB 電子コードブック

電子コードブックは単純なブロック暗号化です。

1703923215199

しかし、DES を解読する方法を考えてみてください。同じ鍵で暗号化しても同じ結果が得られるという問題はまだ解決されていません。平文暗号文のペアを知っていて、それを解読するにはすべての鍵を試行するだけで済みます。

CBC 暗号ブロックチェーン

各平文ブロックは前の暗号文と XOR 演算され、キーを使用して暗号化されます。c0 の初期暗号文ブロックは、暗号化に関して両当事者が合意した情報です。

1703923885608

復号化はその逆です。

1703923901681

複雑さはさらに高くなります。ただし、暗号化する場合は依存関係があるため、並列暗号化はできず、逐次暗号化する必要があります。復号化は、復号化中にも並行して行うことができます。

CFB暗号フィードバック

暗号化後、初期ベクトルは平文ブロック 1 と XOR 演算されて暗号文ブロック 1 が取得されます。暗号化後、暗号文ブロック 1 と平文ブロック 2 が XOR 演算されて暗号文ブロック 2 が取得されます。

IV 初期化ベクトルは CBC の c0 に似ており、暗号化を開始するために双方が使用する情報の一部です。

1703924346531

復号化プロセスは似ていますが、平文と XOR する代わりに、XOR を取得し、暗号文と XOR して平文を取得します。

1703924499062

欠点は、暗号化を並行して実行できないことと、以前の計算エラーがその後の計算結果に影響を与えることです。

OFB 出力フィードバックモード(OFB)

CFB との違いは、CFB は前の暗号文ブロックを次のブロックを暗号化するための初期ベクトルとして使用するため、エラーの伝播が発生することです。OFB が平文と XOR 演算されない場合、OFB は次のブロックの初期ベクトルとして使用され、エラーの伝播は発生しません。また、IV ベクトルの複数ラウンドの暗号化値が事前に計算されている場合は、グループ化された平文を使用して並列暗号化操作を直接実行できます。

1703924930996

CTRカウンターモード

自己増加する暗号化カウンターは初期化ベクトルとして機能します。

1703925187031

並列計算も可能で非常に高速です。

1703925245706

鍵の配布

  • 最も重要な質問の 1 つは、2 者間でキーを同期する方法です。キーの送信プロセスが傍受されると、アルゴリズムを変更しても無駄になります。

  • キーの送信チャネルは、メッセージング チャネルよりも安全である必要があります。

  • もう 1 つの問題は、相手が署名を通じてキーを確実に私に送信する方法です。たとえば、仲介者は A から B に送信されたキーを傍受し、B のキーを偽造します。B は自分のキーが変更されたことを知りません。

キーは物理的なチャネルを通じて送信できます(相手に渡す?)。または、2 人が以前に古いキーを持っていて、それを新しいキーに変更したい場合は、新しいキーを古いキーで暗号化して送信できます。または、2 人が相互に暗号化された接続を介して送信することもできます。

おすすめ

転載: blog.csdn.net/jtwqwq/article/details/135306968
おすすめ