Криптология, криптография и криптоанализ

Нека преминем към теоретичните познания, от които ще се нуждаете, когато пишете окончателния проект. Нека научим повече за криптографията и нейните съставни части. И в същото време ще научим повече за шифъра, който ще използвате, когато пишете окончателния проект.

1. Криптология и нейните съставни части

Криптологията е област на знанието, която включва:

  • Криптография (наука за шифрите).

    Криптографията е свързана с криптиране на информация, за да се защити от неоторизиран достъп. Тази информация може да бъде текст, цифрово изображение, аудио сигнал и т.н. Процесът на криптиране създава криптирана version на информацията (данните), която се нарича шифрован текст or codeов текст.

  • Криптоанализ (методи за разбиване на тези шифри).

    Криптоанализът изследва методите за разбиване на шифри и How тези методи могат да бъдат приложени. С други думи, криптоанализът изпълнява обратната задача, изучавайки начини за превръщане на криптирана информация в обикновен текст.

2. Криптографски ключ

Ключът е набор от данни, които се използват за криптиране и декриптиране на информация. Способността за успешно дешифриране на информация зависи от това Howъв ключ се използва. Ако ключът бъде изгубен по няHowва причина, тогава ще бъде невъзможно да дешифрирате данните.

Размерът на криптографските ключове се измерва в битове. И това означава, че криптографският ключ има дължина . Добрата сила на криптиране се осигурява с дължина от 128 бита.

Видове криптографски ключове:

  1. Симетрични ключове (секретни ключове). Не е изненадващо, че такива ключове се използват в това, което е известно като алгоритми със симетричен ключ. Основната им цел е да извършват преки or обратни криптографски трансформации (криптиране/декриптиране, проверка на codeа за удостоверяване на съобщението).

  2. Асиметрични ключове. Те се използват в алгоритми за криптиране с асиметричен ключ (например при проверка на електронен цифров подпис).

Тъй като ще работим с алгоритъм за криптиране със симетричен ключ, няма да навлизаме в твърде много подробности тук.

3. Заместваща азбука

Заместващата азбука е пълен набор от знаци, използвани за codeиране на входни знаци.

4. Подходи към криптоанализа

Има много различни подходи и методи за криптоанализ, т.е. начини за разбиване на шифри.

Ще опишем най-простите от тях:

  1. Груба сила (or търсене с груба сила) изпробва всички възможни ключове, докато намерим правилния. Предимството на този метод е неговата простота. Недостатъкът е, че не е подходящ за шифри, включващи голям брой възможни ключове.

  2. Криптоанализ, базиран на статистически данни — при този подход ние събираме статистика за появата на различни знаци в шифрования текст и след това дешифрираме въз основа на статистика за честотата на поява на различни знаци в обикновен текст.

    Например: знаем, че честотата на буквата P в английски текстове е 1,9%. Докато анализираме шифрования текст, ние търсим символ, който се среща със същата честота и след това заключаваме, че това е буквата P.

    Недостатъкът на този подход е зависимостта му от конкретния език, автор и стил на текста.

5. Шифър на Цезар

Това е един от най-простите и добре познати методи за криптиране. Името му, разбира се, идва от император Гай Юлий Цезар, който използва този метод за тайна кореспонденция с генерали.

Шифърът на Цезар е заместващ шифър, при който всеки знак в обикновения текст се заменя със знак, който е на няHowъв постоянен брой позиции отляво or отдясно в азбуката.

Да речем, че сме задали отместването на 3. В този случай A ще бъде заменено с D, B ще стане E и т.н.

Това е минималното количество теория, от което се нуждаете, за да завършите окончателния проект. Да преминем към описанието на задачата!

Окончателен проект за модула Java Syntax. Нека напишем криптоанализатор

Вашата задача е да напишете програма, която работи с шифри на Цезар.

Нека вашата криптографска азбука се състои от всички букви от английската азбука, Howто и от препинателни знаци (. , ”” : - ! ? ИНТЕРВАЛ). Ако срещнете знаци, които не са част от нашата заместваща азбука, просто ги пропуснете.

Задължителни изисквания

Програмата трябва да има 2 режима:

  1. Криптиране/декриптиране. Програмата трябва да криптира и декриптира текст с помощта на даден криптографски ключ.

    Програмата трябва да получи път към текстов файл, съдържащ изходен текст, и да създаде файл, съдържащ съответния шифрован текст.

  2. Криптоанализ чрез атака с груба сила

    В този режим програмата трябва да разбие шифрования текст, съдържащ се във входен текстов файл.

    Ако потребителят избере груба сила, тогава програмата трябва самостоятелно да изброи възможните ключове, да избере правилния ключ и да дешифрира текста.

    Помислете Howви критерии трябва да използва програмата, за да идентифицира успешно правилния ключ. Може да се наложи да обърнете внимание на интервалите между думите or правилното използване на препинателни знаци.

Допълнителни (незадължителни) изисквания

1. Криптоанализ чрез статистически анализ

Потребителят трябва да може да избере един от двата метода за криптоанализ. Ако потребителят избере режим на статистически анализ, тогава го подканете да зареди допълнителен текстов файл в обикновен текст, за предпочитане от същия автор и в същия стил. Въз основа на съдържанието на втория файл, програмата трябва да състави статистика за появата на знаци и след това да се опита да използва тази статистика, за да извърши криптоанализ на шифрования текст.

2. Потребителски интерфейс

Направете диалогови прозорци за взаимодействие с потребителя по ваша преценка. Ако желаете, можете да използвате графичните рамки Swing и JavaFX.

Качете готовото си решение в публично Git хранorще.

Проектът ще бъде проверен, когато групата премине през него