Инструменты безопасности с открытым исходным кодом

Виды криптографии


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


Рис. 9.1.  Симметричная криптография

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

Революция в криптографии началась, когда Витфилд Диффи, Мартин Хеллман и Ральф Меркл изобрели криптографию с открытым ключом. (Некоторые утверждают, что в действительности британский гражданский служащий Джеймс Эллис сделал это раньше и держал в секрете, но Диффи, Хеллману и Мерклу принадлежит первая публикация, датируемая 1976-м годом.) Они пытались решить старую проблему обмена ключами. Диффи интересовало, как два человека, желающие осуществить финансовую транзакцию через электронную сеть, могут сделать это безопасным образом. Он думал о далеком будущем, так как Интернет тогда был в зачаточном состоянии, а электронной коммерции еще не существовало. Если правительственные организации имеют проблемы при обмене ключами, то как может справиться с этим рядовой гражданин? Он хотел построить систему, с помощью которой две стороны могли бы легко поддерживать защищенные коммуникации и безопасные транзакции, не обмениваясь каждый раз ключами.
Он знал, что если он сможет решить проблему обмена ключами, то это станет прорывом в криптографии.

Диффи сотрудничал с Мартином Хеллманом и Ральфом Мерклом. Им потребовалось несколько лет, но в конце концов они создали систему, называемую шифрованием с открытым ключом (PKE - Public Key Encryption), известную также как асимметричная криптография.

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


Рис. 9.2.  Асимметричная криптография (открытый ключ)

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


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

Вскоре после публикации Диффи, Хеллмана и Меркла другая группа из трех человек разработала практическое приложение теории. Эта система для шифрования с открытым ключом была названа RSA по именам авторов: Ronald Rivest (Рональд Ривест), Adi Shamir (Ади Шамир) и Leonard Adleman (Леонард Адлеман). Они образовали компанию и начали лицензировать свою систему. Дело шло туго, и их компания почти обанкротилась, пока они не договорились с малоизвестной тогда компанией Netscape об использовании возможностей растущего поля Интернет-коммерции. Остальное уже история, и RSA на сегодняшний день - самый употребительный алгоритм шифрования с открытым ключом. Диффи и Хеллман со временем выпустили собственное практическое приложение, но оно применяется только для обмена ключами, в то время как RSA - для аутентификации и обеспечения неотказуемости.

Шифрование с открытым ключом присутствует теперь на каждом Web-сервере, предлагающем безопасные покупки. Ваша транзакция шифруется без передачи или получения секретного ключа, и все это происходит в фоновом режиме. Как пользователи, мы знаем, что в навигаторе появился маленький символ замка SSL, и мы чувствуем себя в безопасности. Нетрудно представить себе судьбу Интернет-коммерции, если бы при каждой покупке в Сети приходилось думать о секретном ключе, шифровать сообщение, а затем как-то передавать этот ключ другой стороне. Очевидно, что без криптографии с открытым ключом электронная коммерция в ее современном виде не могла бы существовать.

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


Содержание раздела