Совершенно очевидно, что сегодня Internet становиться одним из наиболее распространенных и часто используемых способов получения и обмена самой разнообразной информацией. Постепенно из системы, спроектированной для взаимодействия сотрудников научно-исследовательских учреждений, Internet стал способом обмена информацией между огромным количеством людей, живущих в различных уголках мира. Наличие сети передачи данных, опутывающей практически весь земной шар, а также технологий обмена информацией и доступа к данным открывает новые, неведомые ранее возможности, такие как электронная торговля, заочное обучение в Internet, электронные издания, оперативный обмен профессиональной информацией и прочее.
Базовые технологии Internet изначально не предназначались для использования в вышеперечисленных областях, предъявляющих особые требования к секретности передачи данных, идентификации подлинности авторства информации, а так же вопросам, связанным с обеспечением электронных финансовых транзакций и разграничения доступа к различной информации.
Парадокс ситуации состоит в том, что публичный характер сети послуживший ее бурному росту, становиться препятствием для развития всех этих замечательных инноваций. Открытость технологий и относительно легкий способ доступа в сеть позволяют различным злоумышленникам, а иногда и просто хулиганам, получать доступ к данным курсирующим в сети. Единственным способом предотвращения данной систуации является использование современных средств криптозащиты.
Основы криптографической защиты
Криптографическая защита обеспечивает защиту данных любого типа, хранящейся в любом виде на любом носителе, независимо от операционной системы, формата данных и пр. Это могут быть файлы на диске, сообщения электронной почты, записи базы данных и прочая информация. Средства криптографической защиты могут встраиваться в приложения (например в программы электронной почты) или функционировать как самостоятельное приложение, шифрующее файлы на компьютере пользователя. Криптографические средства, также могут использоваться для формирования секретных виртуальных каналов передачи данных, обеспечивая либо аппаратное, либо программное шифрование данных, передаваемых между двумя узлами сети Intenet.
Системы криптозащиты реализуют две основные задачи.
Современные системы криптозащиты опираются на три базовых алгоритма.
Шифрование информации может осуществляется с помощью двух алгоритмов: шифрованием с помощью симметричных ключей и шифрованием асимметричными ключами, также называемым алгоритмом с использованием открытого ключа.
Обеспечение гарантии подлинности информации и удостоверения авторства осуществляется алгоритмом электронной подписи.
Шифрование симметричным ключом
При использовании данного алгоритма, для шифрования и дешифрации информации используется один и тот же ключ. Программа шифрования получает на вход незашифрованный исходный текст и уникальный секретный ключ, и образует шифрованный текст (Cipher text). При расшифровке текста программа получает на вход шифрованный код и тот же самый ключ, образуя на выходе исходный незашифрованный текст. В нашу задачу не входит детальное рассмотрение непосредственно алгоритмов шифрования. Однако заметим, что на практике обычно используется комбинация методов рассеивания и перемешивания. Рассеивание заключается в распространении влияния одного символа нешифрованного текста и ключа на много символов шифрованного текста. Это позволяет скрыть статистические свойства исходного текста и не позволяет восстановить ключ по частям. Перемешивание состоит в использовании таких преобразований, которые исключают восстановление взаимосвязи статистических свойств шифрованного и исходного текстов.
Существует огромное разнообразие конкретных реализаций алгоритмов шифрования симметричными ключами. Наибольшее распространение получил алгоритм DES (Data Encryption Standard), принятый национальным бюро стандартов США в 1977 году. В 1991 году аналогичный алгоритм был принят в качестве отечественного стандарта (ГОСТ 28147-89). Определенное распространение получили также алгоритмы RC4, RC5, IDEA и пр.
Несмотря на высокую эффективность и криптостойкость, алгоритмы шифрования симметричным ключом имеют один существенный недостаток. В том случае, если данный алгоритм используется не для шифрования данных персонального использования (шифрация пароля сетевого доступа, персональных файлов на локальных компьютерах), а для шифрования распространяемых данных (сообщений электронной почты, разделяемой информации и пр.) необходимо распространить информацию о ключе всем пользователям, которые должны получить доступ к информации, а следовательно, возможна утечка информации. В связи с этим подобные алгоритмы используются в основном для шифрования персональной информации.
Шифрование открытым ключом
В отличие от шифрования симметричным ключом в алгоритмах этого типа для шифрования и расшифровки информации используются различные ключи, каждый из которых не может быть получен из другого. Один ключ используется для шифрования, другой - для расшифровки. Принцип действия систем с открытым ключом основывается на применении односторонних функций с лазейкой (потайным входом).
Генерация ключей осуществляется пользователем системы, который оставляет у себя ключ, который в дальнейшем будет использовать для расшифровки информации (секретный ключ), а другой ключ, применяемый для шифрации информации (открытый ключ), широко распространяется всем, кому он необходим. Данный ключ не может быть использован для расшифровки информации, поэтому не имеет смысла заботится о секретности его распространения.
Рис.2 Шифрование открытым ключом |
Пользуясь открытым ключом получателя информации, другие пользователи системы могут зашифровывать необходимую информацию, и никто, кроме предполагаемого получателя не сможет расшифровать содержимое, так как закрытый ключ, который для этого необходим, имеется только в распоряжении получателя информации.
Несмотря на наличие нескольких известных алгоритмов шифрования открытым ключом, практически безраздельным стандартом сегодня стал алгоритм RSA, предложенный американскими учеными Райвестом, Шамиром и Адельманом в 1977 году.
Этот алгоритм используется, например, в такой широко известной программе как PGP (Pretty Good Privacy), разработанной Филиппом Циммерманом, и игравшей не так давно роль неофициального стандарта шифрования данных в электронной почте Internet.
Стойкость алгоритма шифрования, практически в геометрической прогрессии, зависит от длины используемого ключа. При этом алгоритмы шифрования симметричным ключом требуют существенно более короткого ключа для обеспечения аналогичной устойчивости, по сравнению с алгоритмами шифрования открытым ключом. Так, например, алгоритм DES с использованием ключа длиной 40 бит обеспечивает примерно ту же надежность, что и алгоритм RSA с использованием 512-битного ключа. Скорость выполнения операций шифрования/расшифровки, в свою очередь, напрямую зависит от длины используемого ключа и размера шифруемого информационного фрагмента. Таким образом, алгоритм с использованием симметричного ключа обеспечивает гораздо более высокое быстродействие процедур шифрования/расшифровки при той же надежности, в сравнение с алгоритмами с использованием открытого ключа.
В свою очередь алгоритмы с открытым ключом обеспечивают гораздо более высокую степень секретности ключей, так как закрытый ключ получателя информации вообще никогда не покидает его персонального информационного архива. В связи с этим, на практике, при шифровании персональной информации используются алгоритмы с симметричным ключом, а при шифровании распространяемой информации комбинация обоих алгоритмов.
На практике обычно используется следующий алгоритм шифрования информации. На первом шаге случайным образом генерируется симметричный ключ. Данный ключ используется однократно для шифрования данной порции информации. После этого случайно сгенерированный симметричный ключ шифруется с использованием открытого ключа получателя информации. Пересылаемое сообщение формируется из зашифрованной симметричным ключом информации и зашифрованного открытым ключом симметричного ключа.
Рис.3 |
При получении информации сначала извлекается симметричный ключ, для этого используется секретный ключ получателя. Полученный ключ используется для расшифровки исходного сообщения.
Так как основная порция информации шифруется симметричным ключом, а открытым ключом шифруется лишь короткий фрагмент - собственно симметричный ключ, данный алгоритм позволяет использовать достоинства обоих алгоритмов - быстродействие шифрования симметричным ключом и повышенную секретность шифрования открытым ключом.
Цифровая подпись
В отличие от рукописного текста, электронный документ очень легко может подвергнуться различным, незаметным для получателя документа, изменениям. Поэтому часто оказывается необходимым не зашифровывать содержимое информационного сообщения, а обеспечить гарантии подлинности авторства и определить, не вносились ли несанкционированные автором изменения в информацию. Для этих целей используется алгоритм цифровой подписи. При использовании цифровой подписи информация не шифруется и остается доступной любому пользователю, имеющему к ней доступ. Для определения подлинности автора и содержимого используется специальная функция, называемая “дайджест” или хэш-функция.
Процесс подписи документа выглядит следующим образом. На первом шаге строится специальная функция, напоминающая контрольную сумму - хэш-функция, она идентифицирует содержимое документа. На втором шаге автор документа шифрует содержимое хэш-функции своим персональным закрытым ключом. Зашифрованная хэш-функция помещается в то же сообщение, что и сам документ. Полученное сообщение может сохраняться на любом носителе или пересылаться по электронной почте. Хэш-функция имеет небольшой размер и увеличивает размер сообщения незначительно.
Рис.4 Цифровая подпись |
При прочтении скрепленного электронной подписью документа пользователь может убедится в его подлинности. Алгоритм верификации электронной подписи состоит в следующем. На первом этапе получатель сообщения строит собственный вариант хэш-функции подписанного документа. На втором этапе происходит расшифровка хэш-функции, содержащейся в сообщении. На третьем этапе происходит сравнения двух хэш-функций. Их совпадение гарантирует одновременно подлинность содержимого документа и его авторства.
Рис.5 |
При пересылке документа по электронной почте открытый ключ автора может содержаться в том же сообщении, что и сам документ, это упрощает процесс верификации подписи.
Обратите внимание, что в отличие от шифрования сообщения открытым ключом, для шифрования хэш-функции используется не открытый ключ получателя, а закрытый ключ отправителя. Таким образом, при шифровании сообщения удостоверяется лицо, которое будет читать данное сообщение, а при электронной подписи - лицо, пославшее документ. При посылке шифрованного сообщения нескольким абонентам необходимо послать каждому из них отдельную шифрованную копию. При посылке же подписанного сообщения нескольким абонентам всем им пересылается одинаковое сообщение.
Преодоление криптографической защиты
Современные криптографические алгоритмы обеспечивают статическую независимость исходного текста и его шифрованного эквивалента, то есть криптоаналитик не может увеличить знание об исходном тексте или о ключах, используемых для шифрования, даже в том случае если в его распоряжении оказывается часть незашифрованной информации. Сегодня крипкостойкость алгоритма практически целиком определяется длиной используемого в алгоритме ключа шифрования.
На практике устойчивость алгоритма считается достаточной, если стоимость расшифровки информации превышает стоимости шифрованной информации или время, требуемое на расшифровку информации окажется больше, чем время актуальности данной информации.
Все эти оценки являются эмпирическими. Как правило, используется оценка времени работы суперкомпьютера, требуемое для расшифровки информации. Однако эти оценки являются достаточно условными. Вот одна очень показательная история, иллюстрирующая данную проблему.
В конце семидесятых годов один из авторов алгоритма RSA - Ривест опубликовал сообщение, содержащее 129 знаков и объявил, что каждый, кто сможет расшифровать данное сообщение, немедленно получит чек на 100 американских долларов. По оценкам Ривеста, на расшифровку данного сообщения потребовалось бы 40 в 15-ой степени лет работы самого мощного в то время компьютера. В течение долгого времени эта головоломка оставалась камнем преткновения многих охотников “дешевой наживы”. Однако в 1992 году команда молодых программистов под управлением Дерека Аткинса расшифровала данную загадку. Для этого были использованы специально написанная программа, опирающаяся на глубокие знания алгоритма шифрования, и огромные вычислительные ресурсы. В распоряжении “взломщиков” с сентября 1992 года по апрель 1993 год находилось 1600 компьютеров, начиная с простых PC компьютеров и заканчивая одним из мощнейших многопроцессорных суперкомпьютеров. Несмотря на то, что вычислительные мощности, задействованные в работе, действительно были весьма значительными, время затраченное на расшифровку информации оказалось существенно меньшим, нежели “планируемое” автором задачи. Данный пример показывает всю условность практической оценки криптостойкости. Нужно сказать, что в данном примере использовался открытый ключ размером всего 425 бит.
Нужно сказать, что прямой перебор ключей является наиболее ресурсоемким способом преодоления криптозащиты. При достаточной длине ключа вскрытие шифрованной информации перебором ключей требует огромной вычислительной мощности и настолько много времени, что, как правило, становится бессмысленной.
Наиболее часто используемый алгоритм преодоления криптозащиты - это подбор персонального пароля пользователя. Очень часто пользователи системы небрежно относятся к секретности своего пароля. В качестве такового они могут использовать свою фамилию, имя жены или любимой кошки. Это может позволить злоумышленникам получить доступ к секретной информации, стоящей организации огромных денег. Необходимо избегать также любых записей пароля где бы то ни было, особенно, сохранения этой информации где-либо вблизи персонального компьютера.
Еще одним способом получения секретной информации может быть подмена открытого ключа пользователя. Этому способу нужно уделить отдельное внимание.
Подделка открытого ключа
Если расшифровка информации без знания ключа - достаточно непростое занятие, то подделка открытого ключа является не такой сложной задачей. Достаточно просто сообщить потенциальному отправителю секретной информации поддельный ключ и, перехватив пересланное секретное сообщение, получить доступ к секретной информации. Можно также распространить дезинформацию от имени другого лица, что может привести к различным трагическим последствиям.
Естественно, злоумышленник не сможет долго пользоваться поддельным ключом. Однако этого может оказаться достаточно для того, чтобы пользователю, ключ которого был подделан, в дальнейшем шифрование уже не понадобилось. Таким образом, крайне важно убедиться в подлинности полученного открытого ключа.
Удостоверить подлинность ключа пользователя, полученного Вами, может кто-либо, кому Вы безусловно доверяете. Именно так это происходит в случае обычных текстовых сообщений. Ваше доверенное лицо может заверить Вас в подлинности подписи под сообщением, после чего Вы можете сами определять, подлинна ли эта подпись.
При использовании современных алгоритмов криптования обеспечению гарантии подлинности открытых ключей служит так называемый сертификат.
Сертификат
Формат сертификата определен рекомендациями Международного Комитета по телефонии и телеграфии X.509. Сертификат включает в себя различные данные о пользователе: его имя, открытые ключи шифрования и электронной подписи, дату устаревания ключей и другую информацию. Содержимое сертификата скрепляется электронной подписью так называемого удостоверителя сертификата (Certification Authorities) - лица или инстанции, гарантирующей подлинность сертификата. При распространении открытых ключей пользователь, как правило, пересылает не просто свой ключ, а свой персональный сертификат, что гарантирует подлинность содержащихся в нем ключей.
Рис.6 Сертификат |
В зависимости от принятой схемы распространения ключей, в качестве удостоверителя подлинности сертификата могут выступать различные инстанции.
В случае использования ключей вне рамок организации, это может быть та или иная организация, специализирующаяся на сертификации ключей. Наиболее известной организацией, сертифицирующей ключи является сегодня фирма VeriSign. Именно данная служба сертифицирует ключи используемые в протоколе SSL (Security Socket Layer), обеспечивающему шифрованный доступ к серверным ресурсам Internet, и SMIME - новому формату шифрования сообщений Internet, речь о которых пойдет ниже.
Служба VeriSign, поддерживает собственную базу пользователей, в которой хранится история получения сертификатов, сроки их действия и пр. Получить сертификат VeriSign может любой человек или организация, заплатив за это небольшую сумму. Программные средства для генерации ключей и формирование запроса для получение сертификатов встроены в такие программы как Microsoft Internet Explorer и Outlook Express.
В случае использования для шифрования программы PGP, применяется персональная сертификация ключа. Пользователь системы сам собирает подписи определенных лиц под своим ключом и распространяет подписанные ключи по сети Internet.
Персональный секретный архив
Для использования средств криптографической защиты, пользователь должен располагать механизмом хранения персональной секретной информации, такой как закрытые ключи, на локальном компьютере. Вся информация, хранящаяся в архиве, должна быть зашифрована. Доступ к ней может осуществляться по паролю, известному только владельцу архива. Персональный архив должен обеспечивать интерфейс, обеспечивающий возможность извлечения приложениями закрытой информации. Например, программа электронной почты должна получить закрытый ключ для расшифровки полученного шифрованного сообщения. А программа электронных платежей должна получить номер кредитной карточки и PIN для осуществления платежа.
Различные программы, использующие средства криптозащиты включают в свой состав средства организации подобного архива. Так например Microsoft Internet Explorer содержит отдельный компонент, предназначенный для данной цели - Microsoft Vallet.
Юридические аспекты использования криптозащиты
Целый ряд сложностей представляют юридические ограничения использования средств криптографической защиты в Internet. Данная проблема распадается на две составляющие.
Первая из низ - экспортные ограничения правительства США. Сегодня к экспорту из Соединенных Штатов разрешены программы, использующие алгоритмы шифрования не более мощные, чем 40-битное шифрование симметричным ключом и 512-битное шифрование открытым. Это ограничение получило название "ограничение 40/512". Данная степень защиты, как правило, оказывается достаточной для использования в частной практике и в некоторых случаях может быть пригодной для использования в бизнесе. Однако для использования в государственных организациях, связанных с государственной тайной, в финансовых транзакциях и других задачах, требующих повышенной секретности, данная степень защиты сегодня считается недостаточной. Поэтому использование программного обеспечения в данных задачах за пределами Соединенных Штатов требует специальных расширений, соответствующих национальным требованиям.
Другая проблема связана с возможностью формального использования криптографических средств зарубежного производства в отечественных государственных учреждениях. Имеется целый ряд указов президента, законов и подзаконных актов, регулирующих данные вопросы. Для использования программного обеспечения в государственных учреждениях оно должно пройти специальное лицензирование в ГосТехКомиссии при президенте и ФАПСИ. Однако, насколько нам известно, ни одна из операционных систем и программ электронной почты западного производства до сих пор не получила соответствующих лицензий. Что же касается средств криптозащиты отечественного производства, то несмотря на высоконадежные алгоритмы, заложенные в них, как правило они не столь технологичны, как продукты западного производства, а так же цена на них оказывается существенно более высокой.
Однако, все эти ограничения касаются только государственных учреждений, коммерческие предприятия могут использовать любое программное обеспечение на свой страх и риск.
Использование криптографической защиты
Чуть подробнее остановимся на использовании описанных выше технологий в типичных задачах, используемых в Internet - шифровании сообщений электронной почты, обеспечении секретного доступа к ресурсам WWW и определении подлинности загружаемых из Internet компонент приложений.
Шифрование сообщений электронной почты
Шифрование сообщений электронной почты, наиболее типичная задача использования криптографической защиты. Изначально электронная почта Internet, построенная на протоколе SMTP не поддерживала не только шифрования сообщений, но даже аутентификации доступа к ресурсам службы передачи сообщений. В последнее время появилось множество расширений данного протокола, обеспечивающих решение данных задач.
Первой программой решающей проблему шифрования данных и электронной подписи сообщений была программа PGP. Сейчас существует уже пятая версия данной программы. Программа PGP изначально существовала как условно бесплатное программное обеспечение, к тому же в ней были реализованы алгоритмы строгой криптозащиты. В силу этих причин программа получила огромное распространение. В настоящее время она реализована в виде расширений для большинства наиболее распространенных почтовых клиентов, для большинства операционных систем.
Программа PGP позволяет шифровать тело сообщения и фалы вложений, а так же подписывать сообщения. Содержимое зашифрованного сообщения и данные электронной подписи замещают тело посылаемого сообщения. Криптованные фрагменты выделяются специальными заголовками, позволяющими программе PGP выделить их содержимое из тела сообщения. Более подробную информацию о данной программе можно найти на сервере http://www.geocities.com/SoHo/Studios/1059/pgp-ru.html.
В последнее время бурное развитие получил протокол SMIME (Security Multipurpose Internet Mail Extension). Данный стандарт, является расширением протокола MIME и обеспечивает выделение отдельных фрагментов сообщения Internet, к которым были применены функции шифрования и электронная подпись. При этом, в заголовке фрагмента может быть указано с помощью какого алгоритма производилось шифрование и электронная подпись. Клиентское приложение, поддерживающее SMIME, может выделить подписанные или зашифрованные фрагменты сообщения, произвести функции расшифровки (верификации подписи) с помощью соответствующих алгоритмов и отобразить данные. Протокол SMIME поддерживается всеми наиболее современными постовыми программами, к ним относится в частности программа Microsoft Outlook 98.
Секретный доступ к ресурсам WWW
Данная задача стала особенно актуальной, после появления такого явления как электронная коммерция. При передаче от клиента к WWW серверу информации о персональном коде платежного документа совершенно необходимо обеспечить секретность передачи данных по сети. Данную задачу решает механизм, получивший название Security Socket Layer (SSL).
Алгоритм SSL работает на более низком уровне, чем алгоритмы шифрования и подписи электронной почты и обеспечивает шифрование канала доступа к WWW страницам. Пользователь очень легко может убедиться, что доступ к WWW странице обеспечивает с помощью данного протокола - в префиксе страницы, вместо традиционного HTTP:// указывается HTTPS://.
Рис.7 |
В основе данного протокола лежит тот же алгоритм, который используется при передаче секретных сообщений. Упрощенно работа данного алгоритма выглядит следующим образом. На первом шаге, после запроса клиента (программы просмотра WWW) на обслуживание, сервер WWW формирует сообщение, информирующее об используемой версии SSL, а также пересылает клиенту свой сертификат и формирует запрос на формирование случайного ключа сессии. В ответ на данный запрос клиент генерирует случайное число, которое в дальнейшем будет использоваться в качестве симметричного ключа шифрования для данной сессии доступа клиента к серверу WWW. Данный ключ шифруется с помощью открытого ключа сервера, который извлекается из сертификата сервера и пересылается на сервер. На данном этапе, кстати, проверяется его подлинность путем версификации подписи Security Authority, содержащейся в сертификате.
На последнем шаге сервер расшифровывает ключ сессии с помощью своего персонального ключа шифрования. После этого все данные, передаваемые между клиентом и сервером, шифруются симметричным ключом сессии.
При этом не имеет значение, какая программа используется для просмотра данных, и какой сервер предоставляет услуги. Необходимо только, чтобы они поддерживали одинаковую версию протокола SSL.
Подпись кода программы
Несколько слов необходимо сказать о технологии подписи кода приложений.
Сейчас, во время бурного расцвета Internet, все чаще появляется возможность использовать программное обеспечение не купленное в коробке, а загружаемое непосредственно на компьютер с WWW-сервера. С одной стороны, это приводит к существенному упрощению распространения программного обеспечения, с другой открывает дополнительные лазейки для проникновения в персональные данные пользователей. Пользователь, загружающий исполняемую программу на свой компьютер должен предварительно убедится, что данная программа не содержит вирусов или “троянских коней”. Для этого вполне достаточно было бы убедится в том, что программа разработана известной фирмой-производителем и не изменялась с момента ее производства. Именно это происходит, когда пользователь покупает коробку с программным обеспечением.
Рис.8 |
Для этого и служит технология подписи кода программ. При использовании данной технологии пользователь загружает не просто исполняемый код программы, а код, скрепленный электронной подписью автора программного обеспечения. В этом случае, используя алгоритм верификации, встроенный в программу просмотра Internet, пользователь может убедиться в подлинности кода.
Верификация в этом случае происходит точно так же, как и при использовании цифровой подписи документа. На первом шаге вычисляется хэш-функция загружаемого кода, затем расшифровывается электронная подпись. В случае совпадения полученных функций, данный код может считаться авторским и им можно смело пользоваться.
Подлинность открытого ключа производителя программного обеспечения должна быть обязательно заверена каким-либо признанным удостоверителем ключа, например фирмой VeriSign.
Электронная подпись кода не гарантирует того, что данная программа не содержит вирусов. Она лишь гарантирует, что данная программа создана конкретным производителем. Доверять производителю или нет - должен решать сам пользователь, загружающий приложение.