FL Гид

Полностью
гомоморфное шифрование

"Священный Грааль" криптографии

Полностью гомоморфное шифрование (Fully Homomorphic Encryption, FHE) — класс криптографических схем, позволяющих вычислять на зашифрованных данных без их расшифрования: результат, после расшифрования, совпадает с тем, что получили бы при вычислениях на открытом тексте.

Стандартное шифрование (AES, RSA в режиме конфиденциальности) защищает данные при хранении и передаче, но требует расшифрования перед обработкой. FHE устраняет это последнее слабое место. Tradeoff — скорость: операции FHE в 10³–10⁶ раз медленнее открытых, поэтому продуктивные системы комбинируют FHE с более быстрыми техниками — федеративным обучением и многосторонними вычислениями.

Активное развитие технологий последних десятилетий обусловило популяризацию криптографии, и термины, применяемые ранее только математиками-криптографами, теперь стали широко известны. В их числе термин "гомоморфное шифрование".

Попробуем же разобраться, какие задачи решают стандартные алгоритмы шифрования, каковы их ограничения и зачем потребовалось гомоморфное шифрование.

Классические криптографические схемы осуществляют некие параметрические (зависящие от ключа) отображения пространства открытых данных в пространство шифрованных. При этом инвертировать такое преобразование возможно только располагая этим самым параметром (ключом).

Характерная особенность алгоритмов шифрования рассеивание и перемешивание информации, представляющей собой открытый текст, вследствие чего не сохраняются метрики, определенные в пространстве открытых текстов. Например, результаты шифрования на одном ключе двух входных открытых текстов, различающихся лишь в одном бите, совершенно не близки меж собой в пространстве шифрованных текстов. В свою очередь, любое изменение данных, представляющих собой шифртекст, ведет к тому, что, расшифровывая их, мы получим просто случайные неинтерпретируемые данные.

 

Таким образом, классические алгоритмы шифрования гарантируют безопасность хранения, передачи, аутентификации и др., но никак не безопасную обработку данных, т.е. любые операции с данными требуют их расшифрования.

Какова же потребность в обработке зашифрованных данных?

Можно констатировать, что эра “больших данных” уже наступила. Развитие машинного обучения изменило многие сферы жизни, в том числе появились облачные вычислительные платформы, предоставляющие пользователям существенные вычислительные мощности и различные сервисы для обработки данных.

У клиентов имеется возможность защитить данные в процессе передачи в облако, но для осуществления обработки и анализа данных их необходимо расшифровывать.

Таким образом, клиент предоставляет свои данные, возможно, доверенные ему третьими лицами, неподконтрольному ему ресурсу, что множит вероятность утечки или несанкционированного доступа.

Существуют различные подходы к решению данной задачи: например, физическая изоляция серверов, ограничение взаимодействия с ним сторонних лиц. Однако в любом из этих случаев клиент вынужден верить, по сути, на слово и вверять свои данные защите, реализованной на стороне сервера.

Естественно, возникает желание обеспечить своим данным собственную защиту, как в случае с передачей, когда не обязательно полагаться лишь на реализацию транспортного протокола защиты: можно отправлять уже зашифрованные данные.

 

Концепция схемы шифрования, допускающей выполнение операций над зашифрованными данными таким образом, что расшифрование результата есть корректное преобразование открытых данных, соответствующих оперируемым шифртекстам, витала в криптографической среде порядка 30 лет и зачастую именовалась “Священным Граалем” криптографии.

Однако достижение этой идеи продвигалось достаточно сложно.

Первые шаги в направлении разработки схем шифрования, допускающих некоторые преобразования над зашифрованными данными, совпадают с работами над схемами шифрования с открытым ключом, которые, на самом деле, преследовали иные цели.

Рассмотрим в общих чертах самую известную схему: RSA

Выбираются большие простые числа p and q, вычисляется N = pq ― модуль системы и φ(N) = (p-1)(q-1) ― функция Эйлера, выбирается элемент eЄZN* и вычисляется соответствующий ему элемент d, такой что ⅇ ⋅d ≡ 1(mod ϕ(N)). Формируются открытый ключ системы (e, N), и секретный ключ (φ(N),d).

 

Алгоритм шифрования сообщения m представляет собой Enc(x)=me (mod N), обозначим его результат как с. Алгоритм расшифрования Dec(c) = сd(mod N).

Корректность следует из того, чтоcd (mod N) = (ce)d (mod N) = m(mod N), так как ⅇ⋅d ≡ 1(mod⁡ φ(N)).

В приведенной схеме пространство открытых текстов совпадает с пространством шифрованных текстов и представляет собой ZN. Предположим, что имеются два шифрованных текста с1 and с2, соответствующие сообщениям m1 and m2. Рассмотрим произведение с1 ⋅ с2(mod N) и попробуем его расшифровать.

Dec(с1 ⋅ с2) = (с1 ⋅ с2)d (mod N) = (m1e ⋅ m2e)d(mod N) = (m1 ⋅ m2)ed (mod N) = m1 ⋅ m2(mod N).

Откуда можно видеть, что произведение двух шифртекстов является корректным шифрованным текстом для произведения соответствующих открытых текстов. Такие отображения называют гомоморфными относительно тех операций, для которых рассмотренные свойства выполняются. В частности, функции Enc() и Dec() мультипликативно гомоморфны.

Мультипликативной гомоморфности недостаточно для большинства задач обработки данных, из-за чего поиск криптографически стойких алгоритмов с гомоморфными относительно большего количества операций функциями шифрования/расшифрования является основным вызовом на пути развития данного направления.

Какова потребность в простейших операциях над зашифрованными данными?

Классическое машинное обучение и глубокое обучение может быть декомпозировано на набор элементарных операций над данными либо аппроксимировано рядом простейших операций, тогда работа безопасных ML-алгоритмов с защищенными данными эквивалентна работе исходных версий этих алгоритмов над незащищенными данными. В таком случае данные могут подвергаться анализу, оставаясь зашифрованными.

Например, предположим, что у нас есть система обмена сообщениями, в которой сообщения должны быть зашифрованы от отправителя до получателя (end-to-end encryption). В то же время необходимо проверять сообщения на спам, не нарушая их конфиденциальности.

Типичный случай связки ML и гомоморфного шифрования.

Таким образом, гомоморфное шифрование возвращает владельцам данных контроль над собственными данными.

Однако стоит понимать, что оно не является криптопанацеей и не способно заменить более высокопроизводительные схемы, но по аналогии с криптосистемами с открытым ключом способно занять свою нишу.

Часто задаваемые вопросы

Что такое гомоморфное шифрование?
Гомоморфное шифрование — класс схем шифрования, при которых математические операции, выполняемые над шифротекстами, дают после расшифрования тот же результат, как если бы операции выполнялись на открытых текстах. Простейшие примеры — частично гомоморфные схемы: RSA (мультипликативно гомоморфен) и Paillier (аддитивно гомоморфен). Полностью гомоморфные схемы поддерживают и сложение, и умножение на зашифрованных данных — это позволяет вычислять произвольные функции на шифротекстах. Это криптографическая основа для конфиденциальных вычислений, приватного машинного обучения и зашифрованных запросов к БД.
Что такое полностью гомоморфное шифрование (FHE) и чем оно отличается от частичного?
Частичная гомоморфность поддерживает только один тип операций — RSA только умножение, Paillier только сложение. Этого достаточно для отдельных задач, но не для большинства вычислений. Полностью гомоморфное шифрование (FHE) поддерживает и сложение, и умножение неограниченное число раз, что делает его вычислительно универсальным: любая функция, выразимая через арифметическую или булеву схему, может быть вычислена на зашифрованных данных. Первая FHE-схема опубликована Крейгом Джентри в 2009 году; современные практичные схемы (BGV, BFV, CKKS, TFHE) появились в течение следующего десятилетия.
Как работает гомоморфное шифрование? (на примере RSA)
RSA даёт ясную интуицию. Выбираются простые p, q; вычисляются N = pq и φ(N) = (p-1)(q-1). Выбирается e, взаимно простое с φ(N), и вычисляется d такое, что e·d ≡ 1 mod φ(N). Открытый ключ: (e, N); закрытый ключ: (φ(N), d). Шифрование: c = m^e mod N. Расшифрование: m = c^d mod N. Мультипликативная гомоморфность: c1·c2 = m1^e · m2^e = (m1·m2)^e mod N. То есть произведение шифротекстов после расшифрования даёт произведение исходных сообщений. Значит RSA мультипликативно гомоморфен — полезно, но не FHE.
Какие схемы FHE используются на практике?
Четыре современные схемы доминируют в продуктивном FHE.
BGV (Бракерски-Джентри-Вайкунтанатан, 2011) — целочисленная арифметика, батч-операции.
BFV (Бракерски-Фан-Веркаутерен, 2012) — точная целочисленная арифметика, часто применяется для ML-инференса.
CKKS (Чхон-Ким-Ким-Сонг, 2017) — приближённая арифметика на вещественных/комплексных числах, оптимальна для ML, где допустимы малые погрешности.
TFHE (Шиллотти-Гама-Георгиева-Изабаше, 2016) — быстрый bootstrapping на булевых схемах. Реализованы в зрелых open-source библиотеках: Microsoft SEAL, OpenFHE (бывший PALISADE), IBM HElib, Zama Concrete.
Подходит ли гомоморфное шифрование для продуктивного машинного обучения?
Да, со значительными оговорками. Арифметика FHE в 10³–10⁶ раз медленнее открытой, поэтому наивное FHE-везде непрактично. Реальные продуктивные системы комбинируют FHE с более быстрыми техниками приватности: федеративное обучение — большая часть вычислений локально на открытом тексте, FHE применяется только для агрегации градиентов; безопасные многосторонние вычисления — на уровне протоколов совместных операций; доверенные среды исполнения (TEE) — на уровне аппаратной изоляции. Инференс малых нейросетей на зашифрованных входах (на CKKS) уже применим в продакшене для низконагруженных, высокочувствительных сценариев — медицинская диагностика, финансовый скоринг.
Что можно вычислять на FHE-зашифрованных данных?
В теории — всё, что выразимо через арифметическую или булеву схему. На практике самые частые продуктивные сценарии: зашифрованные запросы к БД (private information retrieval); ML-инференс на зашифрованных входах (классификация, регрессия, скоринг); зашифрованная агрегация в федеративном обучении; private set intersection; зашифрованные статистики по медицинским/финансовым данным. Узкое место — глубина схемы: операции дороже с её ростом, а bootstrapping (обновление шумового бюджета) — дорогостоящая операция. Поэтому дизайн алгоритмов под FHE сводится к минимизации мультипликативной глубины.
Чем FHE отличается от других техник приватности?
FHE — одна из нескольких технологий повышения приватности (PETs). Другие: федеративное обучение (данные остаются локально, передаются только обновления модели); дифференциальная приватность (статистический шум на выходах); безопасные многосторонние вычисления (данные разделены по сторонам через secret sharing); доверенные среды исполнения (аппаратные анклавы Intel SGX, AMD SEV); функциональное шифрование (вычисление конкретной функции на шифротексте). FHE математически наиболее надёжна, но и самая медленная. Большинство продуктивных систем комбинирует 2–3 PETs в зависимости от модели угроз и требований к производительности.
Как Guardora использует гомоморфное шифрование?
Guardora использует аддитивное гомоморфное шифрование (Paillier, 1024 бита) в качестве режима максимальной защиты в Guardora VFL — градиенты между активной стороной (владельцем разметки, например, банком) и пассивной стороной (владельцем признаков, например, аналитическим вендором) шифруются перед передачей, поэтому ни одна сторона не видит градиентов другой в открытом виде. Для кредитного скоринга на табличных данных с GBDT этот режим увеличивает время обучения (50K записей — около 1,4 часа против менее 9 минут без шифрования на 300K записях) без изменения качества модели. Paillier выбран потому, что аддитивная гомоморфность совпадает с операцией суммирования градиентов в федеративном GBDT.