По мере того, как криптографические технологии продолжают развиваться и находить новые и все более важные применения в нашей жизни, процессы, выполняемые этими технологиями, становятся все более сложными. Хотя с помощью простых криптографических примитивов можно сделать огромное количество вещей, самое интересное — то, что они могут сделать в сочетании.
Еще более впечатляющей является идея о том, что некоторые криптографические протоколы разработаны с возможностью описания оборудования, что дает им возможность решать универсальные задачи. Эта идея, получившая уместное название «программируемая криптография», обещает сделать возможными более сложные действия, перефразируя Брайана Гу, превратив математическую проблему разработки новых протоколов в проблему программирования объединения существующих.
В этой статье мы рассмотрим уровни криптографического применения, от целей высокого уровня до алгоритмов низкого уровня, чтобы понять, откуда берутся эти идеи. Затем мы посмотрим, куда они направляются.
Прежде чем мы начнем, давайте поразмышляем над фундаментальной мотивацией, побуждающей криптографов углубляться в свое ремесло. В конце концов, гораздо проще оставаться дома и ничего не делать, чем работать над математическими доказательствами того, что новый протокол безопасен, осуществим и представляет собой значимое улучшение по сравнению с существующими моделями.
Именно из-за постоянно растущей важности цифровых данных, которые мы храним, передаем и обрабатываем, необходимы новые и улучшенные методы обеспечения конфиденциальности и защиты этих данных от несанкционированного доступа. Именно желание удовлетворить эту потребность заставляет криптографов вставать с постели по утрам.
Поистине ошеломляет мысль о том, сколько информации в наши дни обрабатывается в Интернете. Для большинства людей более важным является то, насколько больше времени они тратят на взаимодействие с данными сейчас, чем даже несколько лет назад. Вся эта информация, которую они производят, обрабатывают, просматривают и отправляют, подвергается риску шпионажа, кражи или манипулирования, если она не защищена должным образом.
Вот почему всегда существует потребность в криптографии. Вот почему продолжают разрабатываться новые и улучшенные методы обеспечения конфиденциальности данных.
Как и многие другие дисциплины, криптография основана на простых концепциях, которые расширяются по мере того, как задача становится более интересной. Эти простые концепции, часто называемые в современной криптографии «криптографическими примитивами», сами по себе часто являются базовыми, но их можно объединить для создания чего-то сложного.
Например, рассмотрим один из древнейших кодов — шифр Цезаря. Названный в честь своего самого известного пользователя, этот код включает в себя написание слов в зашифрованном тексте, который сдвигается на три буквы назад по сравнению с исходным сообщением. В этом случае слово «the» будет писаться как «qeb». Каждая буква была сдвинута на три позиции впереди нее в английском алфавите.
Хотя этот код довольно прост, он хорошо протестирован, полезен и совсем не экспериментальен. Если вам нужно зашифровать данные, это зашифрует их. Хотя это не самый безопасный код в мире, его также можно комбинировать с другими методами, чтобы сделать его более надежным.
Другой пример: шифр Виженера — это инструмент для кодирования сообщения с использованием нескольких различных шифров Цезаря. В этой системе каждое сообщение сочетается с ключом; представим себе «орла» и «лимона» соответственно. Ключ подсказывает вам, на сколько мест следует сдвинуть буквы в сообщении, но каждая буква имеет разное количество сдвигов. Буква «L» в слове «лимон» говорит вам сдвинуть первую букву сообщения на двенадцать пробелов, поскольку L — двенадцатая буква английского алфавита. «Е» говорит вам сдвинуть вторую букву на пять пробелов и так далее.
Итак, «яблоко» становится «песр». Без доступа к ключу расшифровать сообщение становится гораздо сложнее. Несмотря на то, что он все еще имеет слабые места шифра Цезаря (при наличии достаточного количества времени грубый расчет определит, что представляет собой сообщение), за счет комбинирования существующих инструментов по-новому уровень безопасности резко возрастает.
Как вы, наверное, догадались, зачастую гораздо проще объединить существующие шифры, подобные этим, новыми, более сложными способами, чем изобретать новую систему. Цезарь умер давным-давно, и мы до сих пор пользуемся его кодовой книгой.
Точно так же, как сохраняется мудрость старых кодов, большая часть современных криптографических технологий стоит на аналогичном пьедестале. Заставить криптографа написать новое доказательство того, что новая система сохранит ваши цифровые секреты в безопасности, — это фантастика, но это также требует довольно много времени и не гарантирует, что она будет работать. С другой стороны, известно, что криптографические примитивы, такие как RSA (Ривест-Шамир-Адлеман), AES (расширенный стандарт шифрования) или системы цифровой подписи, работают и могут легко применяться для решения широкого круга задач. Например, RSA широко используется для безопасной передачи данных, а AES — стандарт для шифрования конфиденциальных данных. Если их объединить, они смогут обеспечить инновационную функциональность и решить более сложные проблемы, чем любой из них мог бы решить по отдельности.
Хотя объединение простых методов — отличный способ создания более сложных систем, у него есть ограничения. Каждый из этих примитивов предназначен для решения определенной задачи, и нередко при их объединении допускаются ошибки, обнажающие их слабые стороны.
Протоколы среднего уровня, основанные на примитивах низкого уровня, ориентированы на более продвинутые функции и возможности. Далее мы рассмотрим некоторые из наиболее широко распространенных и обсуждаемых протоколов среднего уровня.
Гомоморфное шифрование — это протокол, который позволяет обрабатывать зашифрованные данные без предварительной их расшифровки. Примеры такого подхода существуют и сегодня, хотя он все еще находится на сравнительно ранних стадиях своего развития — его практическая эффективность была продемонстрирована только в 2009 году. Существующие модели иногда ограничены в том, какие процессы можно проводить с зашифрованными данными.
Однако эта концепция чрезвычайно интересна и имеет множество очевидных возможных применений. Подумайте, как часто конфиденциальные, но полезные данные, такие как медицинские записи или кредитная информация, крадут из организаций, которым необходим доступ к ним, чтобы помочь вам. Что, если бы можно было взаимодействовать с зашифрованной медицинской информацией, даже не расшифровывая ее? Преимущества этого улучшения безопасности очевидны.
Многосторонние вычисления (MPC) — это инструмент для сокрытия входных данных, предоставляемых различными участниками, совместно работающими над общим результатом. Ее часто называют «проблемой миллионера».
Представьте себе, что есть два миллионера, которые хотят узнать, у кого из них больше денег. Однако они не хотят просто выйти и сказать, каков их собственный капитал. Они могут использовать MPC для решения этой проблемы. Первый миллионер может добавить свой зашифрованный собственный капитал в программу, предназначенную для сравнения значений, прежде чем отправить его второму. Второй миллионер не может увидеть ценность первого, когда увеличивает свой собственный капитал.
Затем они могут расшифровать выходные данные и выяснить, кто из них ввел большее значение, при этом не имея возможности видеть ни один из входных данных.
Наконец, давайте посмотрим на доказательства с нулевым разглашением (ZKP). Они, вероятно, хорошо известны читателю, поскольку широко используются, и мы кратко рассмотрим их. ZKP очень хороши в том, что позволяют доказывающему сказать другому человеку, которого часто называют проверяющим , что что-то истинно, не говоря ничего больше. Обычно они предоставляют эту услугу одному пользователю; человек просит доказательства, и он их получает. Существует ряд ЗКП, в том числе zk-SNARK и zk-STARK. У каждого есть свои преимущества и недостатки.
По мере развития исследований этих продвинутых протоколов внимание сместилось в сторону разработки криптографических протоколов общего назначения. Эти инициативы направлены на то, чтобы доказать, что криптография способна обеспечить безопасное и конфиденциальное выполнение универсальных вычислений. Первоначально эти усилия носили чисто теоретический характер, ставя во главу угла осуществимость, а не эффективность практической реализации. Однако по мере углубления исследований криптографы переключили свое внимание на практическое применение этих концепций. Они улучшают, комбинируют и изобретают новые протоколы и компоненты. Часто окончательный протокол оказывается гибридным, использующим сильные стороны нескольких подходов. Например, гомоморфное шифрование использует доказательства с нулевым разглашением для доказательств диапазона, чтобы гарантировать, что вычисления остаются в пределах допустимого диапазона. Между тем, протоколы MPC могут включать элементы гомоморфизма для выполнения нелинейных операций.
Среди множества экспериментальных протоколов некоторые подошли настолько близко к практической полезности, что проложили путь для реального развития. Эти инструменты действуют аналогично компиляторам, интерпретируя языки высокого уровня и преобразуя их в схемы, которые могут обрабатывать криптографические протоколы. Это преобразование похоже на преобразование программного обеспечения в операции с регистрами ЦП или перевод Solidity в переходы состояний EVM. Достижение этой возможности, подобной компилятору, в сочетании с поддержкой вычислений, полных по Тьюрингу, знаменует собой появление того, что мы называем программируемой криптографией. Хотя это может показаться слишком оптимистичным, реальность имеет нюансы. Например, побитовые хеш-функции не так эффективны в протоколе доказательства с нулевым разглашением, тогда как хеш-функции, выполняемые посредством модульного умножения, обеспечивают превосходную эффективность. Следовательно, желательно избегать таких алгоритмов, как SHA-3. Более того, отказ от вычислений с плавающей запятой является обычной практикой, поскольку криптографические протоколы преимущественно работают в пределах конечных полей. Подобные трюки существуют повсюду при воплощении в жизнь программируемой криптографии.
Программируемая криптография по-прежнему является новой концепцией, но она дает возможность значительно упростить очень сложные проблемы. Легко предположить, в каком направлении он пойдет. Почти наверняка будут предприняты попытки программировать с использованием всевозможных криптографических инструментов, хотя уровень успеха, который будет достигнут с их помощью, еще предстоит определить.
Однако некоторые из этих экспериментов сработают. Некоторые из них будут работать хорошо, а те, которые работают хорошо, обеспечат мощные функциональные возможности и высокий уровень безопасности без необходимости тратить деньги на создание совершенно новой системы для одного приложения криптографом. Одна только эта возможность, вероятно, вызовет большой интерес к этой области.
Необходимо будет решить проблему того, как сделать это таким образом, чтобы это работало с существующими системами, и вполне вероятно, что большая часть того, что будет принято, будет эффективно работать с данными, с которыми необходимо взаимодействовать.
Влияние этой технологии на безопасность данных, конфиденциальность и более широкую область цифровой безопасности трудно переоценить. Большое количество сложных действий станет проще реализовать. Хотя плохое программирование вызовет проблемы, как всегда бывает там, где технология работает, мы увидим лучшую безопасность и более надежные системы конфиденциальности.
Пожалуй, самое обнадеживающее то, что с точки зрения использования этой технологии еще довольно рано. Доказательства ZK были изобретены в 1980-х годах, но стали возможными только в 2012 году. Может существовать множество возможных механизмов и комбинаций механизмов, о которых еще никто не мечтал. Следующая потрясающая мир идея может появиться уже завтра. Возможно, мы даже не сможем догадаться, что он будет делать.