Гомоморфное шифрование
Как отдать данные в облако на обработку, не дав их прочитать.
Гомоморфное шифрование (homomorphic encryption) — шифрование, позволяющее выполнять вычисления прямо над шифротекстами так, что после расшифровки получается тот же результат, что и при вычислении над открытыми данными.
Зачем это знать
Обычная схема такова: чтобы что-то посчитать, данные надо расшифровать. Значит, на сервере в момент обработки они лежат открытыми — и это самая лакомая точка для атаки. Гомоморфное шифрование убирает этот компромисс: облако считает вслепую, никогда не видя содержимого. Для защитника это переход от «доверяем серверу» к «серверу нечего у нас взять».
Идея на простом примере
Представьте «волшебный конверт»: вы кладёте число в запечатанный конверт, отдаёте помощнику, он, не вскрывая, складывает его с другим запечатанным числом — и возвращает конверт, в котором лежит сумма. Вскрыть может только владелец ключа. Формально для сложения это выглядит так: если E — шифрование, то существует операция над шифротекстами, дающая шифр суммы.
E(3) ⊕ E(5) = E(8) # сложение под шифром
E(3) ⊗ E(5) = E(15) # умножение под шифром
Расшифровать E(8) → 8 может только владелец секретного ключа.Заметьте: помощник так и не узнал ни 3, ни 5, ни даже 8. Он лишь механически преобразовал конверты. В этом вся суть: вычислитель работает с шифротекстами как со «строительными блоками», подчиняющимися алгебраическим правилам, и эти правила устроены так, что аккуратно «дублируют» арифметику над спрятанными числами. Слово «гомоморфизм» из математики как раз и означает отображение, которое сохраняет структуру операции: операция над зашифрованными значениями соответствует операции над открытыми.
Частичное, «почти полное» и полное
Схемы различаются тем, какие операции и сколько раз они поддерживают.
- Частично гомоморфное (PHE) — одна операция, зато неограниченно. Например, у RSA умножение шифротекстов даёт шифр произведения; у схемы Пайе сложение шифротекстов даёт шифр суммы. Этого хватает для узких задач (приватное суммирование голосов, тайное голосование).
- «Несколько уровней» (SHE) — поддерживает и сложение, и умножение, но ограниченное число операций подряд.
- Полностью гомоморфное (FHE) — любые вычисления любой глубины. Раз можно делать сложение и умножение по модулю над битами, можно собрать произвольную булеву схему, а значит вычислить что угодно.
Как это работает под капотом
Современные FHE-схемы строятся на «обучении с ошибками» (Learning With Errors, LWE) и решётках. Чтобы скрыть данные, в шифротекст подмешивают небольшой шум. При сложении шумы складываются, при умножении — растут гораздо быстрее. Пока шума немного, расшифровка верна; когда он перерастёт порог — данные испортятся, и восстановить их не сможет даже владелец ключа.
Прорыв 2009 года (Крейг Джентри) — операция bootstrapping: схема умеет «расшифровать саму себя под шифром» и тем самым сбросить накопившийся шум, не раскрывая данные. Это позволяет считать сколь угодно глубоко. Цена — bootstrapping вычислительно очень дорог.
Каждая операция добавляет шум:
шифр: [данные | небольшой шум]
+ + × → [данные | шум растёт ...........]
если шум > порога → расшифровка сломана
bootstrapping → шум снова мал, считаем дальшеГде это применяется
- Приватные вычисления в облаке: отдать зашифрованную медицинскую или финансовую базу на анализ, получить зашифрованный результат — провайдер не видит содержимого.
- Приватный поиск/запросы: сделать запрос к удалённой базе, не раскрывая, что именно ищете.
- Конфиденциальная аналитика и ML-инференс: посчитать статистику или применить модель к чужим данным, не объединяя их в открытом виде; межбанковский антифрод без раскрытия клиентов.
- Защита от инсайдера: даже администратор облака с полным доступом к серверу видит лишь шифротексты, поэтому утечка дампа базы или компрометация оператора не раскрывают данные.
Важно понимать границу: гомоморфное шифрование защищает входные данные пользователя, переданные на обработку. Логика самого вычисления (какая функция применяется) обычно известна серверу — скрывают именно данные, а не алгоритм.
Реальные ограничения (без иллюзий)
Это не «бесплатная приватность». Главные ограничения:
- Скорость: операции под шифром в тысячи–миллионы раз медленнее обычных; шифротексты крупные. Поэтому FHE применяют к узким, ценным вычислениям, а не «ко всему подряд».
- Бюджет шума/глубина: без bootstrapping число операций ограничено; с ним — медленно.
- Что считаем: схемы естественно дружат с арифметикой (сложение, умножение); ветвления, сравнения и условные переходы выражаются неуклюже и дорого, ведь сервер не имеет права «подсмотреть» условие, чтобы выбрать ветку, — приходится вычислять обе и комбинировать под шифром.
- Целостность: гомоморфное шифрование скрывает данные, но само по себе не гарантирует, что сервер выполнил правильное вычисление — это отдельная задача (верифицируемые вычисления, ZKP).
Как защититься и применять грамотно
Берите проверенные библиотеки (например, реализации схем BFV/BGV/CKKS), не пишите собственную решёточную криптографию. Подбирайте параметры под нужную глубину вычислений — заниженные параметры ломают корректность, завышенные убивают производительность. Помните о модели угроз: FHE защищает конфиденциальность входов на сервере, но не заменяет контроль доступа, аутентификацию и проверку целостности результата.
Итоги
- Гомоморфное шифрование позволяет считать над зашифрованными данными; результат после расшифровки совпадает с вычислением над открытыми.
- PHE — одна операция неограниченно; SHE — обе, но конечной глубины; FHE — любые вычисления (благодаря bootstrapping).
- Под капотом — решётки/LWE и подмешанный шум; превышение бюджета шума ломает расшифровку, bootstrapping его сбрасывает.
- Применения — облачная приватная обработка, приватный поиск, конфиденциальная аналитика; главные ограничения — скорость, размер и сложность ветвлений.