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

Roadmap

Это второй урок из цикла «Погружение в крипту». Все уроки цикла в хронологическом порядке:

  • Урок 1. Исторические шифры. Основы и исторические шифраторы. Как работают (и анализируются) шифры сдвига, замены, Рихарда Зорге, шифр Вернама и шифровальные машины
  • Урок 2. Распределение ключей. Что это такое, как выполняется распределение ключей и как выбрать криптостойкий ключ (ты здесь)
  • Урок 3. Современные отечественные шифры. Что такое сеть Фейстеля и какими бывают отечественные блочные шифры, используемые в современных протоколах, — ГОСТ 28147—89, «Кузнечик»
  • Урок 4. Современные зарубежные шифры. В чем разница между 3DES, AES, Blowfish, IDEA, Threefish от Брюса Шнайера и как они работают
  • Урок 5. Электронная подпись. Виды электронных подписей, как они работают и как их использовать
  • Урок 6. Квантовая криптография. Что это такое, где используется и как помогает в распределении секретных ключей, генерации случайных чисел и электронной подписи

 

Почему распределение ключей так важно?

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

Глоссарий второго урока

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

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

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

Можно ли расшифровать сообщение публичным (открытым) ключом обратно?

Нет. Давай рассмотрим простой пример, который лежит в основе алгоритма RSA.

Роль открытого ключа выполняет число d = 3 и модуль, которым будет произведение простых чисел p = 5 и q = 2: 10 (5*2). Секретный ключ e выбирается в соответствии открытому: должно выполняться условие e*d ≡ 1(mod (q-1)*(p-1)), то есть, в нашем случае,e*3 ≡ 1(mod 4*1) = e*3 ≡ 1(mod 4). Первое подходящее число e = 3. Значение секретного ключа также (3,10).

Предположим, мы хотим передать слово ЗАБЕГ:

-----------------------------
        | З | А | Б | Е | Г |
-----------------------------
№ буквы | 9 | 1 | 2 | 6 | 4 |
-----------------------------

Возведем в куб каждое из чисел:

--------------------------------------
(№ буквы)^3 | 729 | 1 | 8 | 216 | 64 |
--------------------------------------

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

---------------------------------------
(№ буквы)^3 mod10 | 9 | 1 | 8 | 6 | 4 |
---------------------------------------

Результат и будет шифротекстом для слова ЗАБЕГ. При расшифровании получатель выполнит аналогичные действия, а именно — возведет в куб каждое число кода и возьмет результат по модулю 10:

------------------------------------------
(код)^3       | 729 | 1 | 512 | 216 | 64 |
------------------------------------------
(код)^3 mod10 | 9   | 1 | 2   | 6   | 4  |
------------------------------------------
буква         | З   | А | Б   | Е   | Г  |
------------------------------------------

Этот пример показывает, как шифр работает на очень маленьких числах. При реальном практическом применении для получения модуля перемножаются огромные простые числа: например, используются модули 512 или 1024 бита. Чтобы вычислить секретный ключ, модуль необходимо разложить на простые множители. Это очень сложная задача, которая называется «задача факторизации целых чисел». Именно поэтому перехват открытого ключа не представляет никакой угрозы для приватности переписки.

В случае симметричного шифрования перед собеседниками всегда стоят две важные задачи:

  • выбор криптостойкого ключа;
  • распределение ключа (надежный обмен).

В случае асимметричного шифрования возникает другая задача:

  • обмен собеседников открытыми ключами.

Иными словами, Алиса, обладая открытым ключом Боба, не может быть уверена на 100%, что этот ключ принадлежит именно Бобу.

Начнем с первого случая.

 

Выбор криптостойкого ключа

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

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


8 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Что можно сделать с iPhone, зная пасскод. Как сливают данные, уводят iCloud и блокируют остальные устройства

Последние несколько месяцев мы много писали о нововведениях в iOS 11. «Теперь-то заживем!»…