# 全同态加密技术笔记
本人是个刚入门密码学的小白,这是我的第一篇博文,若有表达不清楚或者理解错误的地方,欢迎大家指正。
## 1.什么是同态?
举个栗子,银行在第三方服务器上做一个业务,业务是将用户1和用户2的存款相加。如果此时银行用的是传统的公钥加密算法,由于服务器需要解密数据进行计算,这时的数据就可能会泄露给第三方。因此,这些算法只能建立在第三方可信的基础上,若第三方不可信,无法达到理想的加密效果。如果我们在这个问题上用的是同态加密,那么,银行使用加密算法生成密钥sk,对明文m1和m2进行加密得到密文c1和c2,将c1和c2发送到服务器,服务器直接对c1和c2进行计算,将结果发送到银行,银行再用密钥解密。这个栗子存在许多漏洞,但我们需要知道的是,同态加密主要就是密文与密文之间可以做一些计算,密文的格式仍是乱码,但是得到的明文却是我们想要的计算结果。
目前,同态加密分为单一同态加密(Partially Homomorphic Encryption)、近似同态加密(Somewhat Homomorphic Encryption)、有限级同态加密(Fully Leveled Homomorphic Encryption)、全同态加密(Fully Homomorphic Encryption)。我对这四种加密方案做个简单的介绍:
### 单一同态加密
密文只有一种同态特性,即密文之间仅可以做加法或乘法的其中一种。
### 近似同态加密
可同时计算加法与乘法同态,但是可同时做加法或乘法的次数非常有限。
### 有限级同态加密
进行任意加法乘法组合,并没有次数限制。但是之所以成为有限级,因为这个阶段的算法会引入一个噪音上限的概念。每个密文都带有自己的噪音,在我们进行密文运算时噪音会随之增加,如果结果的噪音值低于噪音值上限,那么解出的明文是正确的,否则可能会解出错误的明文。
### 全同态加密
无限制进行同态操作。
###同态加密算法有以下四个步骤:
密钥生成算法:生成加密与解密需要用到的密钥 。为了简单表示,我们这里假设这个加密系统是对称的(即加密密钥等于解密密钥)。
加密算法:把原文加密成密文 。
解密算法:把密文 还原为原文 。
运算算法:把 个密文组合起来,通过一个二进制逻辑电路 ,最后得到组合的密文 ,使得。
其中,和传统的加密算法不同的是多了一个运算算法,而运算算法则是同态加密的关键。可能描述的不太准确,在我看来,运算算法是将密文代入到函数式进行运算并进行解密,得到的是明文代入到函数式的解密结果。当然,密文运算的结果依旧为乱码,当解密时才能看到实际的运算结果。
## 2.同态的发展历史
然后说说同态加密的历史吧,
同态加密这一概念最早是在1978年Rivest、Adleman和Dertouzos三个天才提出的,也指出了指数函数以及RSA函数来实现加法与乘法的同态。
之后也有很多学者发表了同态加密的论文,可基本都是围绕着单一同态加密进行的,全同态加密一直没有进展。
直到2009年,斯坦福大学的天才Gentry在他的博士毕业论文里提出了一种基于理想格的全同态加密方案,该方案通过一个叫Bootstrapping的程序可以不断的刷新噪音值,达成了世界第一个全同态加密的方案,为密码学开辟了一条新道路。
之后研究者们又不停的改善和创新新的全同态加密方案,例如
2011年,Brakerski和Vaikuntan在CRYPTO上发表了一个基于Ring-LWE假设的便于描述和分析的SWHE方案,其安全性量子归约到理想格上的最坏情形困难问题,且利用Gentry的压缩范式(squashing)和Bootstraping程序将SWHE转化成真正的FHE方案。自此,FHE的研究进入了第二阶段。
2013年,Gentry等人在CRYPTO上发表利用近似特征向量方法来构建FHE方案的论文,及Gentry-Sahai-Waters(GSW)方案,标志着FHE的研究进入第三阶段。
之后也有很多大牛也提出了一些更优秀的方案,我也是刚入门同态加密,没做太多了解,这里就不提了,嘿嘿。
## 3.GSW-LFHE系统
在熟悉真正的GSW-FHE之前,由于GSW-FHE涉及到一种刷新噪声的程序,因此我们得先对GSW-LFHE进行学习,也就是GSW有限级数的全同态技术,GSW这一名字的由来我们在同态的发展历史中已经说过,Gentry-Sahai-Waters这三个大佬的名字首字母,这也属于第三代全同态加密算法。话不多说,先看看算法的思路吧!
### 3.1测试特征值和特征向量
GSW的核心概念就是引入了矩阵的特征值和特征向量的的问题,我们想把公式搬过来瞅瞅
相信大家对这个公式并不陌生,如果我们对这个公式单纯的进行同态加密:
:随机选取向量作为加密的密钥。
:如果我们要加密数字,我们需要找到一个矩阵,使得满足: