Вместо единственного ключа совместного пользования у Алисы и Боба есть два ключа: один для шифрования, а другой для расшифровки. Ключи различны, и невозможно, зная один ключ, вычислить другой. То есть если у вас есть ключ для шифрования, вы не сумеете найти ключ для расшифровки.
Вот в этом-то и есть самое интересное. Боб может создать пару таких ключей. Он может взять и обнародовать ключ для шифрования. Он может послать его друзьям, опубликовать на своем веб-сайте или поместить в телефонной книге. Алиса может найти этот ключ. Она может с его помощью зашифровать сообщение для Боба. Затем она может послать ему сообщение. Боб, используя свой ключ расшифровки (который он предусмотрительно не размещал на веб-сайте), сможет расшифровать и прочитать послание Алисы. Заметим, что Алисе не приходится встречаться с Бобом в какой-нибудь темной аллее и договариваться об общем секрете. Бобу даже не обязательно знать Алису. И, как ни странно, даже Алисе не обязательно знать Боба. Если Алиса сможет найти ключ, который Боб обнародовал, она сможет послать ему тайное сообщение, которое никто, кроме Боба, не сможет прочитать. Такое постоянно происходит с пользователями PGP; один из их ключей находится на каком-либо сервере, и тогда совершенно посторонний человек может отправить им зашифрованные сообщения. Даже если вы что-то смыслите в математике, это не менее удивительно.
Детали этого процесса содержат в себе целую кучу хитростей. Например, я не рассказал, как Боб создал открытый и закрытый ключи и как он сделал свой личный ключ секретным. (Он не может его помнить – ведь ключ состоит из более чем тысячи случайных цифр.) И я пропущу здесь рассказ о невероятно сложной задаче – как Алиса узнает, что она получила именно ключ Боба, а не какой-то старый, или неправильный, или ключ какого-либо злоумышленника. Мы вернемся к этому позднее.
А сейчас я хочу обратить ваше внимание на то, что никто не применяет шифрование с открытым ключом для кодирования сообщений. Все операционные системы используют гибридные технологии, в которых задействованы оба типа криптографии. Причина интереса к этому подходу в его эффективности. На самом деле, когда Алиса хочет послать сообщение Бобу, она зашифровывает сообщение при помощи симметричного алгоритма, используя произвольный ключ, который создает «из воздуха» (так называемый сеансовый ключ ). Она зашифровывает этот произвольный ключ при помощи открытого ключа Боба, а затем отправляет вместе зашифрованный ключ и зашифрованное сообщение для Боба. Когда Боб их получает, он производит обратную операцию. При помощи личного ключа он расшифровывает произвольный симметричный ключ, а затем использует его для расшифровки сообщения.
Это может показаться сверхъестественным, но все совершенно нормально. Повторюсь, никто не использует криптографию с открытым ключом непосредственно для шифрования сообщений. Все применяют гибридные технологии. Так устроены все программы, обеспечивающие безопасность электронной почты, – PGP, РЕМ, S/MIME и любые другие. Так обеспечивается защита сообщений Веб, TCP/IP, телефонной связи и всего остального.
Схемы цифровой подписи
Шифрование с открытым ключом – вещь довольно удивительная, но цифровые подписи (сигнатуры) – еще более интересный и важный инструмент. Цифровые подписи обеспечивают тот же уровень аутентификации сообщений, что и MAC. А в современном бизнесе аутентификация намного важнее секретности,
Как и шифрование с открытым ключом, цифровые подписи используют пару ключей: открытый и закрытый. Вы также не можете установить по одному ключу другой. Но в этом случае ключи меняются местами.
У Алисы есть открытый текст сообщения. Применяя свой закрытый ключ, она сообщение зашифровывает. Поскольку это ее личный ключ, то только им можно зашифровать сообщение абсолютно тем же способом. Таким образом, зашифрованное сообщение становится Алисиной подписью на сообщении. Открытый ключ Алисы общедоступен. Кто угодно способен достать этот ключ и расшифровать сообщение, удостоверившись таким образом, что его подписала (то есть зашифровала) Алиса. Подпись является функцией сообщения, поэтому она уникальна для сообщений: злостный фальсификатор не может снять подпись Алисы с одного документа и поместить ее на другой. Подпись – это функция личного ключа Алисы, то есть она уникальна для нее.
Конечно, реальные системы более сложны. Так же как Алиса не зашифровывает сами сообщения при помощи алгоритмов шифрования с открытым ключом (она зашифровывает только ключ сообщения), она и не подписывает непосредственно сообщение. Вместо этого она вычисляет одностороннюю хэш-функцию сообщения и затем ее подписывает. Опять же, подписывание хэш-значения на несколько порядков быстрее, и надо иметь в виду, что существует математическая проблема защиты при подписывании сообщений напрямую.
Читать дальше