моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Образовательные ресурсы:
Полностью гомоморфное шифрование I: теория и основы (преподаватель Ю Ю из Шанхайского университета Цзяо Тун)
Полностью гомоморфное шифрование II: теория и построение полностью гомоморфного шифрования (учитель Сян Се)
В настоящее время полностью гомоморфные схемы шифрования второго поколения (такие как BGV и BFV) и третьего поколения основаны на LWE. Теперь усовершенствованные полностью гомоморфные схемы также основаны на LWE, поэтому в этой статье обобщены базовые знания о LWE.
Сначала подумайте, мы хотим зашифровать число SSс, сейчас использую серию ай а_иаяверно SSсЗашифруйте и получите аис а_исаяс, на самом деле, ее можно решить, решив НОД наибольшего общего делителя SSс .Однако если добавить случайный шум эй е_иея,получать аис + еи а_ис+е_иаяс+ея, то решить будет сложно SSс ценить. Этот процесс — мое простое понимание LWE. Так называемая ошибка — это шум.
Процесс расчета полностью гомоморфного шифрования разделен на три этапа: генерация ключей KeyGen, шифрование Enc, гомоморфное вычисление Eval и дешифрование Dec. ,
Сначала постройте приведенное выше уравнение, с ⋅ А + е = с А + е ссдот А + е = sA+eс⋅А+е=сА+е, а затем получить открытый ключ pk ( − А-А−Аи с А + е сА+есА+есплайсинг) и закрытый ключ sk ( SSс и 1). Таким образом, получается, что результатом умножения pk и sk является случайный шум e (близкий к 0).
Открытый ключ pk, используемый для шифрования, r — это случайный вектор, содержащий только 0 или 1, а m — информация, подлежащая шифрованию (помещаемая в младший бит вектора).
После вычисления внутреннего продукта закрытого ключа sk, используемого для расшифровки, и ct, найдите mod 2, чтобы получить результат расшифровки.
Доказательство правильности:
Умножьте sk и pk, чтобы получить 2e (условие, которому соответствует KeyGen), а затем выполните скалярное произведение с r, чтобы получить небольшой равномерный шум. Конечный результат — небольшой равномерный шум m+, поэтому шум можно устранить по модулю 2. Получить результат расшифровки m. Вот почему построенный шум равен 2e, а не e. Насколько я понимаю, создавая случайный шум с четным номером, удобно использовать мод 2 для устранения шума во время дешифрования.
Доказательство безопасности:
Когда pk псевдослучайен и r имеет достаточно высокую энтропию (т. е. случайность сильная?), и pk, и pk, умноженный на r, являются псевдослучайными. После сложения натуральных и векторов с m результат шифрования также будет псевдослучайным.
Ниже приводится шаблонное описание учителя Сян Се:
Формула шифрования: зашифрованный текст c = открытый ключ pk ✖️ случайный r + открытый текст m
Формула дешифрования: открытый текст m = <зашифрованный текст sk, закрытый ключ sk> mod q mod 2
На этом основании мод 2 можно использовать для расшифровки значения открытого текста m. Пока шум достаточно мал, точность может быть гарантирована.
Здесь необходимо кое-что отличить: приведенное выше ПК = (А, б = А s ′ + 2 е) ПК=(А, б=Аs'+2е)пК=(А,б=Ас′+2е)— это решение BGV, а BFV — это ПК = (А, б = А s ′ + е) ПК=(А, б=Аs'+е)пК=(А,б=Ас′+е)разница в том, что BGV кодирует информацию в младших битах, а BFV кодирует сообщения в старших битах (будет объяснено при изучении BFV).
Обратите внимание, что гомоморфное сложение или умножение приведет к значительному накоплению шума, а умножение имеет квадратичную тенденцию роста.
Затем давайте поговорим о том, как расшифровать результат гомоморфного умножения. Вы можете увидеть следующую формулу: Умножение двух зашифрованных текстов эквивалентно тензорному произведению зашифрованного текста и закрытого ключа соответственно, а затем внутреннему произведению. Таким образом, очевидно, что и зашифрованный текст, и закрытый ключ увеличились вдвое. Пример является доказательством эквивалентности.
Итак, вопрос в том, как восстановить размер зашифрованного текста и размер закрытого ключа после гомоморфного умножения? Эту проблему решает Key Switching.
Ниже приводится описание учителя Сян Се:
Цель состоит в том, чтобы восстановить размер зашифрованного текста и закрытого ключа до линейного размера.
Теперь найдем произведение шифртекстов c1 и c2:
Вышеописанный процесс основан на концепции битовой декомпозиции:
Ниже приводится описание учителя Сян Се:
Цель переключения ключей: преобразовать закрытый ключ. с ~ тильда сс~вниз с ~ тильда сс~ Преобразовать в закрытый ключ SSсвниз копийс,и с ~ тильда сс~и копийсВсе они зашифрованы одним и тем же открытым текстом.
Основная концепция здесь — ключ переключения ключей (KSK), что означает использование закрытого ключа. SSсшифровать с ~ тильда сс~。
В процессе переключения ключей закрытый ключ может быть получен из s ⊗ s раз sс⊗сстал линейным SSс, а зашифрованный текст меняется с с ~ тильда сс~стал линейным копийс .И из последней строки формулы видно, что после переключения клавиш ⟨ c , s ⟩ langle c, srangle⟨с,с⟩и оригинал ⟨ c ~ , s ⊗ s ⟩ длинная тильда c, иногда странгл⟨с~,с⊗с⟩Существует разница в уровне шума между 2 с ~ Т е ~ 2тильда с^Ттильда е2с~Те~ , эта часть может быть очень большой! Таким образом, здесь пока нет возможности реализовать переключение клавиш.
Здесь представлена матрица гаджета G:
Таким образом, процесс переключения ключей выглядит следующим образом:
На этом этапе добавленная ошибка очень мала.
Подводя итог, с помощью Key Switching, исходный закрытый ключ s ~ = s ⊗ s тильда s=s иногда sс~=с⊗свниз c ~ = c ⊗ c тильда c=cotimes cс~=с⊗с, преобразуется в закрытый ключ SSсвниз копийс, обратите внимание на клавишу после переключения клавиш с, кс, сс,сЭто не исходные значения (двойная проверка).
Для BGV шум сложения увеличивается линейно, а шум умножения увеличивается прямоугольно. Хотя переключение ключей может поддерживать умножение (ограничивая sk до чрезвычайно большого размера), на самом деле шум представляет собой очень небольшой шум, добавляемый к исходному шуму умножения. также очень велик. Следовательно, этот шум необходимо дополнительно снизить.
На данный момент вычисления гомоморфного умножения и сложения с небольшой глубиной реализованы посредством LWE. Переключение ключей использует новый ключ для каждого слоя. Однако по мере увеличения глубины вычислений расширение шума является взрывным, поэтому оно еще не нивелируется. . FHE (можно рассчитать FHE на заданной глубине).
Теперь мы надеемся реализовать FHE, который сможет рассчитывать определенную глубину без использования начальной загрузки, которая требует преобразования по модулю.
Я не совсем понимаю процесс посередине. Короче говоря, это преобразование зашифрованного текста c из домена по модулю q в домен по модулю p (p<).
Вот конкретный пример:
Если уменьшение модуля не выполнено, шум будет расти по двойной экспоненциальной тенденции по мере увеличения глубины, а ошибки дешифрования возникнут после уровня >= 3.
Если снижение модуля выполняется на каждом уровне, шум также будет поддерживаться в пределах диапазона абсолютных значений за счет непрерывного снижения модуля.
Итак, если вы хотите реализовать выравниваемый FHE, вы можете установить модуль Б д Б^дБг, то вы сможете вычислить глубину ддгсхема (где ВВБ — верхняя граница шума обновленного зашифрованного текста).Рассчитано ддгПосле глубины модуль следует уменьшить до ВВБ , чтобы гарантировать отсутствие ошибок при расшифровке на данный момент. BGV — это уровневый FHE.