暗号学、暗号学、および暗号解析

最終的なプロジェクトを作成するときに必要となる理論的な知識に移りましょう。暗号とその構成要素について詳しく学びましょう。同時に、最終的なプロジェクトを作成するときに使用する暗号についても詳しく学びます。

1. 暗号学とその構成要素

暗号学は次のような知識分野です。

  • 暗号学(暗号の科学)。

    暗号化とは、情報を暗号化して不正アクセスから保護することです。この情報には、テキスト、デジタル画像、音声信号などが考えられます。暗号化プロセスでは、暗号文またはコードテキストと呼ばれる、情報 (データ) の暗号化されたバージョンが生成されます。

  • 暗号解析(これらの暗号を解読する方法)。

    暗号解析では、暗号を解読する方法と、それらの方法がどのように適用できるかを調査します。言い換えれば、暗号解析はその逆のタスクを実行し、暗号化された情報を平文に変換する方法を研究します。

2. 暗号キー

キーは、情報の暗号化と復号化に使用されるデータの選択です。情報を正常に復号化できるかどうかは、使用されるキーによって異なります。何らかの理由でキーを紛失すると、データを復号化することができなくなります。

暗号キーのサイズはビット単位で測定されます。これは、暗号鍵には長さがあることを意味します。128 ビットの長さにより、優れた暗号化強度が提供されます。

暗号キーの種類:

  1. 対称キー (秘密キー)。当然のことながら、このようなキーは、いわゆる対称キー アルゴリズムで使用されます。その主な目的は、順方向または逆方向の暗号変換 (暗号化/復号化、メッセージ認証コードの検証) を実行することです。

  2. 非対称キー。これらは、非対称キー暗号化アルゴリズムで使用されます (電子デジタル署名を検証する場合など)。

対称キー暗号化アルゴリズムを使用するので、ここではあまり詳しく説明しません。

3. 置換アルファベット

置換アルファベットは、入力文字をエンコードするために使用される文字の完全なセットです。

4. 暗号解読へのアプローチ

暗号解読のアプローチや方法、つまり暗号を解読する方法にはさまざまな方法があります。

その中で最も単純なものについて説明します。

  1. ブルート フォース(またはブルート フォース検索) では、正しいキーが見つかるまで、考えられるすべてのキーが試行されます。この方法の利点はその単純さです。欠点は、多数の可能なキーが含まれる暗号には適していないことです。

  2. 統計データに基づく暗号解析- このアプローチでは、暗号文内のさまざまな文字の出現に関する統計を収集し、平文内のさまざまな文字の出現頻度に関する統計に基づいて復号化します。

    たとえば、英語のテキストにおける文字 P の頻度は 1.9% であることがわかっています。暗号文を分析するときに、同じ頻度で出現する記号を探し、それが文字 P であると結論付けます。

    このアプローチの欠点は、特定の言語、作成者、テキストのスタイルに依存することです。

5.シーザー暗号

これは、最も単純で最もよく知られている暗号化方法の 1 つです。その名前は、もちろん、将軍と秘密裏に通信するためにこの方法を使用した皇帝ガイウス ジュリアス カエサルに由来しています。

シーザー暗号は、平文内の各文字を、アルファベットの左または右に一定数だけ離れた位置の文字に置き換える置換暗号です。

シフトを 3 に設定するとします。この場合、A は D に置き換えられ、B は E になります。

これは、最終プロジェクトを完了するために必要な最小限の理論です。タスクの説明に移りましょう。

Java 構文モジュールの最終プロジェクト。暗号解析器を書いてみましょう

あなたの仕事は、シーザー暗号を使用して動作するプログラムを作成することです。

暗号アルファベットは、英語のアルファベットのすべての文字と句読点 (. 、”” : - ! ? SPACE) で構成されます。置換アルファベットに含まれていない文字があった場合は、スキップしてください。

必須要件

プログラムには 2 つのモードが必要です。

  1. 暗号化/復号化。プログラムは、指定された暗号キーを使用してテキストを暗号化および復号化する必要があります。

    プログラムは、ソース テキストを含むテキスト ファイルへのパスを受け取り、対応する暗号文を含むファイルを作成する必要があります。

  2. ブルートフォース攻撃による暗号解読

    このモードでは、プログラムは入力テキスト ファイルに含まれる暗号文を解読する必要があります。

    ユーザーがブルート フォースを選択した場合、プログラムは可能なキーを個別に列挙し、正しいキーを選択してテキストを復号化する必要があります。

    正しいキーを正しく識別するためにプログラムがどのような基準を使用する必要があるかを考えてください。場合によっては、単語間のスペースや句読点の正しい使用に注意する必要があります。

追加(オプション)要件

1. 統計解析による暗号解読

ユーザーは 2 つの暗号解析方法のうち 1 つを選択できる必要があります。ユーザーが統計分析モードを選択した場合は、追加のテキスト ファイル (できれば同じ作成者、同じスタイル) を平文でロードするようユーザーに求めます。2 番目のファイルの内容に基づいて、プログラムは文字の出現に関する統計をコンパイルし、これらの統計を使用して暗号文の暗号解析を実行する必要があります。

2. ユーザーインターフェース

ユーザーと対話するためのダイアログ ボックスをあなたの裁量で作成します。必要に応じて、Swing および JavaFX グラフィック フレームワークを使用できます。

完成したソリューションをパブリック Git リポジトリにアップロードします。

グループがプロジェクトを実行するときにプロジェクトがチェックされます