Коды и их назначение.
К шифрам не относятся и коды — системы условных обозначений или названий, применяемых при передаче информации в дипломатии, коммерции и военном деле. Кодирование часто применяется для повышения качества передачи. Хорошо известны и широко используются коды, исправляющие ошибки при передаче сообщений по каналам связи или хранении данных в памяти ЭВМ. Так, код Хемминга хорошо себя зарекомендовал себя в аппаратуре оперативной памяти ЭВМ СМP4. Другой многочисленный класс кодов представлен средствами сжатия данных, наподобие программ архивации ARC, ARJ, ICE, ZIP и сжатия дисков на IBM PC. Употребление этих кодов вызвано не секретностью, а стремлением сэкономить на стоимости передачи или хранения сообщения. Файлы текстов, изображений и программ содержат информацию с сильно отличающимися свойствами и программы их кодирования должны быть разными. Если архиватор хорошо сжимает текст, вовсе не значит, что он так же хорош для сжатия изображений или других данных.
Для текстовых файлов чаще других употребляется кодировка Хаффмена, заключающаяся в том, что символы текста заменяются цепочками бит разной длины. Чем чаще символ, тем короче обозначающая его цепочка. Рассмотрим пример кодирования Хаффмена текста МАМА МЫЛА РАМЫ с приведенной ниже таблицей кодирования.
Получим сообщение: 0100010010001101111001001100001101.
Легко теперь подсчитать, что поскольку исходный текст состоит из 14 символов, то при кодировке ASCII он занимает 112 бит, в то время как кодированный по Хаффмену лишь 34 бита. При кодировании Лемпела и Зива, представляющим собой развитие метода Хаффмена, кодируются не символы, а часто встречаемые последовательности бит вроде слов и отдельных фраз. Текстовые файлы сжимаются в 2-3 раза, но очень плохо, всего лишь на 10-15% сжимаются программы. Нередко используют готовые кодовые таблицы, так как статистические свойства языка сообщения обычно хорошо известны и довольно устойчивы.
Несколько особняком стоит сжатие звуковой информации, расширяющее мультимедийные возможности аппаратуры и программ. Кодирование Лемпела и Зива сжимает объем звуковой информации всего лишь на 10%. Несомненно, что для более эффективного ее уплотнения нужны специальные алгоритмы, учитывающие физическую природу звука. Практически все алгоритмы кодирования звуковой информации используют два основных приема: кодирование пауз между отдельными звуками и дельта-модуляцию. При записи человеческого голоса важнее кодирование пауз, так как не только фразы, но и слова разделены достаточно длительными перерывами. Эффективность такого кодирования может быть очень высока, но платить за нее приходится потерей четкости высоких коротких звуков, например, С и Ц. Это легко наблюдать при передаче естественной речи по голосовому модему. А вот дельта-модуляция чаще применяется для качественной записи музыки и очень похожа на замену представления чисел в формате фиксированной точки на формат с плавающей запятой. Потери от нее выражаются в некоторой приглушенности звуков, но мало искажаются тона.
Однако самая большая работа по кодированию ведется над изображениями, скажем, при передаче факсов. Если бы образ стандартного машинописного листа формата А4 не был бы сжат, то его передача даже при низком разрешении заняла около часа. В самых распространенных факсах, принадлежащих группе III по классификации Международного консультативного комитета по телеграфии и телефонии, использованы фиксированные таблицы кодировки. Похожую схему кодирования дает хорошо известный формат представления графических файлов PCX. В нем очередной байт кода может означать либо счетчик повторений, если он начинается битами 11, либо байтом точек исходного изображения. Число повторений задается младшими 6 битами байта повторения, то есть имеет значение до 63. Изображение чистого листа бумаги при этом будет сжато больше чем в 30 раз. Более сложные схемы сжатия дают форматы обмена и хранения графической информации GIF и TIF. Они кодируют уже не строки точек изображения, а полоски строк и тем самым достигают большего сжатия. Следует предостеречь читателей от попыток сжатия любой информации с помощью программ, оперирующих с изображениями. Ряд алгоритмов эффективного сжатия изображений, вроде JPEG могут искажать информацию, что почти незаметно в изображениях, но фатально для программ и числовых данных. Именно за счет некоторой «чистки» исходного сообщения JPEG удается достигать сжатия в 100 раз и больше. Без сжимающего объем сообщения кодирования невозможно было создать и приобретающий все большую популярность видеотелефон. Для использования в нем МККТТ ( MKKTT — международный консультативный комитет по телеграфии и телефонии) рекомендовал стандарт Н.261 — первую систему сжатия изображения.
Порой возникают затруднения в пересылке программ, ключей, шифротекста и других бинарных файлов по системам связи, допускающим лишь текстовые сообщения, например, в почте UNIX. Для этого файлы превращают в текст формата RADIXP50. Шифровку разбивают на группы по 3 байта из которых формируют 4 группы по 6 бит. Каждую группу из 6 бит, принимающую значения от 0 до 63, превращают в печатный символ ASCII в соответствии с нижеприведенной таблицей. Это увеличивает длину бинарного сообщения лишь на треть, в то время как привычная для программистов шестнадцатеричная запись удваивает его. Так, слово МОСКВА дает код AuMY886U. Если длина сообщения не кратна 3, то при кодировании в конец его добавляют нули. Точную длину сообщения приходится приписывать в конце. Вот как выгладит открытый пароль Филиппа Циммермана, переданный по Интернет в коде RADIXP64:
——BEGIN PGP MESSAGE——_
Version: 2.6
iQBVAgUALeF27VUFZvpNDE7hAQFBFAH/Y
OQ52xOCH5yKSG/HgSV+N52HSm21zFEw
Ocu5LDhYxmOILr7Ab/KdxVA6LMIou2wKtyo.
ZVbYWXPCvhNXGDg7 4Mw==
=wstv
——END PGP MESSAGE——_
Расчет на недоступность для посторонних смысла кодированного сообщения может окончиться конфузом. Напомним, что в стихотворении «Моральный кодекс» Киплинга описан телеграфист, не подумавший о вседоступности кода и приревновавший в разлуке свою молодую жену. Офицеры штаба заметили кодовую сигнализацию и вот что случилось:
Молчит придурок адъютант, молчит штабная свита,
В свои блокноты странный текст все пишут деловито.
От смеха давятся они, читая с постной миной:
«Не вздумай с Бэнгзом танцевать — распутней нет мужчины!»
Первый коммерческий код для уменьшения длины и стоимости телеграмм ввел в 1845 году Френсис Смит, компаньон Морзе. В конце XIX века Клаузен первым предложил для этой цели код АВС, a Маркони несколько позже первый многоязычный код. Сейчас аналогичных кодов тьма-тьмущая и все они представляют собой замену отдельных слов или фраз группами цифр или букв. Традиционно связисты, а не только шпионы, для этого обычно используют пятизначные группы букв или цифр, так как группы проще записывать. Широко применяется по настоящее время в связи и «Международный свод сигналов», который последний раз был пересмотрен в 1969 году.
Хотя криптологи различают шифры и коды, потому что для практических работ это разные системы, но коды представляют собой шифр простой замены слов. Обычно кодовые таблицы состоят из словаря, где каждому слову присвоен кодовый эквивалент. Фактически требуются две кодовые таблицы. Для кодирования применяется таблица алфавитно упорядоченная по словам, а для декодирования алфавитно упорядочивают коды — иначе поиск в таблице становится необычайно трудоемким. Для применяющегося в коммерции телеграфного кода Маркони на английском языке начала этих таблиц выглядят так:
В этом коде использованы не все возможные группы, например, нет группы ААААА. Это сделано для удобства их чтения и повышения устойчивости от отдельных ошибок. Для достижения секретности коды приходится шифровать. Например, сначала можно закодировать сообщение кодом Маркони, а потом применить шифр.
Коды часто похожи на шифры и это обстоятельство породило массу курьезных случаев. До революции был сорван шахматный турнир по переписке Петербург-Москва, так как непонятные жандармам почтовые карточки со знаками записи ходов перехватывались до тех пор, пока не попали начальнику, наложившему резолюцию:«Шахматы-с!» Не исключено, что среди репрессированных в советское время было немало любителей игры на гитаре, пытавшихся вести запись своих произведений необычным для музыкантов цифровым методом. Любопытно, каким образом могло НКВД отреагировать на срочную телеграмму за рубеж такого содержания: SER VAL METLYSARGARGPHELEU. Удалось бы доказать подозреваемому в шпионаже, что в телеграмме дан ряд аминокислот в сердечной мышце свиньи? Да и обнаруженный при аресте в записной книжке Н. И. Вавилова текст K3C7AO+3G5 вряд ли был бы воспринят следователем за формулу строения цветка. Интересно упомянуть о телефонном коде, применяемом некоторыми зарубежными фирмами. Так, встретив, номер телефона технической службы (1)206PDIDPDEMA, не надо смущаться — это телефон корпорации Aldus в Сиэтле. Кодовая таблица соответствия букв цифрам показана ниже.