同态加密简介

同态加密概述

基本概念
同态加密(Homomorphic Encryption,HE)指将原始数据经过同态加密后,对密文进行特定的运算,得到的密文计算结果在进行同态解密后的得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。

在这里插入图片描述

历史与发展

  • 1978年,Rivest、Adleman(RSA中的"R"和"A")和Dertouzos提出了全同态加密的构想,当时称为“隐私同态”,并于 2009 年由 Craig Gentry 首次构建。目前,同态加密算法主要分为半同态加密,稍微同态加密,全同态加密两大类。
  • 半同态加密或部分同态加密(Somewhat Homomorphic Encryption,SWHE 或 Partially Homomorphic Encryption,PHE):支持对密文进行部分形式的计算,如仅支持加法、仅支持乘法、支持有限次加法和乘法。半同态加密主要包括以RSA算法和ElGamal算法为代表的乘法同态加密、以Paillier算法为代表的加法同态加密
  • 稍微同态加密(SHE):支持有限操作(例如加法、乘法)直到某个复杂的的方案,但是这些操作只能执行一定次数。主要包括以BGN算法为代表的有限次全同态加密。
  • 全同态加密(Fully Homomorphic Encryption,fhe):支持对密文进行任意形式的计算。全同态加密算法起源于2009年Gentry提出的方案,后续的方案大多都是基于格代数结构构造。全同态加密算法只要包括以Gentry方案为代表的第一代方案,以BGV方案和BFV方案为代表的第二代方案,以GSW方案以及支持浮点数近似计算的CKKS方案为代表的第三代方案。目前,BGV方案、BFV方案、CKKS方案均在同态加密开源库中得以实现。
  • 在这里插入图片描述

标准化进展

  • 半同态加密标准化
    2019年5月,国际标准化组织ISO发布了同态加密标准(ISO/IEC 18033-6:2019)。该标准仅涉及半同态加密,具体包含两种较为成熟的半同态加密机制:ElGamal乘法同态加密和Paillier加法同态加密,并规定了参与实体的参数和密钥生成、数据加密、密文数据解密、密文数据同态运算等步骤的具体过程。

  • 全同态加密标准化
    2017年7月,来自学术界、工业界和政界的相关领域研究人员组成了全同态加密标准化开放联盟HomomorphicEncryption.org,在微软研究院举办了首届全同态加密标准化研讨会,开始共同推进全同态加密标准草案的编写工作,并发布了全同态加密安全标准、API标准、应用标准三份白皮书。迄今为止,HomomorphicEncryption.org在三年内已举办五届全同态加密标准化会议,参与成员包括微软、三星SDS、英特尔、IBM、谷歌、万事达卡等企业,以及NIST、ITU等机构的代表和各大高校的学者。在标准化进展方面,HomomorphicEncryption.org已分别于2018年3月和11月发布和更新了全同态加密标准草案。

同态加密的具体过程

在这里插入图片描述

1、Alice对数据进行加密,并把加密后的数据发送给Cloud
2、Alice向Cloud提交数据的处理方法,用函数 f 来表示
3、Cloud在函数f下对数据进行处理,并且将处理后的结果发送给Alice
4、Alice对数据进行解密,得到结果

同态加密方案应该拥有的函数

  • KeyGen函数:密钥生成函数,这个函数由Alice运行,用于产生加密数据Data所用的密钥Key,应该还有一些公开常数PP
    (Public Parameter)
  • Encrypt函数:加密函数,这个函数由Alice运行,用key对用户数据Data进行加密,得到密文CT(Ciphertext)
  • Evaluate函数:评估函数,这个函数由Cloud运行,在用户给定的数据处理方法f下,对密文进行操作,使得结果相当于用户用密钥key对Data进行加密
  • Decrypt函数:解密函数,这个函数由Alice运行,用于得到cloud处理的结果f(Data)

对于同态加密,其密码套件具备延展性,也就是说无法保证数据的完整性,这并非是缺陷,反而时有意为之的,能够使用户易于操作加密数据
延展性时加密算法的属性之一,用户可利用延展性将密文转换为改变了原始文本含义的另一有效加密文本,而且,转换数据的用户甚至无需知道或推测原始明文数据是什么

主流同态加密算法

1、半同态加密算法

乘法同态加密算法
满足乘法同态特性的典型加密算法包括1977年提出的RSA公钥加密算法和1985年提出的ElGamal公钥加密算法

加法同态加密算法
Paillier加密算法是1999年由paillier提出的一种基于复合剩余类问题的公钥加密算法,同时也是目前最为常用且最具实用性的加法同态加密算法,在具体的应用场景中实现了应用。

2、稍微(特定)同态加密

有限次全同态加密算法
2005年提出的Boneh-Goh-Nissim方案是一种基于双线性映射的公钥密码方案,支持任意加法同态和一次乘法同态运算。方案中的加法同态基于类似paillier算法的思想,而一次乘法同态基于双线性对映射的运算性质。由于双线性对映射算法会使得密文所在的群发生变化,因此只能支持一次乘法同态运算,但是对乘法后的密文支持作加法运算

3、全同态加密

第一代全同态加密方案 – Gentry方案
Gentry方案是一种基于电路模型的全同态加密算法,支持对每个比特进行加法和乘法同态运算。Gentry方案的基本思想是构造支持有限次同态运算的同态加密算法并引入“Bootstrapping”方法控制运算过程中的噪音增长。
“Bootstrapping”方法通过将解密过程本身转化为同态运算电路,并生成新的公私钥对对原私钥和含有噪音的原密文进行加密,然后用原私钥的密文对原密文的密文进行解密过程的同态运算,即可得到不含噪音的新密文。但是,由于解密过程本身的运算十分复杂,运算过程中也会产生大量噪音,为了给必要的同态运算需求至少预留足够进行一次乘法运算的噪音增长空间,需要对预先解密电路进行压缩简化,即将解密过程的一些操作尽量提前到加密时完成

第二代全同态加密方案 – BGV/BFV方案
第二代全同态加密方案通常基于LWR/RLWR假设,其安全性基于代数格上的困难问题,典型方案包括BGV方案和BFV方案。

  • BGV方案(Brakerski-Gentry-Vaikuntanathan)是目前主流的全同态加密算法中效率最高的方案。在BGV方案中,密文和密钥均以向量表示,而密文的乘积和对应的密钥乘积则为张量,因此密文乘法运算会造成密文维数的爆炸式增长,导致方案只能进行常数次的乘法运算。BGV方案采用密钥交换技术控制密文向量的维数膨胀,在进行密文计算后通过密钥交换将膨胀的密文维数恢复为原密文的维数。同时,BGV方案可采用模交换技术替代Gentry方案中的“Bootstrapping”过程,用于控制密文同态运算产生的噪声增长,而不需要通过复杂的解密电路实现。因此,在每次进行密文乘法运算后,首先需要通过密钥交换技术降低密文的维数,然后通过模交换技术降低密文的噪声,从而能够继续进行下一次计算。
  • BFV(Brakerski/Fan-Vercauteren)方案是与BGV方案类似的另一种第二代全同态加密方案,同样可基于LWE和RLWE构造。BFV方案不需要通过模交换进行密文噪声控制,但同样需要通过密钥交换解决密文乘法带来的密文维数膨胀问题。

第三代全同态加密方案 – GSW方案
GSW(Gentry-Sahai-Waters)方案是一种基于近似特征向量的全同态加密方案。该方案基于LWE并可推广至RLWE,但其的性能不如BGV方案等其他基于RLWE的方案。GSW方案的密文为矩阵的形式,而矩阵相乘并不会导致矩阵维数的改变,因此GSW方案解决了以往方案中密文向量相乘导致的密文维数膨胀问题,无需进行用于降低密文维数的密钥交换过程。

浮点数全同态加密方案 – CKKS方案
CKKS(Cheon-Kim-Kim-Song)方案是2017年提出的一种新方案,支持针对实数或复数的浮点数加法和乘法同态运算,得到的计算结果为近似值,适用于机器学习模型训练等不需要精确结果的场景。由于浮点数同态运算在特定场景的必要性,HElib和SEAL两个全同态加密开源库均支持了CKKS方案。

全同态加密算法开源库

  • HElib
  • SEAL

同态加密应用场景

同态加密的概念最初提出用于解决云计算等外包计算中的数据机密性保护问题,防止云计算服务提供商获取敏感明文数据。随着区块链、隐私计算等新型领域的发展及其对隐私保护的更高要求,同态加密的应用拓展到了更为丰富的领域。

  • 1、云计算
    在云计算或外包计算中,用户为了节约自身的软硬件成本,可将计算和存储需求外包给云服务提供商,利用云服务提供商强大的算力资源实现数据的托管存储和处理。但是,将明文数据直接交给云服务器具有一定的安全风险,而传统的加密存储方式则无法实现对密文数据的直接计算,因此如何同时实现数据的机密性和可计算性成为了一个难题,同态加密的出现为这一场景的实现提供了可能性。
    在传统的云存储与计算解决方案中,用户需要信任云服务器提供商不会窃取甚至用户数据,而基于同态加密的云计算模型可在根本上解决这一矛盾。首先,用户使用同态加密算法和加密密钥对数据进行加密,并将密文发送给云服务器;云服务器在无法获知明文数据的情况下按照用户给定的程序对密文进行计算,并将密文计算结果返回给用户用户使用同态加密算法和解密密钥对密文计算结果进行解密,所得结果与直接对明文进行相同计算的结果等价。

  • 2、在区块链中应用

  • 3、在联邦学习中的应用

发展现状

目前,全同态加密算法仍处于以学术界研究为主的发展阶段,现有方案均存在计算和存储开销大等无法规避的性能为题,距离高效的工程应用还有着不小的差距,同时面临国际与国内相关标准的缺失。因此,在尝试同态加密落地应用时,可以考虑利用Paillier加法同态加密算法等较为成熟且性能较好的半同态加密算法,解决只存在加法或者数乘同态运算需求的应用场景,或通过将复杂计算需求转化为只存在加法或数乘运算的形式实现全同态的近似替代
加密算法等较为成熟且性能较好的半同态加密算法,解决只存在加法或者数乘同态运算需求的应用场景,或通过将复杂计算需求转化为只存在加法或数乘运算的形式实现全同态的近似替代

原文地址:https://blog.csdn.net/qq_43707926

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


头歌-信息安全技术-用Python实现自己的区块链、支持以太坊的云笔记服务器端开发、编写并测试用于保存云笔记的智能合约、支持以太坊的云笔记小程序开发基础
Python 实现区块链环境python3、postman或者burp、requests、Flask,pipenv
科普风靡互联网关键词 Web3.0 | NTF | 区块链 | 元宇宙……
数据库吸纳区块链防篡改的能力,首先想到的就是从区块链技术的最底层:数据层出发,让数据库提供数据的校验信息记录以及数据的篡改校验的能力,保证数据库在处理敏感信息时能够忠实的记录每一笔交易造成的数据更改,形成一个忠实、完整的数据变更“账本”。通过我们设计的用户历史表的结构,其hash_ins列中的非空元素代表了所有操作导致的数据校验信息的增加,hash_del列中的非空元素则代表了校验数据减少。在扫描完整体的行校信息的过程中,可以通过内置的可交换校验信息聚合算法,不断生成当前已经扫描的数据的整体校验信息。
前提环境:乌班图20.04环境安装过程就不举例了。将go文件安装包解压到目录/opt/local下面,输入解压命令:接下来设置用户的环境变量:输入命令:sudo vim ~/.profile,如图设置环境变量。,载入环境变量到这里面。最后输入命令:go version,查看go是否安装成功然后输入 sudo reboot 重启虚拟机来安装docker注销并重新登录(我的是重启即可 输入:sudo reboot ),然后添加阿里云的Docker Hub。
官方新版本的geth修改了部分命令,使用命令有所改变
快速上手remix,部署合约到测试链。
相较于 Web2,Web3 不但没有中心化作恶的危险,且具有智能合约,以程序化控制契约而确保执行,最重要的是先天透明的链上数据与开源式代码,将产业生态的建立奠基在协作而非相互堆高竞争力护城河,大大增加了协作的功率与潜力。由此推论,现在的 Web3、区块链和加密货币,只是实际世界「部分」的仿制,因只囊括了「契约」身份,却无法包括「联系」身份,因此在现在的链上 DeFi 中,是只能处理「核算性」的买卖,而对「信誉性」的买卖无计可施。黑猩猩的协作奠基在「身份」联系,只需知道你是谁,才可能有信赖联系,从而协作;
随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向对比。并介绍了Paillier算法的一些实际应用。
Web3专栏作者:文心-挖掘解读最真实的Web3世界Web3教程 专题|Web3新手教程-第 8期如果你也喜欢Web3,希望在这做些有趣的、有意义的事情,那么我希望这篇文章可以帮助到你。其实在很早之前,我就计划写一篇《Web3 新手教程》,送给想要进入 Web3 或者刚刚进入 Web3 的小伙伴,但是考虑到两点原因,我还是打算把这件事推迟一些时日。一是在各大媒体都鼓吹 All In W...
【 BlockChain 】零知识证明一、零知识证明起源“零知识”的概念最早在80年代由麻省理工学院的研究人员 Shafi Goldwasser,Silvio Micali 和 Charles Rackoff 所提出。当时这些人正在研究与交互证明系统相关的问题——即一种理论系统,使得甲方(证明者)可以和乙方(验证者)交换信息,并借此说服乙方接受(通过验证)某个数学论述为真 [作者注1]。在Goldwasser等人之前,这个领域的研究工作主要聚焦在加强证明系统的可靠性(Soundness)。也就是说原先
在 Web2 中,我们可以通过 1password、google 密码管理等程序帮助管理密钥。但助记词和私钥的使用大多比较强调离线备份,或者存放在硬件钱包里,或者采用更加安全的多签等技术。这些对于专业用户来说还好,对于 Web3 用户来说就有一些难度了。我们是否可以像 Web2 那样保管密钥?不需要抄写,不需要硬件。即安全,又可以快速的恢复?对于不同的使用需求,可以有不同的密钥管理策略,大额资产可以使用专业级安全方案。
本文为官方文档解析,包含了network测试网络和两个实战示例。
随着物联网技术的发展,物联网被广泛应用于社会生活中,小区安装有车闸、道闸、安防摄像头、门禁等物联网设备,业主在小区的活动会被异构设备捕获,产生的数据被存储于各服务商系统中,业主在小区活动可能会产生车辆通行记录、人员通行记录,并且业主本身会有业主个人信息、业主房产信息等,由于数据的海量性、多样性特点增加了数据传输和处理的难度,存在数据孤岛问题。其中也往往涉及很多业主个人隐私数据,这些数据可能会在用户不知情的情况下被用于其他服务。......
如果你是区块链开发的新手并且不知道从哪里开始,或者你只是想了解如何部署智能合约并与之交互,那么本指南适合你。 我们将介绍使用虚拟钱包 (Metamask)、Solidity、Hardhat 和 Alchemy 在 Goerli 测试网络上创建和部署一个简单的智能合约(如果你还不明白其中的任何含义,请不要担心,我们将 解释一下!)。有很多方法可以向以太坊链发出请求。 为简单起见,我们将在 Alchemy 上使用免费帐户(如果你还没有 Alchemy 帐户,请点击在此处免费注册),这是一个区块链开发平台和 AP
在去中心化的 Web 3.0 应用程序中,您的帐户是区块链(例如以太坊)上的地址。在以太坊上,这个账户是公开的,但它可以保持匿名,你是唯一可以控制它的人。在这篇文章中,我们回顾了 Web3 的定义,探讨了它的演变,并概述了技术和应用。与由大科技主导的 Web 2.0 不同,Web 3.0 寻求回归早期网络的去中心化,同时也利用加密货币的本地数字支付。只有您可以转让或出售它。不仅仅是昂贵的 JPEG,它们可以创建一个新的替代身份,在 Facebook 或 Google 上的政府 ID 和个人资料之外。
什么是智能合约?以太坊在 2013 年的核心创新是允许开发人员编写称为智能合约的小代码块,这些代码可以部署到以太坊网络,独立于其创建者运行。 在以太坊中,智能合约是用 Solidity 编写的,这是一种设计用于在以太坊虚拟机上运行的高级编程语言。智能合约也成为了区块链开发领域主要的研究方向之一。智能合约是定义一组规则或“合约”的程序,当用户在区块链上调用时,它会自动执行编码规则。 特别地,一旦部署了智能合约,它就不能被修改或控制。因此,智能合约是运行金融应用程序的理想选择,它们可以作为独立参与者以有保证
Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。Solidity是一门静态的,支持继承,类库以及复杂的自定义类型等特性的高级语言,Solidity在设计上借鉴了Python,JavaScript等语言,其语法也和JavaScript相似。由于Solidity是迄今为止最成熟的以太坊语言,因此它是社区大力鼓励开发人员使用的语言。
预言机是WEB3.0难题之一,之所以成为一个难题是因为WEB3.0本身需要保证强最终一致性而使其成为了一个相对内部封闭的系统。WEB3.0以外的数据想要与WEB3.0交互就需要用到预言机,各类创新型去中心化解决方案需要一个实时准确的预言机。
很多程序员对Web3很感兴趣,但是又不知道从何入手,每天被网络上面的各种名词搞得晕头转向。本文提供了一条适合程序员的Web3学习路径。帮你你更快更高效地入门Web3。