logo search
Криптографическая защита информации

1.1. Криптография

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

Криптография дает средства для защиты информации, и поэтому она является частью деятельности по обеспечению безопасности информации.

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

Можно воспользоваться одним из известных методов со­крытия информации:

– скрыть канал передачи информации, используя не­стандартный способ передачи сообщений;

– замаскировать канал передачи закрытой информации в открытом канале связи, например, спрятав информацию в безобидном "контейнере" с использованием тех или других стеганографических способов либо обмениваясь открытыми сообщениями, смысл которых согласован заранее;

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

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

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

– проверку и подтверждение подлинности содержания и источника сообщения, а также

– предотвращение и обнаружение обмана и других умышленных нарушений со стороны самих участников ин­формационного обмена.

Для решения этой проблемы обычные средства, приме­няемые при построении систем передачи информации, под­ходят далеко не всегда. Именно криптография дает средства для обнаружения обмана в виде подлога или отказа от ранее совершенных действий, а также других неправомерных дей­ствий.

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

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

Обеспечение целостности – гарантирование невоз­можности несанкционированного изменения информации. Для гарантии целостности необходим простой и надежный критерий обнаружения любых манипуляций с данными. Манипуляции с данными включают вставку, удаление и за­мену.

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

Обеспечение невозможности отказа от авторства предотвращение возможности отказа субъектов от некото­рых из совершенных ими действий. Рассмотрим средства для достижения этих целей более подробно.

Конфиденциальность

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

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

При проведении активных атак противник может преры­вать процесс передачи сообщений, создавать поддельные (сфабрикованные) или модифицировать передаваемые шиф­рованные сообщения. Эти активные действия называют попытками имитации и подмены соответственно.

Под шифром обычно понимается семейство обратимых преобразований, каждое из которых определяется некоторым параметром, называемым ключом, а также порядком приме­нения данного преобразования, называемым режимом шиф­рования.

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

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

Если обозначить через М открытое, а через С шифро­ванное сообщения, то процессы зашифрования и расшифро­вания можно записать в виде равенств

Еk1(М)=С, Dk2(С) = М,

в которых алгоритмы зашифрования Е и расшифрования D должны удовлетворять равенству

D k2(E k1(M))=M.

Различают симметричные и асимметричные криптоси­стемы. В симметричных системах знание ключа зашифрова­ния k1 позволяет легко найти ключ расшифрования k2 (в большинстве случаев эти ключи просто совпадают). В асим­метричных криптосистемах знание ключа k1 не позволяет оп­ределить ключ k2. Поэтому для симметричных криптосистем оба ключа должны сохраняться в секрете, а для асимметрич­ных – только один – ключ расшифрования k2, а ключ k1 можно сделать открытым (общедоступным). В связи с этим их называют еще шифрами с открытым ключом.

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

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

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

Не существует единого шифра, подходящего для всех случаев жизни. Выбор способа шифрования (то есть крипто­графического алгоритма и режима его использования) зави­сит от особенностей передаваемой информации (ее ценности, объема, способа представления, необходимой скорости передачи и т. д.), а также возможностей владельцев по защите своей информации (стоимость применяемых технических устройств, удобство использования, надежность функциони­рования и т. п.). Имеется большое разнообразие видов защи­щаемой информации: текстовая, телефонная, телевизионная, компьютерная и т. д., причем у каждого вида информации имеются свои существенные особенности, которые надо учитывать при выборе способа шифрования. Большое значение имеют объемы и требуемая скорость передачи шифрованной информации, а также помехозащищенность используемого канала связи. Все это существенным образом влияет на выбор криптографического алгоритма и организацию защищенной связи.

Наличие надежного криптографического алгоритма и правильный выбор режима еще не гарантируют владельцу защищенность передаваемой информации. Немаловажную роль играет правильность их использования. Поскольку даже самые стойкие шифры при неправильном использовании су­щественно теряют свои качества, то конфиденциальность пе­редаваемой информации во многом зависит от того, какие ошибки допускает ее владелец при использовании криптогра­фической защиты. А то, что все пользователи допускают ошибки, – неизбежно и является непреложным и важным (для криптоаналитика) фактом, поскольку любые криптогра­фические средства, какими бы они ни были удобными и про­зрачными, всегда мешают пользователям в работе, а различ­ные тонкости известны только криптоаналитикам и, как пра­вило, непонятны пользователям этих средств. Более того, в качестве субъектов взаимодействия могут выступать не толь­ко люди, но и различные процессы, осуществляющие обра­ботку информации в автоматизированной системе без участия человека. Поэтому защищенность информации в системе су­щественно зависит от того, насколько правильно там реали­зована криптографическая подсистема, отвечающая за вы­полнение криптографических функций. Одно наличие такой подсистемы еще ничего не гарантирует.

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

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

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

Целостность

Наряду с конфиденциальностью не менее важной задачей является обеспечение целостности информации, другими словами, — неизменности ее в процессе передачи или хране­нии. Решение этой задачи предполагает разработку средств, позволяющих обнаруживать не столько случайные искажения (для этой цели вполне подходят методы теории кодирования с обнаружением и исправлением ошибок), сколько целенаправ­ленное навязывание противником ложной информации. Для этого в передаваемую информацию вносится избыточность. Как правило, это достигается добавлением к сообщению не­которой проверочной комбинации, вычисляемой с помощью специального алгоритма и играющей роль контрольной сум­мы для проверки целостности полученного сообщения. Глав­ное отличие такого метода от методов теории кодирования состоит в том, что алгоритм выработки проверочной комби­нации является "криптографическим", то есть зависящим от секретного ключа. Без знания секретного ключа вероятность успешного навязывания противником искаженной или лож­ной информации мала. Такая вероятность служит мерой имитостойкости шифра, то есть способности самого шифра противостоять активным атакам со стороны противника.

Итак, для проверки целостности к сообщению М добав­ляется проверочная комбинация S, называемая кодом ау­тентификации сообщения (сокращенно – КАС) или имитовставкой. В этом случае по каналу связи передается пара С=(М,S). При получении сообщения М пользователь вы­числяет значение проверочной комбинации и сравнивает его с полученным контрольным значением S. Несовпадение го­ворит о том, что данные были изменены.

Как правило, код аутентификации является значением некоторой (зависящей от секретного ключа) криптографиче­ской хэш-функции (так называется функция, принимающая значения некоторой фиксированной размерности) от данного сообщения: hk(M) = S. К ко­дам аутентификации предъявляются определенные требова­ния. К ним относятся:

– невозможность вычисления значения hk(М) = S для заданного сообщения М без знания ключа k;

– невозможность подбора для заданного сообщения М с известным значением hk(M)=S другого сообщения m1 с известным значением hk1) = S1, без знания ключа k .

Первое требование направлено против создания под­дельных (сфабрикованных) сообщений при атаках типа ими­тация; второе – против модификации передаваемых сооб­щений при атаках типа подмена.

Аутентификация

Аутентификация – установление подлинности. В об­щем случае этот термин может относиться ко всем аспектам информационного взаимодействия: сеансу связи, сторонам, передаваемым сообщениям и т. д.

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

Рассмотрим эти вопросы более подробно.

Применительно к сеансу связи (транзакции) аутентифи­кация означает проверку: целостности соединения, невоз­можности повторной передачи данных противником и свое­временности передачи данных. Для этого, как правило, используют дополнительные параметры, позволяющие "сце­пить" передаваемые данные в легко проверяемую последова­тельность. Это достигается, например, путем вставки в сооб­щения некоторых специальных чисел или меток времени. Они позволяют предотвратить попытки повторной передачи, изменения порядка следования или обратной отсылки части переданных сообщений. При этом такие вставки в передавае­мом сообщении необходимо защищать (например, с помо­щью шифрования) от возможных подделок и искажений.

Применительно к сторонам взаимодействия аутентифи­кация означает проверку одной из сторон того, что взаимо­действующая с ней сторона – именно та, за которую она се­бя выдает. Часто аутентификацию сторон называют также идентификацией (Формально это некорректно, так как под идентификацией понимают процедуру установления присвоенного данной стороне уникального сис­темного имени-идентификатора, которое позволяет отличать ее от других сторон; обычно идентификация заключается в предъявлении этого имени и предшествует процедуре аутентификации, то есть подтверждению правиль­ности идентификации).

Основным средством для проведения идентификации яв­ляются протоколы идентификации, позволяющие осуществ­лять идентификацию (и аутентификацию) каждой из участ­вующих во взаимодействии и не доверяющих друг другу сто­рон. Различают протоколы односторонней и взаимной идентификации.

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

Наконец, применительно к самой информации аутенти­фикация означает проверку того, что информация, переда­ваемая по каналу, является подлинной по содержанию, ис­точнику, времени создания, времени пересылки и т. д.

Проверка подлинности содержания информации сводит­ся, по сути, к проверке ее неизменности (с момента создания) в процессе передачи или хранения, то есть проверке целост­ности.

Аутентификация источника данных означает подтвер­ждение того, что исходный документ был создан именно за­явленным источником.

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

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

Цифровая подпись

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

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

Основным механизмом решения этой проблемы является так называемая цифровая подпись.

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

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

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

При использовании шифрсистем с открытым ключом возможны два подхода к построению системы цифровой под­писи.

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

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

Одновременно с проблемой цифровой подписи возникла проблема построения бесключевых криптографических хэш-функций. Дело в том, что при вычислении цифровой подписи оказывается более удобным осуществить сначала хэширование, то есть свертку текста в некоторую комбинацию фикси­рованной длины, а затем уже подписывать полученную ком­бинацию с помощью секретного ключа. При этом функция хэширования, хотя и не зависит от ключа и является открытой, должна быть "криптографической". Имеется в виду свойство односторонности этой функции: по значению ком­бинации-свертки никто не должен иметь возможность подоб­рать соответствующее сообщение.

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