第一部分 —— 密文类型

文章目录

  • 1. Abstract
    • 1.1 Some Conceptions
  • 2. TFHE Ciphertexts
  • 3. GLWE
    • 3.1 Trivial GLWE ciphertexts
    • 3.2 LWE 和 RLWE
    • 3.3 Public key encryption
  • 4. GLev
    • 4.1 Lev and RLev
  • 5. GGSW
    • 5.1 GSW and RGSW


1. Abstract

TFHE 指的是 全同态加密策略。意思是,允许对密文进行运算,等价于对明文进行运算。TFHE 最初是作为 FHEW 方案的改进而提出的,然后开始向更广泛的方向发展。
 该方案的 安全性 基于一个称为 带错误学习 (LWE)困难格问题,及其变体,如 Ring LWE (RLWE)。事实上,目前使用的大多数 FHE 方案 都是 基于LWE 的,并且 使用有噪声的 密文
 然而,TFHE 与其他方法的区别在于,它提出了一种 特殊的自举 (bootstrapping),这种自举 速度非常快,能够在 降低噪声的同时评估函数

 在我们详细讨论 bootstrapping 之前,有必要写几篇博文,所以现在不要急于理解它是如何工作的。让我们从头开始描述 TFHE 中使用的 密文

1.1 Some Conceptions

  • R = Z [ X ] / ( X N + 1 ) R = Z[X] / (X^N + 1) R=Z[X]/(XN+1):表示 整数多项式环 (ring of integer polynomials) 模 圆分多项式 (cyclotomic polynomial) X N + 1 X^N+1 XN+1,N 是 2 的幂。实际上,它包含 一个 N-1 阶的整数多项式
  • R q = ( Z / q Z ) [ X ] / ( X N + 1 ) R_q = (Z / qZ) [X] / (X^N + 1) Rq=(Z/qZ)[X]/(XN+1):和上面相同的 整数环 R,但是这次 系数 是模 q。注意,我们通常将 Z / q Z Z / qZ Z/qZ 记为 Z q Z_q Zq
  • 我们的 模数约简 为中心。例如,当对 8 进行 模数约简 时,我们使用 同余类 { − 4 , − 3 , − 2 , − 1 , 0 , 1 , 2 , 3 } \{-4,-3,-2,-1,0,1,2,3\} {4,3,2,1,0,1,2,3},即 [ − q / 2 , q / 2 ) [-q/2,q/2) [q/2,q/2)
  • χ μ , σ \chi_{\mu,\sigma} χμ,σ:是一个 均值 (mean) 为 μ \mu μ 标准差为 σ \sigma σ 高斯概率分布。如果 μ = 0 \mu = 0 μ=0,则简记为 χ σ \chi_\sigma χσ
  • 小写字母 表示 整数 (模) (a, b, m, s, …),使用 大写字母 表示 多项式 (A, B, M, S, …)。
  • MSB 表示 最高有效位LSB 表示 最低有效位
  • ⌊ ⌉ \lfloor\rceil :表示舍入取整到最近的整数。

2. TFHE Ciphertexts

 在 TFHE 中,我们主要使用三种类型的密文:LWE、RLWE、RGSW 密文。
 为什么需要分为三类密文,原因是它们都 具有不同的属性,这些属性将在我们将在以下博客文章中描述的同态运算中有用。它们都具有 依赖于 LWE 问题或其变体的安全性。要了解有关 LWE 安全性的更多信息,请查看此 博客文章。

 这些密文不仅用于 TFHE,也用于其他基于 LWEFHE 方案。

  • GLWE (General LWE) - LWERLWE 密文的概括
  • GGSW (General GSW) - RGSW 密文的概括
  • GLev - 一种 中间密文类型,对于更好地理解 GGSW 密文非常有用,并且我们将在后续的博客文章中大量使用它

3. GLWE

 在本节中,我们将使用包含 LWERLWE 密文的概括,称为 General LWE,或简称 GLWE
 要生成任何类型的密文,我们首先需要一个 密钥。对于 GLWE 密文密钥Rk 个随机多项式 的列表 (每个 Si 都是一个 随机多项式)
S → = ( S 0 , . . . , S k − 1 ) ∈ R k \overrightarrow{S} = (S_0,...,S_{k-1}) \in R^k S =(S0,...,Sk1)Rk 具体地,R 元素的系数可以从均匀二元分布、均匀三元分布、高斯分布或均匀分布中采样。
 在本系列博客文章中,与原始 TFHE 描述一样,我们将假设我们的 密钥 是从 均匀二进制分布 中采样的。

 现在看看如何 加密消息。令 qp 为两个正整数,且 p <= q,并定义 Δ = q / p \Delta = q/p Δ=q/p。在 TFHE 中,qp 通常被选为 2 的幂:如果不是,则应在 消息编码时 进行 四舍五入
 我们将 q 称为 密文模数p 称为 明文模数 Δ \Delta Δ 称为 缩放因子。让我们考虑一条 消息 M ∈ R M \in R MR。使用 密钥 S → \overrightarrow{S} S 加密 消息 MGLWE 密文 是一个 元组 (tuple)
( A 0 , . . . , A k − 1 , B ) ∈ G L W E S → , σ ( Δ M ) ⊆ R q k + 1 (A_0,...,A_{k-1},B) \in GLWE_{\overrightarrow{S},\sigma}(\Delta M)\subseteq R_{q}^{k+1} (A0,...,Ak1,B)GLWES ,σ(ΔM)Rqk+1其中,Ai 是从 Rq均匀随机抽样 出来的 (Ai 是一个 N次 多项式,系数 模 q,这个在第一部分 “一些概念” 中有提到)。并且 B = ∑ i = 0 k − 1 A i ∗ S i + Δ M + E ∈ R q B = \sum_{i=0}^{k-1}{A_i * S_i} + \Delta M + E \in R_q B=i=0k1AiSi+ΔM+ERq,且 E ∈ R q E \in R_q ERq 的参数是从 高斯分布 χ σ \chi_{\sigma} χσ 中采样出来的。

多项式乘法 Ai * Si 记得模 (Xn+1)。
上面 Δ \Delta Δ 和 E 都是数,等价于 常数多项式
M 被编码到一个 多项式中
E 就是 噪声,即 noise error

 我们通常称 ( A 0 , . . . , A k − 1 ) (A_0,...,A_{k-1}) (A0,...,Ak1)mask,称 Bbody多项式 Δ M \Delta M ΔM 就是常说的 M 的编码
 注意,为了计算 Δ M \Delta M ΔM,我们 消息 M 编码到 Rq 中 (作为多项式)。而且,每次我们加密一条消息,都采用 新的随机性 (mask 和 noise error)
 在 密钥 S 下,具有 标准差 σ \sigma σ高斯噪声相同编码 Δ M \Delta M ΔMGLWE 加密集,将被记为 G L W E S → , σ ( Δ M ) GLWE_{\overrightarrow{S},\sigma}(\Delta M) GLWES ,σ(ΔM)在这里插入图片描述
 现在,如果我们有一个 密文 ( A 0 , . . . , A k − 1 , B ) ∈ G L W E S → , σ ( Δ M ) ⊆ R q k + 1 (A_0,...,A_{k-1},B) \in GLWE_{\overrightarrow{S},\sigma}(\Delta M)\subseteq R_{q}^{k+1} (A0,...,Ak1,B)GLWES ,σ(ΔM)Rqk+1,密钥为 S → = ( S 0 , S 1 , . . . , S k − 1 ) ∈ R k \overrightarrow{S} = (S_0,S_1,...,S_{k-1}) \in R^k S =(S0,S1,...,Sk1)Rk,然后我们便可以进行 解密

  1. B − ∑ i = 0 k − 1 A i ∗ S i = Δ M + E ∈ R q B - \sum_{i=0}^{k-1} A_i * S_i = \Delta M + E \in R_q Bi=0k1AiSi=ΔM+ERq
  2. M = ⌊ ( Δ M + E ) / Δ ⌉ M = \lfloor (\Delta M + E)/\Delta \rceil M=⌊(ΔM+E)在这里插入图片描述
     观察到 消息 M 位于 Δ M + E \Delta M+E ΔM+EMSB 部分 (由于乘以 Δ \Delta Δ),而 E 位于 LSB 部分
     如果 ∣ E ∣ < Δ / 2 |E| < \Delta / 2 E<Δ/2 (如果 E 的每个系数 ei 都有 ∣ e i ∣ < Δ / 2 |e_i| < \Delta / 2 ei<Δ/2),则解密的第二部如期返回 M。如果 error 不符合条件,则解密不正确。在下图中,我们表示 Δ M + E \Delta M + E ΔM+E 的第 i 个系数。在这里插入图片描述

可以看示例:博文中的 Toy example 部分

3.1 Trivial GLWE ciphertexts

 在下一篇博文中,我们有时会使用所谓的 Trivial GLWE ciphertexts。这些密文不是真正的加密,因为它们隐藏了信息,但必须更多地将其视为 占位符:它们实际上 具有 GLWE 密文的形状,但 消息是明文。一个 Trivial GLWE ciphertexts 将所有的 Ai 设为 0,B 设为 Δ M \Delta M ΔM
( 0 , 0 , . . . , 0 , Δ M ) ∈ R q k + 1 (0,0,...,0,\Delta M) \in R_{q}^{k+1} (0,0,...,0,ΔM)Rqk+1 这些密文不是用来加密敏感信息的!在下一篇文章中,将展示如何使用它们在 同态计算 中注入 公开已知的数据

3.2 LWE 和 RLWE

 现在讨论如何从 GLWE 密文 中获取 LWE 密文RLWE 密文

 当使用 k = n ∈ Z 和 N = 1 k = n \in Z 和 N = 1 k=nZN=1 (k 表示密钥 S 包括 k 个 N 阶多项式,N 表示 多项式的次数) 实例化 GLWE 时,我们将获得 LWE。可以观察到,当 N = 1 时,Rq 就是 Zq在这里插入图片描述
 当使用 k = 1 和 N = 2 r k = 1 和 N = 2^r k=1N=2r 实例化 GLWE 时,我们获得 RLWE在这里插入图片描述

3.3 Public key encryption

 上面使用私钥进行加密的,也可以使用公钥进行加密,详细内容在 该论文 中。


4. GLev

Glev 的主要作用是,识别 GLWE 和 GGSW 密文 之间的 中间密文类型,同时使 GGSW 密文 更易于理解。GLev 可以看作是 BGV 中使用的众所周知的 2 的幂加密 的泛化。

 一个 Glev 密文包含 冗余:它由一组使用 不同的、非常精密的 缩放因子 Δ \Delta Δ 加密 相同消息 MGLWE 密文 组成。 Δ \Delta Δ 由两个非常重要的参数来定义:

  • 基数 β,通常是 2 的幂
  • 级数 ℓ

( G L W E S → , σ ( q β 1 M ) × . . . × G L W E S → , σ ( q β ℓ M ) ) = G l e v S → , σ β , ℓ ( M ) ⊆ R q ℓ ⋅ ( k + 1 ) (GLWE_{\overrightarrow{S}, \sigma}(\frac{q}{\beta ^ 1} M) \times ... \times GLWE_{\overrightarrow{S}, \sigma}(\frac{q}{\beta ^ \ell} M)) = Glev_{\overrightarrow{S},\sigma}^{\beta,\ell}(M) \subseteq R_{q}^{\ell \cdot (k+1)} (GLWES ,σ(β1qM)×...×GLWES ,σ(βqM))=GlevS ,σβ,(M)Rq(k+1)如果 β 和 q 不是 2 的幂,在编码的时候就应该使用一个 rounding (取整操作)

 密钥与 GLWE 密文 的密钥一样。

解密的时候,只需使用相应的 缩放因子 Δ \Delta Δ 解密 其中一个 GLWE 密文 即可。因为 一个 Glev 密文 中包含的 一系列 GLWE 加密的都是 同一个消息 M在这里插入图片描述

4.1 Lev and RLev

 正如我们看到 GLWELWE 和 RLWE概括 一样,我们可以观察到,按照相同的规则,GLev 可以专门化为 LevRLev


5. GGSW

 知道了 GLWEGLev 密文是什么,GGSW 就很好理解了:

  • 一个 GLWE 密文是一个来自 Rq (或 一维举证) 的 元素向量
  • 一个 Glev 密文是一个 元素为 GLWE密文 的向量 (或元素来自 Rq 的二维矩阵)
  • 一个 GGSW 密文 是一个 元素为 Glev密文 的向量 (或元素来自 Rq 的三维矩阵,或 元素为 GLWE密文 的二维矩阵)

 利用 GGSW 密文,我们再次 利用结构中的第三维 添加一些 冗余。具体来说,在 GGSW 中,每个 GLev 密文都会 加密 M私钥中的一个多项式 Si 之间的 乘积在这里插入图片描述
密钥GLWEGlev 一样。

解密的时候,只需要解密 最后一个 Glev 密文 即可。在这里插入图片描述

5.1 GSW and RGSW

 正如在 GLWEGLev 中看到的一样,我们可以观察到,GGSW 可以通过遵循之前提出的相同规则专门化为 GSWRGSW

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/33893.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

进制转换详解

进制转换的基本概念 进制转换是将一个数从一种基数&#xff08;进制&#xff09;转换为另一种基数的过程。例如&#xff0c;将十进制数转换为二进制、八进制或十六进制。 转换过程 以十进制数转换为其他进制为例&#xff0c;转换的基本步骤如下&#xff1a; • 除以目标进制…

构建数字影像生态群,致力推动数字经济发展

在当今数字化浪潮汹涌澎湃的时代&#xff0c;数字经济逐渐成为全球经济增长新的核心驱动力。国际数字影像产业园作为数字影像领域的创新高地&#xff0c;正以其独特的优势和不懈的努力&#xff0c;为推动数字经济的蓬勃发展贡献着卓越力量。 国际数字影像产业园凭借其优越的地理…

性能测试工具1:perf

1.介绍 perf是linxu下的一款性能分析工具。Linux的性能计数器是一个新的基于内核的子系统&#xff0c;它为所有性能分析提供了一个框架。它包括硬件级别&#xff08;CPU/PMU、性能监控单元&#xff09;功能和软件(软件计数器、跟踪点)功能。 通过perf,应用程序可以利用PMU…

学籍照片电子版手机拍照采集且批量自动命名的方法

学籍照片作为学生档案的重要组成部分&#xff0c;其电子版的采集和管理显得尤为重要&#xff0c;目前主要通过“全国学籍信息管理系统”进行管理。传统的拍照和命名方式不仅耗时耗力&#xff0c;而且容易出现错误。为了提高效率和准确性&#xff0c;下面介绍如何由教师自己使用…

在wsl2中安装archlinux

在之前的博客中&#xff0c;我介绍了如何在虚拟机或者真实机上安装archlinux并且进行一定的配置&#xff0c;但是实际上Linux不管怎么配置在日常使用中都没有Windows简单便利&#xff0c;在开发有关Linux的程序时过去用虚拟机或者直接在Windows上使用ssh在远程服务器上进行开发…

蓝桥杯真题1259奇怪的捐赠(python版)

解题思路:将100万转换为7进制数,数位之和就是分成的份数 num 100_0000 sum 0 while num > 0:remainder num % 7num num // 7sum remainder print(sum)代码来自题目题解 num对7进行取余&#xff0c;取值范围理应是[0,1,2,3,4,5,6] 但是对于题目给定的捐赠金额实际上并不…

学习日志020---qt信号与槽

作业 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QPushButton,QLineEditfrom Form import Ui_Form from second import Ui_second from PySide6.QtCore import Qtclass MyWidget(QWidget,Ui_Form):def __init__(self):super().__init__()self.setupUi(se…

python学习笔记15 python中的类

上一篇我们介绍了python中的库 &#xff0c;学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库&#xff0c;常见的内置库&#xff08;random、hashlib、json、时间、os&#xff09; 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…

Redis面试专题-持久化

前言 开始Redis面试知识的复习和资料的收集&#xff08;收集和参考了网上的优质文章&#xff09;&#xff0c;本篇文章会不断更新&#xff0c;本系列文章主要分为两部分&#xff0c;一部分是该专题所涉及的相关基础知识&#xff0c;另一部分是面试题与思考题&#xff0c;大部分…

Altium Designer基础知识2:交互式差分布线

Altium Designer基础知识2&#xff1a;交互式差分布线 一、本文内容与前置知识点1. 本文内容2. 所用软件 二、差分式布线介绍1. 介绍2. 使用场景 三、布线流程1. 创建差分式布线对2. 布线 一、本文内容与前置知识点 1. 本文内容 Altium Designer的基础知识&#xff0c;差分布…

注意力机制的输入

注意力机制的输入 flyfish 注意力机制用于确定序列中每个组成部分相对于其他部分的相对重要性。 绘图源码 import matplotlib.pyplot as plt from matplotlib.patches import FancyArrowPatchplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] Fa…

Anaconda创建虚拟环境+CUDA、cuDNN一同安装

文章目录 前言一、CUDA的作用二、下载CUDA的步骤2.1 查看电脑NVIDIA适合的CUDA版本&#xff08; 两种方法&#xff09;1&#xff09;打开NVIDIA控制面板&#xff0c;目前我的CUDA版本是12.12&#xff09;使用命令行查看&#xff0c;使用命令&#xff1a;nvidia-smi。 2.2 根据p…

数学建模之熵权法

熵权法 概述 **熵权法(Entropy Weight Method,EWM)**是一种客观赋权的方法&#xff0c;原理&#xff1a;指标的变异程度越小&#xff0c;所包含的信息量也越小&#xff0c;其对应的权值应该越低&#xff08;例如&#xff0c;如果对于所有样本而言&#xff0c;某项指标的值都相…

Python学习第十六天--迭代器和生成器

一、可迭代对象 六大标准数据类型&#xff1a;字符串&#xff0c;列表&#xff0c;元组&#xff0c;字典&#xff0c;集合&#xff0c;数值类型 可迭代对象&#xff1a;字符串&#xff0c;列表&#xff0c;元组&#xff0c;字典&#xff0c;集合。即&#xff1a;通过for...in…

【JavaScript】选项卡切换

选项卡切换 选项卡切换是一种常见的网页设计模式&#xff0c;用于在一个页面内显示和切换不同内容区域&#xff0c;而无需加载页面。用户可以通过点击选项卡切换显示不同的内容&#xff0c;而隐藏其他内容。 多选项显示&#xff1a;页面顶部、侧边或其他地方通常有多个选项卡…

【Spring】Spring 整合 MyBatis

在实际项目开发中&#xff0c;将 Spring 和 MyBatis 进行整合可以提高开发效率、简化配置、增强事务管理和可维护性&#xff0c;同时利用 Spring 的强大功能能提升系统的稳定性。这里从独立使用 MyBatis 开始&#xff0c;逐步实现与 Spring 框架的整合。 MyBatis 独立开发 现…

JavaWeb学习(1)(同步或异步请求、依赖jQuery简单实现Ajax技术)

目录 一、Web的基本流程与页面局部刷新。 &#xff08;1&#xff09;web开发时基本流程。 &#xff08;2&#xff09;页面的"全局刷新"与"局部刷新"。 二、Ajax技术。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本特点。 1、与服务…

win11 vs2022 python3.9环境下运行jupyterlab

jupyter官网及简介&#xff1a;https://jupyter.org/ Jupyter 集合“浏览器 编程 文档 绘图 多媒体 发布”众多功能与一身&#xff0c;适合探究式学习。 JupyterLab是最新的基于网络的笔记本、代码和数据的互动开发环境。 Jupyter Notebook是JupyterLab的上一代版本。 由…

STM32 进阶 定时器 2基本定时器 基本定时器中断案例:LED闪烁

基本定时器 基本定时器TIM6和TIM7各包含一个16位自动装载计数器&#xff0c;由各自的可编程预分频器驱动。 这2个定时器是互相独立的&#xff0c;不共享任何资源。 这个2个基本定时器只能向上计数&#xff0c;由于没有外部IO&#xff0c;所以只能计时&#xff0c;不能对外部…

libaom 源码分析:帧间帧内预测编码

整体流程框架逻辑 帧间帧内预测模式的分区类型 不论是 RD 模式还是 nonRD 模式,libaom 中分区只应用 PARTITION_NONE、PARTITION_HORZ、PARTITION_VERT、PARTITION_SPLIT 四种类型,不像 AV1 标准中介绍的那样有十种类型(其实 libaom 源码中也实现了所有了类型,但在正式版中…