【密码学基础】半/全同态加密算法基础学习笔记

news2024/12/23 17:55:30

文章目录

  • 1 半同态加密
    • Pailliar加法同态加密
      • Paillier加解密过程
      • Paillier的同态性
      • Paillier的安全性
    • El Gamal乘法同态加密
      • RSA乘法同态加密
  • 2 全同态加密
    • BFV全同态加密
      • BFV的编码方式
      • BFV加解密过程
      • BFV的安全性
      • BFV的同态性
      • 自举Bootstrapping
  • 3 同态加密应用场景
    • 场景1:安全向量内积
    • 场景2:安全数据库
    • 场景3:安全聚合(Secure Aggregation)
    • 真正的全同态计算还不实际
  • 技术展望
    • 理论创新
    • 应用创新
    • 硬件加速
  • 参考资料

1 半同态加密

定义:只支持乘法或加法中的一种的同态加密。同态加密指的是允许直接对密文进行计算,密文计算结果解密后与明文直接计算结果相同。

在这里插入图片描述

Pailliar加法同态加密

Paillier加解密过程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Paillier的同态性

明文加法 <=> 密文乘法
明文乘法 <=> 密文指数幂
在这里插入图片描述

Paillier的安全性

基于大整数分解困难问题

El Gamal乘法同态加密

相比Paillier,El Gamal性能更好,但是做加法同态时,解密需要求离散对数,只适用明文较小情况。
在这里插入图片描述

RSA乘法同态加密

参考我之前写的RSA算法博客:【密码学基础】RSA加密算法

在这里插入图片描述

显然,RSA的加解密都是同指数幂的指数运算,所以满足乘法同态性。

2 全同态加密

定义:能在加密的数据上进行任意数量的加法和乘法运算的加密算法,使得密文计算结果解密后与明文直接计算结果相同。
在这里插入图片描述

在这里插入图片描述

BFV全同态加密

BFV全同态是基于环上learning with error的算法,同态性是多项式同态,而非数值!所以在明文空间中,如何将原始数值编码到多项式,就很有挑战性了。
在这里插入图片描述

BFV的编码方式

常见的编码方式是SIMD:Single Instruction Multiple Data
在这里插入图片描述

在这里插入图片描述

多项式的同态性传递到原始数据的同态性。SIMD的优势是能在同一个多项式中打包多个数据。

BFV加解密过程

s是私钥,pk是公钥。随机多项式e是服从高斯分布,大概率是非常小的,所以解密是可以被四舍五入掉(比如示例中的0.15x^2和0.04两项)。
在这里插入图片描述

BFV的安全性

基于RLWE困难问题
在这里插入图片描述

BFV的同态性

加法同态:
在这里插入图片描述

注:每次同态加法导致噪声翻倍。

乘法同态:
在这里插入图片描述

注:每次同态乘法导致噪声增长约明文长度倍。
由此可以看到, δ \delta δ越大,能容忍的噪声就越大!所以决定了乘法的次数(计算深度)。

自举Bootstrapping

前面说到噪声会在同态运算中不断增大,且不能超过 δ / 2 \delta/2 δ/2,支持最大乘法次数是L。Bootstrapping则可以让密文满血复活,成为又可以操作L次的密文了。
这个过程就是同态函数D来实现的,D是密文空间中的同态解密算子,即用加密的私钥sk解密密文ct,得到加密的明文Enc(m),也就是密文ct本身。
本质上,Bootstrapping的过程就是从密文ct到ct的变化,特别之处就是中间存在一步同态解密过程,消除了(累积的)噪声。
在这里插入图片描述

3 同态加密应用场景

场景1:安全向量内积

在这里插入图片描述

安全向量内积的半同态解决方案:
A用Paillier加密数据a,发送给B与数据b执行密文-明文乘法,然后发给A解密。缺点是性能很低。
在这里插入图片描述

安全向量内积的全同态解决方案1:
将向量打包到多项式,执行多项式同态乘法。需要rotation操作!将 a i b i a_ib_i aibi都旋转到第一项,然后执行同态加法。但是rotation操作开销很大!
在这里插入图片描述

安全向量内积的全同态解决方案2:
对B编码时,调整多项式系数的位置,发现多项式相乘后 a i b i a_ib_i aibi就已经在一起了,无需rotation!
在这里插入图片描述

总结:编码方式很重要!不同的编码方式性能可能差100倍以上!

场景2:安全数据库

在这里插入图片描述

场景3:安全聚合(Secure Aggregation)

在联邦学习中通过同态加密保护梯度,但是需要参与方大于2,否则可以反推梯度。
在这里插入图片描述

真正的全同态计算还不实际

在这里插入图片描述

技术展望

理论创新

在这里插入图片描述

应用创新

在这里插入图片描述

硬件加速

在这里插入图片描述

参考资料

「隐私计算基础理论」同态加密技术及其应用 - 阿里 洪澄

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

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

相关文章

【maven】安装、使用和常用命令

安装 windows 下载Maven二进制文件 前往Apache Maven官方网站 (https://maven.apache.org) &#xff0c;找到最新的稳定版本&#xff0c;然后下载对应的二进制压缩包&#xff08;如apache-maven-3.8.2-bin.zip&#xff09;。解压缩文件 将下载的压缩包解压到你选择的目录&…

QCC51XX---chain修改

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 如何去修改音频chain链路,就是那种想多加几条输入源或输出,又或者把当前的输入输出换到别的地方的那种应用。例如一个自带mic的dongle,或者模拟输入的LE dongle。 如果要改某个状态下的音频链路,那就需要先找出默认…

修复常见 Android 问题的 9 款顶级 Android 手机维修软件

许多人发现Android手机或平板电脑上的Android操作系统一开始运行得很好&#xff0c;但随着时间的推移&#xff0c;可能会出现各种Android系统问题。您可能会遇到一些问题&#xff0c;例如系统速度变慢、启动无响应、挂起错误、界面冻结、短信停滞、应用程序崩溃等。那么&#x…

Linux学习之内存查看命令free和top

我用来演示的系统使用CentOS Linux release 7.6.1810 (Core)&#xff0c;内核版本是3.10.0-957.el7.x86_64。 Linux在进程申请内存的时候&#xff0c;一般都是尽可能给进程内存&#xff0c;因为进程在申请内存的时候有损耗。 free free命令可以看以k为单位的内存。 free -…

使用less命令搜索文件中的关键字

目录 介绍常用搜索技巧实例 介绍 less 与 more 类似&#xff0c;less 可以随意浏览文件&#xff0c;支持翻页和搜索&#xff0c;支持向上翻页和向下翻页。 语法 less [参数] 文件 参数说明&#xff1a; -b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后&#xff…

STM32 USART

USART.C 文件中只是针对串口1&#xff0c;使用其他串口需要稍作修改 IC、SPI主要用于一块开发板上两个芯片之间的通信&#xff0c;例如&#xff1a;主控和传感器之间的通信 串口适用于两块开发板之间的通信&#xff0c;或者说开发板和上位机之间的通信&#xff0c;有线通信 以…

MAC OS X 这个“安装 macOS Xxx Xxx”应用程序副本已损坏,不能用来安装 macOS,超级终端修改日期date 已解决

原因&#xff1a;旧版 macOS 证书已经过期 解决方法&#xff1a;断开互联网&#xff0c;修改系统时间 date 102013142018.20 说明&#xff1a;10是月&#xff0c;20是日&#xff0c;13是时&#xff0c;14是分&#xff0c;2018是年&#xff0c;20是秒 输入上面的代码按回车后…

【ARM】-异常与中断

文章目录 中断中断请求、中断源中断服务程序保存现场、恢复现场中断仲裁、中断优先级中断嵌套 异常广义上的异常同步异常异步异常精确异步异常&#xff08;Precise Asynchronous Exception&#xff09;非精确异步异常&#xff08;Imprecise Asynchronous Exception&#xff09;…

发展零碳数据中心,超聚变推动液冷规模商用

算力的发展犹如一体两面。 一方面&#xff0c;在数字经济、产业数字化和数字化转型中&#xff0c;算力发挥着关键的引擎作用&#xff1b;另一方面&#xff0c;持续增长的多元异构算力需求、不断提升的算力密度以及逐渐成体系的算力网络&#xff0c;也带来了不可低估的长期能耗…

Linux基础笔记

已经有很长很长一段时间没有更新帖子了&#xff0c;一眨眼2023 已经过半&#xff0c;这些日子里&#xff0c;有太多太多事情要做了&#xff0c;今年只更新了几篇&#xff0c;这几天刚好有空&#xff0c;浅浅更新一篇叭&#xff01;~~~ 首先&#xff0c;Linux是一种开源的操作系…

测试开发工程必备技能之一:Mock的使用

目录 1. 背景 2. Mock是什么 3. Mock能做什么 4. Mock实现方式 5. Mock市面上常见的解决方案 6. Python下unittest.mock使用 总结&#xff1a; 1. 背景 在实际产品开发过程中&#xff0c;某个服务或前端依赖一个服务接口&#xff0c;该接口可能依赖多个底层服务或模块&…

K8S | 容器和Pod组件

对比软件安装和运行&#xff1b; 一、场景 作为研发人员&#xff0c;通常自己电脑的系统环境都是非常复杂&#xff0c;在个人的习惯上&#xff0c;是按照下图的模块管理电脑的系统环境&#xff1b; 对于「基础设施」、「主机操作系统」、「系统软件」来说&#xff0c;通常只做…

MYSQL根据标签查询数据

场景条件&#xff1a; 1.根据用户id查询到该id绑定的标签&#xff08;可能是多个标签也可能是单个标签&#xff09; 2.根据标签的id查询到绑定标签id的信息表 SELECT labelID FROM LRrelation WHERE relationID 1 SELECT * FROM notification SELECT * FROM notification…

解决GitHub下载速度太慢问题的方法汇总(持续更新,建议收藏)

文章目录 前言一、使用 git clone --depth1 来下载二、修改host文件解决三、谷歌浏览器插件加速四、油猴插件和脚本五、gitclone.com六、Github 加速下载链接七、Github 镜像访问八、使用码云下载参考资料&#xff0c;感谢以下文章 前言 Github上下载仓库或者克隆仓库&#xf…

运输层:TCP流量控制

1.运输层&#xff1a;TCP流量控制 笔记来源&#xff1a; 湖科大教书匠&#xff1a;TCP流量控制 流量控制(flow control)就是让发送方的发送速率不要太快&#xff0c;要让接收方来得及接收。 实现方法&#xff1a;滑动窗口机制 移动发送窗口&#xff0c;因接收窗口大小为300&am…

C++思维,作业7.3

#include <iostream> #include <cstring> using namespace std; int monster_blood10000; //英雄 class Hero { protected:string name;int hp;int attck; public:Hero(){//cout << "Hero的无参构造" << endl;}Hero(string name,int hp,int …

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第七章

这一章内容有点丰富&#xff0c;多用了一些时间&#xff0c;实例就有四五个。 这章内容是真多啊&#xff01;&#xff08;学完之后又回到开头感叹&#xff09; 大脑分级处理机制&#xff1a; 将图像从基础像素到局部信息再到整体信息 即将图片由低级特征到高级特征进行逐级计…

代码评审的18个军规,收藏好!

前言 大家好&#xff01; 我们开发完需求&#xff0c;提测前&#xff0c;一般都需要代码评审。小伙伴们&#xff0c;你们知道代码评审&#xff0c;一般都有哪些军规嘛&#xff1f;今天田螺哥给你带来代码评审的18个军规。 公众号&#xff1a;捡田螺的小男孩 &#xff08;有田…

多肽试剂:151308-48-4,分子式C117H149N27O28,分子量2381.6,具有一定的稳定性

【产品描述】 多肽试剂&#xff08;CAS&#xff1a;151308-48-4&#xff09;一般多肽可以作为螯合剂进行科研实验&#xff0c;一般多肽试剂与其他肽类物质相同&#xff0c;多肽能完全溶解于水&#xff0c;具有一定的稳定性&#xff0c;酸&#xff0c;热组分不改变&#xff0c;…

引用,函数重构,类

1.类和结构体的区别 结构体是值类型&#xff0c;类是引用类型 结构体存在栈中&#xff0c;类存在堆中 结构体成员不能使用protected访问修饰符&#xff0c;而类可以 结构体成员变量申明不能指定初始值&#xff0c;而类可以 结构体不能申明无参的构造函数&#xff0c;而类可…