Crypto
はじめにCaesar
Caesar暗号は、最も早く知られており、最も単純な暗号の一つです。 これは、平文の各文字がアルファベットの下の特定の数の場所に”シフト”される置換暗号の一種です。 たとえば、シフトが1の場合、AはBに置き換えられ、BはCになり、というようになります。 この方法は、明らかに彼の将軍と通信するためにそれを使用したJulius Caesarにちなんで命名されています。
Vigenère暗号のようなより複雑な暗号化スキームは、暗号化プロセスの要素の一つとしてCaesar暗号を採用しています。 広く知られているROT13の”暗号化”は、オフセットが13の単純なCaesar暗号です。 Caesar暗号は基本的に通信セキュリティを提供しておらず、手でも簡単に壊れることができることが示されます。
Example.
暗号化されたメッセージをある人から別の人に渡すには、送信者が暗号化し、受信者が復号化できるように、最初に両方の当事者が暗号 Caesar暗号の場合、キーは暗号アルファベットをシフトする文字数です。ここでは、caesar暗号に関連する暗号化と復号化の手順の簡単な例です。
暗号化するテキストは”城の東の壁を守る”で、シフト(キー)は1です。
plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf
平文の各文字がアルファベットの上にどのようにシフトされているかを簡単に確認できます。 復号化は、-1のオフセットを使用することによって、同じように簡単です。
plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza
明らかに、別のキーが使用されている場合、暗号アルファベットは異なる量をシフトされます。P>
数学的な説明§
ここで、kは各文字に適用されるキー(シフト)です。 この関数を適用した後、結果は数字になり、文字に変換する必要があります。 復号化関数は次のとおりです。
Caesar暗号のJavaScriptの例shift
Plaintext
shift:
Ciphertext
その他の実装§
さまざまなプログラミング言語のCaesar暗号コードについては、実装ページを参照してください。pythonで独自のメッセージを暗号化するには、pycipherモジュールを使用できます。 インストールするには、pip install pycipherを使用します。 Caesar暗号(または別の暗号)でメッセージを暗号化するには:
Cryptanalysis§
この暗号を自動的に解読する方法については、Caesar暗号の暗号解読を参照してください。暗号解読は、コードと暗号を破る技術です。
暗号解読は、コードと暗号を破る技術です。
Caesar暗号は、おそらくすべての暗号の中で最も簡単に破ることができます。 シフトは1と25の間の数値でなければならないので(0または26は変更されない平文になります)、それぞれの可能性を試して、どちらが読みやすいテキ 暗号文の一部が何であるかを知っている場合、または一部を推測できる場合は、すぐにキーを見つけることができます。
これが不可能な場合、より体系的なアプローチは、暗号テキスト内の文字の頻度分布を計算することです。 これは、各文字が表示される回数を数えることで構成されています。 自然な英語のテキストは、ヘルプクラックコードを使用することができ、非常に明確な分布を持っています。 この分布は次のとおりです:
これは、文字eが最も一般的であり、時間のほぼ13%に表示されるのに対し、zは時間の1% シーザー暗号の適用は、これらの文字の頻度を変更せず、単にビットに沿ってシフトするだけです(1シフトの場合、最も頻繁な暗号文の文字はfになります)。 暗号解析者は、暗号文の周波数を自然な英語の周波数と密接に一致させるシフトを見つけ、そのシフトを使用してテキストを復号化するだけです。 この方法は、簡単に手でCaesar暗号を破るために使用することができます。それでも問題が解決しない場合は、置換暗号ページの暗号解読セクションを試してください。
置換暗号で動作するすべての戦略は、Caesar暗号でも動作します(ただし、Caesar暗号で動作するメソッドは、必ずしも一般的な置換暗号では動作しません)。
コンピュータ上でうまく動作する方法のために、我々は25の可能な復号化のうち、最も英語のテキストのように見えるかを把握する方法が必要です。 Quadgram統計を使用してそれを破る方法のチュートリアルについては、Caesar暗号の暗号解読を参照してください。 英語のテキストである可能性が最も高い復号化をもたらすキー(またはシフト)は、おそらく正しいキーです。 もちろん、暗号文が多いほど、これが真実である可能性が高くなります(これは、上記の頻度アプローチを含むすべての統計的尺度の場合です)。 したがって、使用される方法は、暗号文を取得し、各キーで復号化してから、どの復号化が最適に見えるかを確認することです。 暗号解読のこの単純化された方法は、Caesar暗号やrail fence暗号などの非常に単純な暗号でのみ機能し、わずかに複雑な暗号であっても、それらすべてをチェッ
References§
- Wikipediaは、このアルゴリズムの暗号化/復号化プロセス、歴史、暗号解読の良い説明を持っています
- Simon Singhの”The Code Book”は、暗号とコードの優れた紹介であり、caesar暗号に関するセクションが含まれています。
- Singh,Simon(2000). コードブック:古代エジプトからQuantumCryptographyへの秘密の科学。 ISBN0-385-49532-3.