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

news2024/10/3 16:05:56

密码学简介


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

  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

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

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

相关文章

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣(LeetCode) 公牛还是挺好数的,奶牛。。。妈呀,一朝打回解放前 抓本质抓本质,有多少位非公牛数可以通过重新排列转换公牛数字,意思就是,当这个数不是公牛数字时&#x…

ctfshow web入门 sqli-libs web552--web560

web552 宽字节注入 嗯原理我就不讲了,还是有点复杂后面有时间讲讲 总而言之就是用汉字把\的转义作用抵消了然后正常注入即可 ?id-1包 union select 1,2,3--?id-1包union select 1,(select group_concat(table_name) from information_schema.tables where tab…

ChatGPT-4o医学应用、论文撰写、数据分析与可视化、机器学习建模、病例自动化处理、病情分析与诊断支持

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5,将人工智能的发展推向了一个新的高度。2023年11月7日,OpenAI首届开发者大会被称为“科技界的春晚”,吸引了全球广大…

如何使用pytest组织自动化测试用例结构?

如何组织自动化测试工程的目录结构?这篇文章介绍了我是如何组织整个自动化工程目录结构的,本篇介绍下我是如何利用pytest框架组织一个测试用例文件的。 用例文件组织原则 整个testsuite目录下整体上按照特性模块划分目录,每个目录下可以只包…

Python容器 之 列表--下标和切片

列表的切片 得到是 新的列表字符串的切片 得到是 新的字符串 如果下标 不存在会报错 list1 [1, 3.14, "hello", False] print(list1)# 获取 列表中 第一个数据 print(list1[0]) # 1# 获取列表中的最后一个数据 print(list1[-1]) # [False]# 获取中间两个数 即 3.1…

币界网快讯,比特币7月份看牛预测

今日数字货币市场全面开启反弹,比特币从 60,000 美元大关飙升至 63,700 美元,预示着 7 月牛市的到来。在此之前,上周曾短暂跌破 60,000 美元,但受到 BTC 现货 ETF 流入的 7,300 万美元的推动——这是两周以来最大的流入。 BTC价格…

Linux下SUID提权学习 - 从原理到使用

目录 1. 文件权限介绍1.1 suid权限1.2 sgid权限1.3 sticky权限 2. SUID权限3. 设置SUID权限4. SUID提权原理5. SUID提权步骤6. 常用指令的提权方法6.1 nmap6.2 find6.3 vim6.4 bash6.5 less6.6 more6.7 其他命令的提权方法 1. 文件权限介绍 linux的文件有普通权限和特殊权限&a…

Redis基础教程(六):redis 哈希(Hash)

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

【火猫】cs2 donk登顶2024年上半年ADR榜

1、HLTV发布数据统计,donk以55张地图中96.8的ADR成功登顶上半年ADR榜单第一。紧随其后的是法国巨星ZywOo,以68图89.2的ADR排名第二。G2当家狙击手m0NESY以73图85的ADR排名第三。 2、白俄罗斯爆料人harumi透露:“Falcons战队向BOROS支付了6个月…

每日复盘-20240701

今日关注: 20240701 六日涨幅最大: ------1--------301182--------- 凯旺科技 五日涨幅最大: ------1--------300977--------- 深圳瑞捷 四日涨幅最大: ------1--------300977--------- 深圳瑞捷 三日涨幅最大: ------1--------300461--------- 田中精机 二日涨幅最…

科普:电脑硬件挑选

目录 一cpu 二主板 三内存 四硬盘 五显卡,散热,电源,机箱 六个人配置 一cpu 品牌:intel AMD 型号:I3,I5,I7 R7等 代数:换新不换旧 cpu后缀:k(可超频)f&#xf…

PHP电商系统开发指南最佳实践

电子商务系统开发的最佳实践包括:数据库设计:选择适合关系型数据库,优化数据结构,考虑表分区;安全:加密数据,防止 sql 注入,处理会话管理;用户界面:遵循 ux 原…

WhaleStudio 2.6正式发布,WhaleTunnel同步性能与连接器数量再创新高!

在这个数据驱动的大模型时代,数据集成的作用和意义愈发重要。数据不仅仅是信息的载体,更是推动企业决策和创新的关键因素。作为全球最流行的批流一体数据集成工具,WhaleTunnel随着WhaleStudio 2.6版本正式发布,带来了多项功能增强…

App测试技术(纯理论)

之前我们也学习过一些普通用例的设计, 如功能, 性能, 安全性, 兼容性, 易用性, 界面的测试用例设计, 之前我们讲的基本都是对于Web应用而言的, 这里我们来讲一下移动端的App测试用例设计. 功能方面 安装&卸载测试 这是只属于App的一类测试, 再平常我们使用移动设备(手机…

扩展学习|风险评估和风险管理:回顾其基础上的最新进展

文献来源:[1]Aven, T. (2016). Risk assessment and risk management: Review of recent advances on their foundation. European journal of operational research, 253(1), 1-13. 文章简介:大约30-40年前,风险评估和管理被确立为一个科学领…

Linux环境安装配置nginx服务流程

Linux环境的Centos、麒麟、统信操作系统安装配置nginx服务流程操作: 1、官网下载 下载地址 或者通过命令下载 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上传到指定的服务器并解压 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、编译并安装到…

CCT技术

概念介绍 多个功能核心的集成可以通过片上系统(SOC)或封装中系统(SIP)设备的开发来实现。SOC器件将核心集成到单个集成电路中。SIP集成是将多个集成电路组合到单个封装中。核心数量 的增加可能导致必要的测试人员资源和/或测试时间的增加。这直接影响了与测试这些设备相关的…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡,对应九个按键,灯泡有红黄蓝,每间隔一会儿就会亮一个灯,代表地鼠冒出来,按一下按键让灯泡灭掉代表打地鼠,红的三分,黄的两分&#xf…

Java案例抢红包

目录 一:题目要求: 二:思路分析:(遇见问题先想出完整的思路逻辑再去动手事半功倍) 三:具体代码: 一:题目要求: 二:思路分析:&#x…

[无广告!纯干货]免费用CodeFlying自动化生成一个专属的AI机器人

前言: 真心话,花3分钟看文章,再花5分钟体验,你会回来给我点赞的。 随着AIGC(人工智能生成内容)行业的迅猛发展,人工智能正在以前所未有的速度和方式改变我们的生活。 它不仅在娱乐、教育、医疗…