Криптография и компьютерная безопасность (4 часть)


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

Традиционно людьми, больше всех нуждающимися в секретности, были военные и дипломаты. В их работе часто необходимы элементы неожиданности, а неожиданность такого рода всегда предполагает секретность. Что касается обычных людей, то какую бы потребность в секретности они не испытывали, это оставалось их личной проблемой и редко выносилось на публичное обсуждение; любовники и воры всегда сами, как могли обеспечивали свои потребности в секретной коммуникации. Это положение дел мало изменилось до самой середины XIX века - как раз примерно в то время для усовершенствования техники тайного письма были привлечены научные методы и способы мышления. Несмотря на это вплоть до нашего столетия способы, использованные для секретной коммуникации, продолжали оставаться процедурами, выполняемыми с помощью карандаша и бумаги.

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

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

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

В современных межмашинных сетях того типа, который нужен для создания хранилищ данных, понятие секретности подразумевает нечто больше, чем просто сокрытие сообщений от посторонних. Хранилища данных включают в себя как составную часть терминал-компьютерные сети. Линии связи, соединяющие терминалы с компьютерными центрами полностью открыты не только для перехвата информации, но и для ее преднамеренного изменения и искажения. Таким образом, в добавок к и так достаточно очевидным аспектам секретности данных, необходимо обеспечить адекватную защиты от возможных злоупотреблений в системе. Простое обнаружение ошибок не может решить эту задачу. Здесь требуется, чтобы сама система сделала исключительно маловероятным то, что не допущенный к ней, но хитроумный и изощренный человек мог бы войти и прочитать либо исказить данные, или выполнить команды в такой системе.

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

Давайте начнем рассмотрение вопроса с самого элементарного факта относительно шифров: вся криптография сводится к подстановкам. В своей простейшей форме подстановка может быть задана с помощью таблицы, как показано на следующей ниже иллюстрации. В левом столбце таблицы перечислены обычные буквы алфавита, из которых составлен открытый текст; в правой части - их эквиваленты, задаваемые шифром, и являющиеся подставляемыми значениями. Дилетанты часто бывают обескуражены огромным количеством способов выполнить такую подстановку или перестановок алфавита. Для латинского алфавита, содержащего 26 букв, существует 123...26 способов записать один алфавит подстановки. (Такое произведение называется 26-"факториал" и записывается 26! Факториал любого числа n! есть произведение всех целых чисел от 1 до n.)

Число n! возможных перестановок таблицы с n входами составляет число возможных "ключей". В данном случае, 26! - это очень большое число, больше 41026. Но несмотря на это любая простая алфавитная подстановка легко может быть вскрыта статистическим анализом, основанным на определении частот символов в тексте. Если буква Q встречается чаще чем любая другая буква в достаточно длинном отрезке шифротекста, аналитик может быть вполне уверен, что эта буква заменяет E, букву, которая чаще других встречается в текстах на английском языке.

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

Это и в самом деле может быть сделано. Двоичная система счисления, содержащая ровно две цифры, 0 и 1, идеально подходит для криптографического преобразования данных компьютерами. Используя n двоичных цифр можно записать 2n различных двоичных кодов. Так, используя блок из 5 двоичных цифр, можно записать 25 или 32 различных комбинаций, - более чем достаточно для того, чтобы закодировать 26 букв алфавита (см. следующую ниже иллюстрацию). Если мы хотим поименовать или пометить большее количество элементов, нам придется увеличить наш запас двоичных чисел, просто увеличивая размер цифрового блока. Каждый раз, когда мы увеличиваем размер блока на одну цифру, мы удваиваем число возможных кодов. Следовательно, шестицифровой код обеспечивает 26 или 64 различных кодов, или достаточно для того, чтобы включить десятичные цифры, знаки пунктуации и т.д..

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

Хорст Файстель, перевод: Андрей Винокуров http://www.i2r.ru/static/567/out_16511.shtml

Обновлено: 11.03.2015