Cryptography-traditional-ciphers

提供:Dev Guides
移動先:案内検索

従来の暗号

第2章では、最新の暗号化の基礎について説明しました。 暗号化は、さまざまな暗号化技術が基本ツールと見なされるツールキットと同等でした。 これらのツールの1つは、暗号化と復号化に使用されるキーが同じである対称キー暗号化です。

この章では、この手法と、さまざまな暗号システムを開発するためのアプリケーションについてさらに説明します。

以前の暗号化システム

さらに進む前に、歴史的な暗号システムに関するいくつかの事実を知る必要があります-

  • これらのシステムはすべて、対称鍵暗号化方式に基づいています。
  • これらのシステムが提供する唯一のセキュリティサービスは、情報の機密性です。
  • デジタルであり、データを2進数として扱う最新のシステムとは異なり、以前のシステムはアルファベットを基本要素として使用していました。

これらの初期の暗号化システムは、暗号とも呼ばれます。 一般に、暗号は、暗号化と対応する復号化の両方を実行するための単なる一連のステップ(アルゴリズム)です。

シーザー暗号

それは、平文の各文字が別の文字に置き換えられて暗号文を形成するモノアルファベット暗号です。 これは、置換暗号スキームの最も単純な形式です。

この暗号システムは、一般に Shift Cipher と呼ばれます。 概念は、各アルファベットを0〜25の固定数だけ「シフト」された別のアルファベットに置き換えることです。

このタイプのスキームでは、送信者と受信者の両方がアルファベットをシフトするための「秘密シフト番号」に同意します。 0〜25のこの数値が暗号化のキーになります。

「シフト3」が使用される場合、「シーザー暗号」という名前がシフト暗号を表すために時々使用されます。

シフト暗号のプロセス

  • プレーンテキスト文字を暗号化するために、送信者はスライドルーラーをプレーンテキスト文字の最初のセットの下に配置し、シークレットシフトの位置の数だけ左にスライドさせます。
  • 次に、平文の文字は、下にあるスライド式定規の暗号文の文字に暗号化されます。 このプロセスの結果は、3つのポジションの合意されたシフトについて次の図に示されています。 この場合、プレーンテキスト「チュートリアル」は暗号化テキスト「WXWRULDO」に暗号化されます。 以下は、Shift 3の暗号文アルファベットです-

シフト暗号のプロセス

  • 暗号文を受信すると、秘密のシフトも知っている受信者は、スライディング定規を暗号テキストのアルファベットの下に置き、合意されたシフト番号(この場合は3)で右にスライドします。
  • 次に、暗号化された文字を、その下のスライド式定規の平文の文字に置き換えます。 したがって、暗号文「WXWRULDO」は「チュートリアル」に復号化されます。 Shift 3でエンコードされたメッセージを復号化するには、以下に示すように「-3」のShiftを使用してプレーンテキストアルファベットを生成します-

Shift Cipher1のプロセス

セキュリティ値

Caesar Cipherは、試せる鍵が26個しかないため、*安全な*暗号システムではありません。 攻撃者は、利用可能な限られたコンピューティングリソースで徹底的なキー検索を実行できます。

単純な置換暗号

これは、Caesar Cipherの改善です。 このスキームでは、アルファベットをある数だけシフトする代わりに、アルファベットの文字の順列を使用します。

たとえば、A.B…..Y.ZおよびZ.Y……B.Aは、アルファベットのすべての文字の2つの明らかな順列です。 順列は、ごちゃ混ぜになったアルファベットのセットにすぎません。

アルファベットが26文字の場合、可能な順列は26です! (26の係数)は4x10 ^ 26 ^に等しい。 送信者と受信者は、これらの可能な順列のいずれかを暗号文アルファベットとして選択できます。 この順列は、スキームの秘密鍵です。

単純な置換暗号のプロセス

  • アルファベットA、B、C、…​、Zを自然な順序で記述します。
  • 送信者と受信者は、アルファベットの文字のランダムに選択された順列を決定します。
  • 自然順序アルファベットの下に、アルファベット文字の選択された順列を書きます。 暗号化の場合、送信者は、テーブル内のその直下にある置換文字を置き換えることにより、各プレーンテキスト文字を置き換えます。 このプロセスを次の図に示します。 この例では、選択された順列はK、D、G、…​、Oです。 平文の「ポイント」は「MJBXZ」に暗号化されます。

暗号文のアルファベット順が暗号文のアルファベット順です。

単純な置換暗号

  • 暗号文を受信すると、受信者はランダムに選択された順列も知っているため、一番下の行の各暗号文文字を一番上の行の対応する平文文字に置き換えます。 暗号文「MJBXZ」は「point」に復号化されます。

セキュリティ値

単純な置換暗号は、シーザー暗号よりも大幅に改善されています。 可能なキーの数は多く(26!)、最新のコンピューティングシステムでさえ、ブルートフォース攻撃を快適に開始してシステムを破壊するほど強力ではありません。 ただし、Simple Substitution Cipherの設計は単純であり、明白な順列を選択すると、この暗号システムは簡単に壊れる可能性があるなど、欠陥を設計する傾向があります。

モノアルファベットおよびポリアルファベット暗号

モノアルファベット暗号は、特定のキーに対して、各プレーンアルファベットの暗号アルファベットが暗号化プロセス全体で固定される置換暗号です。 たとえば、「A」が「D」として暗号化されている場合、その平文での出現回数に関係なく、「A」は常に「D」に暗号化されます。

この章で前述したすべての置換暗号は、単一アルファベットです。これらの暗号は、暗号解読の影響を非常に受けやすくなっています。

Polyalphabetic Cipherは、暗号化プロセス中に場所によってプレーンアルファベットの暗号アルファベットが異なる可能性がある置換暗号です。 次の2つの例、* playfairとVigenere Cipherは多アルファベット暗号です*。

プレイフェア暗号

このスキームでは、単純な置換暗号の場合のように単一の文字ではなく、文字のペアが暗号化されます。

プレイフェア暗号では、最初にキーテーブルが作成されます。 キーテーブルは、プレーンテキストを暗号化するためのキーとして機能するアルファベットの5×5グリッドです。 25個のアルファベットはそれぞれ一意である必要があり、26個ではなく25個のアルファベットしか必要ないため、アルファベットの1文字(通常はJ)はテーブルから省略されています。 平文にJが含まれている場合、Iに置き換えられます。

送信者と受信者は、特定のキーを「自殺」と言います。 キーテーブルでは、テーブルの最初の文字(左から右へ)はフレーズであり、重複する文字は含まれません。 テーブルの残りの部分には、アルファベットの残りの文字が自然な順序で入力されます。 キーテーブルは次のように機能します-

キーテーブル

プレイフェア暗号のプロセス

  • まず、プレーンテキストメッセージは2つの文字(ダイグラフ)のペアに分割されます。 文字の数が奇数の場合、最後の文字にZが追加されます。 「hide money」というメッセージを暗号化したいとしましょう。 それは次のように書かれます- + HI DE MO NE YZ
  • 暗号化のルールは-
  • 両方の文字が同じ列にある場合は、それぞれの下の文字を取ります(下にある場合は上に戻ります)
  • 両方の文字が同じ行にある場合、各文字の右側の文字を取ります(右端の場合は左側に戻ります)
  • 上記の2つの規則のいずれも当てはまらない場合は、2つの文字で長方形を形成し、長方形の水平方向の反対側の角にある文字を取ります。

Playfair Cipher

これらのルールを使用すると、「チュートリアル」のキーを持つ「お金を隠す」の暗号化の結果は-

QC EF NU MF ZV

Playfair暗号の復号化は、同じプロセスを逆に実行するのと同じくらい簡単です。 受信者は同じキーを持ち、同じキーテーブルを作成し、そのキーを使用して作成されたメッセージを復号化できます。

セキュリティ値

また、置換暗号であり、単純な置換暗号に比べて破ることが困難です。 置換暗号の場合のように、暗号解読はPlayfair暗号でも同様に可能ですが、26の異なる可能性のあるアルファベットの代わりに625の可能性のあるペアの文字(25x25のアルファベット)に対してです。

Playfair暗号は、使用が迅速で特別な機器を必要としないため、主に重要ではあるが重要ではない秘密を保護するために主に使用されました。

Vigenere Cipher

この暗号方式では、テキスト文字列(たとえば、単語)をキーとして使用します。この文字列は、プレーンテキストで多くのシフトを行うために使用されます。

たとえば、キーが「ポイント」であると仮定します。 キーの各アルファベットは、それぞれの数値に変換されます。この場合、

p→16、o→15、i→9、n→14、t→20

したがって、キーは16 15 9 14 20です。

Vigenere暗号のプロセス

  • 送信者と受信者がキーを決定します。 「ポイント」が鍵だと言います。 このキーの数値表現は「16 15 9 14 20」です。
  • 送信者は、「南東からの攻撃」などのメッセージを暗号化したいと考えています。 彼は次のように平文と数字キーを配置します-

Vigenere Cipher

  • 彼は今、以下に示すように暗号文を作成するために、その下に書かれた数字で各平文アルファベットをシフトします

暗号文の作成

  • ここでは、各平文文字が異なる量だけシフトされています。その量はキーによって決定されます。 キーはメッセージのサイズ以下でなければなりません。
  • 復号化の場合、受信者は同じキーを使用し、受信した暗号文を逆順でシフトして平文を取得します。

逆順の暗号文

セキュリティ値

Vigenere Cipherは、標準のCaesar暗号を調整して、暗号文の暗号解析の有効性を減らし、暗号システムをより堅牢にすることで設計されました。 通常のシーザー暗号よりも大幅に安全です。

歴史上、政治的および軍事的機密情報を保護するために定期的に使用されていました。 暗号解読に難易度があったため、「解読不可能な暗号」と呼ばれていました。

Vigenere Cipherのバリアント

Vigenere暗号の2つの特別なケースがあります-

  • キーワードの長さは、原文のメッセージと同じです。 このケースは Vernam Cipher と呼ばれます。 通常のVigenere暗号よりも安全です。
  • Vigenere暗号は、*ワンタイムパッド*と呼ばれる完全な秘密を備えた暗号システムになります。

ワンタイムパッド

状況は-

  • キーワードの長さは、平文の長さと同じです。
  • キーワードは、ランダムに生成されたアルファベットの文字列です。
  • キーワードは1回だけ使用されます。

セキュリティ値

Shift暗号とワンタイムパッドを比較してみましょう。

シフト暗号-簡単に破る

シフト暗号の場合、メッセージ全体が1〜25の間でシフトする可能性があります。 これは非常に小さいサイズであり、ブルートフォースが非常に簡単です。 ただし、各文字に1〜26の個別のシフトがあるため、可能なキーはメッセージに対して指数関数的に増加します。

ワンタイムパッド-壊れない

ワンタイムパッドで「ポイント」という名前を暗号化します。 5文字のテキストです。 暗号文をブルートフォースで解読するには、キーのすべての可能性を試して、(26 x 26 x 26 x 26 x 26)= 26 ^ 5 ^ = 11881376回計算する必要があります。 これは、アルファベットが5つあるメッセージの場合です。 したがって、メッセージが長くなると、アルファベットが追加されるたびに計算が指数関数的に増加します。 これにより、総当たりで暗号文を解読することは計算上不可能になります。

転置暗号

これは別のタイプの暗号で、プレーンテキスト内のアルファベットの順序が再配置されて暗号テキストが作成されます。 実際のプレーンテキストのアルファベットは置き換えられません。

一例は、プレーンテキストが特定のアルファベット幅で水平に書き込まれる「単純な列転置」暗号です。 次に、暗号文は図のように垂直方向に読み取られます。

たとえば、平文は「黄金の像は11番目の洞窟にあります」であり、選択される秘密のランダムキーは「5」です。 このテキストを、キー値に等しい列数で表内で水平に配置します。 結果のテキストを以下に示します。

転置暗号

暗号文は、最初の列から最後の列まで垂直に下向きに列を読み取ることによって取得されます。 暗号文は「gnuneaoseenvltiltedasehetivc」です。

復号化するために、受信者は同様のテーブルを準備します。 列の数はキー番号と同じです。 行数は、暗号文アルファベットの合計数をキー値で除算し、商を次の整数値に丸めることによって取得されます。

次に、受信者は受信した暗号文を垂直方向に左から右の列に書き込みます。 テキストを取得するために、彼は水平方向に左から右、上から下の行を読みます。