同态加密简介

2021-01-27  本文已影响0人  茄瓜Jim

同态加密是数据加密方式的一种,特点是允许数据在加密情况下实现数学或逻辑运算。

同态加密通常为非对称性加密。因此在介绍同态加密之前,简单介绍一下非对称性加密。非对称性加密分为三个步骤:

1. 生成一对钥匙,一个公钥pub和一个密钥priv;

2. 使用公钥pub加密原始数据,得到加密数据,公式:pub(原始数据)= 加密数据

3. 使用密钥priv解密加密数据,得到原始数据,公式:priv(加密数据)= 原始数据 ;

同态加密允许对加密数据进行处理,得到的解密结果等价于在原始数据下做运算。以联邦学习用到的Paillier算法举例,假设我有两个数m_{1} m_{2} ,我希望把它们扔给第三方做加法运算,即m_{1} +m_{2} 。同时不希望第三方知道m_{1} m_{2} 及它们之和的具体值,同态加密可以派上用场,具体步骤如下:

1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;

2. (本地)使用公钥pub分别加密m_{1} m_{2} ,得到E_{pub} (m_{1} )和E_{pub} (m_{2} );

3. (第三方)使用Add_{pub} 函数处理E_{pub} (m_{1} )E_{pub} (m_{2} ),即Add_{pub}(E_{pub} (m_{1} ), E_{pub} (m_{1} ))

4. (本地)使用密钥priv解密Add_{pub}(E_{pub} (m_{1} ), E_{pub} (m_{1} )),即D_{priv}(Add_{pub}(E_{pub} (m_{1} ), E_{pub} (m_{1} )))

4中D_{priv}(Add_{pub}(E_{pub} (m_{1} ), E_{pub} (m_{1} ))) = m_{1}+m_{2}。第三方通过上述步骤3实现了m_{1}m_{2}在加密状态下做加法的操作。

为了更直观认识上述步骤,假设m_{1}=100,m_{2}=200,步骤就变成:

1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;

2. (本地)使用公钥pub分别加密m_{1}m_{2},得到E_{pub} (m_{1})=1234,E_{pub} (m_{2})=4321 (举例);

3.(第三方) 使用Add_{pub}函数处理E_{pub} (m_{1} )E_{pub} (m_{2} ),即Add_{pub}(1234, 4321)=12345678;

4. (本地)使用解密priv解密Add_{pub}(1234, 4321),得到D_{priv}(12345678) = 300。

第三方在不知道m_{1}=100和m_{2}=200,但是通过Add_{pub}函数依然可以在加密情况下实现相加运算。

上一篇 下一篇

猜你喜欢

热点阅读