Slot Rotation in Helib


这篇主要是描述的是BGV(Brakerski-Gentry-Vaikuntanathan)和BFV(Brakerski-Fan-Vaikuntanathan)同态加密方案中的明文空间(plaintext space)以及SIMD打包和slot 旋转计算。

BGV和BFV加密算法

Secret key generation

  • 随机选取私钥 s k : = s ∈ R q ∣ \mathrm{sk:}=\textcolor{green}s\in R_{q}| sk:=sRq

Encryption of a plaintext polynomial

  • 公开参数:明文空间 m ∈ R p r m∈R_p^r mRpr,多项式空间 R = Z [ X ] / X n + 1 R=Z[X]/X^n+1 R=Z[X]/Xn+1, 系数模q的多项式空间 R q = Z q [ X ] / X n + 1 R_q=Z_q[X]/X^n+1 Rq=Zq[X]/Xn+1
  • 随机抽样 a ← R q , e ← χ q ∣ a\leftarrow R_{q},e\leftarrow\chi_{q}| aRq,eχq
  • BGV密文: Enc s B G V ( m ; p r ) = c = ( b , a ) = ( − a s + m + p r e , a ) ∈ R q 2 \text{Enc}_s^{\mathbf{BGV}}(m;p^r)=\boldsymbol{c}=(\boldsymbol{b},\boldsymbol{a})=(-as+\textcolor{red}{m+p^re},a)\in\mathbb{R}_q^2 EncsBGV(m;pr)=c=(b,a)=(as+m+pre,a)Rq2
  • BFC密文: E n c s B F V ( m ; p r ) = c = = ( b , a ) = ( − a s + ⌊ q p r m ⌋ + e , a ) \mathrm{Enc}_s^{\mathbf{BFV}}(m;p^r)=\boldsymbol{c}==(\boldsymbol{b},\boldsymbol{a})=\left(-as+\left\lfloor\frac q{p^r}m\right\rfloor+\right.e,a) EncsBFV(m;pr)=c==(b,a)=(as+prqm+e,a)
    BGV和BFV加密的形式
    当在p和q互素的情况下,BGV/FV密文形式上相等
    BFV--->BGV 转换
  • c 0 = E n c s B F V ( m ; p r ) = ( a 0 , b 0 ) = ( − a 0 s + [ q p r m ] + e , a 0 ) ∈ R q \mathbf{c_0}=\mathrm{Enc_s^{BFV}(m;p^r)=(a_0,b_0)=\left(-a_0s+\left[\frac q{p^r}m\right]+e,a_0\right)\in R_q} c0=EncsBFV(m;pr)=(a0,b0)=(a0s+[prqm]+e,a0)Rq

  • c 1 = − p Γ c 0 ∣ = ( a 0 p r s − p r ( e + m q p r ) + p r [ q m ] p r p r , − p r a 0 ) = ( − a 1 s + p r e + [ q m ] p r ,   a 1 ) ∈ R q 2 \begin{aligned}\mathbf{c}_{1}=&\mathrm{-p}^{\Gamma}\mathbf{c}_{ {\mathbf{0}}}|\\&=\left(\mathrm{a}_{0}\mathrm{p}^{\mathrm{r}}\mathrm{s}-\mathrm{p}^{\mathrm{r}}\left(e+m\frac{q}{\mathrm{p}^{\mathrm{r}}}\right)+\mathrm{p}^{\mathrm{r}}\frac{\left[qm\right]_{ {\mathrm{p}^{\mathrm{r}}}}}{\mathrm{p}^{\mathrm{r}}},-\mathrm{p}^{\mathrm{r}}\mathrm{a}_{0}\right)=\left(-\mathrm{a}_{1}\mathrm{s}+\mathrm{p}^{\mathrm{r}}\mathrm{e}+\left[qm\right]_{ {\mathrm{p}^{\mathrm{r}}}},\mathrm{~a}_{1}\right)\in R_{q}^{2}\end{aligned} c1=pΓc0=(a0prspr(e+mprq)+prpr[qm]pr,pra0)=(a1s+pre+[qm]pr, a1)Rq2
    BGV--->BFV 转换
  • c 0 = E n c s B G V ( m ; p r ) = ( a 0 , b 0 ) = ( − a 0 s + p r e + m , a 0 ) ∈ R q \mathbf{c_{0}}=\mathrm{Enc_{s}^{BGV}(m;p^{r})=(a_{0},b_{0})=(-a_{0}s+p^{r}e+m,a_{0})\in R_{q}} c0=EncsBGV(m;pr)=(a0,b0)=(a0s+pre+m,a0)Rq

  • c 1 = [ p r ] q − 1 c 0 = ( − [ p r ] q − 1 a 0 s + [ q p r q − 1 m ] + e , [ p r ] q − 1 a 0 ) = ( − a 1 s + p r e + [ q − 1 m ] p r ,   a 1 ) ∈ R q 2 \begin{aligned}\mathbf{c}_{1}&=[\mathrm{p}^{\mathrm{r}}]_{ {\mathrm{q}}}^{-1}\mathbf{c}_{ {\mathbf{0}}}\\&=\left(-[\mathrm{p}^{\mathrm{r}}]_{ {\mathrm{q}}}^{-1}\mathrm{a}_{0}\mathrm{s}+\left[\frac{\mathrm{q}}{\mathrm{p}^{\mathrm{r}}}q^{-1}\mathrm{m}\right]+\mathrm{e},[\mathrm{p}^{\mathrm{r}}]_{ {\mathrm{q}}}^{-1}\mathrm{a}_{0}\right)=\left(-\mathrm{a}_{1}\mathrm{s}+\mathrm{p}^{\mathrm{r}}\mathrm{e}+\left[q^{-1}m\right]_{ {\mathrm{p}^{\mathrm{r}}}},\mathrm{~a}_{1}\right)\in R_{q}^{2}\end{aligned} c1=[pr]q1c0=([pr]q1a0s+[prqq1m]+e,[pr]q1a0)=(a1s+pre+[q1m]pr, a1)Rq2
    在这里插入图片描述

BGV同态加密SIMD编码

在全同态加密(FHE, Fully Homomorphic Encryption)中,SIMD代表 Single Instruction, Multiple Data,即单指令多数据。这是一种并行计算技术,在FHE中被广泛用于提高加密运算的效率。

系数嵌入
对于多项式 m ( x ) ∈ R q = Z q [ x ] / f ( x ) , m(x)\in R_{q}=\mathbb{Z}_{q}[x]/f(x) , m(x)Rq=Zq[x]/f(x),其系数嵌入对应于: m = ∑ i = 0 N − 1 m i X i m=\sum_{i=0}^{N-1}m_iX^i m=i=0N1miXi, m ( x ) ↦ ( m 0 , m 1 , . . . , m n − 1 ) ∈ Z q n m(x)\mapsto(m_0,m_1,...,m_{n-1})\in\mathbb{Z}_q^n m(x)(m0,m1,...,mn1)Zqn,该嵌入式多项式环上元素到模q下的 n n n维整数向量的映射,多项式的加法运算可对应于向量的按位加,但多项式的乘法比较复杂,不能对应向量的按位乘法。
在这里插入图片描述
Slot嵌入

正则嵌入定义: 令 ζ = exp ⁡ ( π − 1 / n ) , \zeta=\exp(\pi\sqrt{-1}/n) , ζ=exp(π1 /n), R q = Z q [ x ] / f ( x ) R_{q}=\mathbb{Z}_{q}[x]/f(x) Rq=Zq[x]/f(x)到复数域 C n \mathbb{C}^n Cn, 即 σ : a ( x ) ↦ ( a ( ζ ) , a ( ζ 3 ) , . . . , a ( ζ 2 n − 1 ) ) ∈ C n \textcolor{red}{\sigma:a(x)\mapsto(a(\zeta),a(\zeta^{3}),...,a(\zeta^{2n-1}))\in\mathbb{C}^{n}} σ:a(x)(a(ζ),a(ζ3),...,a(ζ2n1))Cn,则 σ \sigma σ为正则嵌入映射,其中 a ( x ) ∈ R q a(x)\in R_q a(x)Rq f ( x ) = x n + 1 f(x)=x^n+1 f(x)=xn+1

特别地,当参数满足 q q q是素数且 q = 1 ( m o d 2 n ) q=1({\mathrm{mod}}2n)

本资源集提供了针对小型无人机六自由度非线性动力学模型的MATLAB仿真环境,适用于多个版本(如2014a、2019b、2024b)。该模型完整描述了飞行器在三维空间中的六个独立运动状态:绕三个坐标轴的旋转(滚转、俯仰、偏航)与沿三个坐标轴的平移(前后、左右、升降)。建模过程严格依据牛顿-欧拉方程,综合考虑了重力、气动力、推进力及其产生的力矩对机体运动的影响,涉及矢量运算与常微分方程求解等数学方法。 代码采用模块化与参数化设计,使用者可便捷地调整飞行器的结构参数(包括几何尺寸、质量特性、惯性张量等)以匹配不同机型。程序结构清晰,关键步骤配有详细说明,便于理解模型构建逻辑与仿真流程。随附的示例数据集可直接加载运行,用户可通过修改参数观察飞行状态的动态响应,从而深化对无人机非线性动力学特性的认识。 本材料主要面向具备一定数学与编程基础的高校学生,尤其适合计算机、电子信息工程、自动化及相关专业人员在课程项目、专题研究或毕业设计中使用。通过该仿真环境,学习者能够将理论知识与数值实践相结合,掌握无人机系统建模、仿真与分析的基本技能,为后续从事飞行器控制、系统仿真等领域的研究或开发工作奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 关于SIMD指令集与BFV(Batched Fixed-Vector)的实现或用法 #### SIMD指令集概述 SIMD(Single Instruction Multiple Data),即单指令多数据流架构,允许处理器在同一时间执行多个相同的操作。这种技术广泛应用于图像处理、音频处理以及科学计算等领域[^1]。 在现代计算机体系结构中,SIMD通过扩展CPU的功能单元支持并行操作,显著提高了性能。例如,在Intel平台上,SSE (Streaming SIMD Extensions) 和 AVX (Advanced Vector Extensions) 是两种常见的SIMD指令集[^2]。这些指令集能够在一个周期内对多个数据项进行加法、乘法或其他运算,极大地提升了高吞吐量应用的表现。 #### BFV(Batched Fixed-Vector) BFV代表批量固定矢量(Batched Fixed-Vector),它通常用于描述一种特定类型的SIMD优化方式,其中输入被划分为固定的大小批次来进行高效处理。这种方式特别适合那些可以分解成独立子任务的大规模问题,比如矩阵乘法或者卷积神经网络中的张量运算。 ##### 实现细节 当使用BFV时,开发者需要考虑如何有效地加载和存储数据到/从SIMD寄存器中。下面是一个简单的例子展示如何利用GCC内置函数来实现一个基于BFV的向量化求和: ```c++ #include <immintrin.h> // For SSE and AVX intrinsics void vectorized_sum(const float* input, size_t length, float& result){ __m256 sum = _mm256_setzero_ps(); // Initialize with zero for AVX registers for(size_t i=0;i<length;i+=8){ // Process 8 floats at once using AVX __m256 vec = _mm256_loadu_ps(input+i); // Load unaligned data into register sum = _mm256_add_ps(sum,vec); // Add loaded values to accumulator } alignas(32) float temp[8]; // Temporary array aligned on a 32-byte boundary _mm256_storeu_ps(temp,sum); // Store the final accumulated value back out of the register result = temp[0]+temp[1]+temp[2]+temp[3]+temp[4]+temp[5]+temp[6]+temp[7]; } ``` 上述代码片段展示了如何运用AVX intrinsic `_mm256_`系列命令完成一次每轮迭代八个数目的累加操作。注意这里采用了未对齐内存访问(`_loadu`)以适应可能存在的任意地址偏移情况;实际部署过程中应尽可能采用已知边界条件下的对齐版本提高效率。 另外值得注意的是某些情况下还需要手动管理溢出风险等问题,这取决于具体应用场景的要求。 #### ARM平台上的SCVTF指令 除了x86/x64架构外,ARM也提供了丰富的SIMD功能集合,其中包括了scvtf指令用来将有符号整型转换成为浮点型数值[^3]。这类转化对于混合精度计算非常重要,尤其是在嵌入式设备上运行机器学习模型的时候经常需要用到此类变换逻辑。 --- ### 总结 无论是传统桌面级还是移动终端领域内的程序设计都可以从中受益匪浅。合理选用合适的工具链配合恰当的技术手段往往能带来事半功倍的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值