Перейти к содержимому

Какой ключ используется отправителем для формирования зашифрованного асимметричным алгоритмом

  • автор:

Открытый и закрытый ключ шифрования

Ключ шифрования – это тайная информация (набор цифр и букв), которая используется алгоритмом для шифрования и расшифровки информации.

Надёжность ключа зависит от его длины в битах. В технологии SSL используют шифры 4096 бит для корневого сертификата и 128–256 бит для клиентских. Такая длина достаточна для безопасной передачи данных.

Протокол SSL использует асимметричное шифрование или шифрование с открытым ключом для установки соединения. Несмотря на название, здесь используются 2 ключа: открытый и закрытый. Оба формируются при запросе SSL-сертификата.

Открытый (публичный ключ) доступен всем. Используется для шифрования данных при обращении браузера к серверу.

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

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

Однако асимметричный алгоритм ресурсоемок, а скорость шифрования на 2-3 порядка ниже симметричного алгоритма. Поэтому в SSL-технологии шифрование с открытым ключом используется только для согласования секретного симметричного ключа. С его помощью устанавливается защищённое HTTPS-соединение – данные передаются быстро и безопасно.

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

Передать по почте, телефону или смской не получится – перехватят или подслушают.

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

  1. Чтобы аутентифицировать сервер, браузер посетителя проверяет, подписан ли SSL-сертификат сертификатом доверенного центра.
  2. Чтобы договориться о симметричном ключе шифрования сервер и браузер используют асимметричное шифрование с открытым ключом.

Рассмотрим этот процесс на примере реальных ключей:

Боб отправляет Алисе замок, ключ от которого есть только у него.

Замок здесь – публичный ключ.

Алиса закрывает замком Боба ящик с секретом и посылает обратно.

Так же браузер шифрует сообщение с помощью публичного ключа и передаёт на сервер.

Открыть ящик не сможет никто: ни сама Алиса, ни сотрудники почты.

Мошенник точно так же не может расшифровать сообщение браузера без закрытого ключа.

Боб получает ящик, открывает своим единственным ключом и узнаёт секрет.

Сервер расшифровывает сообщение закрытым ключом, который есть только у него.

Как Алиса и Боб ведут тайную переписку, так браузер и сервер устанавливают защищённое HTTPS-соединение и обмениваются данными.

Какой ключ используется отправителем для формирования зашифрованного асимметричным алгоритмом

Oсновной сайт, где находится этот текст — новый сайт про
безопасность для клиентов W+ — http://support.wplus.net/security/

Введение в криптографию

(авторизованный перевод статьи Дж. Чандлер «Cryptography 101»)
1. Введение

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

  • Неавторизованный доступ к информации
  • Неавторизованное изменение информации
  • Неавторизованный доступ к сетям и другим сервисам
  • Другие сетевые атаки, такие как повтор перехваченных ранее транзакций и атаки типа «отказ в обслуживании»
2. Криптография сегодня

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

2.1 Криптосистемы

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

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

2.1.1 Методология с использованием ключа

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

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

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

  • Сообщение шифруется кем-то, кто владеет ключом в данный момент. Это может быть владелец ключа; но если система скомпрометирована, это может быть другой человек.
  • Когда участники взаимодействия получают ключи, откуда они могут узнать, что эти ключи на самом деле были созданы и посланы уполномоченным на это лицом?

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

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

Асимметричные ключи создаются парами, так как связаны друг с другом. Выражение «секретный ключ» часто используют для одного из пары асимметричных ключей, который должен держаться в секрете.

Для асимметричных алгоритмов требуются асимметричные ключи.

2.1.1.1 Симметричная (секретная) методология

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

Алгоритмы симметричного шифрования используют ключи не очень большой длины и могут быстро шифровать большие объемы данных.

  1. Безопасно создается, распространяется и сохраняется симметричный секретный ключ.
  2. Отправитель создает электронную подпись с помощью расчета хэш-функции для текста и присоединения полученной строки к тексту
  3. Отправитель использует быстрый симметричный алгоритм шифрования-расшифровки вместе с секретным симметричным ключом к полученному пакету (тексту вместе с присоединенной электронной подписью) для получения зашифрованного текста. Неявно таким образом производится аутентификация, так как только отправитель знает симметричный секретный ключ и может зашифровать этот пакет. Только получатель знает симметричный секретный ключ и может расшифровать этот пакет.
  4. Отправитель передает зашифрованный текст. Симметричный секретный ключ никогда не передается по незащищенным каналам связи.
  5. Получатель использует тот же самый симметричный алгоритм шифрования-расшифровки вместе с тем же самым симметричным ключом (который уже есть у получателя) к зашифрованному тексту для восстановления исходного текста и электронной подписи. Его успешное восстановление аутентифицирует кого-то, кто знает секретный ключ.
  6. Получатель отделяет электронную подпись от текста.
  7. Получатель создает другую электронную подпись с помощью расчета хэш-функции для полученного текста.
  8. Получатель сравнивает две этих электронных подписи для проверки целостности сообщения (отсутствия его искажения)

Доступными сегодня средствами, в которых используется симметричная методология, являются:

  • Kerberos, который был разработан для аутентификации доступа к ресурсам в сети, а не для верификации данных. Он использует центральную базу данных, в которой хранятся копии секретных ключей всех пользователей.
  • Сети банкоматов (ATM Banking Networks). Эти системы являются оригинальными разработками владеющих ими банков и не продаются. В них также используются симметричные методологии.
2.1.1.2 Асимметричная (открытая) методология

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

Все асимметричные криптосистемы являются объектом атак путем прямого перебора ключей, и поэтому в них должны использоваться гораздо более длинные ключи, чем те, которые используются в симметричных криптосистемах, для обеспечения эквивалентного уровня защиты. Это сразу же сказывается на вычислительных ресурсах, требуемых для шифрования, хотя алгоритмы шифрования на эллиптических кривых могут смягчить эту проблему. Брюс Шнейер в книге «Прикладная криптография: протоколы, алгоритмы и исходный текст на C» приводит следующие данные об эквивалентных длинах ключей.

Длина симметричного ключа Длина открытого ключа
56 бит 384 бит
64 бита 512 бит
80 бит 768 бит
112 бит 1792 бита
128 бит 2304 бита

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

В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные ключи были сопоставимы в отношении уровня безопасности, который они обеспечивают. Если используется короткий сеансовый ключ ( например, 40-битовый DES), то не имеет значения, насколько велики асимметричные ключи. Хакеры будут атаковать не их, а сеансовые ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем.

Порядок использования систем с асимметричными ключами:

  1. Безопасно создаются и распространяются асимметричные открытые и секретные ключи (см. раздел 2.2 ниже). Секретный асимметричный ключ передается его владельцу. Открытый асимметричный ключ хранится в базе данных X.500 и администрируется центром выдачи сертификатов (по-английски — Certification Authority или CA). Подразумевается, что пользователи должны верить, что в такой системе производится безопасное создание, распределение и администрирование ключами. Более того, если создатель ключей и лицо или система, администрирующие их, не одно и то же, то конечный пользователь должен верить, что создатель ключей на самом деле уничтожил их копию.
  2. Создается электронная подпись текста с помощью вычисления его хэш-функции. Полученное значение шифруется с использованием асимметричного секретного ключа отправителя, а затем полученная строка символов добавляется к передаваемому тексту (только отправитель может создать электронную подпись).
  3. Создается секретный симметричный ключ, который будет использоваться для шифрования только этого сообщения или сеанса взаимодействия (сеансовый ключ), затем при помощи симметричного алгоритма шифрования/расшифровки и этого ключа шифруется исходный текст вместе с добавленной к нему электронной подписью — получается зашифрованный текст (шифр-текст).
  4. Теперь нужно решить проблему с передачей сеансового ключа получателю сообщения.
  5. Отправитель должен иметь асимметричный открытый ключ центра выдачи сертификатов (CA). Перехват незашифрованных запросов на получение этого открытого ключа является распространенной формой атаки. Может существовать целая система сертификатов, подтверждающих подлинность открытого ключа CA. Стандарт X.509 описывает ряд методов для получения пользователями открытых ключей CA, но ни один из них не может полностью защитить от подмены открытого ключа CA, что наглядно доказывает, что нет такой системы, в которой можно было бы гарантировать подлинность открытого ключа CA.
  6. Отправитель запрашивает у CA асимметричный открытый ключ получателя сообщения. Этот процесс уязвим к атаке, в ходе которой атакующий вмешивается во взаимодействие между отправителем и получателем и может модифицировать трафик, передаваемый между ними. Поэтому открытый асимметричный ключ получателя «подписывается» CA. Это означает, что CA использовал свой асимметричный секретный ключ для шифрования асимметричного отркытого ключа получателя. Только CA знает асимметричный секретный ключ CA, поэтому есть гарантии того, что открытый асимметричный ключ получателя получен именно от CA.
  7. После получения асимметричный открытый ключ получателя расшифровывается с помощью асимметричного открытого ключа CA и алгоритма асимметричного шифрования/расшифровки. Естественно, предполагается, что CA не был скомпрометирован. Если же он оказывается скомпрометированным, то это выводит из строя всю сеть его пользователей. Поэтому можно и самому зашифровать открытые ключи других пользователей, но где уверенность в том, что они не скомпрометированы?
  8. Теперь шифруется сеансовый ключ с использованием асимметричного алгоритма шифрования-расшифровки и асимметричного ключа получателя (полученного от CA и расшифрованного).
  9. Зашифрованный сеансовый ключ присоединяется к зашифрованному тексту (который включает в себя также добавленную ранее электронную подпись).
  10. Весь полученный пакет данных (зашифрованный текст, в который входит помимо исходного текста его электронная подпись, и зашифрованный сеансовый ключ) передается получателю. Так как зашифрованный сеансовый ключ передается по незащищенной сети, он является очевидным объектом различных атак.
  11. Получатель выделяет зашифрованный сеансовый ключ из полученного пакета.
  12. Теперь получателю нужно решить проблему с расшифровкой сеансового ключа.
  13. Получатель должен иметь асимметричный открытый ключ центра выдачи сертификатов (CA).
  14. Используя свой секретный асимметричный ключ и тот же самый асимметричный алгоритм шифрования получатель расшифровывает сеансовый ключ.
  15. Получатель применяет тот же самый симметричный алгоритм шифрования-расшифровки и расшифрованный симметричный (сеансовый) ключ к зашифрованному тексту и получает исходный текст вместе с электронной подписью.
  16. Получатель отделяет электронную подпись от исходного текста.
  17. Получатель запрашивает у CA асимметричный открытый ключ отправителя.
  18. Как только этот ключ получен, получатель расшифровывает его с помощью открытого ключа CA и соответствующего асимметричного алгоритма шифрования-расшифровки.
  19. Затем расшифровывается хэш-функция текста с использованием открытого ключа отправителя и асимметричного алгоритма шифрования-расшифровки.
  20. Повторно вычисляется хэш-функция полученного исходного текста.
  21. Две эти хэш-функции сравниваются для проверки того, что текст не был изменен.
2.2 Распространение ключей

Ясно, что в обоих криптосистемах нужно решать проблему распространения ключей.

В симметричных методологиях эта проблема стоит более остро, и поэтому в них ясно определяется, как передавать ключи между участниками взаимодействия до начала взаимодействия. Конкретный способ выполнения этого зависит от требуемого уровня безопасности. Если не требуется высокий уровень безопасности, то ключи можно рассылать с помощью некоторого механизма доставки (например, с помощью простой почты или курьерской службы). Банки, например, используют почту для рассылки PIN-кодов. Для обеспечения более высокого уровня безопасности более уместна ручная доставка ключей ответственными за это людьми, возможно по частям несколькими людьми.

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

Сторонники асимметричных систем считают, что такого механизма достаточно для обеспечения аутентичности абонентов взаимодействия.

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

Проблема с распространением ключей в асимметричных системах состоит в следующем:

  • X.509 подразумевает, что ключи безопасно раздаются, и не описывает способ решения этой проблемы — а только указывает на существование этой проблемы. Не существует стандартов для решения этого. Для безопасности ключи должны доставляться вручную (независимо от того, симметричные они или асимметричные).
  • Нет надежного способа проверить, между какими компьютерами осуществляется взаимодействие. Есть вид атаки, при котором атакующий маскируется под CA и получает данные, передаваемые в ходе взаимодействия. Для этого атакующему достаточно перехватить запрос к центру сертификации ключей и подменить его ключи своими. Эта атака может успешно продолжаться в течение длительного времени.
  • Электронная подпись ключей центром сертификации ключей не всегда гарантирует их аутентичность, так как ключ самого CA может оказаться скомпрометированным. X.509 описывает способ электронной подписи ключей CA центрами сертификации ключей более высокого уровня и называет его «путь сертификации». X.509 рассматривает проблемы, связанные с проверкой корректности открытого ключа, предполагая, что эта проблема может быть решена только при отсутствии разрыва в цепочке доверенных мест в распределенном справочнике открытых ключей пользователей. Нет способа обойти это.
  • X.509 предполагает, что пользователь уже имеет доступ к открытому ключу CA. Как это осуществляется, в нем не определяется.
  • Компрометация центра сертификации ключей весьма реальная угроза. Компрометация CA означает. Что все пользователи этой системы будут скомпрометированы. И никто не будет знать об этом. X.509 предполагает, что все ключи, включая ключи самого CA, хранятся в безопасном месте. Внедрение системы справочников X.509 (где хранятся ключи) довольно сложно, и уязвимо к ошибкам в конфигурации. В настоящее время слишком мало людей обладают техническими знаниями, необходимыми для правильного администрирования таких систем. Более того, понятно, что на людей, занимающих такие важные должности, может быть оказано давление.
  • CA могут оказаться узким местом. Для обеспечения устойчивости к сбоям X.509 предлагает, чтобы база данных CA была реплицирована с помощью стандартных средств X.500; это значительно увеличит стоимость криптосистемы. А при маскараде под CA будет трудно определить, какая система была атакована. Более того, все данные из базы данных CA должны посылаться по каналам связи каким-то образом.
  • Система справочников X.500 сложна в установке, конфигурировании и администрировании. Доступ к этому справочнику должен предоставляться либо с помощью дополнительной службы подписки, либо организации придется самой ее организовывать. Сертификат X.509 предполагает, что каждый человек имеет уникальное имя. Выделение имен людям — задача еще одной доверенной службы — службы именования.
  • Сеансовые ключи, несмотря на то, что шифруются, все-таки передаются по незащищенным каналам связи.

Несмотря на все эти серьезные недостатки пользователь должен неявно доверять асимметричной криптосистеме.

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

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

Раздача ключей может аудироваться и протоколироваться, но это все-таки не защитит ее до конца от компрометации отдельными людьми.

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

Пользователи должны доверять всей этой системе.

Всего лишь одна успешная атака компрометирует всю систему.

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

Не может использоваться для шифрования или расшифровки сообщений.

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

Уязвим к атаке «активное вмешательство в соединение».

2.3 Алгоритмы шифрования

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

2.3.1 Симметричные алгоритмы

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

Шифруется блок из 64 бит, используется 64-битовый ключ (требуется только 56 бит), 16 проходов

  • Электронная кодовая книга (ECB-Electronic Code Book ) — обычный DES, использует два различных алгоритма.
  • Цепочечный режим (CBC-Cipher Block Chaining), в котором шифрование шифрование блока данных зависит от результатов шифрования предыдущих блоков данных.
  • Обратная связь по выходу (OFB-Output Feedback), используется как генератор случайных чисел.
  • Обратная связь по шифратору (CFB-Cipher Feedback), используется для получения кодов аутентификации сообщений.

До недавнего времени был секретным, но его стойкость не зависела только от того, что он был секретным.

Приблизительно в 2 раза быстрее, чем DES

Может использоваться в тех же режимах, что и DES, включая тройное шифрование.

Приблизительно в 10 раз быстрее DES.

Быстрый блочный шифр

Быстрее, чем DES

2.3.2 Асимметричные алгоритмы

Асимметричные алгоритмы используются в асимметричных криптосистемах для шифрования симметричных сеансовых ключей (которые используются для шифрования самих данных).

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

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

2.4 Хэш-функции

Хэш-функции являются одним из важных элементов криптосистем на основе ключей. Их относительно легко вычислить, но почти невозможно расшифровать. Хэш-функция имеет исходные данные переменной длины и возвращает строку фиксированного размера (иногда называемую дайджестом сообщения — MD), обычно 128 бит. Хэш-функции используются для обнаружения модификации сообщения (то есть для электронной подписи).

Похожа на MD4, но средства повышения безопасности делают ее на 33% медленнее, чем MD4

Обеспечивает целостность данных

Предложена NIST и принята правительством США как стандарт

2.5 Механизмы аутентификации

Эти механизмы позволяют проверить подлинность личности участника взаимодействия безопасным и надежным способом.

Обычно аутентификация производится в 2 этапа.

2.6 Электронные подписи и временные метки

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

Секретное создание хэш-значения и публичная проверка ее — только один человек может создать хэш-значение сообщения, но любой может проверить ее корректность.

  • 15.11 — Китай запустил самый быстрый в мире интернет — 1,2 Тбит/с и это втрое быстрее, чем у США
  • 15.11 — Запущены суперкомпьютеры Dawn, SuperMUC-NG и Crossroads на базе Intel Data Center GPU Max и Xeon Sapphire Rapids
  • 15.11 — Aurora на базе Intel стал вторым мощнейшим суперкомпьютером в мире — лидером остался вдвое более мощный Frontier на AMD
  • 15.11 — Создан ИИ, который превращает 2D-изображение в 3D-модель за пять секунд
  • 15.11 — Найдена уязвимость, через которую любой процессор Intel можно заставить сбоить
  • 10.11 — Apple, Google, Samsung и прочие создадут стандарт умных замков и цифровых ключей Aliro
  • 10.11 — Samsung и Google представили бесплатную технологию IAMF для революции в домашнем пространственном звуке
  • 10.11 — Индия станет крупнейшим центром разработки ПО в мире к 2027 году
  • 10.11 — NASA испытало самый мощный электроракетный двигатель в истории — его применят на лунной орбитальной станции
  • 08.11 — Релиз дистрибутива Fedora Linux 39
  • 08.11 — Apple остановила разработку iOS 18 и других новых ОС, чтобы исправить накопившиеся ошибки
  • 08.11 — Власти собрались обеспечить всю Россию гигабитным интернетом, а все большие города — 5G-связью к 2035 году
  • 08.11 — Google запустила ИИ, который поможет рекламодателям создавать заголовки, описания и изображения товаров
  • 08.11 — Учёные впервые напрямую обнаружили атомарный кислород в атмосфере Венеры
  • 03.11 — Опубликован релиз Chrome 119
  • 03.11 — VK догнал YouTube по аудитории в России — это теперь самые популярные платформы в стране
  • 03.11 — В Великобритании появится ИИ-суперкомпьютер Dawn, разработанный Dell, Intel и Кембриджским университетом
  • 03.11 — Крупнейший в мире термоядерный реактор запущен в Японии
  • 31.10 — Код Bcachefs принят в основной состав ядра Linux 6.7
  • 31.10 — Релиз ядра Linux 6.6

Введение в криптографию с открытым ключом

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

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

  1. Пользователь А получает открытый ключ пользователя Б из центра распределения ключей или непосредственно от пользователя Б.
  2. Пользователь А генерирует случайный сеансовый ключ и зашифровывает его полученным открытым ключом.
  3. Зашифрованный сеансовый ключ пересылается пользователю Б.
  4. Пользователь Б расшифровывает полученный пакет своим закрытым ключом.
  5. Пользователи А и Б используют согласованный сеансовый ключ для обмена шифрованными сообщениями.

Схему формирования парой пользователей А и В общего секретного ключа К для шифрования — расшифрования можно изобразить следующим образом ( рис. 9.4).

 Схема формирования общего секретного ключа

Рис. 9.4. Схема формирования общего секретного ключа

Эта схема напоминает рис. 9.1, и это неудивительно, ведь в ней используется тот же самый режим шифрования открытым ключом. Отличие заключается в том, что шифруется. В схеме на рис. 9.4 производится шифрование небольшого по размеру сеансового ключа, который в дальнейшем будет использован в качестве секретного ключа при шифровании симметричным алгоритмом . Шифрование небольшого по размеру блока данных выполняется достаточно быстро и не замедляет телекоммуникационные процессы даже в системе с многими тысячами пользователей.

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

Требования к алгоритмам шифрования с открытым ключом

Рассмотрев основные способы применения алгоритмов шифрования с открытым ключом, изучим требования, которым должен, по мнению основоположников теории шифрования с открытым ключом Диффи и Хеллмана, удовлетворять алгоритм шифрования с открытым ключом. Эти требования следующие:

  1. Вычислительно легко создавать пару (открытый ключ, закрытый ключ).
  2. Вычислительно легко зашифровать сообщение открытым ключом.
  3. Вычислительно легко расшифровать сообщение, используя закрытый ключ.
  4. Вычислительно невозможно, зная открытый ключ, определить соответствующий закрытый ключ.
  5. Вычислительно невозможно, зная только открытый ключ и зашифрованное сообщение, восстановить исходное сообщение.

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

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

Название алгоритма Возможность использования
Шифрование / расшифрование данных Цифровая подпись Согласование или формирование ключа
RSA Да Да Да
Алгоритм Диффи-Хеллмана Нет Нет Да
Алгоритм Эль-Гамаля Да Да Да
Алгоритмы с использованием эллиптических кривых Да Да Да

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

Ключевые термины

Алгоритм шифрования с открытым ключом (или асимметричные криптоалгоритмы ) – криптографический алгоритм , в котором для шифрования и расшифрования используются разные ключи.

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

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

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

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

Присоединяемые цифровые подписи – подписи, вычисленные по хеш-коду документа. Такие цифровые подписи представляют собой некоторый числовой код, который необходимо пристыковывать к подписываемому документу. Само сообщение при этом не шифруется и передается в открытом виде вместе с цифровой подписью отправителя.

Цифровая (электронная) подпись ( digital signature ) – уникальное числовое дополнение к передаваемой информации, позволяющее проверить ее авторство. Электронная (цифровая) подпись ( ЭЦП ) представляет собой последовательность бит фиксированной длины, которая вычисляется определенным образом с помощью содержимого подписываемой информации и секретного ключа.

Цифровые подписи с восстановлением документа – подписи, которые как бы содержат в себе подписываемый документ: в процессе проверки подписи автоматически вычисляется и тело документа . Если при расшифровывании сообщение восстановилось правильно, значит, подпись была верной.

Краткие итоги

Асимметричные алгоритмы шифрования (или алгоритмы с открытым ключом) – криптографические алгоритмы, в которых один ключ используется для шифрования, а другой, отличный от первого, – для расшифрования. Алгоритмы называются асимметричными, так как ключи шифрования и расшифрования разные, следовательно, отсутствует симметрия основных криптографических процессов. Один из двух ключей является открытым ( public key ) и может быть объявлен всем, а второй – закрытым ( private key ) и должен держаться в секрете. Какой из ключей, открытый или закрытый, используется для шифрования, а какой для расшифрования, определяется назначением криптографической системы.

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

Алгоритмы шифрования с открытым ключом можно использовать для решения следующих задач:

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

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

Набор для практики

Вопросы для самопроверки
  1. Чем асимметричные алгоритмы шифрования отличаются от симметричных?
  2. Для решения каких задач могут на практике применяться алгоритмы шифрования с открытым ключом?
  3. Какие математические функции называются односторонними? Для чего они могут применяться в криптографии?
  4. Что такое цифровая подпись?
  5. Каков алгоритм формирования цифровой подписи при использовании алгоритмов шифрования с открытым ключом?
  6. Каким образом алгоритмы шифрования с открытым ключом могут использоваться для формирования общего секретного ключа у группы пользователей?
  7. Какие требования предъявляются к асимметричным алгоритмам?

Асимметричная криптография для чайников

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

Шифр

В базе своей асимметричное шифрование состоит из пары ключей — публичного и приватного. Иногда их называют открытым и закрытым. Именно пары — оба ключа создаются и используются вместе. Создает их получатель сообщения и выдает публичный ключ отправителю, а приватный — держит у себя в секрете. «Публичный» — от латинского слова publicus — публика, poplicus — люди, т.е. общественный. «Популярный», «попса» — почти однокоренные. Приватный — от слова privus — единичный, индивидуальный, т.е. личный.

Передача ключа

Отправитель использует публичный ключ чтобы зашифровывать (закрыть) сообщение. Зашифрованное сообщение очень сложно расшифровать без приватного ключа, поэтому можно, в целом, без опаски передавать его получателю по открытым каналам связи. Получатель расшифровывает (открывает) сообщение своим секретным, приватным ключом. Слово шифр (англ. ciphers) — образованны от арабского ṣifr (صفر, сифр), т.е. ноль. Слово «цифра» — тоже.

Шифрование

Сертификаты

Этот шифр подвержен атакам. Одна из таких — подмена ключа или «атака посредника». Злоумышленник может перехватить публичный ключ и подменить его своим. Отправитель будет шифровать сообщение ключом злоумышленника, злоумышленник будет читать сообщение, шифровать ключом получателя и пересылать получателю. В общем — встроится между получателем и отправителем.

Атака посредника

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

Подпись сертификата

Если злоумышленник покажет сертификат под видом получателя — отправитель это поймет. Например: в сертификате фотография получателя. Тогда, либо фото не совпадает с фото злоумышленника и сертификат недействительный; либо злоумышленник создаст свой сертификат, но подмена не удастся.

Недействительный сертификат

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

Подпись и проверка сертификата

Интернет

Автоматически под капотом все эти механизмы обрабатывает браузер. Например, хром:

Строки адреса браузера

В вебе для шифрования используется протокол https, поверх протокола TLS (и его предшественник SSL, который морально устарел). Значок замочка обозначает, что сайт защищен (т.е. данные передаются по https). Если написано — «Не защищено» — значит это http без s (secure), данные передаются в открытую, их без проблем может прочитать кто угодно в цепочке передачи сообщения. Пароли, коды и сообщения, которые вы введете на этом сайте, смогут прочитать кто угодно: провайдер, тов.майор, сисадмин и т.д.

Если же https включен, но сертификат не валидный — браузер не пустит на страницу. В хроме — есть возможность продолжить на свой страх и риск. Современные сертификаты содержат в себе не только домен сайта, но и срок действия. Выдают их доверенные центры сертификации. Например, хабру сертификат выдан до 24.10.23 от «Sectigo ECC Domain Validation Secure Server CA», а им в свою очередь от корневого «USERTrust ECC Certification Authority». Посмотреть это можно нажав на замочек.

Чтобы защитить данные — сайт может использовать самоподписанный сертификат. В таком случае — данные будут защищены, но подвержены атаке посредника, т.к. нет доверенного. Браузеры, как правило, отмечают такие сертификаты как недействительные.

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

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

Для ускорения — подпись создается не из всего подписываемого документа, а только из его хэша.

Как это работает

Для примера возьму один из древнейших шифров — Шифр Цезаря. Он довольно прост: в исходом сообщении сдвигаем каждую букву в алфавите на ключ (число) k. Для буквы «А», при k=1 будет «Б», при k=2 будет «В» и т.д.

Мы генерируем два ключа, k1 — для шифрования, k2 — для дешифрования:

k1 = 4 (выбрали случайно)

k2 = 33-k1 = 29 (33 — количество букв в алфавите)

Зашифруем сообщение «эчпочмак с горячим чаем«. Получается «быутырдо х жтфгымр ыдир«.

Если мы повторим на получившуюся фразу алгоритм с тем же ключом k1 = 4, то получится «еячцяфзт щ кцшжярф язмф«. А значит, нужно использовать другой ключ, k2 = 29, в таком случае получим исходную фразу. Таким образом для шифрования мы использовали k1, а для дешифрования — k2

Шифр не криптостойкий и легко взламывается. На практике же применяются более сложные алгоритмы.

Практика

Разновидность ассиметричных шифров — криптосистемы с открытым ключом используются для: 1) генерации ключей (для подписи), 2) обмена ключами 3) шифрования и дешифрования сообщения.

Самый популярный ассиметричный алгоритм — RSA. С помощью него можно как создать подпись, так и зашифровать/расшифровать сообщение. Работает он за счет сложности факторизации полупростых чисел. Но есть и другие: Elgamal, LUC и пр.

Для генерации ключей в SSL/TLS рекомендуют использовать 2048-bit RSA или 256-bit ECDSA. Но ECDSA (эллиптическая криптография) — быстрее и размер ключа меньше. На эту тему есть статья Хватит использовать RSA от @Scratch и статья Эллиптическая криптография: теория от @NeverWalkAloner. Есть также и другие криптосистемы для подписи: DSA, «ГОСТ 34.10-2018» и пр. Но шифровать сообщение с их помощью нельзя, лишь подписать и проверить подпись.

Так же бывают гибридные системы — они сочетают одновременно ассиметричную и симметричную криптографию. Симметричные криптосистемы используют один и тот же ключ и для шифровки, так и дешифровки сообщения. Например AES, DES и т.д. Но для генерации ключей для подписи и ее проверки не используются.

Например, схема шифрования ECIES включает в себя создание ключей на эллиптических кривых (ECC), обмен публичными ключами и генерация из них общего секретного ключа через протокол Диффи-Хеллмана, а затем шифрование сообщения через симметричный алгоритм общим ключом.

TLS (для https, стандарт защиты в вебе) — пример гибридной системы. Он позволяет использовать различные алгоритмы, браузер и сайт сами «договариваются» об алгоритме генерации ключей и шифрования, используют лучший из возможных. Для генерации ключей используется ассиметричные шифры, но алгоритмы шифрования для защиты самого сообщения при этом используются симметричные.

Есть рекомендуемые наборы шифров (Cipher Suite) для TLS. Рекомендации бывают такие и сякие, в общем — разные. Можно проверить, что используется в вашем браузере и какие поддерживаются. Например, этот — TLS_CHACHA20_POLY1305_SHA256. По буквам:

TLS — transport layer security (протокол защитного транспортного уровня)

CHACHA20_POLY1305 — ChaCha20-Poly1305, AEAD — это шифрование с аутентификацией (AE) с дополнительными данными (AD). ChaCha20 — потоковый шифр, вот статья на тему. POLY1305 — код аутентификации, формирует одноразовый номер (nonce), имитовставка для защиты целостности сообщения.

SHA256 — алгоритм хеширования с 256 битным хешем.

Реализации этого как правило есть в криптографических библиотеках. Например, для NET.7 есть реализация шифра CHACHA20_POLY1305.

Для более глубокого ознакомления — рекомендую статью Заметки по выбору шифров для TLS 1.3 от @Delion.

Пример электронной подписи

В академических целях возьмем ECDSA (эллиптическая кривая) для построения ключей подписи, асимметричный алгоритм. Есть уже готовые онлайн кодеры и декодеры, воспользуемся этим. Выбираем secp256k1 (параметры кривой). Я сгенерировал публичный и приватные ключи.

——BEGIN PUBLIC KEY——
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEGs+iqyttCXyioLEfV6i8AqTmVtV+zHBY 9v9YgH8y2GpvJbG6rr2pac9UjmAUYvD1WFPvU99g0rGY5Ecrpltnqw==
——END PUBLIC KEY——

Приватный ключ

Сообщением будет «Привет!» и подпись:

Чтобы проверить: вставляем в «Public Key» публичный ключ, внизу в «For Signature Verification» — подпись и в «Plain Text Message» — «Привет!» без кавычек. Выбираем «Verify Signature» — подтвердить подпись.

В дальнейшем, даже на другом сайте я могу подтвердить, что я — автор этой статьи, проверить подпись там можно этим же публичным ключом. Например: http://www.ildar.in/publickeyexample

Пример шифрования сообщения

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

Генерируем пару ключей на 2048 бит. Мой публичный ключ:

С помощью публичного ключа, я зашифрую сообщение сам себе «Это — пример зашифрованного сообщения.» (Нажимаю Encrypt) и получаю шифровку:

Используя свой приватный ключ, я могу расшифровать это сообщение. Любой может зашифровать сообщение с этим публичным ключом и только я смогу его прочитать (если приватный ключ не будет потерян или скомпрометирован). По аналогии — любой может написать свой публичный ключ и получать ни для кого другого не читаемые шифровки.

Термины

Слово криптография образованно от двух др. греческих слов: kryptós (криптос) — сокрытое, секрет; и graphein (графен) — писать. Значит — запись чего-то секретного, «секретописание».

Асимметричное — от Праиндоевропейской приставки *sem- единый, вместе; *meh₁- измерять + суффикс -τρον (-трон) второе склонение, означает «тематически». Приставка (префикс) a- означает отрицание. Т.е. симметрия — что-то измеряемое одновременно. И асимметрия — что-то, что одновременно не измеримо. Например, симметрия глаз — для обоих глаз что-то совпадает. И наоборот — асимметричные глаза — для каждого глаза — что-то разное. Асимметрия цвета глаз — гетерохромия, глаза разного цвета.

Многие слова на латыни легко понять просто из своего состава, например — сертификат. Слова сформировались исторически, изучением занимается этимология. Причем, слова в некоторых языках могли образоваться от одного и того-же слова, но разными путями. Например: «секрет» — от слова «крыть», предположительно от др. греческого κρύπτω (крипто, скрыть). Можете сравнить этимологию слова «сертификат» и его значение в словариках, словите кринж и лулзы.

Спасибо за внимание!

  • шифрование
  • криптография
  • асимметричная криптография
  • шифр
  • шифрование данных
  • Информационная безопасность
  • Криптография

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *