ЗАЩИТА ИНФОРМАЦИИ ПРИ КОДИРОВАНИИ И ПЕРЕДАЧЕ ДАННЫХ
------------------------------------------------------------------------
БАЗОВЫЕ СРЕДСТВА АУТЕНТИФИКАЦИИ ПРИ ЦИФРОВОЙ ПЕРЕДАЧЕ ДАННЫХ:
------------------------------------------------------------------------
Введение
С позиций информационных систем нас интересует защита информации как при кодировании, так и при передаче данных.
Решение этих вопросов придется искать в специальном разделе математики и информатики, который называют криптографией. Часто под этим термином подразумевается обычное кодирование, однако область криптографии не ограничена лишь теорией шифрования данных. Она также охватывает вопросы, связанные с подменностью цифровых данных - как проверить достоверность цифровых данных и как по аналогии с рукописной подписью на бумаге проставить визу на электронных документах, имея в распоряжении лишь последовательности нулей и единиц. Мы рассматрим ключевые понятия аутентификации цифровой информации - от простейших методов верификации целостности цифровых данных до рассмотрения проекта государственного стандарта США - Digital Signature Standard, а также основные правила оформления цифровой подписи.
Контрольные суммы
Наиболее простой способ проверки целостности данных, вводимых в ИС или передаваемых в цифровом представлении, - это метод контрольных сумм. Под контрольной суммой понимается некоторое значение, рассчитанное путем сложения всех чисел из входных данных. Если сумма всех чисел превышает максимально допустимое значение, заранее заданное для этой величины, то величина контрольной суммы равна коэффициенту полученной суммы чисел - то есть это остаток от деления итоговой суммы на максимально возможное значение контрольной суммы, увеличенное на единицу. Если сказанное записать в виде формулы, то для расчета контрольной суммы будет использоваться следующее выражение:
Checkssum = Total / (MaxVal + 1),
где Total - итоговая сумма, рассчитанная по входным данным, и MaxVal - максимально допустимое значение контрольной суммы, заданное заранее.
Довольно часто в АСУП применялось деление по модулю 11.
Пример. Классификатор СЭВ запасных частей ЕС ЭВМ.
Метод контрольных сумм - это наиболее простая форма цифровой идентификации (digital fingerprint); то есть величина, полученная в результате подсчета содержимого некоторых других данных, изменяется при коррекции данных, на основе которых он получен. Использование алгоритма контрольных сумм началось еще на заре вычислительной техники и до сих пор он является базовым при проверке на ошибки в некоторых версиях широко распространенного протокола передачи данных XMODEM.
Недостаток метода контрольных сумм заключается в том, что хотя несовпадение значений этих сумм служит верным доказательством, что рассматриваемый документ подвергся изменению, равенство сравниваемых значений еще не дает гарантии, что информация осталась неизменной. Можно произвольным образом изменить порядок следования чисел в документе (но можно брать не сумму, а конкатенацию чисел или вообще цифровой код документа – тогда переставить не удастся
!), а контрольная сумма при этом сохранит прежнее значение. И что еще хуже - можно изменить отдельные числа в документе и подогнать остальные таким образом, чтобы обеспечить прежнее значение контрольной суммы. При использовании для контрольных сумм 8-разрядной переменной вероятность того, что контрольные суммы двух совершенно случайно выбранных последовательностей данных будут одинаковы, равна 1/256. При увеличении длины переменной под контрольную сумму до 16 или 32 разрядов, вероятность совпадений уменьшается, однако этот механизм все равно слишком чувствителен к возможным ошибкам или злонамеренным действиям, чтобы обеспечить высокую степень доверия к представленным данным.Контроль CRC
Более совершенный способ цифровой идентификации некоторой последовательности данных - это вычисление контрольного значения ее циклического избыточного кода (cyclic redundancy check - CRC). Алгоритм контроля CRC уже в течение длительного времени широко используется в системах сетевых адаптеров, контроллеров жесткого диска и других устройств для проверки идентичности входной и выходной информации. А также этот механизм применяется во многих из ныне существующих коммуникационных программ для выявления ошибок при пакетной передаче по телефонным линиям связи.
Механизм CRC основан на полиномиальном распределении, где каждый разряд некоторой порции данных соответствует одному коэффициенту большого полиномиального выражения.
Ключевым принципом вычислений для механизма CRC является то, что операции умножения и деления этих полиномов выполняются точно так же, как с обычными числами. Если некоторый "магический" полином (коэффициенты которого получены в соответствии с используемым алгоритмом CRC) разделить на полином, представляющий какую-то последовательность данных, то в результате получается полином-частное и полином-остаток. Второе из этих значений служит основой для создания контрольного параметра CRC. Так же, как и для контрольных сумм, параметром CRC не требуется много места (обычно их длина составляет 16 или 32 разряда); однако по сравнению с ними, надежность обнаружения небольших изменений входной информации теперь значительно выше. Если в некотором огромном блоке данных лишь один разряд стал другим, то и контрольный параметр CRC со 100-процентной вероятностью также будет иметь другое значение. Если же изменятся два разряда, то вероятность обнаружения ошибки при длине параметра CRC в 16-разрядов, составляет более 99,99%. В отличие от контрольных сумм метод CRC сможет распознать всякие фокусы с перестановкой двух байт либо с добавлением 1 к одному из них и вычитанием 1 из другого.
Механизм CRC чрезвычайно полезен для проверки файлов, загружаемых из сетевых информационных служб
. Если кто-то сообщает мне, что переданная ему через сеть программа вдруг без видимой причины перестает работать, то первым делом я прошу его создать ее архивный файл с помощью программы ZIP и затем вызвать программу ZIP и набрать команду File Properties для просмотра свойств созданного .ZIP файла. Среди прочих параметров он увидит также 32-разрядное значение параметра CRC (CRC-32), рассчитанное архиватором ZIP для несжатого файла. Если вычисленное значение параметра CRC для утилиты не совпадает со значением для исходного варианта файла, значит, при загрузке его произошла необнаруженная ошибка передачи данных (такое иногда случается).Можно организовать собственный контроль CRC для идентификации файлов; для этого потребуется переписать через службу PC Magazine Online файл CRC.COM. (Он находится в библиотеке Tutor форума Utilities/Tips службы ZD Net/CompuServe и в файле V15N07.ZIP на нашем сервере Internet по адресу http://www.pcmag.com). CRC.COM - это утилита, которой в качестве входного параметра указывается имя файла. Исходя из содержащейся в нем информации она рассчитывает 32-разрядное значение контроля CRC. В программе использован известный алгоритм расчета параметра CRC-32, применяемый PKZIP и сетевых адаптерах Token-Ring фирмы IBM. Этот алгоритм отличается высоким быстродействием и обработает файлы любого размера. Теперь при пересылке файлов через модем утилита
CRC.COM сможет оказать вам неоценимую услугу - дать уверенность, что информация передана без искажений.Получив по сети файл CRC.COM, первым делом проверьте сам этот файл, набрав в строке команду:
CRC CRC.COM
Если полученное значение параметра CRC не равно 86C23FA, значит, файл следует загрузить снова.
Алгоритмы хэширования
Проблема в том, что даже контроль с помощью 32-разрядного значения CRC обладает определенными недостатками - он устойчиво обнаруживает случайные изменения во входной информации (например, возникающие в результате сбоев при передаче данных), однако недостаточно надежен в случае преднамеренных действий. Если для идентификации некоторого файла вы используете его 32-разрядный параметр CRC, то для кого-то не так уж сложно с помощью компьютера создать совершенно другой файл с тем же значением CRC.
Более высокой надежности, чем при контроле CRC, можно достичь при использовании алгоритмов хэширования. Так как отличительная особенность любого хорошего алгоритма хэширования заключается в том, что генерируемые с его помощью значения настолько уникальны и трудноповторимы, что вряд ли кто-то даже с помощью серии суперкомпьютеров Cray и затратив колоссальное количество времени, сможет найти два набора входных данных, имеющих одинаковые значение хэширования. Как правило, эти параметры занимают не менее 4байт (128 разрядов). Чем больше их длина, тем труднее воспроизвести входной набор данных, то есть найти последовательность, обеспечивающую соответствующий результат.
Среди алгоритмов хэширования, применяемых для кодирования, наибольшей известностью пользуются два: алгоритм MD5 (message digest), разработанный профессором Массачусетского технологического института Роном Ривестом (Ron Rivest) (один из авторов популярной криптосистемы с ключом общего пользования RSA), и алгоритм Secure Hash Algorithm (SHA), созданный совместными усилиями Национального института по стандартизации и технологическим разработкам (NIST) и Управления национальной безопасности США (NSA). Результат анализа последовательности входных данных с помощью алгоритма MD5 - 128-разрядный цифровой идентификатор, а при использовании алгоритма SHA - 160-разрядное значение. Учитывая, что пока никому не удалось подобрать ключ ни к одному из названных алгоритмов, можно считать, что восстановление исходных данных по некоторому хэшированному значению, являющемуся результатом работы алгоритма SNA либо по некоторому коэффициенту алгоритма MD5 нереально. Таким образом, если вам отправили какой-то файл и идентификатор, полученный в результате применения к нему алгоритма MD5 или SHA, и если вы выполнили с ним тот же алгоритм хэширования и ваш результат совпал с исходным значением, определенно можно быть уверенным, что принятый вами файл не подвергся искажениям.
Цифровая подпись и криптосистемы с ключом общего пользования
Если использовать алгоритмы хэширования вместе с криптосистемами с ключом общего пользования, то можно создать цифровую подпись, гарантирующую подлинность полученного набора данных, аналогично тому, как рукописная подпись, подтверждает аутентичность напечатонного документа. Криптосистема с ключом общего пользования - это метод, позволяющий осуществлять кодирование и декодирование информации, с помощью двух исходных ключей
: ключа общего пользования, свободно передаваемого всем желающим, и личного ключа, известного только его владельцу.Смысл ключа и пароля примерно одинаков. Допустим, Петр желает, чтобы Олег мог отправить ему зашифрованный документ, и оба они не хотели бы рисковать, передавая пароль или ключ по линиям связи, так как в этом случае он может быть кем-то перехвачен. Тогда Петр может передать Олегу свой ключ общего пользования. Используя этот ключ, Олег шифрует документ и отправляет его Петру. Петр дешифрует документ с помощью своего личного ключа. Это единственный ключ, с помощью которого можно восстановить документ, зашифрованный с применением ключа общего пользования, принадлежащего Петру. Тот факт, что ключ общего пользования Петра может стать кому-то известен, не имеет особого значения, потому что он абсолютно бесполезен для расшифровки документа. А личный ключ, известный одному лишь Петру, по открытым линиям связи не передавался; теоретически Петр хранит его только в собственной памяти и наоборот, работа других криптосистем с ключом общего пользования строится на обратном принципе: Олег шифрует документ с помощью своего личного ключа и передает свой ключ общего пользования Петру, с помощью которого тот мог бы расшифровать этот документ. Ведь послать сообщение может только обладатель личного ключа. Существующие ныне криптосистемы с ключом общего пользования, такие, например, как система RSA (сокращение, составленное из первых букв фамилий трех создателей этого алгоритма), широко используются.
Как же осуществляется цифровая подпись? Рассмотрим еще один пример. Допустим, Олег собирается отправить Петру контракт или номер своей кредитной карточки в цифровом виде. Для подтверждения подлинности этих документов Петру необходима цифровая подпись Олега. Сначала Олег отправляет свой документ. Затем использует алгоритм хэширования для вычисления идентификатора этого документа, шифрует хэшированное значение с помощью своего личного ключа и отправляет его Петру. Это и есть цифровая подпись Олега. Петр с помощью того же алгоритма хэширования сначала вычисляет идентификатор принятого документа. Затем он расшифровывает значение, которое получил от Олега, используя предоставленный Олегом ключ общего пользования. Если два значения хэширования совпали, Петр не только узнает, что этот документ подлинный, но и то, что подпись Олега действительна. Понятно, что проведение коммерческих транзакций по такому сценарию значительно безопаснее, чем с использованием подписи от руки на бумаге, которую можно подделать. А если сведения, передаваемые Олегом Петру, конфиденциальны (например, содержат номер кредитной карточки), то и их можно зашифровать так, чтобы прочитать их смог только Петр.
Схема. Система цифровой подписи.
1.Олег обрабатывает по специальному алгоритму документ, который собирается отправить Петру, в результате получает некоторый параметр, рассчитанный на основании содержимого документа. Обычно это занимает значительно меньше места, чем исходный документ - параметр 128 или 160 двоичных разрядов.
2.Затем Олег с помощью своего личного ключа шифрует полученный параметр. Итоговое значение служит цифровой подписью Олега.
3.Олег отправляет Петру документ и свою цифровую подпись.
4.Петр пропускает документ, полученный от Петра, через тот же алгоритм, которым пользовался Петр.
5.Затем Петр дешифрует цифровую подпись, полученную от Олега, пользуясь предоставленным Олегом ключом общего пользования.
6.Петр сравнивает значение параметра, полученного при выполнении операции 4, с расшифрованным значением цифровой подписи. Если эти значения совпадают, значит, подпись подлинная и документ "в пути" не подвергся изменениям. В противном случае, либо документ искажен, либо подпись подделана, либо и то и другое.
Именно по такой, или подобной схеме могут вестись дела через Internet или любую другую информационную службу. Этот алгоритм послужил основой проекта государственного стандарта США - Digital Signature Standard (DSS). В нем применяются: алгоритм Secure Hash Algorithm для расчета параметров хэширования и криптосистема с ключом общего пользования, известная под названием Digital Signature Algorithm (DSA) и предназначенная для получения цифровой подписи по параметрам хэширования. Ряд пунктов проекта DSS подверглись критике, однако многие из замечаний исходили от групп, финансово заинтересованных в отклонении данного проекта.
Однако вне зависимости от того какой из методов создания цифровой подписи принят в качестве стандарта важно другое: действительно существует возможность совершенно безопасно осуществлять цифровые операции.
Источник:
Джефф Просис. “Цифровая подпись: принципы работы”,
СК Пресс 12/96 PC Magazine, April 9, 1996, p. 2371-ая редакция: 7.04.99.
Последняя редакция: 2.11.03.