Немного об основах криптографии

в 20:06, , рубрики: Песочница, метки: ,

Определение и смысл

Шифрование — это мощная алгоритмическая техника кодирования. Оно защищает файлы вашего компьютера и передаваемую по сети информацию от глаз других пользователей, шпионов и всех остальных, не имеющих права доступа к такой информации. Выполняется шифрование с помощью преобразования данных к такой форме, в которой они могут быть прочитаны только с помощью специального ключа де шифрования.

Шифрование снижает опасность несанкционированного доступа. Криптография и шифрование не занимаются: защитой от обмана, подкупа или шантажа законных абонентов, кражи ключей и других угроз информации, возникающих в защищенных системах передачи данных. Криптография — одна из старейших наук, ее история насчитывает несколько тысяч лет.

Пример шифрования

Разберём некоторые примеры шифрования:
Один из самых простых способов закодировать слово- это побуквенное кодирование. В этом кодировании есть свой алфавит- каждая буква или другой набор символов соответствует одной букве обычного алфавита.
Самые известные из них:

  • Метод Атбаш: некоторые фрагменты библейских текстов зашифрованы с помощью шифра, который назывался Атбаш. Правило шифрования состояло в замене i-й буквы алфавита буквой с номером n-i+1, где n — число букв в алфавите. Происхождение слова Атбаш объясняется принципом замены букв. Это слово составлено из букв Алеф, Тав, Бет, Шин, то есть первой и последней, второй и предпоследней букв древнесемитского алфавита.
  • Метод Цезаря: цифр Цезаря реализует кодирование фразы путем «сдвига» всех букв фразы на определенное число n (в оригинальном шифре Цезаря число n равнялось 3). Если буква кодируемой фразы имеет в алфавите позицию j, то она в «шифровке» будет заменяться буквой, находящейся в алфавите на позиции j + n.

Методы расшифровки

Для дешифрования сообщения нужно зачастую просто повторно применить к нему этот же алгоритм. У всех у них разный принцип шифрования, но у всех них есть общие черты — метод взлома.
Побуквенное кодирование прекрасно иллюстрирует понятие криптостойкости. Криптостойкость — способность шифра «сопротивляться» взломам этого шифра посторонними лицами. Шифр криптостойкий только тогда, когда он не найден простой способ декодировки, то есть единственным способом разгадать этот шифр является полный перебор вариантов.
Есть несколько типов атак на шифрованный текст:

  • Атака по словарю. Атака на систему защиты, использующая метод полного перебора предполагаемых шифров, используемых для защиты информации, осуществляемого путем последовательного пересмотра всех слов определенного вида и длины из словаря с целью последующего взлома системы и получения доступа к секретной информации.
  • Полный перебор (brute-force). Метод решения задачи путем перебора всех возможных вариантов. Сложность полного перебора зависит от количества всех возможных решений задачи. Если пространство решений очень велико, то полный перебор может не дать результатов в течение нескольких лет или даже столетий.

Выше приведены не все способы, но они часто и много где встречаются.

Пример атаки по словарю

Пусть перед нами зашифрованное сообщение по типу метода Атбаш.
Так как одинаковые символы не могут иметь разные значения и у нас есть деление на слова, то атака по словарю самое уместное для побуквенного де- кодирования.

Подготовка

Если нет словаря, то нужно сделать свой: берём любое произведение, разбиваем строки на слова, потом проверяем, есть ли это слово в файле. Если нет, то добавляем в словарь, если нет, то пропустим. При подготовки лучше всего разбить словарь на отдельные файлы, объединённые одной первой буквой. Это облегчит перебор слов внутри всего словаря.

Приступаем!

Теперь начнём с первого слова (лучше его разбирать отдельно). Переберём весь словарь (побуквенно все файлы). Если слово можно зашифровать тем же количеством неизвестных символов, длина нашего слова равна длине искомого и символы отличаются только внешним видом (замена символов или наборов символов), то это возможно наше слово. Запоминаем все такие слова в отдельный файл.

Что делать дальше?

Для остального количества неизвестных слов поступаем так:

  • Берём расшифрованное раннее слово и для него пишем «алфавит»- каждому набору символов только свой один нужный символ, согласно данному слову.
  • Проверяем по всем словарям возможное шифрование текущего слова (находим слово по тому же принципу, что и для первого).
  • Исправим слово предыдущими словами и получим новое или тоже самое слово (нужно учесть, что один обычный символ шифруется однозначно).
  • Если взятое слово из словаря равно получившемуся слову, то это тоже возможная расшифровка. Её тоже сохраняем в файл.
  • И так далее, пока не перебрали все заданные в шифрованном тексте слова.
  • Повторяем для разных вариаций шифрования первого слова.
Вывод

Побуквенное шифрование этим алгоритмом быстро взламывается и она очень нестойка для больших файлов. Но для малых строк это весьма сложный для точной расшифровки метод кодирования.

Определения взяты с сайта Википедии

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js