logo
Коды и шифры

Глава 6. Коды Характеристики кодов

Разграничение между кодами и шифрами не всегда очевидно, о чем уже было сказано в главе 1, однако с уверенностью можно утверждать, что большинство кодов являются статичными, в то время как большая часть шифров может динамически изменяться. Иными словами, при зашифровании буквы или фразы только с помощью кода каждый раз получается одинаковый шифрованный текст, в то время как при зашифровании буквы или фразы с помощью системы шифрования в разные моменты времени получаются, как правило, разные шифрованные тексты. Это происходит потому, что большинство систем шифрования имеют один или несколько параметров, таких как ключевое слово или, как мы увидим далее, угловые установки колес. Через определенные промежутки времени, регулярные или нерегулярные, значения параметров изменяют, чтобы при одном и том же открытом тексте на выходе получались различные шифрованные тексты. Основной механизм, или алгоритм, получения шифрованного текста остается неизменным, меняются только параметры. Как правило, коды не содержат таких параметров, хотя код может измениться целиком - но в этом случае это будет уже другой код. На практике для этого время от времени выпускается новая кодовая книга. Согласно этому критерию шифр Юлия Цезаря следовало бы отнести к кодам, поскольку для всех сообщений шифрование одних и тех же букв происходит одинаково. Однако можно сказать, что шифр Юлия Цезаря имеет параметр, а именно сдвиг, который дает нам 25 различных вариантов шифра. И если величина сдвига каким-либо образом включена в сообщение, то есть в индикатор, то можно с полным основанием считать систему Юлия Цезаря шифром, а не кодом.

Пример 6.1

Пожалуй, наиболее известным является код, изобретенный в 1832 году Самюэлем Морзе (1791-1872) для передачи сообщений по телеграфу (хотя в истории существуют примеры гораздо более раннего использования кодов). В этом коде буквы алфавита представлены в виде комбинаций "точек" и "тире" (от одного до четырех знаков), цифры от 0 до 9 - пятью знаками, а некоторые знаки препинания - шестью знаками. Для передачи "точки" телеграфный ключ нажимают в течение примерно 1/24 доли секунды, а для передачи "тире" - в течение 1/8 доли секунды. Интервал между посылками, составляющими код буквы, равен времени передачи "точки", а интервал между буквами равен времени передачи "тире". Код Морзе был разработан таким образом, что время передачи самых частых букв английского языка оказывалось короче, чем для более редких букв. Поэтому букве E соответствует код из единственной "точки", а букве T - единственное "тире", в то время как для буквы J требуется четыре символа: "точка-тире-тире-тире". Это сделано с целью минимизировать время, необходимое для передачи сообщения. Международная версия кода Морзе для беспроволочного телеграфа приведена в таблице 6.1.

Таблица 6.1. Код Морзе

A  

E  

I  

M  

Q  

U  

Y  

B  

F  

J  

N  

R  

V  

Z  

C  

G  

K  

O  

S  

W  

D  

H  

L  

P  

T  

X  

Код Морзе, конечно же, предназначался не для обеспечения тайны переписки, а был всего лишь способом эффективной передачи сообщений. Квалифицированный телеграфист, используя этот код, мог передавать в среднем около 30 слов в минуту. Как уже упоминалось в главе 1, существуют и другие коды, разработанные для обеспечения точности передаваемых сообщений и данных, а не для сохранения тайны их содержания. К таковым относятся коды, которые используются для передачи данных с космических кораблей и для хранения информации в форме, предназначенной для компьютерной обработки. Если сохранения тайны не требуется, то код во всех деталях обычно доступен для всех желающих. Если же, кроме точности передачи, требуется еще и секретность, то, как правило, детали не публикуют, и кроме того, применяют какой-либо вид шифрования данных.