プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

情報セキュリティにおける置換暗号とは?主要な手法とその特徴を解説

置換手法(サブスティテューション技法)は、古典的な暗号化アプローチの一つです。平文(元のメッセージ)に含まれる文字を、別の文字・数字・記号に置き換えることで暗号文を作成します。平文をビット列として扱う場合は、平文のビットパターンを暗号文のビットパターンへと置き換えることになります。

主な置換暗号の種類

1. 単一文字換字暗号(モノアルファベット暗号)

平文中の1文字が、文中の位置に関係なく、常に同じ暗号文字へと置き換えられる方式です。

たとえば、平文の「A」が「G」に対応づけられている場合、平文に出現するすべての「A」は必ず「G」に置き換えられます。

例:
平文:hello
暗号文:IFMMP

この例では、平文中の2つの「l」がどちらも「M」に暗号化されているため、単一文字換字暗号であることがわかります。

2. 多表式換字暗号(ポリアルファベット暗号)

多表式換字暗号では、平文中の同じ文字であっても、出現する位置ごとに異なる文字へ置き換えられる場合があります。平文の文字と暗号文の文字の関係は「一対多」となり、たとえば「A」がある箇所では「C」に、別の箇所では「N」に置き換えられるといったことが起こります。

この方式では、平文の文字出現頻度が暗号文に反映されません。そのため、統計的解析による解読が困難になり、単一文字換字暗号よりも破ることが難しくなります。

多表式換字暗号の主な特徴は以下の通りです。

  • 一連の関連する単一文字換字規則のセットが必要となる。
  • どの変換にどの規則を適用するかを決定する鍵が必要となる。
  • 言語固有の文字頻度を隠蔽できる。代表的なものとして、プレイフェア暗号、ヴィジュネル暗号、ヒル暗号などが挙げられる。

3. ワンタイムパッド(One-Time Pad)

ワンタイムパッドは、鍵の長さを平文と同じ長さにすることで鍵の繰り返しを防ぐ方式です。さらに、各メッセージの暗号化・復号には鍵を一度しか使用せず、使用後は必ず鍵を破棄しなければなりません。この条件を厳密に満たす場合、理論上は解読不可能な暗号として知られています。

4. シーザー暗号(Caesar Cipher)

シーザー暗号は最も古くから知られている置換手法の一つです。平文の各アルファベットを、アルファベット順に3つ後ろの文字へ置き換えて暗号化します。復号の際は、暗号文の各アルファベットを3つ前の文字へ戻すことで元の平文を得られます。

5. プレイフェア暗号(Playfair Cipher)

プレイフェア暗号は「プレイフェア・スクエア」とも呼ばれ、情報を手動で暗号化するために用いられた暗号技術です。1854年にチャールズ・ホイートストン(Charles Wheatstone)によって開発されました。

この暗号は、第一次世界大戦ではイギリス軍が、第二次世界大戦ではオーストラリア軍が実際に使用しました。操作が比較的高速で、特別な装置を必要としない実用性の高さが採用の理由でした。

  1. 現代ブロック暗号の構成要素とは?Dボックス・Sボックス・循環シフトを徹底解説

    現代ブロック暗号とは現代のブロック暗号とは、mビットの平文ブロックを暗号化し、mビットの暗号文ブロックを復号する暗号方式です。暗号化および復号の処理にはKビットの鍵が使用され、復号アルゴリズムは暗号化アルゴリズムの逆操作として機能します。また、暗号化と復号の両方で同じ鍵が用いられます。ブロック暗号は、nビットの平文ブロックを入力としてnビットの暗号文ブロックを出力します。取り得る平文ブロックの組み合わせは複数存在するため、暗号化を可逆(=復号が可能)にするためには、それぞれの平文ブロックが一意の暗号文ブロックへ対応しなければなりません。このような変換は「可逆変換」または「非特異変換」と呼ばれま

  2. 情報セキュリティにおける多表式換字暗号(ポリアルファベット暗号)とは?

    多表式換字暗号(ポリアルファベット暗号)とは、複数の換字アルファベットを用いた置換に基づく暗号方式の総称です。多表式換字暗号では、平文の各文字が、文中での位置に応じて異なる文字へと暗号化されます。各文字とその置換先の関係は一対一ではなく、一対多の関係になるのが大きな特徴です。例えば、「a」という文字は、文章の冒頭では「d」に、中盤では「n」に暗号化されることがあります。多表式暗号には、元の言語の文字頻度を隠せるという重要な利点があります。そのため、攻撃者が個々の文字の出現頻度統計を利用して暗号文を解読することが非常に困難になります。最初の多表式暗号:アルベルティ暗号歴史上最初の多表式暗号は、1