什么是全同态加密?

2024-03-11 01:32
文章标签 加密 同态

本文主要是介绍什么是全同态加密?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

全同态加密属于密码学领域。由于全同态加密支持无需解密,就能够对密文进行任意计算,因此可以立竿见影的解决数据隐私安全问题,有很大的应用需求。例如,在云环境下,用户加密数据后存储在云端,由于数据加密使得云端无法获得数据的内容,从而保证了数据的隐私。此外,由于是全同态加密,云端可以对密文数据进行任意计算。总而言之,全同态加密不但通过加密保护了数据,而且没有丧失计算性。

这么好的性质到哪里找呀!?

全同态加密的概念早在1978年就提出,然后一找就是30多年过去了。当然这30多年也没闲着,30年间人们提出的方案随后就被证明是不安全的。

1

当然在这30年间,人们也退而求其次,能做一次加法和一次乘法的也可以,例如c1c2+c3c4,即一个二次多项式。这样的方案称为BGN方案。

当然再退而求其次,就是只能做加法,或者只能做乘法,这种方案称为单同态。例如,RSA就是乘法同态,Paillier就是加法同态。这些方案在有些地方大放异彩,尽管只能做一种同态计算。

直到2009年,Gentry,一个斯坦福大学的博士生,基于理想格提出一个全同态加密方案。Craig Gentry. Fully Homomorphic Encryption Using Ideal Lattices. In the 41st ACM Symposium on Theory of Computing (STOC), 2009. 这篇论文是来自于他的博士论文:Craig Gentry. A Fully Homomorphic Encryption Scheme (Ph.D. thesis).

2

世界哗然。各大报纸头条,密码学界的突破(Breakthrough),计算机界的突破。英文中Breakthrough可不是随便用的。

最为凑巧的是,09年左右恰好是云计算概念火热的时候。而所有介绍全同态加密的文章开头都会来一句,全同态加密用在云计算中可以保护数据隐私安全。谁催化了谁,真的不知道。

Gentry的全同态加密方案是基于理想格构造的。理想格为何物?通俗的说就是一种困难问题,就像大整数难题一样。

说到这里,不得不说两句格密码。很多人只知道RSA,ECC,但是提起格密码一脸的茫然与恐惧,觉得格密码一定是一个很难理解的问题。事实上,恰好相反,所谓的格(Lattice)就是整系数基的线性组合构成的点,通俗地说就是一个空间中的一些离散有规律的点。既然是离散的点,那么点之间一定有距离,距离产生美,从而产生了一些困难问题,例如:最短向量问题(SVP)。

3

如果是一个二维平面,那么寻找在格上寻找最短向量问题是简单的,但是当维数变大的时候,例如200多维,寻找格上的最短向量问题就变的异常困难,称之为格上标准困难问题,是一个指数级的困难问题。你可以想象一下,当你在迷宫里时(现实世界是3维的),找出口还不算很困难,但是当在一个200多维的迷宫里时,困难程度立刻指数级上升。

 

最令人感兴趣的是,格上标准困难问题至今没有量子算法可以破解或者撼动它,因此格上标准困难问题被认为是抗量子的。

格上的加密方案最大特征:是一个含有噪音的方案。加密时往里添加噪音,主要是为了进一步提高安全性。然而恰好是这个噪音,导致加密的形式与解密形式比较简单。这种特性为构造全同态加密埋下了伏笔。

这篇关于什么是全同态加密?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/796172

相关文章

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J