Современная криптография построена на простой развилке: либо обе стороны держат один и тот же секретный ключ, либо каждый владеет парой из открытого и закрытого ключей. Первый путь называется симметричным, второй - асимметричным. Между ними нет соревнования на выбывание, потому что у них разные задачи. Симметричные шифры дёшевы по вычислениям и быстры настолько, что единственный ограничитель - скорость памяти и дисков. Асимметричные схемы медленны на порядки, зато решают проблему, которую симметрия решить не может: как договориться о секрете с человеком, которого никогда не встречали. Понимание этой границы отличает грамотную защиту от иллюзии безопасности, а история вирусов-шифровальщиков показывает, как именно асимметрия превращается в оружие и почему единственный надёжный ответ на него - резервные копии, а не переговоры.
Один ключ против пары открытого и закрытого
Симметричная схема исходит из того, что отправитель и получатель уже разделяют секрет. Один и тот же ключ шифрует и расшифровывает. Проблема этой красоты лежит не в математике самого шифра, а в логистике: ключ надо сначала доставить собеседнику по доверенному каналу. Если такой канал существует, вопрос зачастую решён ещё до шифрования. Если нет, начинается рекурсия - чем защищать передачу ключа.
Асимметричная схема снимает рекурсию ценой вычислений. Открытый ключ публикуется хоть на заборе: им шифруют сообщение или проверяют подпись. Закрытый ключ хранится у владельца и никому не показывается: им расшифровывают и подписывают. Математически пара устроена так, что из открытого ключа закрытый на практике не восстановить. Свойство называется односторонней ловушкой: действие в одну сторону тривиально, обратное - вычислительно бессмысленно при корректных параметрах.
Отсюда главный вывод инженера: симметрия - про скорость при уже решённой доставке ключа, асимметрия - про установление доверия и доставку ключей через недоверенную среду. Именно поэтому в реальных протоколах они почти всегда идут в связке, а не вместо друг друга.
Скорость AES-256 и цена RSA и ECC
AES-256 - эталонный симметричный блочный шифр. В процессорах с AES-NI аппаратные инструкции выполняют раунды шифра прямо в кремнии, и потоковое шифрование идёт со скоростью гигабайтов в секунду на ядро. Стоимость бита данных ничтожна, энергопотребление мало, кэш-промахи - главный тормоз, а не математика. Диск, трафик, образы виртуальных машин - всё это шифруется AES прозрачно для пользователя.
Ассиметричная сторона живёт в другом мире. RSA-операция требует возведения в огромную степень по огромному модулю; типичная скорость - тысячи, а не миллионы операций в секунду. Эллиптические кривые заметно легче, но всё равно на порядки медленнее AES. Вывод давно стандартизирован: никто не шифрует файл в гигабайт открытым ключом напрямую. Открытым ключом шифруют маленький случайный сеансовый ключ, а уже им - данные. Асимметрия обслуживает обёртку, симметрия - массу.
Отдельное свойство AES: шифр бережлив к данным. Расширение размера минимально, а в аутентифицированных режимах вроде GCM к блоку добавляется лишь короткий тег целостности. Подделка расшифрованного текста без знания ключа ловится этим тегом, потому что шифрование без целостности считается сломанным по умолчанию.
Гибридная схема на примере TLS
TLS демонстрирует гибридную архитектуру в чистом виде. Клиент и сервер сначала проходят рукопожатие с асимметрией: сертификат подтверждает личность стороны, обмен эфемерными ключами на эллиптической кривой порождает общий секрет, из которого хэш-функции выводят сеансовые ключи. После рукопожатия асимметрия выключается, и весь поток идёт под симметричным шифром. Асимметричная математика отработала миллисекунды и отдала ключ; AES обрабатывает дальше гигабайты трафика.
Свойство forward secrecy подчёркивает элегантность схемы. Сеансовые ключи выводятся из эфемерных значений, которые стираются сразу после сессии. Записанный злоумышленником трафик не расшифровывается даже при будущей краже долгоживущего закрытого ключа сервера, потому что каждая сессия имела собственный независимый секрет. Компрометация ключа ломает прошлое только тогда, когда в прошлом не стирали эфемерные ключи.
Подпись против шифрования
Путаница двух направлений работы пары ключей - классическая ошибка новичка. Шифрование открытым ключом гарантирует конфиденциальность: прочитать может только владелец закрытого. Подпись закрытым ключом гарантирует авторство и целостность: проверить может любой, у кого есть открытый ключ, а подделать не может никто без закрытого.
Из этого следуют практические правила:
- Шифруют всегда на открытом ключе получателя, никогда на собственном.
- Подписывают всегда своим закрытым ключом, открытый ключ передают всем желающим проверить.
- Если нужны и конфиденциальность, и авторство, сначала подписывают, потом шифруют, либо используют протокол, который связывает обе операции.
- Открытый ключ без подтверждения подлинности ничего не значит: любой может сгенерировать пару и назваться чужим именем, поэтому существуют сертификаты и цепочки доверия.
Подпись исполняет роль нерушимой печати с доказуемым происхождением. Шифрование - роль запечатанного конверта. Их задачи не пересекаются, и смешение приводит к протоколам, которые дырявы по построению.
Урок вирусов-шифровальщиков
Семейство программ-вымогателей построено на асимметрии в агрессивной форме. Автор встраивает в вредонос свой открытый ключ. Программа на заражённой машине генерирует случайные сеансовые ключи, шифрует ими файлы быстрым симметричным алгоритмом, а сами сеансовые ключи зашифровывает встроенным открытым ключом и стирает исходники из памяти и из теневых копий диска.
После этого владелец данных сталкивается со свойством ловушки в полный рост. Расшифровать файл можно только сеансовым ключом, а достать его - только закрытым ключом автора. Математика стороннему наблюдателю проигрыша не оставляет. Даже если автора поймают, но закрытый ключ уничтожен, никакого универсального мастер-ключа не существует: каждый штамм, каждая кампания, а иногда и каждая жертва имеет свою пару.
По этой же причине не работает надежда на то, что автор после выкупа честно всё вернёт. Практика показывает весь спектр отказов: ключ присылают, но он не подходит к этому экземпляру; дешифратор написан криво и портит файлы; данные успели повредиться при шифровании из-за ошибок кода; автор просто исчезает после оплаты. Выкуп покупает обещание, а не гарантию, и контрольная сумма восстановленных данных никем не подписана.
Обратный путь существует только один - независимая копия данных, которой вредонос никогда не касался. Офлайн-резерв на внешнем носителе, отмонтированном после записи, либо неизменяемое хранилище - это не про паранойю, а про свойство асимметрии: раз ключ у противника, единственная точка восстановления находится вне его доступности. А личный закрытый ключ пользователя, если он подписывает или шифрует собственную почту и диски, обязан жить не на заражаемой машине: на аппаратном токене, в защищённом хранилище, в копии на офлайн-носителе.
Эллиптические кривые и иллюзии новичков
Эллиптическая криптография - современный стандарт плотности. Ключ в 256 бит на кривой даёт уровень стойкости, равный RSA при ключе примерно в 3072 бита. Меньше ключи - быстрее подпись, короче сертификаты, дешевле аппаратные токены. Именно эта плотность сделала асимметрию удобной везде: в рукопожатиях, в подписи прошивок, в мессенджерах. Стойкость при этом опирается на сложность дискретного логарифма на кривой, и параметры кривых выбираются публично, открыто и аккуратно, потому что тихая слабина в константе превращает весь класс задач в решётку открытых дверей.
Теперь три иллюзии, которые регулярно всплывают у начинающих. Первая: архив ZIP с паролем кажется полноценным шифрованием. Реальность суровее - унаследованный режим ZipCrypto слаб к атакам по известному открытому тексту, а пароль подбирается офлайн со скоростью, зависящей от функции вывода ключа; если производитель сэкономил на количестве итераций, подбор идёт миллионами попыток в секунду. Слабый короткий пароль под современным перебором сдаётся в тот же день. Вторая иллюзия: стойкость определяется длиной ключа больше, чем протоколом. На практике ломают режим, генератор случайных чисел, утечку по времени, повтор nonce, а не сам шифр. Третья иллюзия: собственный алгоритм лучше публичного, потому что секретный. Публично изученный шифр опирается на годы проверок; секретный алгоритм опирается на надежду, что никто не посмотрит внимательно. История говорит, что смотрят всегда.
Грамотная домашняя защита сводится к тем же принципам: симметричный шифр для дисков и архивов с проверенными реализациями, закрытые ключи вне основной машины, регулярные офлайн-копии, обновление ПО и отказ от самодельных схем. Математика кривых и ловушек давно делает свою работу; всё, что требуется от инженера - не подкладывать под неё саму себя в качестве слабого звена.
Смешение асимметрии и быстроты на живом примере. Когда браузер устанавливает защищённое соединение, роли распределяются аккуратно: открытый ключ сервера участвует в недолгом рукопожатии, там договариваются общие секреты короткоживущего сеанса, а дальнейший поток шифруется симметрично и быстро. Ключи эллиптических кривых позволяют сохранять тот же уровень стойкости при меньшей длине, и именно за это сочетание мы платим тремя наборами настроек,: выбором набора шифров, цепочкой сертификатов и параметрами прямой секретности. Всё это дорого ровно в одном месте - при установлении соединения - и почти бесплатно в миллионах последующих пакетов.
Чему стоит и чего не стоит доверять. Открытый ключ не дарует конфиденциальности сам по себе: подделать чужой сертификат способен любой, у кого есть подпись доверенной стороны или рукопожатие с доверенным удостоверяющим органом на территории пользователя. Поэтому современные клиенты проверяют цепочки, отказывают ревизиям слабых алгоритмов и протоколируют их инвентаризацию, а защищённые инструменты пинят открытые ключи, если регламент это допускает. Важно помнить: криптография отвечает на вопрос «скрыто ли содержимое» - а не на вопрос «ком ты доверяешь», и криптография спокойно снимает с себя эту вину. Этимология урока одна: технология защищает транспорт, а доверие строят за пределами канала.
Почему это работает против авторских требований выкупа. Если ключи у вируса общие для всех жертв одной кампании, расшифровка невозможна административно, и платить бессмысленно технически. Если шифрование сведено правильно, задача раскомпоновки известных данных почти не имеет доступных вычислительных путей, и криптографическая подпись подтвержденных результатов легко проверяется задним числом. Отсюда практический вывод: резервные копии офлайн и изолированные сети - единственная подлинная страховка против принудительного шифрования, потому что восстановление из бэкапа не зависит ни от задержки, ни от соблюдения обещаний автором шифра. В обыденной администрации это выражено просто: регулярные копии вне досягаемости инфицированной ВМ являются ответом куда более системным, чем механизм шифрования.
Эффект подписи против действенности кражи. Асимметричная подпись преследует другую цель: она доказывает связь не с владельцем, а с ключом, и именно поэтому в безопасности дорогие подписи кода являются первым фильтром доверия к обновлениям. Даже небрежная тарифная логика обновлений на уровне сервисных сводок часто строится так, чтобы подменённый пакет просто не взлетал в application исполнения при отсутствии штампа, и это уже суверенная дисциплина защиты, способная блокировать целые классы инфраструктурных атак, прежде чем они достигнут вооружённой части поставки.