同态加密明文矩阵乘密文向量优化:BSGS小步大步法

news2024/11/15 2:03:19

摘要

本文介绍如何使用小步大步(Baby-Step-Giant-Step,BSGS)优化RLWE同态加密的明文矩阵和密文向量的乘法。使用 n × n n\times n n×n明文矩阵的对角打包和BSGS,可以将密文旋转的次数降低为 O ( n ) O(\sqrt{n}) O(n ).

明文运算

一个矩阵乘以一个向量可以表示为该向量与矩阵的每一行做内积运算。
明文运算
可以表示为下面4个内积运算:
内积

在基于RLWE的同态加密中,我们往往将一个向量加密为一个密文,从而实现SIMD优化。然而,被加密为一个密文后,向量不同位置之间的元素移动需要密文的旋转。密文旋转操作和明文乘以密文的开销差不多,比较耗时。这使得利用内积运算来计算明文矩阵和密文向量的乘法,变得非常耗时。

对角打包

可以观察到,对明文矩阵进行对角打包后,可以实现明文与密文向量的SIMD运算,从而降低开销。

对角打包1

假设明文矩阵为 A = a i , j \mathbf{A}=a_{i,j} A=ai,j,其中 i , j ∈ { 0 , 1 , 2 , ⋯   , n − 1 } i,j \in \{0,1,2,\cdots,n-1\} i,j{0,1,2,,n1}.
那么对角打包的第 i i i个向量为 a i = [ a i , 0 , a i + 1 , 0 , ⋯   , a i + n − 1 , n − 1 ] \mathbf{a_i}=[a_{i,0},a_{i+1,0}, \cdots, a_{i+n-1,n-1}] ai=[ai,0,ai+1,0,,ai+n1,n1],这里下标的计算是模 n n n运算。

令密文向量为 b \mathbf{b} b,那么结果密文 c = ∑ i = 0 n − 1 rot ⁡ ( a i × b , − i ) \mathbf{c}=\sum_{i=0}^{n-1}\operatorname{rot}(\mathbf{a_i}\times \mathbf{b},-i) c=i=0n1rot(ai×b,i). 其中 rot ⁡ ( ⋅ , i ) \operatorname{rot}(\cdot,i) rot(,i表示密文向左循环旋转 i i i步,负数表示向右循环旋转 − i -i i步。

从上图看,就是先算蓝色和密文相乘,再算紫色、黄色、绿色。通过 rot ⁡ \operatorname{rot} rot,把每一个位置需要加起来的乘积旋转到正确的位置。

上面是先乘,再进行旋转。此外,我们还可以先对密文向量进行旋转,然后再乘。如下图所示:

对角打包2
此时,对角打包后的第 i i i个向量为 d i = [ a 0 , i , a 1 , i + 1 , ⋯   , a n − 1 , i + n − 1 ] \mathbf{d_i}=[a_{0,i},a_{1,i+1},\cdots,a_{n-1,i+n-1}] di=[a0,i,a1,i+1,,an1,i+n1].

结果密文可表示为 c = ∑ i = 0 n − 1 d i × rot ⁡ ( b , i ) \mathbf{c}=\sum_{i=0}^{n-1}\mathbf{d_i}\times \operatorname{rot}( \mathbf{b}, i) c=i=0n1di×rot(b,i).

BSGS优化

BSGS的思想是,首先旋转一小步,得到一个块后,再将整个块旋转一大步,从而减少需要的总的旋转次数。

假设 k 1 × k 2 = n k_1\times k_2=n k1×k2=n.

则结果密文可表示为:
c = ∑ j = 0 k 2 − 1 rot ⁡ ( ∑ i = 0 k 1 − 1 rot ⁡ ( a j k 1 + i × b , − i ) , − j k 1 ) \mathbf{c}=\sum_{j=0}^{k_2-1}\operatorname{rot}(\sum_{i=0}^{k_1-1}\operatorname{rot}(\mathbf{a_{jk_1+i}}\times \mathbf{b},-i),-jk_1) c=j=0k21rot(i=0k11rot(ajk1+i×b,i),jk1).

但是我们发现,这样根本达不到优化的效果,需要的旋转次数为 k 1 k 2 + k 2 = n + k 2 k_1k_2+k_2=n+k_2 k1k2+k2=n+k2,比原来还多。

我们尝试使用第二种对角打包:
c = ∑ j = 0 k 2 − 1 rot ⁡ ( ∑ i = 0 k 1 − 1 rot ⁡ ( d j k 1 + i , − j k 1 ) × rot ⁡ ( b , i ) , j k 1 ) \mathbf{c}=\sum_{j=0}^{k_2-1}\operatorname{rot}(\sum_{i=0}^{k_1-1}\operatorname{rot}(\mathbf{d_{jk_1+i}},-jk_1)\times \operatorname{rot}(\mathbf{b},i),jk_1) c=j=0k21rot(i=0k11rot(djk1+i,jk1)×rot(b,i),jk1).

此时, rot ⁡ ( b , i ) \operatorname{rot}(\mathbf{b},i) rot(b,i)一共只有 k 1 k_1 k1次, j k 1 jk_1 jk1一共有 k 2 k_2 k2次。

d j k 1 + i \mathbf{d_{jk_1+i}} djk1+i的旋转是明文的旋转,是便宜的。

因此,密文的旋转只需要 k 1 + k 2 k_1+k_2 k1+k2次。

k 1 = k 2 k_1=k_2 k1=k2时, k 1 + k 2 k_1+k_2 k1+k2最小,为 2 n 2\sqrt{n} 2n .

第二种对角打包,达到了减少旋转次数的优化目标。

参考文献

[1] S. Halevi and V. Shoup. Bootstrapping for HElib. In EUROCRYPT (1), volume 9056 of Lecture Notes in Computer Science, pages 641–670. Springer, 2015.

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

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

相关文章

3、无线通信系统的组成

通常把实现信息传输的系统称为通信系统,下图表示一个通信系统的基本组成。在通信系统中,一般要进行两种变换与反变换。在发送端,第一个变换是输入变换器,它把要传输的信号变为电信号,该信号一般是低频的,而…

数字英文验证码识别 API 对接说明

数字英文验证码识别 API 对接说明 本文将介绍一种 数字英文验证码识别 API 对接说明,它是基于深度学习技术,可用于识别变长英文数字验证码。输入验证码图像的内容,输出验证码结果。 接下来介绍下 数字英文验证码识别 API 的对接说明。 注册…

【d45】【Java】【力扣】206.反转链表

思路 解法1:适用于数字不多的 1.把节点的数,都放进一个arraylist中 2.调用Collections.reverse(list)方法,将list转置 3.再遍历list,逐个放入数字 代码 解法1 import java.util.ArrayList; import java.util.Collections;p…

window批处理脚本:将本地的三个文件通过SCP传输到Linux设备上

文件名send_file.bat: echo off setlocal:: 提示用户输入远程IP地址 set /p remoteIpAddressplease input IP::: 定义本地文件名 set "localFile1111" set "localFile2222" set "localFile3333":: 获取本地文件的完整路径 set "…

【AI视频】Runway:Gen-2 图文生视频与运动模式详解

博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 💯前言💯仅图片生成视频方法一:通过Midjourney生成图片方法二:通过Runway预览生成图片注意点 💯图加文生成视频方式一:Midjourney…

百度飞浆Paddle OCR检测和识别【OCR数据收集、标注、数据集划分、检测识别模型训练、导出模型】

文章目录 前言一、OCR数据集采集二、OCR数据标注三、划分数据集四、数据训练五、导出模型 前言 1、我的电脑没有GPU,如果不使用AI Studio训练的话,第一遍我是按照CPU进行环境配置和训练的,可以参考这篇文章,我按着弄了一遍&#…

安克创新25届校招CATA北森测评:笔试攻略、真题题库、高分技巧

安克创新自适应能力CATA测评是该公司用于评估候选人认知能力的计算机自适应测评系统。该测评系统由北森题库提供支持,是国内唯一被国际计算机自适应测验协会(IACAT)收录的产品。测评主要评估以下几个维度: 言语能力:测试理解言语信息并基于这…

25届计算机专业毕设选题推荐-基于python+Django协调过滤的新闻推荐系统

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于协调过滤的新闻推荐系统…

浅谈穷举法

穷举法 穷举法是一种通过逐一列举所有可能情况来寻找解决方案的方法。就像找到一把钥匙打开一把锁,我们会尝试每一把钥匙直到找到正确的那一把。比如,如果你忘记了自己的密码,可以尝试每一种可能的组合直到找到正确的密码为止 穷举法的结构 …

【计算机网络 - 基础问题】每日 3 题(十六)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

spring boot启动报错:so that it conforms to the canonical names requirements

springboot 2.x的版本中对配置文件中的命名规范有了强制性的要求,如下图所示中的dataSource属性属于驼峰格式,但是在springboot 2.x中不允许使用驼峰形式。 根据错误提示可知将其使用 - 来分割即可 错误信息的含义:“Canonical names should…

51单片机-红外遥控器(NEC标准)

作者:Whappy 时间:2024.9.20 总结一下!基础实验到这儿里就圆满结束,历经25天,将51单片机学完并亲自手敲代码近5000行,在手敲代码过程中,明显感觉的看和敲,明显就是不同的感觉&…

基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程

源码简介: 这是一款基于PHP开发的CRM管理系统源码,全称客户关系管理CRM系统源码,它是由php源码开发的,还附带了一整套详细的安装教程哦! 功能亮点: 1、公海管理神器:不仅能搞定公海类型&…

阿里开源多模态大模型Ovis1.6,重塑出海电商AI格局

阿里开源Ovis1.6:多模态领域再夺第一 阿里再一次证明了自己在多模态领域的实力。这一次,阿里国际AI团队开源的多模态大模型Ovis1.6,不仅成功开源,还在多模态评测基准OpenCompass上击败了Qwen2VL-7B、InternVL2-26B和MiniCPM-V-2.…

springboot jar包瘦身

现在的项目结构是业务包引用comomn包,common包里又引用了很多其他的jar包,导致业务包打包出来动则就是一百甚至两百兆,现在要做到把公共的包放出来,放到一个单独的文件夹,业务包里只放业务代码。 现在只需要修改maven …

Python 操作 Arduino 入门

本文翻译整理自:Arduino With Python: How to Get Started https://realpython.com/arduino-python/ 文章目录 一、Arduino平台1、Arduino硬件2、Arduino软件 二、“Hello, World!”与Arduino1、上传眨眼示例草图2、连接外部组件3、使用面包板 三、“Hello, World!”…

【Day02-JS+Vue+Ajax】

1. JS介绍 在前面的课程中,我们已经学习了HTML、CSS的基础内容,我们知道HTML负责网页的结构,而CSS负责的是网页的表现。 而要想让网页具备一定的交互效果,具有一定的动作行为,还得通过JavaScript来实现。那今天,我们就…

Charles抓包工具测试实战

总结 工作原理 主要功能 优点 安装与配置 安装 组件介绍 Charles代理设置 Charles访问控制 客户端 Windows代理设置 MacOS代理设置 IOS手机代理设置 Android手机代理设置 Charles抓包实战 分析问题 抓包 后台出了问题 抓取https数据 全是乱码 Windows证书安装 Charles ht…

项目文件配置

1. 参数配置化 1.1 问题分析 1.2 问题解决 Value 注解通常用于外部配置的属性注入,具体用法为:Value("${配置文件中的key}") 2. yml配置文件 2.1 SpringBoot提供了多种属性配置方式 2.2 常见配置文件格式对比 2.3 yml 基本语法 大小写敏…