Информация об уровне
Надеюсь, теперь уже очевидно, что шифрование с использованием повторяющихся ключей является плохой идеей. Частотный анализ может разрушить криптографию с повторением/подстановкой фиксированного ключа.
Особенностью хорошего шифрования является случайный шифртекст. Хороший шифр не должен давать никаких подсказок об открытом тексте. Поскольку открытый текст на естественном языке (в данном случае на английском) содержит шаблоны, в зависти от ключа шифрования или алгоритма шифрования добавляются “случайности”.
Современные шифры похожи на старые шифры с простой подстановкой, но улучшают “случайный” характер ключа.
Примером старого шифра, использующего сложный, случайный, большой ключ, является шифр Виженера, использующая ключ того же размера, что и открытый текст. Например, представьте, что вы и ваш доверитель договорились о ключе, используя в качестве ключа книгу “Повесть о двух городах” в блоках по 256 байт.
Шифр работает следующим образом:
Каждое сообщение с открытым текстом разбивается на блоки по 256 байт. Для каждого блока открытого текста в качестве ключа используется соответствующий 256-байтовый блок из книги, начиная с первой главы и далее. Ни одна часть книги никогда не используется повторно в качестве ключа. Использование ключа той же длины, что и открытый текст, и использование его только один раз называется “одноразовым ключом”.
Загляните в каталог krypton6. Вы найдете файл под названием ‘plain1’, блок размером 256 байт. Вы также увидите файл ‘key1’, первые 256 байт “Повести о двух городах”. Файл ‘cipher1’ - это шифрованный текст plain1. Как вы можете видеть (и попытаться), очень трудно взломать шифр без знания ключа.
Если шифр состоит из действительно случайных букв и используется только один раз, то его невозможно взломать. По-настоящему случайный одноразовый ключ невозможно взломать. Рассмотрим перехват шифротекста размером 1000 байт. Можно перебором найти ключ, но из-за случайного характера ключа вы получите все 1000 букв, которые могут быть использованы в открытом тексте. Кто знает, какой из них настоящий открытый текст?!?
Выбор ключей того же размера, что и открытый текст, непрактичен. Поэтому необходимо использовать другие методы, чтобы скрыть шифрованный текст от частотного анализа в простом подстановочном шифре. Непрактичность “бесконечного” ключа означает, что случайность, или энтропия, шифрования вносится через метод.
Мы познакомились с методом “подстановки”. Даже в современной криптографии подстановка является действенным методом. Другая техника - это “транспозиция”, или замена байтов местами.
Современные шифры делятся на два типа: симметричные и асимметричные.
Симметричные шифры бывают двух видов: блочные и потоковые.
До сих пор мы играли с классическими шифрами, аппроксимируя “блочные” шифры. Блочный шифр состоит из блоков фиксированного размера. Например, в предыдущих параграфах мы обсуждали разбиение текста и ключей на блоки по 256 байт и работу с этими блоками. Блочные шифры используют фиксированный ключ для дискретного выполнения шифров подстановки и транспонирования в каждом блоке.
Пришло время использовать потоковый шифр. Потоковый шифр пытается на лету создать “случайный” поток ключей для шифрования входящего открытого текста по одному байту за раз. Обычно байт “случайного” ключа сравнивается (xor) с открытым текстом для получения шифротекста. Если случайный ключевой поток может быть воспроизведен на стороне получателя, то дальнейшее сравнение (xor) снова приведет к получению открытого текста.
Начиная с этого примера, мы будем работать с байтами, а не с текстом ASCII, поэтому шестнадцатеричный редактор/дампер, например hexdump, просто необходим. Сейчас самое время начать учиться использовать такие инструменты, как cryptool..
В этом примере ключевой файл находится в вашей директории, однако он недоступен для чтения. Двоичный файл ‘encrypt6’ доступен. Он прочитает ключевой файл и зашифрует любое сообщение по вашему желанию, используя ключ и “случайное” число. Вы можете выполнить атаку “известный шифртекст”, введя открытый текст по вашему выбору. Задача здесь не простая, а генератор “случайных” чисел слаб.
Как уже говорилось, именно сейчас мы предлагаем вам начать использовать общедоступные инструменты, такие как cryptool, для помощи в анализе. Для начала работы вам, скорее всего, понадобится подсказка (смотрите ‘HINT1’).
Если у вас возникнут дополнительные трудности, есть подсказка в ‘HINT2’.
Пароль для уровня 7 (krypton7) зашифрован с помощью ‘encrypt6’.
Удачи!