全同态加密在大模型应用中应用

密码学简介


上文的图例基本展示了常见加密体系。加密体系,如果用比较正式的描述方法,无疑是做了三件事:

  1. 首先,通过一个生成算法 𝐾𝑒𝑦𝐺𝑒𝑛(1𝜆) 来随机生成一对用于加密和解密的密钥 (𝐸𝑛𝑐𝐾𝑒𝑦,𝐷𝑒𝑐𝐾𝑒𝑦) 。
  2. 加密方通过加密密钥 𝐸𝑛𝑐𝐾𝑒𝑦 和加密算法 𝐸𝑛𝑐𝑟𝑦𝑝𝑡𝑖𝑜𝑛 来加密原文 𝑃𝑙𝑎𝑖𝑛𝑡𝑒𝑥𝑡 ,最后得到密文 𝐶𝑖𝑝ℎ𝑒𝑟𝑡𝑒𝑥𝑡 。
  3. 随后,在解密的时候,解密方可以通过解密密钥 𝐷𝑒𝑐𝐾𝑒𝑦 和解密算法 𝐷𝑒𝑐𝑟𝑦𝑝𝑡𝑖𝑜𝑛 来解密密文,最后还原回来原来的原文。

在密码学研究中,每当我们看到一个新的系统的定义之后,接下来往往都要陈述这个系统所应具有的属性(Properties)
首先,我们第一个要实现的属性是正确性(Correctness)。正确性代表说,如果我拥有一个正确的密钥,那么我就可以通过解密算法 𝐷𝑒𝑐𝑟𝑦𝑝𝑡𝑖𝑜𝑛 来把密文还原成原文。我们往往都使用概率的方法来表示解密的成功率:
∀𝑝𝑡∈𝑃𝑇,(𝑘𝑒𝑛𝑐,𝑘𝑑𝑒𝑐)←𝐾𝑒𝑛𝐺𝑒𝑛(1𝜆): 𝑃𝑟[𝐷𝑒𝑐𝑟𝑦𝑝𝑡𝑖𝑜𝑛(𝑘𝑑𝑒𝑐,𝐸𝑛𝑐𝑟𝑦𝑝𝑡𝑖𝑜𝑛(𝑘𝑒𝑛𝑐,𝑝𝑡))=𝑝𝑡]=1
上面的等式代表了,如果我们拥有正确的密钥,那么解密算法可以还原加密算法生成的密文的几率是100%
我们要实现的第二个属性是语义安全(Semantic Security)。
具体对于语义安全的定义,我们在这里不多做解释了。但是我们可以理解为,如果我们拥有任意两个不同的原文所对应的密文,那么我们是无法区分到底哪个密文是对应了哪个原文的:
∀𝑚0,𝑚1:{𝐸𝑛𝑐(𝑘𝑒𝑛𝑐,𝑚0)}≈𝑐{𝐸𝑛𝑐(𝑘𝑑𝑒𝑐,𝑚1)}
语义安全的主要意义在于旁观者无法区分两条加密的消息。那么如果有入侵者窃听网络,看到了我发出的加密信息,只要我使用的加密体系是语义安全的,那么我就可以确信入侵者无法从密文中得到关于加密内容的任何信息。
满足了上述两条属性之后,一个加密体系就变得健全啦。

什么是全同态

加密算法加法同态

假如我们拥有两条消息 𝑚0,𝑚1 的加密,分别为 𝑐𝑡0,𝑐𝑡1 ,展开来就是:
𝑐𝑡0=(𝑣0=𝑔𝑦0,𝑒0=𝑝𝑘𝑦0⋅𝑔𝑚0)
𝑐𝑡1=(𝑣1=𝑔𝑦1,𝑒1=𝑝𝑘𝑦1⋅𝑔𝑚1)
我们可以注意到,如果我们把两条密文的两个部分各自相乘的话,我们就可以得到一个新的密文 𝑐𝑡^ :
𝑐𝑡=𝑐𝑡0⋅𝑐𝑡1=(𝑣=𝑔𝑦0+𝑦1,𝑒^=𝑝𝑘𝑦0+𝑦1⋅𝑔𝑚0+𝑚1)
我们得到的结果恰恰就是原文 𝑚0+𝑚1 加在一起之后所对应的加密密文!这样的话,如果我们得到了两条加密算法的密文,我们就可以通过这样的方法得到密文的任意线性组合了。

加密算法乘法同态

同理我们也可以应用于乘法同态加密的算法上—— 𝐹 就只能把所有的私密输入相乘起来,但是没有办法做任何线性组合(加法)。乘法同态的例子其实也非常常见,我们大家都熟悉的RSA加密就是一个乘法同态的系统。
RSA加密的实现方法大致如下:

  1. 首先找到一个很大的数字 𝑁=𝑝⋅𝑞 ,并且 𝑝,𝑞 为质数。然后找到一组数字 𝑒,𝑑 使得可以满足 𝑒⋅𝑑=1 mod (𝑝−1)(𝑞−1) 。我们把 (𝑁,𝑒) 作为公钥, (𝑁,𝑑) 作为私钥。
  2. 如果要加密一个消息 𝑚 ,我们只需要输出密文 𝑐𝑡←𝑚𝑒 mod 𝑁 。
  3. 如果需要解密一个消息 𝑐𝑡 ,我们只需要还原出原文 𝑚←𝑐𝑡𝑑 mod 𝑁 。

这个加密算法的正确性就在于 (𝑚𝑒)𝑑=𝑚 mod 𝑁 。因为RSA加密和解密的过程也就只涉及到了幂的计算,我们又可以观察到同态的性质了。假如说我们有两条加密的消息 𝑐𝑡0,𝑐𝑡1 对应 𝑚0,𝑚1 。那么我们可以把他们相乘起来得到 𝑐^ ,并且可以观察到:
𝑐^=𝑐𝑡0⋅𝑐𝑡1=𝑚0𝑒⋅𝑚1𝑒=(𝑚0⋅𝑚1)𝑒
我们就得到了这两条消息相乘之后所对应的密文!这就是乘法同态性质了,我们可以接着这条密文继续往上叠加新的密文,这样一来我们就可以得到密文之间任意的相乘

部分同态加密(Partially Homomorphic Encryption)

同态加密最初级的阶段被称为部分同态加密,定义就是密文只有一种同态特性。这一阶段就包括了我们上文所描述的加法同态乘法同态两种模式。

近似同态加密(Somewhat Homomorphic Encryption)

部分同态加密的下一阶段是近似同态加密。如果我们有近似同态加密算法的话,那么我们就可以在密文上同时计算加法与乘法了。但是需要注意的是,正因为这一阶段是近似同态(Somewhat Homomorphic)的,所以可以做的加法和乘法次数非常有限,可以计算的函数 𝐹 也在一个有限的范围内
在某些特殊的循环群中,我们还可以找到一些薄弱的乘法同态性质。
配对(Pairing)是基于某些特有的椭圆曲线循环群可以进行的一种特殊运算,我们用 𝑒(⋅,⋅) 来表示。具体Pairing做的事情,就是把两个循环群中的值映射到第三个循环群中:
𝑒(𝑔𝑥∈𝐺,𝑔𝑦∈𝐺)→𝑔𝑇𝑥𝑦∈𝐺𝑇
这样一来,我们就变相的得到了前两个值的幂之间的乘积组合!Pairing这一特殊属性并不会出现在所有的循环群当中。所以如果我们把两个可以做Pairing的群中的值通过Pairing相乘起来,映射到了一个新的群 𝐺𝑇 当中之后,那么新的群并不一定能找到对应的Pairing属性!
这也就是说,通过拥有Pairing属性的循环群,我们只能做非常有限的乘法计算。假如说我们当前的群 𝐺 支持Pairing,但是新的映射群 𝐺𝑇 并不支持任何Pairing,那就代表了如果我们要基于当前的体系进行同态加密运算,可以运算的函数F虽然可以包涵任意的线性组合,但是只能包涵最多一层乘法在里面
这一局限性证明了这个系统是近似同态的,因为我们不能计算任意逻辑和深度的函数F。

有限级数全同态加密(Fully Leveled Homomorphic Encryption)

我们已经可以对密文进行任意的加法乘法组合了,没有任何对于次数的局限性。之所以被称之为有限级数全同态的原因是,这个阶段的算法会引入一个新的复杂度上限 𝐿 的概念,这一复杂度上限约束了函数 𝐹 的复杂度。如果我们可以把 𝐹 用二进制电路 𝐶 来表示的话,那么 𝐶 的深度和大小一定要在 𝐿 的范围之内,即:
∣𝐶∣≤𝐿
也就是说,如果L相对来说比较大的话,那么我们就可以进行各种各样较为简单(低复杂度)的同态运算了。有限级数同态加密的算法也是下一阶段全同态加密的奠基石,当我们实现了L复杂度以内的全同态之后,实现完全同态也不远了。
我们可以了解一下这个复杂度的上限 𝐿 是怎么来的。首先,我们可以想象一下,假如有一个全同态加密的算法,可以对密文进行任何的加法与乘法的运算。但是这个算法在加密的时候会在密文里面加入一定的随机噪音
当噪音早可控范围内的时候,那么解密算法就可以很容易从密文还原回原文。但是当我们叠加密文在一起进行同态计算的时候,每一个密文里面自带的噪音会被叠加扩大。如果我们只是对密文进行比较简单的逻辑,那么叠加起来的噪音还在一个可以接受的范围。但是如果我们过于复杂地堆叠密文在一起,那么一旦噪音的范围超过了临界值,那么就会彻底的覆盖掉原来的原文,从而导致解密会失败
在这个场景中,这个同态加密系统可以接受的噪音上限转换为叠加的逻辑的复杂度的话就是 𝐿 了。这就是为什么我们只可以进行复杂度小于L的计算,因为一旦复杂度超过L,我们就再也无法还原回原来的原文了。

全同态

什么叫做「全」(Fully)?
● 在密码学中,加密方案可以支持多种操作,比如加法、乘法等。当我们说一个加密方案是「全同态」的,我们意味着这个加密方案支持在加密数据上进行任意数目的基本运算(例如加法和乘法)而不需要解密。这与部分同态加密(如只支持加法或只支持乘法的方案)形成对比。
什么叫做「同态」(Homomorphic)?
● “同态”来自于希腊文,意思是「相同的形状或结构」。在密码学中,当我们说加密方案是同态的,意味着有些运算在明文上的效果与在密文上的效果是一样的。换句话说,如果你在加密的数据上进行某种运算,然后解密结果,这和你先解密数据然后在解密后的数据上进行相同的运算是等价的。
例如,考虑一个支持同态加法的加密方案。假设你有两个数字:3 和 4。你可以先加密这两个数字,然后使用这个同态加密方案将两个加密的数字相加。最后,你解密相加后的结果。得到的解密结果将是 7,这与你直接在明文 3 和 4 上相加得到的结果是一样的。
image.png

全同态在大模型应用

全同模态应用场景

image.png

全同态加密框架

image.png
这张图描述了一个基于全同态加密技术的用户与服务器交互的过程,具体步骤如下:

  1. 用户生成引导密钥(Generate Bootstrapping Key):用户首先生成一个引导密钥,这个密钥将在后续的交互中使用。
  2. 服务器接收引导密钥(Send Bootstrapping Key):用户将生成的引导密钥发送给服务器。
  3. 用户加密提示(Encrypt Prompt):用户使用引导密钥对输入的提示进行加密。
  4. 服务器接收加密提示(Send Encrypted Prompt):用户将加密后的提示发送给服务器。
  5. 服务器推断提示(Inference on Prompt):服务器接收到加密的提示后,使用相应的算法进行推断或计算。由于提示是加密的,服务器无法直接读取提示的内容。
  6. 用户接收加密输出(Receive Encrypted Output):服务器将推断或计算后的加密输出发送给用户。
  7. 用户解密输出(Decrypt Output):用户使用引导密钥对服务器返回的加密输出进行解密,从而得到最终的结果。

这个过程确保了用户输入的提示在传输和处理过程中的安全性,因为所有的数据都是以加密形式进行传输和处理的。服务器只能对加密数据进行运算,而无法获取原始的明文数据。

大模型全同态加密实现

在 TFHE 中,模型权重和激活均用整数表示。非线性函数必须通过可编程自举 (Programmable Bootstrapping,PBS) 操作来实现。PBS 对加密数据实施查表 (table lookup,TLU) 操作,同时刷新密文以支持 任意计算。不好的一面是,此时 PBS 的计算时间在线性运算中占主导地位。利用这两种类型的运算,你可以在 FHE 中表达任何子模型的计算,甚至完整的 LLM 计算。
Zama 的解决方案是使用全同态加密 (FHE),在加密数据上执行函数。这种做法可以实现两难自解,既可以保护模型所有者知识产权,同时又能维护用户的数据隐私。在 FHE 中实现的 LLM 模型保持了原始模型的预测质量。使用 Concrete-Python 对推理部分进行改造,这样就可以将 Python 函数转换为其 FHE 等效函数。
image.png
概述了一个简化的底层实现。在这个方案中,模型权重会被分成两个部分,分别存储在客户端和服务端。首先,客户端在本地开始推理,直至遇到已第一个不在本地的层。用户将中间结果加密并发送给服务端。服务端对其执行相应的注意力机制计算,然后将结果返回给客户端,客户端对结果进行解密并继续在本地推理。

小结

密码学简介
密码学是研究如何保护信息的科学,它涉及加密和解密算法的设计和分析。在密码学中,一个常见的加密系统包括以下三个主要部分:

  1. 密钥生成算法:用于生成一对用于加密和解密的密钥(公钥和私钥)。
  2. 加密算法:使用公钥对明文进行加密,生成密文。
  3. 解密算法:使用私钥对密文进行解密,还原为明文。

一个健全的加密系统应该满足两个基本属性:

  1. 正确性:如果使用正确的密钥进行解密,应该能够准确地还原出原始的明文。
  2. 语义安全:即使攻击者获得了密文,也无法获得关于明文的任何有用信息。

同态加密
同态加密是一种特殊的加密技术,它允许在加密数据上进行某些操作,而不需要先解密数据。根据支持的操作类型,同态加密可以分为以下几种类型:

  1. 部分同态加密:只支持一种类型的操作,如加法或乘法。
  2. 近似同态加密:支持加法和乘法操作,但操作的次数有限。
  3. 有限级数全同态加密:支持任意次数的加法和乘法操作,但操作的复杂度受到限制。
  4. 全同态加密:支持任意次数的加法和乘法操作,没有复杂度限制。

全同态加密是最强的同态加密类型,它允许在加密数据上进行任意的计算,而不需要先解密数据。这使得全同态加密在保护数据隐私的同时,仍然能够进行复杂的计算。
全同态加密在大模型中的应用
全同态加密在大模型中的应用主要体现在保护用户的隐私和模型的知识产权。通过使用全同态加密技术,用户可以在不暴露原始数据的情况下,使用大模型进行计算和推理。同时,模型的所有者也可以保护其模型的知识产权,因为在加密数据上进行的计算不会暴露模型的内部结构和参数。
具体来说,全同态加密可以应用于大模型的训练和推理过程中。在训练过程中,可以使用全同态加密技术对训练数据进行加密,然后在加密数据上进行模型的训练。这样可以保护训练数据的隐私,同时仍然能够训练出有效的模型。在推理过程中,用户可以通过全同态加密技术对输入数据进行加密,然后将加密数据发送给模型进行推理。模型在加密数据上进行计算,并将结果返回给用户,用户解密后即可得到最终的结果。
总之,全同态加密技术为大模型的应用提供了一种强大的隐私保护机制,使得用户可以在不暴露原始数据的情况下,安全地使用大模型进行各种计算和推理任务。
参考:
https://finance.sina.cn/blockchain/2023-10-18/detail-imzrpiwi7756862.d.html
https://zhuanlan.zhihu.com/p/149812445

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小白学习手册:轻松理解MQ消息队列

目录 # 开篇 RabbitMQ介绍 通讯概念 1. 初始MQ及类型 2. MQ的架构 2.1 RabbitMQ的结构和概念 2.2 RabbitMQ消息流示意图 3. MQ下载使用 3.1 Docker下载MQ参考 3.2 进入RabbitMQ # 开篇 MessagesQueue 是一个抽象概念,用于描述消息队列系统的一般特性和功能…

计算机视觉 | 基于 PointNet 网络的飞机零件 3D 点云分割

目录 一、简要介绍二、环境设置2.1 实验配置2.2 必要库安装 三、数据集解析3.1 数据集加载3.2 数据文件夹结构3.3 点云数据可视化3.4 数据获取与预处理3.5 数据集定义 四、模型组网4.1 PointNet 介绍4.2 Paddle模型组网4.3 模型概要 五、模型训练六、模型预测七、总结 Hi&#…

亚马逊广告如何设置关键词竞价获取最优广告投入产出比 (ACOS)

在投放亚马逊商品广告的时候,从我们通常的理解来说,关键词竞价CPC设置的越高,广告投入产出比 (ACOS)越高,所以我们通常希望CPC越低越好,但是从我们实际投放广告来看,CPC与ACOS并不是线性相关。有时候CPC设定…

外卖点餐二合一小程序源码系统 单店多店都可使用 自由下单 带完整的安装代码包以及搭建部署教程

系统概述 外卖点餐二合一小程序源码系统是一款集外卖点餐和店铺管理功能于一体的综合性系统。它不仅适用于单店模式,也能满足多店连锁经营的需求。无论是小型餐厅还是大型餐饮企业,都可以通过该系统轻松实现线上业务的拓展和管理。 该系统基于先进的技…

69. x 的平方根(简单)

69. x 的平方根 1. 题目描述2.详细题解3.代码实现3.1 Python方法一:逐个遍历方法二:二分查找 3.2 Java 1. 题目描述 题目中转:69. x 的平方根 2.详细题解 不能使用系统内置的函数,寻找某个数(假定为x)的…

哈希表(C++实现)

文章目录 写在前面1. 哈希概念2. 哈希冲突3. 哈希函数4.哈希冲突解决4.1 闭散列4.1.1 线性探测4.1.2 采用线性探测的方式解决哈希冲突实现哈希表4.1.3 二次探测 4.2 开散列4.2.2 采用链地址法的方式解决哈希冲突实现哈希表 写在前面 在我们之前实现的所有数据结构中(比如&…

【详解】RV1106移植opencv-mobile库

文章目录 前言一、烧入镜像二、编译项目1.创建项目文件 三、移植四、运行文件五、总结 前言 硬件:瑞芯微Rv1106【Luckfox Pro\Max Pico、网线一根、USB线、串口助手、摄像头 软件:ubuntu 20.4 编译器:arm-rockchip830-linux-uclibcgnueabihf…

昇思25天学习打卡营第6天|网络构建

网络构建 概念模型模型参数 概念 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell&…

入选顶会ICML,清华AIR等联合发布蛋白质语言模型ESM-AA,超越传统SOTA

作为细胞内无数生化反应的驱动力,蛋白质在细胞微观世界中扮演着建筑师和工程师的角色,不仅催化着生命活动,更是构筑、维系生物体形态与功能的基础构件。正是蛋白质之间的互动、协同作用,支撑起了生命的宏伟蓝图。 然而&#xff0…

RK3568驱动指南|第十五篇 I2C-第166章 初步认识I2C

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术,虽然它常用于物联网中作为设备之间的通信手段,但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…

在线疫苗预约小程序的设计

管理员账户功能包括:系统首页,个人中心,工作人员管理,管理员管理,用户管理,疫苗管理,论坛管理,公告管理 微信端账号功能包括:系统首页,公告,疫苗…

机器人控制系列教程之并联机器人简介

背景 根据其构件的连接是否构成闭环形式,机器人可分为串联机器人和并联机器人两种。对于串联机器人,其所有的构件以串联的结构形式连接起来,在空间组成一种开环结构,因而具有工作空间大,灵活性好等优点,但…

MySQL之高可用性和应用层优化(一)

高可用性 故障转移和故障恢复 在应用中处理故障转移 有时候让应用来处理故障转移会更加简单或者更加灵活。例如,如果应用遇到一个错误,这个错误外部观察者正常情况下是无法察觉的,例如关于数据库损坏的错误日志信息,那么应用可…

C++算法学习心得八.动态规划算法(6)

1.最长递增子序列(300题) 题目描述: 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如&…

Kaggle竞赛——房价预测

目录 1. 特征分析1.1 数据集导入1.2 统计缺失值1.3 可视化缺失值1.4 缺失值相关性分析1.5 训练集和测试集缺失数据对比1.6 统计特征的数据类型1.7 数值型特征分布直方图1.8 数值型特征与房价的线性关系1.9 非数值型特征的分布直方图1.10 非数值型特征箱线图1.11 数值型特征填充…

代码随想录算法训练营第55天(py)| 单调栈 | 42. 接雨水*、84.柱状图中最大的矩形

42. 接雨水* 力扣链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 思路1 暴力 按列来计算。每一列雨水的高度,取决于,该列 左侧最高的柱子和右侧最高的柱子中,…

WMS、ERP、MES之间的关系

WMS(仓库管理系统)、ERP(企业资源计划)、MES(制造执行系统)是企业管理和运作中常见的三种系统,它们在不同的层面上发挥作用,但之间又有紧密的联系。三者之间的区别如下: …

【哈哈大一上学的全忘了,重开!!】STM32从零入门物联网开发

本笔记资料来源 :STM32物联网入门30步=单片机物联网入门教程 WIFI连接阿里云物联网CubeMXHAL库蓝牙ESP8266杜洋主讲_哔哩哔哩_bilibili IOT:Internet of things 学习目标: 1.掌握洋桃IoT开发板的各功能以及驱动与基本应用 2.掌…

【C++11:右值引用,列表初始化】

统一列表初始化: 构造函数的函数名与函数体之间增加一个列表,用于对成员初始化 在实例化对象时,支持单/多参数的隐式转化,同时也可以省略符号,让代码更简洁 右值的引用 左值: 左值与右值的重要区别就是能…