Гомоморфное шифрование с использованием SEAL

.NET

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

В этой статье описывается, как и когда использовать шифрование Гомоморфные. Здесь также описано, как реализовать шифрование Гомоморфные с помощью простой шифрованной арифметики (Microsoft) с открытым кодом (запечатывание).

Потенциальные варианты использования

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

Architecture

Традиционное и запечатное шифрование

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

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

С помощью ЗАПЕЧАТЫВАНИя Гомоморфные шифрования поставщики облачных служб никогда не имеют незашифрованного доступа к данным, которые они хранят и вычисляют. Вычисления можно выполнять непосредственно в зашифрованных данных. Результаты таких зашифрованных вычислений остаются зашифрованными и могут быть расшифрованы только владельцем данных с помощью секретного ключа. В большинстве Гомоморфные шифрования используются схемы шифрования с открытым ключом, хотя функциональность открытого ключа не всегда требуется.

Компоненты

Рекомендации

  • В зашифрованных данных возможны только некоторые вычисления. Библиотека шифрования Гомоморфные Microsoft ЗАПЕЧАТЫВАНИя позволяет добавлять и выполнять умножение в зашифрованных целых числах или вещественных числах. Зашифрованные сравнения, сортировка или регулярные выражения часто не позволяют оценивать зашифрованные данные с помощью этой технологии. Таким образом, с помощью Microsoft ЗАПЕЧАТЫВАНИ можно реализовать только определенные критические для конфиденциальности облачные вычисления на частях программ.

  • Microsoft ЗАПЕЧАТЫВАНИе поставляется с двумя схемами шифрования Гомоморфные с разными свойствами. Схема БФВ позволяет выполнять модульные арифметические операции с зашифрованными целыми числами. Схема КККС позволяет добавлять и умножение в зашифрованных реальных или комплексных числах, но дает только приблизительные результаты. КККС — лучший вариант при суммировании зашифрованных реальных чисел, оценки моделей машинного обучения на зашифрованных данных или вычисления расстояния от зашифрованных расположений. Для приложений, где требуются точные значения, единственным выбором является схема БФВ.

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

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

  • Как правило, схемы шифрования Гомоморфные имеют один секретный ключ, который удерживает владелец данных. Именно поэтому шифрование Гомоморфные не является разумным для сценариев, в которых несколько частных владельцев данных хотят привлекаться к совместному вычислению.

  • Преобразование незашифрованных вычислений в вычисления на зашифрованных данных не всегда является простым или простым. Даже если новые пользователи могут программировать и запускать вычисления с помощью Microsoft ЗАПЕЧАТЫВАНИя, это может быть отличным различием между эффективной и неэффективной реализацией. Может быть трудно понять, как повысить производительность.

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

Развертывание этого сценария

Пример кода включает в себя консольное приложение, API для реализации базового взаимодействия "клиент-сервер" с шифрованием Гомоморфные, а также полные инструкции. Чтобы использовать код, скачайте и Извлеките ZIP-файл в локальную папку. для проекта кода требуется Visual Studio 2019 и .net Core версии 2,2.

Дальнейшие действия

Дополнительные сведения о шифровании Гомоморфные и Microsoft ЗАПЕЧАТЫВАНИе см. в статье Microsoft Seal from Microsoft Research и проект кода запечатывания на GitHub.