«Алгоритмы шифрования» в основе своей – математические задачи, решение которых должно быть невероятно сложным даже для компьютера. Ключ шифрования – это подсказка, которая помогает компьютеру решить конкретный набор математических задач, которые использованы в шифре. Вы помещаете читаемые данные, именуемые «простым» или «открытым» текстом, в один конец алгоритма шифра, а на выходе получите невразумительную абракадабру, называемую криптотекстом. Если кто-нибудь захочет прочитать криптотекст, им нужно перевернуть его обратно, но только – что очень важно – правильным ключом. Тогда вновь всплывает изначальный «открытый текст». Разные алгоритмы обеспечивают разные уровни защиты, а безопасность ключа шифрования часто основывается на его длине, что определяет уровень сложности математической задачи, которая лежит в основе алгоритма. В алгоритмах, которые коррелируют с более длинными ключами, сложность загадки нарастает по экспоненте. Если мы представим себе, что злоумышленнику нужны сутки, чтобы взломать 64-битный алгоритм шифрования – который кодирует ваши данные одним из 264
уникальных вариантов (18,446,744,073,709,551,616 – уникальные комбинации цифр), то ему понадобится вдвое больше времени, двое суток, чтобы взломать 65-битный алгоритм шифрования, и четверо суток, чтобы добраться до 66-битного ключа. А чтобы взломать 128-битное шифрование, потребуется в 264 раза больше времени, чем сутки, – это 50 миллионов миллиардов лет. К тому времени, меня, надеюсь, простят.Общаясь с журналистами, я пользовался 4096– и 8192-битными ключами шифрования. А это означало, что даже криптоаналитики АНБ при совокупной мощи всех своих машин не смогли бы забраться в мои диски – ввиду отсутствия крупных инноваций в вычислительных технологиях или фундаментального переосмысления принципов, по которым числа разлагаются на множители. Поэтому шифрование – самый лучший инструмент для противодействия слежке в любой ее форме. Если все наши данные, включая личные контакты, были бы зашифрованы подобным способом, от отправителя до получателя, ни одно правительство, ни одно ведомство, мыслимое сегодня, не смогло бы ничего в них понять. Правительство может продолжать перехватывать и накапливать сигналы, но оно будет перехватывать и накапливать ничего не значащий шум. Шифрование наших коммуникаций поможет стирать их из памяти любого, с кем мы общались. Оно отзовет право их просматривать тем, кому это право изначально не выдавалось.
У каждого правительства, рассчитывающего получить доступ в зашифрованные коммуникации, есть два варианта выбора: идти к хранителю ключей или идти за самим ключом. Первый случай подразумевает давление на специалистов по криптографии с тем, чтобы они продавали поддельные ключи шифрования; или давление на криптографическое сообщество, чтобы встроить в алгоритмы шифрования намеренные дефекты, которые оставляют возможность секретных точек входа – иначе «бэкдоры». Второй вариант подразумевает целенаправленные атаки на конечные точки коммуникаций, на аппаратное и на программное обеспечение, которое осуществляет процесс шифрования. Это подразумевает эксплуатацию уязвимостей, которые ищут, чтобы украсть ваши ключи – техника, которая раньше использовалась злоумышленниками, но теперь взятая на вооружение крупными государственными структурами. Но даже и этот способ пагубен, так как предполагает создание разрушительных дыр в кибербезопасности важнейшей международной инфраструктуры.
Лучшие средства, которые у нас есть, чтобы держать ключи в недосягаемости, – это «zero knowledge», так называемое «нулевое разглашение». Оно гарантирует, что данные, которые вы пытаетесь хранить отдельно – например, на облачной платформе компании, – зашифрованы алгоритмом вашего устройства до того, как были загружены и ключ никому не передавался. В схеме «нулевого разглашения» ключи остаются в руках пользователя – и только у него. Никакой компании, никакому агентству, никакому врагу они не достанутся.
Мой ключ к секретам АНБ идет дальше «нулевого разглашения»: это ключ с нулевым разглашением, состоящий из множества нулевых разглашений. Представьте такую ситуацию: допустим, в конце моей лекции на КриптоВечеринке я стоял у выхода, а все двадцать слушателей проходили мимо. Теперь вообразите, что, когда каждый из них через дверь выходил в ночной Гонолулу, я каждому шепнул на ухо словечко – лишь одно слово, которое больше никто не услышал, а повторить эти слова они могут, только снова собравшись вместе в этой же комнате. Только собрав снова два десятка человек и заставив повторить их слова в том же самом порядке, как я их раздал вначале, можно собрать заново заклинание из двадцати слов. Если кто-то из них забыл свое слово или порядок их воспроизведения будет чуть-чуть иным, заклинание не подействует, волшебства не случится.