Защита информации в интернете. Часть 1. Шифрование с открытым ключом
Статью подготовил Mike
Проблема секретности: вы хотели бы сообщить номер вашей кредитной карты, если бы знали, что эта информация может попасть в чужие руки? Проблема целостности: как вы можете определить, не была ли посланная вам информация изменена хакером? Проблема подлинности: вы можете быть уверены в том, что компания, получающая вашу информацию, имеет хорошую репутацию? Проблема отказа от обязательств: как вы сможете доказать, что сообщение было действительно послано? Эти вопросы формулируют четыре основных требования успешной, безопасной транзакции. В этой статье мы обсудим, как эти требования могут быть учтены с помощью такого популярного механизма защиты электронной коммерции, как шифрование с открытым ключом.
Каждый использующий Сеть для электронной торговли должен понимать важность проблемы безопасности персональной информации. Существуют несколько протоколов, которые обеспечивают защиту данных при выполнении транзакции. Речь идет о протоколах Secure Sockets Layer (SSL — уровень защищенных гнезд, протокол безопасных соединений) и SET — протокол защищенных электронных транзакций.
Каналы, по которым передаются данные в Интернет, не защищены. Следовательно, любая частная информация, которая передается по этим каналам, должна передаваться с использованием каких-либо средств защиты. Чтобы гарантировать защиту информации, данные можно зашифровать. Эту задачу решает криптография, с помощью которой данные трансформируются с использованием ключа шифрования. Зашифрованные данные становятся недоступными для всех, за исключением получателей этой информации. Нешифрованные данные называются открытым текстом; шифрованные данные называются зашифрованным текстом. Только получатели данных должны иметь соответствующий ключ, позволяющий им перевести шифрованный текст в открытый текст.
В прошлом, организации, желающие работать в безопасной вычислительной среде, использовали симметричные криптографические алгоритмы, также известные под именем шифрования с закрытым ключом, в которых один и тот же закрытый ключ использовался и для шифрования и для расшифровки сообщений. В этом случае отправитель шифровал сообщение, используя закрытый ключ, затем посылал зашифрованное сообщение вместе с закрытым ключом получателю. Такая система имела недостатки. Во-первых, секретность и целостность сообщения могли быть скомпрометированы, если ключ перехватывался, поскольку он передавался от отправителя к получателю вместе с сообщением по незащищенным каналам. Кроме того, так как оба участника транзакции используют один и тот же ключ для шифрования и дешифрования сообщения, вы не можете определить, какая из сторон создала сообщение. В заключение нужно сказать, что для каждого получателя сообщений требуется отдельный ключ, а это значит, что организации должны иметь огромное число закрытых ключей, чтобы поддерживать обмен данными со всеми своими корреспондентами.
Для электронной торговли требуется высокая степень защиты. Шифрование с открытым ключом - асимметричное шифрование - является более безопасным методом. В этом подходе используются два связанных ключа - открытый ключ и закрытый ключ. Закрытый ключ сохраняется в секрете его владельцем, открытый ключ распространяется свободно. Если открытый ключ используется для шифрования сообщения, то только соответствующий ему закрытый ключ может расшифровывать это сообщение. И наоборот. Каждая сторона транзакции имеет как открытый, так и закрытый ключ. Чтобы передавать сообщение с большей надежностью, отправитель при шифровании сообщения использует открытый ключ получателя. Получатель расшифровывает сообщение, используя свой уникальный закрытый ключ получателя. Поскольку никто не знает закрытого ключа, то сообщение не может быть прочитано никем другим, кроме как получателем сообщения. Таким образом гарантируется секретность сообщения.
Цифровая подпись, электронный эквивалент традиционной подписи, была разработана для использования в алгоритмах шифрования с открытым ключом для решения проблемы подлинности и целостности. Цифровая подпись позволяет получателю быть уверенным в том, что послание действительно было послано отправителем. Цифровая подпись, подобно рукописной сигнатуре, служит доказательством подлинности письма и ее также трудно подделать. Чтобы создать цифровую подпись, отправитель должен пропустить первоначальное открытое сообщение через функцию хэширования, которая выполняет математические вычисления, в результате выполнения которых вычисляется значение хэш-функции. Хэш-функция может быть очень простой, и, например, может выполнять сложение всех единиц в двоичном представлении текста сообщения, хотя обычно эти функции выполняют более сложные вычисления. Вероятность того, что два различных сообщения будут иметь одно и то же значение хэш-функции, статистически ничтожна. Отправитель использует свой закрытый ключ, чтобы зашифровать значение хэш-функции, создавая таким образом цифровую подпись и подтверждая подлинность сообщения, потому что только владелец закрытого ключа мог выполнить такое шифрование. Первоначальное сообщение, зашифрованное открытым ключом получателя, цифровая подпись и значение хэш-функции посылается получателю. Получатель использует открытый ключ отправителя, чтобы декодировать цифровую подпись и получить значение хэш-функции. Получатель затем использует свой собственный закрытый ключ, чтобы декодировать первоначальное сообщение. В заключение получатель применяет хэш-функцию к первоначальному сообщению. Если полученное значение хэш-функции для исходного сообщения соответствует значению, включенному в цифровую подпись, это служит свидетельством целостности сообщения, то есть того, что оно не было изменено в процессе передачи по каналам связи.
Одна из проблем шифрования с открытым ключом состоит в том, что кто-либо, обладающий набором ключей, потенциально может попытаться изобразить из себя отправителя сообщения. Предположим, что заказчик хочет поместить заказ в электронном магазине. Как заказчик может узнать, что Web-сайт, на который он обращается, действительно принадлежит этому торговцу, а не некоему третьему лицу, которое маскируется под сайт торговца с целью получить информацию о кредитных картах? Инфраструктура открытого ключа (Public Key Infrastrukture — PKI) позволяет решить этот вопрос с помощью цифровых сертификатов, удостоверяющих подлинность сообщений. Цифровые сертификаты распределяются cпециальной организацией — certification authority (CA) — и подписываются закрытым ключом этой организации. Цифровой сертификат включает имя участника (организации или человека), его открытый ключ, серийный номер, срок годности сертификата, разрешение от поставщика сертификатов и любую другую информацию, имеющую отношение к теме. В качестве CA может выступать финансовая организация или другая организация, например VeriSign, которая выдает сертификаты и открытые ключи своим клиентам, для опознания этих клиентов. CA берет на себя ответственность за сертификат, поэтому сведения о получателе сертификата тщательно проверяются перед выдачей цифрового сертификата. Доступ к цифровым сертификатам открыт, а содержатся они в архивах сертификатов.
Компания VeriSign, Inc. — один из лидеров защиты электронных данных. VeriSign разрабатывает PKI и решения для цифровых сертификатов.
Многие люди по прежнему считают электронную торговлю опасным занятием, нескольку им кажется, что данные в этой технологии не защищены. На самом деле транзакции, использующие PKI и цифровые сертификаты, защищены лучше, чем информация, передаваемая по телефонным линиям, по почте или при проведении платежей с помощью кредитной карты. Алгоритмы шифрования с ключом, используемые в большинстве транзакций, почти невозможно скомпрометировать. По некоторым оценкам, алгоритмы шифрования с ключом, используемые в криптографической защите с открытым ключом, настолько безопасны, что даже миллионы компьютеров, работающих параллельно, не смогут раскрыть шифр даже за сто лет работы.
RSA Security, Inc. — признанный лидер средств защиты электронных данных. RSA была основана в 1982 году тремя профессорами MIT (Rivest, Shamir и Adleman) — изобретателями системы криптографической защиты RSA Public Key Cryptosystem. Их технологии шифрования и идентификации используются большинством ведущих компаний и компаниями, занимающимися электронной торговлей. С появлением Интернет и Всемирной паутины их работа, связанная с защитой, стала более значимой, а в приложениях электронной торговли — играет определяющую роль. Их программы шифрования встраиваются больше чем в 450 миллионов копий популярных приложений Интернет, включая браузеры, коммерческие серверы и системы электронной почты. Безопасные транзакции электронной торговли и безопасная связь в Интернет реализуются, в основном, с помощью программ RSA.
SMTP при поддержке расширений SMTP может гарантировать, что была проведена корректная аутентификация исходного соединения "клиент-сервер". Однако это не гарантирует, что во время транзита при использовании SMTP каждый отдельный двухточечный отрезок пути передачи сообщения будет использовать вышеупомянутую аутентификацию.
Кроме того, само сообщение не зашифровано. Это может быть решено путем использования другого расширения SMTP, которое обеспечивает, что соединения SMTP (клиент/сервер или сервер/сервер) шифруются с использованием пары открытого/закрытого ключей. Однако это снова не гарантирует, что сообщение во время транзита будет зашифрованным на каждом отдельном двухточечном отрезке пути передачи сообщения на всем своем пути по направлению к получателю. Даже если было бы возможным гарантировать, что сообщение электронной почты было корректно аутентифицировано доверенными серверами SMTP и полностью зашифровано на двухточечных отрезках пути передачи сообщения на своем пути от отправителя к получателю, все равно это еще не позволит избежать возможности того, что сообщение не было сфальсифицировано (подделано) кем-то другим.
Таким образом, единственным надежным способом обеспечить конфиденциальность, аутентификацию и целостность сообщения электронной почты является обеспечение уверенности в том, что MIME-контент сообщения обработан криптографическим образом (с использованием различных методов шифрования). До настоящего времени для достижения этого существовало два конкурирующих стандарта: PGP и S/MIME. Первым давайте обсудим PGP.
6.2.8 Безопасный обмен сообщениями при использовании PGP
PGP (Pretty Good Privacy), является высоко безопасной системой шифрования на основе открытых ключей, предназначенной для отправки безопасной почты по всему миру. Она была разработана Майком Циммерманомссылка скрыта в 1991 г. и свободно опубликована в Интернете. Клиент PGP и информацию о PGP можно найти по следующему URL-адресу:
Доступна также система GnuPG (Gnu Privacy Guard), которая является полной и бесплатной заменой PGP. Так как она не использует патентованный алгоритм IDEA, она может быть применена без каких-либо ограничений. GnuPG является приложением, совместимым с RFC2440 (OpenPGP). Версия 1.0.0 была выпущена 7 сентября 1999 г. На текущий момент постоянной является версия 1.2.2. GnuPG относится к бесплатному программному обеспечению. Система может свободно использоваться, модифицироваться и распространяться согласно условиям общедоступной лицензии (General Public License) GNU. Информацию о GPG можно найти по следующему URL-адресу:
PGP не имеет ключевых возможностей управления. Фактически структура его сертификатов очень неопределенная, в ней вместо наличия центров, выпускающих сертификаты для отдельных людей, работает модель "инфраструктуры доверия", когда сертификаты приобретают полномочия после подписки их известными или доверенными людьми.
Более новый стандарт, называемый OpenPGP, разрешает иерархический подход для согласования работы центров сертификации, сертификатов X.509 и других уже принятых стандартов. За дополнительной информацией об OpenPGP обратитесь к следующему URL-адресу:
Пока PGP рассматривается как некоторая хорошая альтернатива для принятия по всему миру, большинство корпораций увлечены реализацией протокола S/MIME для обеспечения обмена сообщениями как внутри, так и за пределами организации. Мы рассмотрим S/MIME в последующем разделе и подробно опишем, как он работает совместно с клиентом Lotus Notes и сервером Lotus Domino.
6.2.9 Безопасный обмен сообщениями при использовании S/MIME
S/MIME (Secure Multipurpose Internet Mail Extension) является технологией обеспечения безопасности электронной почты, разработанной компанией RSA для шифрования и цифрового подписания сообщений электронной почты.
Рабочая группа S/MIME завершила работу по пяти предложенным стандартам, которые были обобщены в спецификации S/MIME версии 3. Они приведены далее.
Синтаксис криптографического сообщения (draft-ietf-smime-cms; ftp://ftp.ietf.org/rfc/rfc2630.txt).
Спецификация сообщения S/MIME версии 3 (draft-ietf-smime-msg; ftp://ftp.ietf.org/rfc/rfc2633.txt).
Обработка сертификата S/MIME версии 3 (draft-ietf-smime-cert; ftp://ftp.ietf.org/rfc/rfc2632.txt).
Улучшенные службы обеспечения безопасности для S/MIME (draft-ietf-ietf-essссылка скрыта; ftp://ftp.ietf.org/rfc/rfc2634.txt).
Lotus Notes и Domino 6 полностью поддерживают S/MIMEv3.
Шифрование сообщения происходит для всего контента сообщения или только для определенных частей MIME путем осуществления прогона их через алгоритм шифрования, который использует открытый ключ получателя. S/MIME применяет алгоритм открытых ключей для обмена ключами и для обеспечения цифровых подписей, предлагая для этого два симметричных алгоритма шифрования: Triple-DES и RC2. Регулируемый размер ключа в алгоритме RC2 делает его особенно полезным для приложений, предназначенных для экспорта за пределы США, когда требуемым алгоритмом открытых ключей является RSA.
Как работает S/MIME
В этом разделе мы более подробно рассмотрим то, как работает S/MIME. Нашей целью является помочь вам понять, как в Notes и Domino 6 осуществлена реализация и поддержка S/MIME. S/MIME предоставляет пользователям следующие основные возможности:
шифрование в целях обеспечения секретности сообщения;
определение фальсификации (подделки);
подписание – аутентификация отправителя с помощью цифровых подписей;
возможность взаимодействия с другим S/MIME-совместимым программным обеспечением;
легкая интеграция в Netscape Messenger;
межплатформенный обмен сообщениями.
С помощью этих возможностей достижимы следующие преимущества:
с момента, когда сообщение отправлено и до момента, когда оно будет доставлено по окончательному месту назначения, никто не сможет увидеть содержимое сообщения;
получатель может быть уверен в том, что сообщение пришло от того человека, от которого он или она думает, что оно пришло;
можно также быть уверенным в том, что сообщение не было подделано или изменено по пути доставки.
Шифрование для обеспечения секретности сообщения
В целях обеспечения секретности сообщений, или конфиденциальности, S/MIME использует асимметричные ключи (открытый и секретный ключи) для шифрования сообщений. По существу, это тот же метод, который используется в Notes и разъяснен в разделе о Notes PKI.
Для отправки зашифрованного S/MIME-сообщения необходимо получить открытый ключ получателя сообщения и зашифровать сообщение с его использованием. Так как единственным человеком, который имеет связанный с этим ключом секретный ключ, является получатель, сообщение может быть безопасно отправлено с уверенностью в том, что только его получатель будет способен расшифровать это сообщение. Данный метод полностью подобен методу, используемому в Notes, и представлен на рис. 6.16 и 6.26.
Это практическое применение гибридного решения, которое мы рассматривали в лекции об основах безопасности. Пронумерованные на рис. 6.26 шаги описаны далее.
Шифрование сообщения электронной почты в S/MIME
Алиса решает отправить зашифрованное S/MIME-сообщение Бобу. Клиент обмена сообщениями, видя, что сообщения нуждаются в шифровании, генерирует случайный ключ шифрования (секретный ключ, который обычно упоминается как ключ сеанса; впоследствии новый случайный ключ генерируется каждый раз, когда отправляется зашифрованное S/MIME-сообщение) и зашифровывает с его помощью сообщение.
Ключ шифрования сеанса шифруется (с применением либо Triple-DES, либо RC2) с помощью открытого ключа получателя и прикрепляется к сообщению, а это означает, что расшифровать его будет способен только открытыйссылка скрыта RSA-ключ Боба.
Зашифрованный текст и зашифрованный ключ отправляются Бобу посредством SMTP.
Клиент обмена сообщениями Боба использует секретный RSA-ключ Боба для расшифровки зашифрованного ключа (снова с применением RC2) и получает расшифрованный ключ сеанса. Здесь гарантируется секретность, потому что для расшифровки ключа сеанса, необходимого для расшифровки сообщения, может быть использован только секретный ключ Боба.
Клиент обмена сообщениями Боба использует расшифрованный ключ сеанса для расшифровки почтового сообщения (с применением либо Triple-DES, либо RC2, в зависимости от того, с использованием какого алгоритма было зашифровано сообщение), результатом чего является расшифрованное исходное сообщение, которое было отправлено Алисой.
Если клиент обмена сообщениями Боба не способен расшифровать отправленную Алисой электронную почту, причиной этого возможно будет то, что Боб получил новый сертификат X.509 и открытый ключ в каталоге, к которому осуществляет доступ Алиса, является старым ключом.
Рассматривая показанный на рис. 6.26 процесс, мы увидим, что на самом деле этот метод в S/MIME часто упоминают как "цифровой конверт" (digital envelope), в силу чего сообщение фактически шифруется с использованием более короткого симметричного шифра, после чего симметричный шифр шифруется с использованием более длинного асимметричного ключа и отправляется вместе с зашифрованным сообщением.
Этот метод является предпочтительным, потому что намного быстрее зашифровать все сообщение с использованием более короткого симметричного ключа, чем шифровать сообщение с применением более длинного асимметричного ключа. Сообщение при этом остается полностью безопасным, так как этот подход совмещает скорость симметричного шифрования с безопасностью асимметричного шифрования.