Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

Одноразовый блокнот

Основная слабость книжного шифра (в том виде, в каком он описан выше) заключается в том, что и сообщение, и гамма являются текстами на английском языке. Мы смогли восстановить и то, и другое с помощью метода протяжки шаблонов, основанных на наиболее употребительных английских словах, которые могут встречаться в обоих текстах. Если бы гамма была текстом не на английском, а на другом языке, дешифрование далось бы криптоаналитику труднее. Но как только он установил бы, что это так, сообщения были бы им в конце концов прочитаны, так как шаблоны из других языков также можно использовать. С другой стороны, вскрытие шифра становится невозможным, если гамма представляет собой не слова обычного языка, а является просто "случайной" последовательностью букв, взятой со страницы, состоящей из "случайных знаков", которая уничтожается сразу после применения, чтобы предотвратить ее повторное использование. Такой шифр называется "одноразовый блокнот". Невозможность вскрытия этого шифра может показаться весьма смелым утверждением, но, тем не менее, это математический факт (см. M7).

Если одноразовые блокноты обеспечивают абсолютную секретность, почему они не используются всегда? В основном потому, что каждая пара людей, которым необходима связь, должна иметь в своем распоряжении отдельный блокнот, и оба должны иметь по одному из двух существующих экземпляров этого шифра. Эта задача выполнима для нескольких сотен пар, например, для послов, поддерживающих связь со своим правительством. Однако для большого числа армейских подразделений в военное время это нереально. Следует также понимать, что ситуация кардинально меняется, если "одноразовый" блокнот используется повторно. В таком случае два или несколько сообщений оказываются зашифрованными с помощью одной и той же аддитивной гаммы. Вычитая один текст из другого, гамму можно исключить, а получившийся разностный текст представляет собой разность двух незашифрованных текстов. Их можно дешифровать с помощью "протяжки шаблона" или другим подобным методом. Если одноразовый блокнот использован для зашифрования кодовых групп, а не естественного языка, то задача криптоаналитика значительно усложняется, потому что для использования приема "протяжки шаблона" он должен располагать некоторыми сведениями о самом коде; но метод и в этом случае остается по сути тем же самым.

По ряду причин, к которым относятся, в том числе, необходимость изготовления одноразовых блокнотов, криптографов очень интересуют методы получения "случайных" букв (или чисел). Некоторые из этих методов рассмотрены в следующей главе.

Глава 8. Получение случайных чисел и букв Случайные последовательности

Предположим, у нас есть длинная последовательность нулей и единиц, то есть длинная двоичная последовательность. Что мы имеем в виду, когда говорим, что последовательность "случайная"? Первым очевидным критерием случайности будет такой: по‑видимому, логично предполагать, что она должна содержать "примерно равное количество" нулей и единиц. Но что означает здесь слово "примерно"?

Если длина последовательности ровно 1000 знаков, это совсем не означает, что мы обязательно требуем, чтобы в ней было ровно по 500 нулей и единиц. Но если в ней оказывается, например, 700 нулей и 300 единиц, то мы, конечно, подумаем, что это не случайная последовательность. Где-то посередине между этими двумя крайностями лежит граница приемлемости того, что мы готовы считать случайным: к примеру, 530 нулей и 470 единиц. Но у другого человека эти границы будут другими. Предположим, однако, что последовательность состоит из 500 нулей, за которыми следуют 500 единиц. Можем ли мы считать ее случайной, поскольку и тех, и других в ней ровно по 500? Конечно же нет, поскольку в случайной последовательности каждый из четырех двузначных наборов , 00, 01, 10 и 11, по нашему мнению, должен встретиться "около 250 раз", а здесь наборы 00 и 11 встречаются по 499 раз, 01 встречается только однажды, а 10 и вовсе отсутствует. Если же последовательность прошла и этот тест, мы поставим следующий вопрос: верно ли, что все восемь трехзначных наборов 000, 001, 010, 011, 100, 101, 110 и 111 встречаются "примерно по 125 раз", и так далее. Различных требований такого типа можно сформулировать бесконечно много. Существует обширная математическая литература по тестам, применяемым для проверки последовательностей, чтобы можно было обоснованно утверждать, что она "случайная". И наоборот, существует обширная литература, содержащая описание методов получения последовательностей, которые, не являясь в точности "случайными", удовлетворяют разнообразным тестам на случайность, и поскольку считаются достаточно непредсказуемыми, находят применение в определенных ситуациях. Если не вдаваться в подробности математических критериев проверки последовательности на случайность, то для наших целей подойдет следующее определение.

Определение 8.1

Двоичная последовательность считается случайной, если, сколько бы ее знаков нам ни было известно, вероятность появления нуля вслед за ними равна 0,5.

Именно так обстоит дело при многократном бросании "симметричной" монеты: вне зависимости от предыстории вероятность выпадения "орла" при очередном бросании всегда равна 0,5, или, если говорить об отклонении от среднего, "шансы равны".

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

Определение 8.2

Последовательность десятичных знаков считается случайной, если, сколько бы ее знаков нам ни было известно, вероятность того, что следующий знак примет конкретное значение, равна 0,1.

Определение 8.3

Последовательность букв латинского алфавита считается случайной, если, сколько бы ее знаков нам ни было известно, вероятность того, что следом встретится конкретная буква, равна 1/26.