Несимметричная криптография. Разница между асимметричными и симметричными методами шифрования? Симметричное и асимметричное шифрование

03.04.2019 Звуковые устройства

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

Если быть точным, то правильнее говорить симметричные и асимметричные алгоритмы шифрования.

Криптография (крипто - скрывать, прятать), как наука о сокрытии написанного, наука о сокрытии информации.

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

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

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

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

Теперь о том для чего и почему используются симметричные и асимметричные алгоритмы:
Из таблицы видно, что для шифрования большого объёма информации, для потокового шифрования (например, VPN с шифрованием) используются быстрые и нетребовательные симметричные алгоритмы.

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

В жизни конечно всё немножко не так, как в теории.
В жизни используется комбинация симметричных и асимметричных алгоритмов.

Например, VPN с шифрованием:

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

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

Постановка задачи защиты информации (Security challenge)

Схема симметричного шифрования

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

SE = (K, E, D) , где

  • K - алгоритм генерации ключа K,
  • E(M, K) = C - алгоритм шифрования открытого текста M на ключе K, результатом которого является шифротекст C,
  • D(C, K) = M - алгоритм расшифрования шифротекста C на ключе K, результатом которого является открытый текст M

Процесс обмена сообщениями можно описать следующим образом:

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

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

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

  • блочные шифры. Обрабатывают информацию блоками определённой длины (обычно 64, 128 бит, как например в DES или AES), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами.
  • поточные шифры, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования.

На практике, грань между блочными и поточными алгоритмами шифрования довольно размытая (поточный шифр может быть легко создан на основе блочного, например, ГОСТ 28147-89 в режиме гаммирования).

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

Вот некоторые из симметричных схем шифрования:

  1. (ECB) Electronic Code Book (Режим электронной кодовой книги)
    • (ECB CTS
  2. (CBC) Cipher Block Chaining Режим сцепления блоков шифротекста
    • (CBC CTS) CipherText Stealing (Захват зашифрованного текста)
    1. () block chaining Режим сцепления блоков
    2. (CBC$) Cipher Block Chaining with random IV (initialization vector) Режим сцепления блоков со случайным вектором инициализации
    3. (CBCC) cipher block chaining with checksum Режим сцепления блоков шифротекста с контрольной суммой
    4. (PCBC) propagating cipher block chaining Режим сцепления блоков с распространением ошибок
    5. (CBCPD) cipher block chaining of plaintext difference Сцепления блоков текста по различиям открытого текста
  3. (CFB) Cipher Feed Back Режим обратной связи по шифротексту
  4. (OFB) Output Feed Back Режим обратной связи по выходу
  5. (OFBNLF) output feedback with a nonlinear function Режим нелинейной обратной связи по выходу
  6. (PBC) plaintext block chaining Сцепление блоков открытого текста
  7. (PFB) plaintext feedback Режим обратной связи по открытому тексту
  8. (CTR) Counter Режим счетчика
  9. Кратное шифрование
    1. Двойное
      • Метод Дэвиса-Прайса
    2. Тройное
      • Схема Тачмена
      • Схема с тремя ключами

Основные криптографические конструкции и их стойкость (Cryptographic primitives and/or protocols)

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

Для обеспечения надежности симметричных алгоритмов шифрования необходимо:

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

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

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

  • Конфиденциальность передачи зависит от надежности шифра и обеспечения конфиденциальности ключа шифрования.
  • Подлинность обеспечивается за счет того, что без предварительного расшифровывания практически невозможно осуществить смысловую модификацию и подлог криптографически закрытого сообщения. Фальшивое сообщение не может быть правильно зашифровано без знания секретного ключа.
  • Целостность данных обеспечивается присоединением к передаваемым данным специального кода (имитовставки), вырабатываемой по секретному ключу. Имитовставка является разновидностью контрольной суммы, т. е. некоторой эталонной характеристикой сообщения, по которой осуществляется проверка целостности последнего. Алгоритм формирования имитовставки должен обеспечивать ее зависимость по некоторому сложному криптографическому закону от каждого бита сообщения. Проверка целостности сообщения выполняется получателем сообщения путем выработки по секретному ключу имитовставки, соответствующей полученному сообщению, и ее сравнения с полученным значением имитовставки. При совпадении делается вывод о том, что информация не была модифицирована на пути от отправителя к получателю.

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

Практические применения криптографических конструкций, особенности их реализации (Practical issues)

Практическое применение схем шифрования можно увидеть во многих сферах нашей жизни, к примеру, схему ECB используют для шифрования ключей, схемы CBC и CFB используют для аутентификации данных, схему CFB, кроме того, используют для шифрования отдельных символов. Схему OFB нередко используется в каналах с большими помехами (например, спутниковые системы связи). PCBC схему шифрования используют протоколы Kerberos v4 и WASTE

  • Разработка веб-сайтов ,
  • Алгоритмы
    • Перевод

    Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

    Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

    Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?

    Трубопровод

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

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

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

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

    Для этого требуется больше вычислительных мощностей
    Передается больше данных
    Нельзя использовать кеширование

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

    Transport Layer Security (TLS)

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

    TLS - наследник SSL - это такой протокол, наиболее часто применяемый для обеспечения безопасного HTTP соединения (так называемого HTTPS). TLS расположен на уровень ниже протокола HTTP в модели OSI . Объясняя на пальцах, это означает, что в процессе выполнения запроса сперва происходят все “вещи”, связанные с TLS-соединением и уже потом, все что связано с HTTP-соединением.

    TLS – гибридная криптографическая система. Это означает, что она использует несколько криптографических подходов, которые мы и рассмотрим далее:

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

    Криптосистема с открытым ключом

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

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

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

    Как это возможно? Математика!

    Алгоритм Ди́ффи - Хе́ллмана

    Одним из наиболее распространенных подходов является алгоритм обмена ключами Ди́ффи - Хе́ллмана (DH). Этот алгоритм позволяет клиенту и серверу договориться по поводу общего секретного ключа, без необходимости передачи секретного ключа по соединению. Таким образом, злоумышленники, прослушивающие канал, не смогу определить секретный ключ, даже если они будут перехватывать все пакеты данных без исключения.

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

    Немного математики…

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

    Пусть Алиса и Боб – две стороны, осуществляющие обмен ключами по DH-алгоритму. Сперва они договариваются о некотором основании root (обычно маленьком числе, таком как 2,3 или 5) и об очень большом простом числе prime (больше чем 300 цифр). Оба значения пересылаются в открытом виде по каналу связи, без угрозы компрометировать соединение.

    Напомним, что и у Алисы, и у Боба есть собственные закрытые ключи (из более чем 100 цифр), которые никогда не передаются по каналам связи.

    По каналу связи же передается смесь mixture , полученная из закрытых ключей, а также значений prime и root .

    Таким образом:
    Alice’s mixture = (root ^ Alice’s Secret) % prime
    Bob’s mixture = (root ^ Bob’s Secret) % prime
    где % - остаток от деления

    Таким образом, Алиса создает свою смесь mixture на основе утвержденных значений констант (root и prime ), Боб делает то же самое. Как только они получили значения mixture друг друга, они производят дополнительные математические операции для получения закрытого ключа сессии. А именно:

    Вычисления Алисы
    (Bob’s mixture ^ Alice’s Secret) % prime

    Вычисления Боба
    (Alice’s mixture ^ Bob’s Secret) % prime

    Результатом этих операций является одно и то же число, как для Алисы, так и для Боба, и это число и становится закрытым ключом на данную сессию. Обратите внимание, что ни одна из сторон не должна была пересылать свой закрытый ключ по каналу связи, и полученный секретный ключ так же не передавался по открытому соединению. Великолепно!

    Для тех, кто меньше подкован в математическом плане, Wikipedia дает прекрасную картинку , объясняющую данный процесс на примере смешивания цветов:

    Обратите внимание как начальный цвет (желтый) в итоге превращается в один и тот же “смешанный” цвет и у Боба, и у Алисы. Единственное, что передается по открытому каналу связи так это наполовину смешанные цвета, на самом деле бессмысленные для любого прослушивающего канал связи.

    Симметричное шифрование

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

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

    Аутентификация

    Алгоритм Диффи-Хеллмана позволяет двум сторонам получить закрытый секретный ключ. Но откуда обе стороны могут уверены, что разговаривают действительно друг с другом? Мы еще не говорили об аутентификации.

    Что если я позвоню своему приятелю, мы осуществим DH-обмен ключами, но вдруг окажется, что мой звонок был перехвачен и на самом деле я общался с кем-то другим?! Я по прежнему смогу безопасно общаться с этим человеком – никто больше не сможет нас прослушать – но это будет совсем не тот, с кем я думаю, что общаюсь. Это не слишком безопасно!

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

    Но, на самом деле, что это за сертификат, и как он предоставляет нам безопасность?

    Сертификаты

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

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

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

    Чтобы сертификату доверял любой веб-браузер, он должен быть подписан аккредитованным удостоверяющим центром (центром сертификации, Certificate Authority, CA). CA – это компании, выполняющие ручную проверку, того что лицо, пытающееся получить сертификат, удовлетворяет следующим двум условиям:

    1. является реально существующим;
    2. имеет доступ к домену, сертификат для которого оно пытается получить.

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

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

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

    Прочие вещи которые нужно знать о сертификатах

    Расширенная валидация
    В дополнение к обычным X.509 сертификатам, существуют Extended validation сертификаты, обеспечивающие более высокий уровень доверия. Выдавая такой сертификат, CA совершает еще больше проверок в отношении лица, получающего сертификат (обычно используя паспортные данные или счета).

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

    Обслуживание множества веб-сайтов на одном сервере
    Поскольку обмен данными по протоколу TLS происходит еще до начала HTTP соединения, могут возникать проблемы в случае, если несколько веб-сайтов расположены на одном и том же веб-сервере, по тому же IP-адресу. Роутинг виртуальных хостов осуществляется веб-сервером, но TLS-соединение возникает еще раньше. Единый сертификат на весь сервер будет использоваться при запросе к любому сайту, расположенному на сервере, что может вызвать

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

    Что такое шифрование

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

    Особенностью такого вида передачи данных является использование ключа.

    Есть три состояния безопасности:

    • скрытие информации от посторонних;
    • предотвращение изменений;
    • сохранение целостности информации;
    • идентификация отправителя.

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

    Бывают два вида шифрования: симметричный и асимметричный.

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

    • отправитель шифрует данные;
    • получатель расшифровывает.

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

    Криптостойкость

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

    Существует 2 основных типа криптостойкости системы шифрования.

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

    Сравнение криптостойкости некоторых систем шифрования

    Максимальный размер ключа RSA - 4096 бит.

    Он используется для шифрования и подписи. Криптостойкость можно описать как 2,7.1028 для ключа 1300 Бит. Схема применяется во многих стандартах, принцип шифрования RSA один из первых асимметричных алгоритмов.

    Размер ключа схемы Эль-Гамаля равен RSA - 4096 Бит. Он используется и для шифрования, и для цифровой подписи. Криптостойкость этой системы не отличается от RSA при одинаковом размере ключа.

    В методе DSA используется значительно меньшей ключ - 1024 бита. Применяется он исключительно для цифровой подписи.

    Симметричное и асимметричное шифрование

    Эти два вида шифрования отличаются количеством ключей и уровнем устойчивости к взлому.

    Если для кодирования и раскодирования используется один ключ, то это шифрование симметричное. Асимметричное шифрование подразумевает использование одного ключа для каждого алгоритма.

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

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

    Особенности симметричного шифрования

    Симметричная система защита имеет следующие достоинства.


    К недостаткам относится следующее:

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

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

    Особенности асимметричного шифрования

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

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

    Имеет такие преимущества:

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

    В таких алгоритмах сложно внести какие-либо изменения. Подобная система имеет длинные ключи. Если симметричный ключ имеет размер 128 Бит, то ключ RSA - 2304 Бит. Из-за этого страдает скорость расшифровывания - она в 2-3 раза медленнее. Для расшифровки требуются большие вычислительные ресурсы.

    Существует очень много примеров симметричной и асимметричной систем шифрования.

    Симметричное шифрование - как выглядит?

    Пример симметричного шифрования и схема реализации ниже.

    1. Есть два собеседника, которые планируют обменяться конфиденциальной информацией.
    2. Первый собеседник генерирует ключ d, алгоритмы шифрования E и дешифрования D. Затем посылает эту информацию второму собеседнику.
    3. Сообщение дешифруется ключом d.

    Главным недостатком является невозможность установить подлинность текста. В случае перехвата ключа злоумышленник расшифрует секретную информацию.

    Существуют классические методы.

    1. Простая и двойная перестановка.
    2. Магический квадрат.
    3. Одиночная перестановка.

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

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

    “Магический квадрат” - более сложная структура, которая представляет собой матрицу. В клетки вписываются натуральные числа таким образом, чтобы сумма чисел по каждому столбцу, строке, диагонали была одинаковой. Каждое число соответствует букве сообщения. Полученный текст выписывается в строку, сопоставляя числа и символы.

    Примеры асимметричного шифрования

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

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

    1. Первый собеседник выбирает алгоритмы шифрования и дешифрования, пару ключей. Открытый ключ посылает второму собеседнику.
    2. Второй собеседник шифрует информацию с помощью полученного ключа. Отправляет информацию первому собеседнику, который расшифровывает сообщение с помощью закрытого ключа.

    Существует такие основные методы асинхронного шифрования.

    1. Шифр Эль-Гамаля.

    RSA

    RSA - первый криптографический алгоритм, используемый и для шифрования, и для цифровой подписи.

    Описывается так.

    1. Выбирается два простых числа, например, 3 и 7.
    2. Вычисляется модуль n - произведение двух чисел. Получается 21.
    3. Вычисляется функция Эйлера φ=(p-1)×(q-1)=2×6=12 .
    4. Вычисляется любое простое число e меньше φ и простое с φ. Доступные варианты: 5, 7, 11.

    Пара чисел e, n (5, 21) - открытый ключ. Теперь вычисляются числа d и n закрытого ключа. Число d удовлетворяет условие (d×е) mod φ=1 и равняется 17. В итоге вторая пара чисел 17 и 21 - закрытый ключ. Шифрование выполняется следующим образом: сообщение возводится в степень e, берется остаток от деления на n, при этом результат должен быть меньше числа n. Получается 10 - это будут закодированные данные. Для раскодировки e возводится в степень d, вычисляется остаток от деления на n.

    DSA

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

    1. Выбор криптографической хэш-функции H(x).
    2. Битность простого числа q должна равняться значению хэш-функции H(x).
    3. Подбор такого простого числа p, чтобы p-1 делился без остатка на q.
    4. Вычисление числа g = h (p-1)/q mod p . h должно быть произвольным числом в диапазоне от 1 до p-1.
    5. Выбирается случайное число k от 0 до q.
    6. Вычисляется r = (g k mod p) mod q .
    7. Затем s = k-1(H(m) + xr)) mod q .
    8. Если r=0 или s=0, выбирается другое число k.

    Схема Эль-Гамаля

    Шифрование по схеме Эль-Гамаля используется для цифровых подписей. Является продолжением алгоритма Диффи-Хеллмана.

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

    Генерация ключей происходит следующим образом.

    1. Выбирается случайное простое число p.
    2. Число g должно быть первообразным корнем p.
    3. Число x должно быть больше 1 и меньше p-1. Это будет закрытый ключ.
    4. Затем вычисляется открытый ключ y по формуле g^x mod p .

    При шифровании текста M выбирается системный ключ K. Он больше единицы и меньше p-1. Затем вычисляются числа a и b, которые являются шифротекстом, a = g^k mod p и b = y^k M mod p .

    Это отличное введение в принципы криптографии.

    Если вас серьезно интересует криптография, я настоятельно рекомендую Handbook of Applied Cryptography как удивительную справочную работу. Сначало будет слишком много, но это бесплатно, так что теперь возьмите копию:) и когда вы закончите с AC, прочитайте HAC. (На самом деле, издание в твердом переплете очень хорошо сделано и гораздо легче читать, чем несколько сотен страниц бумаги с лазерной печатью, подумайте о покупке, если вам нравится внешний вид PDF файлов.)

    Симметричное шифрование работает, смешивая секретный ввод с секретным ключом таким образом, что он (а) быстро (b) не может выводить вход или ключ из вывода. Детали микширования значительно различаются, но есть блок-шифры и потоковые шифры ; блочные шифры работают, просматривая входные данные в 8 или 16 или 32 байтовых блоках за раз, и рассеивая вход и ключ в этих блоках. Различные режимы необходимы для шифрования большего количества данных, чем пригонки в блоках, а различные режимы работы могут или не могут распространять данные между блоками.

    Симметричные шифры являются фантастическими для шифрования массовых данных, от 8 до 8 терабайт, это лучший выбор для шифрования данных.

    Асимметричное шифрование работает, используя очень сложные математические проблемы с задними дверями, которые позволяют быстро решить проблему, если у вас есть небольшой кусок очень важных данных. Обычными математическими проблемами являются факторинг больших чисел и дискретные логарифмы . Асимметричные алгоритмы работают с фиксированным размером данных, обычно 1024-2048 бит для RSA и El Gamal и 384 бит для Эллиптическая кривая версий RSA или El Gamal. (Версии Elliptic Curve используют разные field , чем целые числа для их вычислений. RSA и El Gamal и подобные системы работают с любым полем, которое определяет оба операция умножения и добавления, а ECC имеет другое представление этого поля, которое волшебным образом добавляет "больше" данных. Это очень умный способ сделать известные механизмы вписываться в меньшую память, и мое введение в одно предложение может не начинайте делать это справедливо. Простота - удивительная часть.)

    Асимметричное шифрование помогает решить проблему распределения ключей, но только: вместо того, чтобы требовать пары ключей O (N ^ 2) между каждой парой люди, которые хотят использовать криптографию, чтобы говорить между собой, для этого требуются ключи O (N), одна общедоступная/частная пара на человека, и все просто должны знать все остальные публичные части. Это все еще непростая задача, поскольку демонстрируется сложность x509 , но такие механизмы, как openPGP и OpenSSH имеют более простые модели и механизмы, которые хорошо работают для многих целей.

    Асимметричные шифры обычно используются для передачи ключей сеанса для симметричных шифров. Даже когда передается только небольшой объем данных, криптографы обычно предпочитают отправлять фактические данные, зашифрованные с помощью симметричного шифра, и отправлять ключ, зашифрованный с помощью асимметричного шифрования. Одно огромное преимущество заключается в том, что вы можете отправить сообщение нескольким получателям, а размер сообщения будет равен O (размер сообщения + 100 * 2048 бит) - вы можете зашифровать ключ сеанса каждому из получателей индивидуально, и только передайте сообщение один раз. Большой успех.

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