Автор книги: Кит Мартин
Жанр: Компьютеры: прочее, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 6 (всего у книги 17 страниц) [доступный отрывок для чтения: 6 страниц]
Неожиданно для себя вы начали превращаться из мелкого частного предпринимателя в важную по локальным меркам компанию. Если, упаси боже, каждый из этих 10 000 друзей ваших друзей покажет ваше объявление своим друзьям, круг ваших потенциальных клиентов расширится до миллиона, и вам придется готовиться к еще 100 000 заявок. В мгновение ока затея вышла из-под контроля. Всего за два дополнительных цикла этой вирусной рекламной кампании у вас окажется миллиард клиентов и перспектива убирать все – от иглу в Арктике до соломенных хижин в Калахари.
Суть этого примера в том, что некоторые задачи хорошо и просто масштабируются по мере увеличения чисел, а другие растут экспоненциально и неуправляемо. Это в равной степени касается как домашней уборки, так и вычислительных задач. С некоторыми вещами компьютеры справляются легко. Например, они умеют очень хорошо складывать. Вы можете вводить все большие и большие числа, и компьютер будет покорно возвращать вам их сумму, словно собака палку. В какой-то момент компьютер достигнет предела своих вычислительных возможностей и откажется выдавать ответ. Если вам все равно необходимо сложить эти гигантские числа, достаточно будет купить компьютер помощнее. Но некоторые вычислительные задачи работают совсем иначе: подобно нашему примеру с вирусной рекламой они быстро выходят за рамки возможностей любого компьютера. Даже если взять самое мощное оборудование в мире, в ответ удастся получить лишь мигающий курсор, который так и продолжит мигать, пока вы живы[98]98
Теория сложности вычислений занимается классификацией вычислительных задач в зависимости от того, насколько сложно их выполнить. Отношениям между вычислительной сложностью и криптографией посвящен хороший учебник авторства Джона Толбота и Доминика Уэлша, Complexity and Cryptography: An Introduction (Cambridge University Press, 2006).
[Закрыть].
Именно сочетание этих разновидностей вычислительных задач необходимо для реализации асимметричного шифрования. Алгоритм шифрования должен быть относительно простой операцией, доступной любому компьютеру. Но компьютер, который попытается выполнить алгоритм расшифровки без ключа, будет лишь беспомощно мигать курсором точно как вы, если бы вам на завтра нужно было найти 100 миллионов уборщиков.
Простой множитель
Немногие по-настоящему понимают роль криптографии в защите компьютерных систем (вы как раз на пути к тому, чтобы стать исключением), но один факт, похоже, общеизвестен: безопасность компьютеров имеет какое-то отношение к простым числам[99]99
История изучения простых множителей, их важная роль в математике и другие области исследований обсуждаются в книге Маркуса дю Сотоя The Music of the Primes: Why an Unsolved Problem in Mathematics Matters (HarperPerennial, 2004).
[Закрыть]. В криптографии они используются повсеместно, однако именно их роль в алгоритмах асимметричного шифрования привлекла к ним больше всего внимания.
Простые числа – это целые числа больше 1 с одним общим элементарным арифметическим свойством: они должны делиться без остатка только на себя и 1. Самое малое из них – 2 (и это единственное четное простое число, поскольку все остальные четные числа делятся на 2 без остатка). Дальше идут 3, 5 и 7. А вот число 9 уже не простое, так как делится на 3. Следующие простые числа – 11 и 13, но не 15, которое делится на 3 и на 5. Эту цепочку можно продолжать до бесконечности, поскольку простых чисел бесконечно много.
В каком-то смысле простые числа – элементарные компоненты всех целых чисел, потому что любое целое число можно получить путем умножения нескольких простых. Например, 4 = 2 × 2, 15 = 3 × 5, 36 = 2 × 2 × 3 × 3. Собственно, любое целое число и есть результат перемножения одного уникального набора простых чисел. Например, 100 = 2 × 2 × 5 × 5. Никакой другой набор простых чисел, умноженных друг на друга, не даст 100. Таким образом простые числа 2,2,5,5, известные также как простые множители 100, составляют его уникальную «ДНК».
Эта прямая связь между числом и его простыми множителями лежит в основе самого известного асимметричного алгоритма шифрования, RSA – по именам его создателей Ривеста, Шамира и Адлемана (Rivest, Shamir и Adleman[100]100
Рон Ривест, Ади Шамир и Лен Адлеман, «A Method for Obtaining Digital Signatures and Public-Key Cryptosystems», Communications of the ACM 21, № 2 (1978): 120–26.
[Закрыть]). Отношения между числом и его простыми множителями формируют типы вычислительных задач, идеально подходящие для асимметричного шифрования: в одном направлении они выполняются относительно легко, а в противоположном оказываются непосильными даже для компьютера.
Простое направление состоит в умножении. Умножить два любых простых числа способен не только компьютер, но и вы сами, если не зевали на уроках математики. Проверьте, если хотите: попробуйте по порядку умножить следующие простые числа, желательно в уме (используйте ручку и бумагу только в случае необходимости!): 3 × 11,5 × 13, 7 × 23, 11 × 31, 23 × 23, 31 × 41.
Как вам такое упражнение? С каждой парой чисел вам, вероятно, требовалось все больше времени, но вряд ли хоть раз вы провозились дольше, чем наливали бы чашку чая.
Позволь вы себе ручку и бумагу, вам, несомненно, удалось бы перемножить более впечатляющие простые числа. Ну-ка, сколько будет 23 189 на 50 021 (не ленитесь, ответ вам понадобится чуть ниже). Используя навыки, мало чем отличающиеся от тех, которые вы усвоили в школе (если вам не удалось справиться с последним упражнением, вы просто подзабыли изученное), компьютеры могут перемножать по-настоящему огромные целые числа. В этом смысле умножение является простой вычислительной задачей. Время вычисления растет по мере роста чисел, но получить результат по-прежнему несложно.
Обратная операция заключается в вычислении простых множителей заданного значения. Мы можем даже знать, что оно состоит из двух простых чисел, умноженных друг на друга. Вопрос в том, что это за числа. Эта задача не выглядит слишком устрашающей и непосильной, однако на компьютере она очень скоро выходит из-под контроля. Числа становятся все больше и больше, и в какой-то момент (неожиданно быстро) даже самые мощные суперкомпьютеры в мире, такие как китайский Sunway TaihuLight с почти 100 петафлопсами[101]101
100 петафлопс = 100 000 000 000 000 000 операций в секунду.
[Закрыть] вычислительной мощности, начинают растерянно мигать курсорами[102]102
Периодически обновляемый список самых быстрых суперкомпьютеров в мире, «TOP500 Lists», TOP500.org, https://www.top500.org/lists/top500 (по состоянию на 21 июля 2019 года).
[Закрыть].
Чтобы получить представление о том, почему вычисление множителей так быстро усложняется, найти два простых множителя для каждого из следующих чисел: 21, 35, 51, 91, 187, 247, 361, 391. Обратите внимание на то, что по мере продвижения вам нужно все больше и больше времени (а ваша голова болит все сильнее).
Сдались, так и не дойдя до конца? А ведь это совсем маленькие числа в глобальных масштабах. Как насчет 83 803? Или, еще лучше, 1 159 936 969? Если у вас уцелел тот листок бумаги, на котором вы демонстрировали свои навыки умножения, вы можете обнаружить, что 1 159 936 969 = 23 189 × 50 021. Но смогли бы вы получить этот результат в уме? Сомнительно, если учесть, что самая очевидная тактика разложения числа на множители заключается в том, чтобы поделить его сначала на наименьшее простое число (2), затем на следующее (3), затем на 5 и т. д. Вам пришлось бы перебрать 2586 простых чисел, пока вы добрались бы до нужного[103]103
23 189 – это 2587-е по счету простое число. Если вы сомневаетесь, но не хотите проверять сами, советую посетить страницу «The Nth Prime Page» Эндрю Букера, https://primes.utm.edu/nthprime (по состоянию на 10 июня 2019 года).
[Закрыть]!
Тем не менее в криптографических масштабах 23 189 и 50 021 – это очень мелкие простые числа. В настоящее время в RSA рекомендуется использовать как минимум 450-значные простые множители[104]104
Согласно рекомендациям NIST, для данных, которые нуждаются в защите до 2030 года, следует использовать произведение двух простых чисел длиной больше 3000 бит (см. «Recommendation for Key Management», Национальный институт стандартов и технологий, NIST Special Publication 800 Part 1, rev. 4, 2016). Такое число состоит из более чем 900 десятичных цифр, и RSA использует простые множители примерно того же размера; это означает, что каждое из простых чисел имеет длину более 450 десятичных цифр.
[Закрыть]. Несмотря на такую огромную длину, вы легко перемножите их на своем ноутбуке. Но если поручить суперкомпьютеру Sunway TaihuLight найти эти два простые множителя, в ответ он только замигает…
Цифровые навесные замки с разложением на множители
Безопасность алгоритма асимметричного шифрования RSA опирается на сложность вычисления простых множителей. Если не вдаваться в подробности, основная идея выглядит так.
Когда вам нужно создать цифровой навесной замок, вы сначала генерируете два огромных простых числа, порядка 450 цифр каждое. Эти числа нужно хранить в тайне, так как они, в сущности, составляют ваш секретный ключ (на самом деле ваш ключ – это не просто их сочетание, а то, что из них можно получить, но это уже детали), их должны знать только вы.
Теперь эти два простые числа нужно перемножить. Примерно 900-значный результат этой операции в сочетании с другим значением будет вашим открытым ключом. Вы можете разослать его всем друзьям, опубликовать на своем сайте, да хоть напечатать на визитке. Ваш открытый ключ может увидеть кто угодно. Сложность разложения числа на простые множители гарантирует, что ни у кого нет достаточно мощного компьютера, способного их определить, хотя оба они закодированы в открытом ключе.
Детальное понимание работы шифрования RSA требует знания некоторых аспектов математики университетского уровня, но мы можем это пропустить[105]105
Чтобы понять, как работает RSA, достаточно знать основы модульной арифметики и теорему Эйлера – и то и другое должно быть знакомо всем, кто изучал введение в теорию чисел. Минимальные знания математики, которые для этого необходимы, можно также получить во многих учебниках по криптографии для начинающих, включая Everyday Cryptography, 2-е издание (Oxford University Press, 2017), Кейт М. Мартин.
[Закрыть]. Важно то, что любой, кто хочет послать вам зашифрованное сообщение, должен сначала получить ваш открытый ключ (это делается легко, ведь его никто не прячет). Исходный текст преобразуется в число (для этого предусмотрены стандартные методы), а сам же процесс шифрования состоит из последовательных операций умножения с участием исходного текста и вашего открытого ключа.
Шифрование возможно благодаря тому, что умножать числа компьютеры умеют не хуже, чем складывать. Получив зашифрованный текст, вы можете применить к нему операцию расшифровки. Она, конечно, тоже выполнима, так как состоит из последовательности умножений, но на этот раз с участием зашифрованного текста и вашего закрытого ключа. Любому, кто перехватит зашифрованный текст и захочет его прочитать, придется каким-то образом обернуть процесс шифрования вспять, не владея закрытым ключом. Однако для RSA сейчас известен только один способ это сделать: найти два простых множителя, составляющих открытый ключ. Поскольку ни один компьютер не в состоянии проделать это в адекватные сроки, RSA считается надежным механизмом обеспечения конфиденциальности.
Некоторые обороты речи, которые я использовал, заслуживают дополнительного объяснения. Для начала я сказал, что ни один компьютер не в состоянии определить простые множители в адекватные сроки. Заметьте, я не стал утверждать, что это невозможно в принципе: это возможно. Как уже сказано, если пробовать в качестве делителя каждое простое число по очереди, начиная с 2, в конце концов, два простых множителя будут найдены. Но, учитывая реалии современных компьютерных технологий, человечество успеет вымереть или, по крайней мере, эволюционировать в новый вид, прежде чем подберет все возможные простые множители 900-значного числа[106]106
Это замечание является сочетанием факта и немного шутливого предположения. Факт относится ко времени, которое требуется для получения множителей числа такого размера на традиционном компьютере. Считается, что эта операция длится примерно столько же, сколько поиск 128-битного ключа, что, как вы узнаете позже, требует около 50 миллионов миллиардов лет. Предположение, конечно же, состоит в том, что человечество может к тому времени вымереть. Считается, что наш вид существует на протяжении примерно 300 000 лет, поэтому такие далеко идущие прогнозы являются лишь догадками. Спектр возможных путей, которыми может пойти человечество в будущем, обсуждается в статье Джолин Крейтон «How Long Will [It] Take Humans to Evolve? What Will We Evolve Into?», Futurism, 12 декабря 2013 года, https://futurism.com/how-long-will-take-humans-to-evolve-what-will-we-evolve-into.
[Закрыть]. Заметьте, что этот аргумент основан на компьютерах, которые мы используем сегодня; чтобы точнее оценить степень безопасности этого алгоритма, необходимо принять во внимание то, какие вычислительные возможности мы ожидаем получить в будущем.
Наверное, еще сильнее тревожит то, что неспособность компьютеров эффективно находить простые множители – не более чем предположение. Утверждать, что простые множители сложно вычислить, можно только на основании того, что нам известно; мы не можем учесть неизвестные нам факторы. Более точное утверждение звучало бы так: даже с использованием самых продвинутых современных методик вычисление простых множителей выглядит сложной задачей. Это не означает, что в будущем какой-то гениальный ребенок или, скажем, искусственный интеллект не разработает новый метод определения простых множителей. Это имело бы катастрофические последствия для любых технологий, в которых используется RSA. Учитывая, сколько всего в киберпространстве защищено этим алгоритмом, такая возможность представляется немыслимой. Но в конце данной книги я все равно попробую поделиться своими мыслями на эту тему.
Зависимость от сложных вычислений
Исходный код нового алгоритма симметричного шифрования, написанный на обратной стороне конверта, вряд ли удовлетворит строгим требованиям безопасности, которые предъявляются к финалисту конкурса AES. И все же он может оказаться не таким уж небезопасным. В связи с этим было предложено множество симметричных и частично блочных шифров. И хотя большинство из них оставляли желать лучшего, существенная часть списка не обнаружила серьезных недостатков, и они доступны для использования, по крайней мере, теоретически[107]107
Таблицу, в которой блочные шифры разделены на категории в зависимости от того, насколько часто они используются (часто, нечасто и др.) можно найти внизу страницы «Block Cipher» на Википедии, https://en.wikipedia.org/wiki/Block_cipher (по состоянию на 10 июня 2019 года).
[Закрыть].
Для сравнения, серьезных алгоритмов асимметричного шифрования до сих пор предложено лишь несколько. Цифровой навесной замок должен иметь свойства, которые могут показаться немного нелогичными. Необходимо разработать вычислительную задачу, которую легко выполнить, но сложно обратить вспять, но при этом она должна быть легко обратимой для того, у кого есть специальный фрагмент информации. Подобных задач известно не так уж много[108]108
В ответ на угрозу, которую представляют квантовые компьютеры (мы обсудим ее позже), возникла крупная международная инициатива по поиску новых алгоритмов асимметричного шифрования, основанных на новых сложных задачах: «Post-quantum Cryptography», NIST Computer Security Resource Center, https://csrc.nist.gov/Projects/Post-Quantum-Cryptography (обновлено 3 июня 2019 года). Однако даже в рамках этого процесса рассматривается всего несколько принципиально разных задач, на которых основаны предложенные алгоритмы.
[Закрыть].
Впервые концепция асимметричного шифрования возникла в 1970-х годах в двух не связанных между собой организациях: Центре правительственной связи Великобритании (Government Communications Headquarters или GCHQ) и Стэнфордском университете, США. Сначала это открытие, которое в 1990-х могло бы привести к революции в сфере вычислений, произошло в мире спецслужб, но в чисто британском стиле его тихо отложили в сторону.
Интересно, что в обоих случаях изначально появилась лишь идея асимметричного шифрования, без примеров алгоритма, и уже позже другие исследователи подхватили эту идею и описали, как ее можно было бы реализовать на практике. Но самое невероятное – то, что и у правительственных исследователей, и у сотрудников университета в результате работы над практическим примером алгоритма асимметричного шифрования получилась фактически одна и та же концепция RSA[109]109
Асимметричное шифрование (с открытым ключом) имеет увлекательную историю развития. Его открытие в настоящее время приписывают исследователям из GCHQ, которые пытались решить проблему распространения закрытых ключей по сети. Принципиальная идея, легшая в основу асимметричного шифрования, была изложена Джеймсом Эллисом в 1969 году, хотя конкретный метод ее применения был описан в 1973 году Клиффордом Коксом. Но только в 1997 году эти открытия стали доступны общественности. А тем временем похожий процесс происходил в публичной сфере; в 1976 году Уитфилд Диффи и Мартин Хеллман разработали аналогичную концепцию, конкретное воплощение которой впоследствии было предложено целым рядом исследователей. Среди них были Ривест, Шамир и Адлеман со своим алгоритмом RSA, сформулированным в 1977 году. Подробности ищите в статьях «The History of Non-secret Encryption», Cryptologia 23, № 3 (1999): 267–73 Джеймса Эллиса и «New Directions in Cryptography», IEEE Transactions on Information Theory 22, № 6 (1976): 644–54 Уитфилда Диффи и Мартина Хеллмана, а также в книге Стивена Леви Crypto: Secrecy and Privacy in the New Cold War (Penguin, 2000).
[Закрыть].
Это говорит о двух вещах. Во-первых, найти пример алгоритма асимметричного шифрования действительно непросто. Во-вторых, RSA можно в каком-то смысле назвать «естественным» решением. Процесс поиска простых множителей числа активно изучался математиками на протяжении всей истории, поэтому неудивительно, что именно эта вычислительная задача легла в основу попыток разработать алгоритм асимметричного шифрования. Важную роль сыграло и то, что в этом процессе легко разобраться – это само по себе укрепляет доверие к RSA. По сумме всех факторов RSA, вне всяких сомнений, стал важнейшим алгоритмом асимметричного шифрования на грани двадцатого и двадцать первого веков практически во всех сферах, где нужен этот вид криптографии.
Тем не менее RSA – не единственный алгоритм асимметричного шифрования, с которым вы можете столкнуться. Существует по меньшей мере еще одна распространенная альтернатива, основанная на математической концепции под названием эллиптические кривые. Если безопасность RSA опирается на сложность вычисления простых множителей, то в основе эллиптического шифрования лежит сложность операции, известной как дискретное логарифмирование[110]110
Многие считают, что задачи разложения на простые множители и поиска дискретных логарифмов по модульным числам являются одинаково сложными, однако алгоритмы асимметричного шифрования на основе эллиптических кривых имеют одно преимущество: поиск дискретного логарифма по эллиптическим кривым считается на порядок сложнее, что позволяет использовать более короткие ключи по сравнению с RSA. Для тех, кто изучал математику, понимание эллиптических кривых не составит труда, хотя в целом это область не для слабонервных. Все, что вам нужно знать, описывается в большинстве вводных материалов, посвященных математической стороне криптографии; например, см. Дуглас Р. Стинсон и Маура Б. Патерсон, Cryptography: Theory and Practice, 4-е издание. (CRC Press, 2018).
[Закрыть].
Эта прямая связь с конкретной вычислительной задачей является одновременно и сильной стороной асимметричного шифрования, и источником его слабости. Безопасность блочного шифра можно в какой-то мере сравнить с сооружением замысловатой системы баррикад: для доступа к исходному тексту злоумышленнику нужно вырыть тоннель под стеной, разрезать колючую проволоку, угадать, какой из секретных путей ведет к следующей баррикаде, взобраться на скользкий холм, переплыть ров и пробраться через поле кукурузы в человеческий рост. Чтобы блочный шифр стал еще безопаснее, можно нагородить еще несколько линий баррикад, пока не появится уверенность в том, что злоумышленник не пройдет.
В то же время безопасность асимметричного шифрования опирается на вычислительную задачу, вокруг которой построен алгоритм. Если эта задача хорошо исследована и, по всеобщему убеждению, действительно сложна (как в случае с поиском простых множителей), соответствующий алгоритм асимметричного шифрования можно уверенно считать безопасным. Но если вдруг вычислительная задача по какой-то причине окажется не настолько сложной, как полагалось, алгоритм обречен. Что-то вроде защитного костюма из материала, который считается пуленепробиваемым. Если он действительно так прочен, вы в порядке. Если нет… что ж, остерегайтесь громких хлопков.
Эта неопределенность в какой-то мере объясняет скептицизм по отношению к новым алгоритмам асимметричного шифрования: они основаны на вычислительных задачах, исследованных не так глубоко и тщательно, как разложение на множители и дискретное логарифмирование. В конце книги я попробую заглянуть в будущее и объясню, почему этот скептицизм нам нужно преодолеть поскорее.
Проблемы с навесными замками
Как вы уже видели, цифровой навесной замок возможен. Асимметричное шифрование позволяет нам обеспечить конфиденциальность соединения между нашим компьютером и сайтом, который мы никогда раньше не посещали. Мы получаем от сайта открытый ключ, который может, к примеру, быть опубликован на его основной странице, и с помощью этого открытого ключа отправляем веб-сайту зашифрованные данные. Блестящее и элегантное решение!
Но не все так гладко. К сожалению, у концепции цифровых навесных замков есть два недостатка, один серьезнее другого. Они, конечно, не делают всю идею бесполезной, но ложку дегтя все-таки добавляют. Подходы, используемые для их компенсации, диктуют способы применения асимметричного шифрования в реальных современных системах.
Первая проблема присуща даже примеру из материального мира, на котором я показал необходимость асимметричного шифрования. Помните юриста и сверхактивного курьера? Я утверждал, что для эффективной передачи юристу бумажного письма сам юрист должен сначала послать вам навесной замок. Здесь есть подвох, о котором я не упомянул. Курьер подъезжает к вашему дому, звонит в дверь и передает вам пакет с навесным замком – все хорошо, но что если курьер окажется мошенником и подменит навесной замок юриста своим собственным? Вы закрываете чемодан с письмом на замок, будучи уверены, что откроет его только юрист. Но, увы, на самом деле ключ к замку есть только у курьера. Проблема в том, что вы не можете быть уверены в подлинности навесного замка, который вам вручают.
Этот сценарий аналогичен получению открытого ключа от сайта. Откуда мы знаем, что это подлинный ключ, предназначенный для взаимодействия с компанией, которая, как вы считаете, владеет этим веб-сайтом? Что, если сайт был взломан? Действительно ли вы ввели правильный адрес, и на самом ли деле он принадлежит компании, с которой, как вам кажется, вы совершаете транзакцию? История киберпреступлений полна примеров того, как невинные пользователи не сумели отличить поддельные веб-сайты от настоящих. Асимметричное шифрование основано на предположении о том, что, прежде чем что-то шифровать, вы получили правильный открытый ключ. Если в этом есть сомнения, идея теряет всякий смысл[111]111
Хорошо задокументированный пример этой проблемы относится к атаке, в ходе которой 300 000 иранских граждан, уверенных в том, что они взаимодействуют с серверами Google Gmail, на самом деле получили альтернативные открытые ключи, которые подключили их к поддельному сайту, использовавшемуся впоследствии для отслеживания их переписки. Эта атака произошла из-за того, что компания под названием DigiNotar, занимавшаяся сертификацией, была взломана, что позволило создать открытые ключи, которые ввели в заблуждение иранских пользователей Gmail. См. Грегг Кейзер, «Hackers Spied on 300,000 Iranians Using Fake Google Certificate», Computerworld, 6 сентября 2011 года, https://www.computerworld.com/article/2510951/cybercrime-hacking/hackers-spied-on-300–000-iranians-using-fake-google-certificate.html.
[Закрыть].
Чтобы решить проблему с определением подлинности открытых ключей, нам нужно выработать процедуру, которая позволила бы надежно привязывать их к людям и организациям. Это на удивление сложная задача. Как и многие другие технологии, криптография работает блестяще, пока ею не начинают пользоваться живые люди. Мы можем быть как умными, находчивыми, творческими и готовыми принять новые идеи, так и ленивыми, эгоистичными, манипулятивными и наивными. Создание безопасного навесного замка – это одно, а поиск надежной и честной курьерской службы – совершенно другое. Я вернусь к этому острому вопросу позже, когда речь пойдет о том, как можно нарушить работу криптографии.
Но даже если предположить, что нам удалось с какой-то долей уверенности убедиться в подлинности открытого ключа, остается еще одна проблема, на этот раз техническая. Все алгоритмы асимметричного шифрования, известные на сегодня, работают медленно. По крайней мере, медленнее симметричного шифрования. При шифровании данных с помощью AES задержек почти не возникает, но шифрование с использованием RSA требует определенного времени, хотя вы, скорее всего, даже не заметите разницы. Например, на ноутбуке выполнение алгоритма RSA может занять несколько тысячных долей секунды. Кого это заботит, верно? Но для веб-сайта, заваленного миллионами запросов на установление безопасных соединений, задержка уже может оказаться заметной даже человеку.
Давным-давно никто не обращал внимания на секундные задержки. В Англии 1920-х годов, как описывал ее Лори Ли в своей книге Сидр с Рози, героиня с радостью бы запустила шифрование RSA (если бы оно в те времена существовало, и если бы у нее было какое-то устройство, на котором его можно использовать) и пошла бы подоить корову или взбить немного масла, чтобы через час или два получить свой зашифрованный текст[112]112
Культовый роман Лори Ли Сидр с Рози (Hogarth Press, 1959) основан на его детских воспоминаниях из 1920-х годов и описывает жизнь в маленькой английской деревне до появления таких прорывных технологий, как легковой автомобиль. Эта книга отражает, по всей видимости, утерянную провинциальную идиллию, свободную от суеты и связей с внешним миром.
[Закрыть].
В современном мире секунды имеют значение. Цены на акции поднимаются и падают в мгновение ока. Покупатели бросают виртуальные корзины покупок, если веб-сайт не успевает вовремя ответить. У пассажиров есть лишь несколько мгновений, чтобы пройти через турникет, прежде чем стоящие за ними люди начнут скандалить. Все должно происходить мгновенно. Эта жажда скорости особенно относится к таким вещам как шифрование, которое никто на самом деле не хочет делать, но которое при этом необходимо. Это означает, что шифрование должно быть очень, очень быстрым.
Лучшее из обоих миров
Симметричное шифрование работает быстро, но у него есть почти нерешаемая проблема с распространением ключей. Асимметричное шифрование медленное, но позволяет загружать ключи прямо с сайтов. У каждого из двух подходов есть положительные стороны, которые удачно дополняют друг друга. Реально ли воспользоваться преимуществами обоих типов шифрования, не пострадав при этом от их недостатков?
Вернемся к нашему любимому примеру и рассмотрим окончательное решение. Курьер доставляет вам навесной замок от юриста. Вы сначала берете обычный ключ (который используется как для закрытия, так и для открытия замка) и закрываете ящик с письмом. Затем вы кладете этот ключ в ящик поменьше и закрываете его на замок, полученный от юриста. Оба ящика курьер передает юристу, который сначала откроет меньший из них, возьмет находящийся в нем ключ и затем откроет большой. Чем сильнее мы усложняем эту аналогию, тем нелепей она становится, поэтому давайте сосредоточимся на веб-сайтах, где это решение выглядит намного логичней.
Эту идею часто называют гибридным шифрованием. Допустим, вам нужно установить безопасное конфиденциальное соединение с веб-сайтом. Сначала вы получаете от сайта открытый ключ. Вы бы рады воспользоваться им для шифрования своих данных, но, к сожалению, асимметричное шифрование работает медленно. Поэтому вы генерируете симметричный ключ и быстро шифруете свои данные с его помощью в формате AES. Затем вы шифруете свой симметричный ключ, используя RSA и открытый ключ, полученный от веб-сайта. Эта процедура быстрее не стала, но симметричный ключ размером 128 бит – это очень небольшой фрагмент данных, намного меньше, чем вся та информация, которую вы хотите передать по защищенному каналу. В итоге вы отправляете два зашифрованных элемента. Веб-сайт сначала (медленно) расшифровывает симметричный ключ, а затем использует его, чтобы (быстро) расшифровать данные, зашифрованные с помощью AES. В этой схеме применяются сильные стороны обоих подходов.
В технологиях повседневного применения асимметричное шифрование почти всегда реализовано в виде гибридного процесса. Как уже говорилось, гибридное шифрование, как правило, предназначено для защиты соединений между двумя компьютерами, как в случае с веб-браузером, который подключается к сайту. Не менее активно оно применяется и для защиты электронных писем: симметричный ключ асимметрично шифруется с помощью открытого ключа, принадлежащего адресату, после чего тело письма шифруется с применением симметричного ключа[113]113
В число примеров важных интернет-стандартов, каждый из которых использует гибридное шифрование, входят TLS (Transport Layer Security – протокол защиты транспортного уровня) для защиты веб-соединений, IPSec (Internet Protocol Security) для создания виртуальных частных сетей, позволяющих заниматься такими видами деятельности как удаленная работа, SSH (Secure Shell – безопасная оболочка) для безопасной передачи файлов и S/MIME (Secure Multipurpose Internet Mail Extensions) для защиты электронной почты.
[Закрыть].
Это чудо – держитесь подальше!
Асимметричное шифрование кажется чудесным; сложно найти для него более подходящий эпитет. На протяжении столетий криптографам приходилось бороться с проблемой распространения симметричных ключей. Они и представить не могли, что у этой проблемы будет криптографическое решение. Идея цифрового навесного замка действительно совершила революцию, сделав возможным безопасное взаимодействие между незнакомцами. В конце 1990-х асимметричное шифрование позволило обеспечить конфиденциальность для растущего взрывообразно круга неопытных пользователей Всемирной паутины. Можно сказать, что успех Интернета, по крайней мере отчасти, стал возможным благодаря чудесам асимметричного шифрования.
Однако не следует недооценивать две уже названные проблемы, присущие использованию асимметричного шифрования. Надежное привязывание пользователей к их открытым ключам – это действительно сложный процесс. И асимметричное шифрование действительно медленное. Где-то в 2000 году началось его стремительное падение на знаменитом графике «цикла хайпа»[114]114
Исследовательско-консалтинговая компания Gartner известна своей простой методологией под названием цикл хайпа для отслеживания ожиданий относительно новых технологий (см. «Gartner Hype Cycle», Gartner, https://www.gartner.com/en/research/methodologies/gartner-hype-cycle [по состоянию на 10 июня 2019 года]). Этот цикл характеризуется ранним пиком завышенного и зачастую плохо информированного ажиотажа, затем стремительным падением, связанным с выявлением сложностей реализации, за которым следует плавный подъем, когда становятся понятными реальные сферы применения технологии. Асимметричное шифрование, вероятно, дошло до «плато продуктивности»: всем уже понятны его плюсы и минусы, и теперь его можно использовать по назначению.
[Закрыть] – от «пика чрезмерных ожиданий» к «избавлению от иллюзий». Примерно тогда компании, испытывающие спад после бурного роста доткомов, начали понимать, что асимметричное шифрование – это чудодейственный эликсир с ложкой дегтя. Чего они не понимали, так это того, что асимметричное шифрование даже в гибридном виде имеет смысл использовать только тогда, когда это действительно необходимо.
Основная проблема заключается в следующем: цифровой навесной замок становится действительно необходим только при работе в относительно открытом окружении, в котором вы не можете контролировать систему в целом (включая пользователей и сеть, лежащую в основе взаимодействия). Именно это происходит, когда вы просматриваете веб-страницы или отправляете электронные письма в разные уголки планеты. Если же вы работаете в закрытом окружении, в котором система находится под вашим контролем, асимметричное шифрование попросту не требуется.
Возьмите любого потребителя технологий шифрования на свой выбор: банки, сотовые операторы, автопроизводители, применяющие электронные ключи, изготовители смарт-карт для проезда в общественном транспорте, создатели контроллеров для беспроводных сетей. Во всех этих примерах кто-то контролирует пользователей системы, используемую сеть, и что важнее всего – процесс распространения симметричных ключей. Если у вас есть возможность контролировать пользователей и спокойно передавать ключи, в асимметричном шифровании нет необходимости. Если вы можете достаточно успешно шифровать данные с помощью одних лишь быстрых симметричных алгоритмов, именно это и следует делать.
Асимметричное шифрование – это инструмент для решения очень специфической задачи: как поделиться секретной информацией с незнакомцем. Решения этой на первый взгляд нерешаемой задачи могут иметь свои недостатки, но важно то, что они находятся в рамках возможного, и их можно использовать, когда (и только!) возникает такая необходимость.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?