Урок 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. В чём заключается определяющая особенность симметричного шифрования?
- Оно использует открытый и закрытый ключи
- Оно использует один общий секретный ключ и для шифрования, и для расшифровки — Верно.
- Его нельзя использовать для больших объёмов данных
- Оно вообще никогда не требует ключа
Симметричное шифрование опирается на единственный общий ключ, который уже есть у обеих сторон; сложность заключается в безопасной передаче этого ключа.
2. Какую проблему решает асимметричное шифрование, с которой симметричное шифрование само по себе справиться не может?
- Ускорение шифрования
- Возможность двум сторонам согласовать общий секрет, не встречаясь заранее — Верно.
- Упрощение запоминания паролей
- Предотвращение удаления данных навсегда
Криптография с открытым ключом позволяет открыто распространять открытый ключ, при этом расшифровать данные может только соответствующий закрытый ключ, что обеспечивает безопасный обмен ключами по открытой сети.
3. Почему хеш-функцию нельзя использовать для сохранения сообщения в секрете?
- Хеши всегда слишком короткие, чтобы вместить сообщение
- Хеш по своей конструкции однонаправлен; ключа, чтобы вернуть его к исходным данным, не существует — Верно.
- Использовать хеш-функции для шифрования запрещено законом
- Хеши работают только с изображениями, но не с текстом
Хеш-функции построены так, что восстановить исходные входные данные по результату вычислительно неосуществимо — именно это свойство (однонаправленность) делает их полезными для проверки целостности и хранения паролей, но не для конфиденциальности.
4. Какая пара алгоритмов считается устаревшей из-за известных слабостей?
- AES и RSA
- DES и MD5 — Верно.
- SHA-2 и криптография на эллиптических кривых
- TLS и HTTPS
Короткая длина ключа DES и слабости MD5 к коллизиям означают, что современные системы вместо них используют AES и семейства SHA-2/SHA-3.
Примените на практике в FireAI
Примените этот урок на своём Mac.
- Глубокая проверка без расшифровки чего-либо — Получайте реальные подробности о защищённом соединении, при этом FireAI никогда не читает то, что внутри него.
- Что остаётся на вашем Mac и когда именно FireAI сам выходит в сеть — Прочитайте полный список того, что отправляет FireAI, вместо того чтобы просто верить файрволу на слово.
Источники
- Cloudflare Learning Center: What is encryption?
- NIST Computer Security Resource Center Glossary: hash function
Примените это на своём Mac
Все функции бесплатно на 17 дней, без банковской карты.