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

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. Купи один материал

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


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

  1. John Cramer

    10.03.2016 at 13:56

    1. «Threefish от Брюса Шнайдера» — по-моему, Шнайера.
    2. Число 2 математиками, строго говоря, принято не относить ни к простым, ни к составным. Только в школьном курсе его безоговорочно записывают в простые.

    • schoolboy

      10.03.2016 at 17:16

      По 2му пункту пруф есть?

      • John Cramer

        10.03.2016 at 20:07

        Понятно, почему 2-й пункт вызвал у вас интерес. Скажем так, я выразился слишком резко. Двойка — всё-таки простое число (по определению), но в некотором отношении «неправильное». Начиная с признака «все простые числа — нечётные, за исключением двойки», заканчивая Великой теоремой Ферма и критерием Эйлера, для двойки приходится делать исключения. Из-за этой непохожести свойств двойки на свойства остальных простых чисел, приходится избегать её использования, например, для проверки различных гипотез.

        • wanderer5800

          18.12.2016 at 20:47

          Согласен, что двойка это необычное число, но больно странные вы примеры привели. Великая теорема Ферма — это как раз «школьная» теорема. А что касается критерия Эйлера, то там p>2, только потому, что в кольце (Z_2, +, *) -1 = 1 по определению. И вообще, там ноги растут от малой теоремы Ферма, в которой для двойки все выполняется. Вот другое дело какие-нибудь квадратичные формы, в которых для полей четной характеристики целая своя теория. На пальцах, большинство фактов, связанных с проверкой простоты числа n так или иначе сводится к проверке некоторых свойств n — 1 (даже по этой причине ввели понятие сильно простых чисел). Но 2 — 1 = 1, а вот 1 — как раз самое необычное число))

  2. metro2030

    11.03.2016 at 12:40

    Спасибо за статью!
    Только хотелось бы, чтобы выходили чаще, а не раз в 3 месяца=)

  3. danilas

    16.03.2016 at 02:27

    «При любом подключении к сайту по https наш браузер проверяет сертификат, смотрит на время истечения …», думаю что стоит добавить что сертификат обязательно проверяют на отозванность.

    Также модули по 512 бит не безопасны и не рекомендуются, 2048 это стандарт хотя многие компании переходят на эллиптические кривые.

  4. Zipper

    24.03.2016 at 05:04

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

  5. Riketta

    29.07.2016 at 22:33

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

  6. fr00t

    16.01.2018 at 03:27

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

Оставить мнение

Check Also

Как крадут деньги при ICO. Разбираем типовые сценарии похищения средств и самих ICO

В 2017 году киберпреступникам удалось украсть 10% всех средств, инвестированных в ICO чере…