Перейти к содержимомуHisnLabs
← Криптография, на которую можно положиться

Урок 1 из 4 · 9 мин

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

Три разных криптографических инструмента гарантируют три разные вещи. Их смешение — самый частый источник ложной уверенности.

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

Симметричное шифрование: один общий ключ

Learning Center компании Cloudflare описывает симметричное шифрование просто: «есть только один ключ, и все стороны общения используют один и тот же (секретный) ключ и для шифрования, и для расшифровки». Advanced Encryption Standard (AES) — сегодняшний стандартный пример, заменивший более старый Data Encryption Standard (DES) после того, как короткая длина ключа DES сделала его взламываемым простым перебором. Симметричное шифрование быстрое, и именно оно на практике шифрует основную массу ваших данных, будь то файл на диске или тело веб-страницы, загружаемой по HTTPS. Его главная проблема — распространение: обеим сторонам нужен один и тот же секретный ключ, и передача этого ключа другой стороне так, чтобы его никто не увидел, — это именно та задача, которую решает асимметричное шифрование.

Асимметричное шифрование: два ключа, работающие в паре

В асимметричном, или шифровании с открытым ключом, есть два математически связанных ключа: «один ключ используется для шифрования, а другой, отличный от него, — для расшифровки», по данным Cloudflare. Ключ шифрования можно опубликовать для кого угодно — отсюда «открытый ключ», — тогда как соответствующий ключ расшифровки остаётся закрытым. Данные, запертые открытым ключом, можно открыть только закрытым ключом. Именно это позволяет двум людям, никогда не встречавшимся, согласовать общий секрет по открытой сети, и именно это происходит в самом начале каждого HTTPS-соединения (следующий урок подробно рассматривает это рукопожатие). RSA и криптография на эллиптических кривых — распространённые алгоритмы, на которых это сегодня строится.

Хеширование: отпечаток, а не замок

Хеш-функция — не то и не другое из перечисленного выше: она ничего не запирает, и открывать её ключом не нужно. NIST определяет её как функцию, которая «отображает битовую строку произвольной длины в битовую строку фиксированной длины» — говоря простыми словами, она превращает любой файл или сообщение в короткий отпечаток фиксированного размера. NIST указывает свойства, которыми должна обладать одобренная хеш-функция: должно быть вычислительно неосуществимо найти входные данные, дающие заданный результат (однонаправленность), и неосуществимо найти два разных входа, дающих одинаковый результат (устойчивость к коллизиям). Именно поэтому хеширование проверяет целостность — изменился ли этот файл? — и защищает хранимые пароли: сервис может сверить пароль с его хранимым хешем, ни разу не сохраняя сам пароль. Более старые хеш-функции, такие как MD5 и SHA-1, больше не считаются безопасными против целеустремлённого злоумышленника, поэтому современные системы вместо них используют семейства SHA-2 или SHA-3.

Что на самом деле гарантирует каждый инструмент

ИнструментЧто он гарантируетЧего он не гарантирует
Симметричное шифрованиеКонфиденциальность, если общий ключ остаётся в секретеБезопасный способ вообще обменяться этим ключом
Асимметричное шифрованиеСпособ обменяться секретом и подтвердить личность (см. следующий урок о подписях)Скорость; для больших объёмов данных оно значительно медленнее симметричного шифрования
ХешированиеЦелостность: доказательство того, что данные не изменялись, и способ проверять секреты, не храня ихКонфиденциальность; хеш не предназначен для обращения, но он также не предназначен и для скрытия размера или самого факта наличия данных

Как они сочетаются на практике

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

Главное

  • Симметричное шифрование использует один общий ключ и для шифрования, и для расшифровки; оно быстрое, но требует безопасного способа передать этот ключ.
  • Асимметричное шифрование использует пару из открытого и закрытого ключей, решая проблему распространения ключей, которая есть у симметричного шифрования.
  • Хеширование создаёт отпечаток данных фиксированного размера; оно защищает целостность и хранимые секреты, но не конфиденциальность — ключа, открывающего хеш, не существует.
  • Реальные системы сочетают все три: асимметричное шифрование для согласования секрета, симметричное шифрование ради скорости, хеширование для обнаружения вмешательства.
  • У более старых алгоритмов (DES, MD5, SHA-1) есть известные слабости; текущими стандартами являются AES и семейства SHA-2/SHA-3.

Проверьте себя

  1. 1. В чём заключается определяющая особенность симметричного шифрования?

    • Оно использует открытый и закрытый ключи
    • Оно использует один общий секретный ключ и для шифрования, и для расшифровки — Верно.
    • Его нельзя использовать для больших объёмов данных
    • Оно вообще никогда не требует ключа

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

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

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

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

  3. 3. Почему хеш-функцию нельзя использовать для сохранения сообщения в секрете?

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

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

  4. 4. Какая пара алгоритмов считается устаревшей из-за известных слабостей?

    • AES и RSA
    • DES и MD5 — Верно.
    • SHA-2 и криптография на эллиптических кривых
    • TLS и HTTPS

    Короткая длина ключа DES и слабости MD5 к коллизиям означают, что современные системы вместо них используют AES и семейства SHA-2/SHA-3.

Примените на практике в FireAI

Примените этот урок на своём Mac.

Источники

Примените это на своём Mac

Все функции бесплатно на 17 дней, без банковской карты.

Скачать для Mac Документация