同态加密是数据加密方式的一种,特点是允许数据在加密情况下实现数学或逻辑运算。
同态加密通常为非对称性加密。因此在介绍同态加密之前,简单介绍一下非对称性加密。非对称性加密分为三个步骤:
1. 生成一对钥匙,一个公钥pub和一个密钥priv;
2. 使用公钥pub加密原始数据,得到加密数据,公式:pub(原始数据)= 加密数据 ;
3. 使用密钥priv解密加密数据,得到原始数据,公式:priv(加密数据)= 原始数据 ;
同态加密允许对加密数据进行处理,得到的解密结果等价于在原始数据下做运算。以联邦学习用到的Paillier算法举例,假设我有两个数和,我希望把它们扔给第三方做加法运算,即+。同时不希望第三方知道、及它们之和的具体值,同态加密可以派上用场,具体步骤如下:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密和,得到()和();
3. (第三方)使用函数处理和,即;
4. (本地)使用密钥priv解密,即;
4中 = +。第三方通过上述步骤3实现了和在加密状态下做加法的操作。
为了更直观认识上述步骤,假设=100,=200,步骤就变成:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密和,得到=1234,=4321 (举例);
3.(第三方) 使用函数处理和,即=12345678;
4. (本地)使用解密priv解密,得到 = 300。
第三方在不知道=100和=200,但是通过函数依然可以在加密情况下实现相加运算。
网友评论