Шифрование с помощью закрытого ключа

Шифрование с помощью закрытого ключа

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

Обычно алгоритмы шифрования с закрытым ключом, называемые блочными шифрами, используются для шифрования целого блока данных за один раз. Блочные шифры (такие как RC2, DES, TrippleDES и Rijndael) преобразуют входной блок данных длиной в n байтов в выходной блок зашифрованных данных. Если вы хотите зашифровать или расшифровать последовательность байтов, вам следует делать это блок за блоком. Поскольку n достаточно мало (n = 8 байт для RC2, DES и TripleDES; n = 16 [по умолчанию], n = 24 или n = 32 байта для Rijndael), данные большей длины, чем n, должны шифроваться блоками, один блок за раз.

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

Н(М) – хэширование сообщения;

Е – электронная цифровая подпись;

К – секретный ключ;

МЕ – не зашифрованное сообщение с ЭЦП;

МЕК – зашифрованное сообщение с ЭЦП;

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

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

Читайте также:  Увлажнитель polaris since 1995

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

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

Предположим, что Алиса и Боб являются двумя сторонами, которые хотят осуществлять связь по незащищенному каналу; они могли бы воспользоваться шифрованием с закрытым ключом, как это описано ниже. Алиса и Боб соглашаются использовать некоторый определенный алгоритм (например, Rijndael) с определенным ключом и вектором инициализации (IV). Алиса пишет сообщение и создает сетевой поток, через который можно отправить это сообщение. Затем она шифрует текст с помощью ключа и вектора инициализации и пересылает зашифрованное сообщение через Интернет. Она не высылает Бобу ключ и вектор инициализации. Боб принимает зашифрованный текст и осуществляет дешифровку, используя ранее согласованные ключ и вектор инициализации. Если происходит перехват передаваемых данных, злоумышленник не может восстановить исходное сообщение, так как ему не известны ключ и вектор инициализации. При использовании такого сценария ключ должен держаться в секрете, но вектор инициализации не обязательно должен быть секретным. В более реалистичном случае либо Алиса, либо Боб создает закрытый ключ и использует шифрование с открытым ключом (асимметричное) для передачи другой стороне закрытого (симметричного) ключа. Дополнительные сведения см. в разделе «Шифрование с открытым ключом».

NET. Framework предоставляет следующие классы, которые реализуют алгоритмы шифрования с закрытым ключом:

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

Читайте также:  Как пополнить счет ок в одноклассниках бесплатно

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

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

  • Вопрос задан более трёх лет назад
  • 17917 просмотров

Открытый/закрытый — статус публичности ключа.

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

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

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

Нашел в Википедии — в весьма странном месте (старая версия статьи об SSL, в новейшей версии нет) такие слова:

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

Если так, то вопрос полностью снимается (т.е. просто в Википедии были недоговоренности).

Читайте также:  Как на титульнике не ставить номер страницы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылка на основную публикацию
Adblock detector