同态加密是一种基于数学问题计算复杂性理论的密码技术。对同态加密数据进行处理得到输出,对输出进行解密,结果与用同样方法处理未加密原始数据得到的结果相同。
简单来说就是“先计算再加密”和“先加密后计算”效果是一样的。
Rivest等在20世纪70年代首次提出同态加密的概念。同态加密与普通加密算法相比,除了加密功能外,还可以实现密文之间的计算功能,无论是先计算后解密还是先解密后计算,效果都是一样的。它可以很好地保护信息的安全。尤其是如何在云计算中保证数据的隐私性越来越受到关注。同态加密可以在一定程度上解决这个技术问题。
应用举例:
问题:女性年龄保密。如果两个女人(F1和F2)想比较年龄,但又不能让对方知道自己的实际年龄,不引入可信任的第三方怎么比较?
实现(只显示同态的特征,忽略传输过程中的加密):
假设F1的年龄是a1,F2的年龄是a2。
1)F1加密年龄a1获取EncA1并将其传输到F2。
2)F2加密年龄a2获取加密值EncA2。
3)F2随机生成两个大随机数X和Y,加密后得到EncX,EncY。
4)F2计算EncValue1=EncA1 * EncX货币,EncValue2=EncA2 * EncX货币
5)F2向F1传输EncValue1和EncValue2
5)双方解密EncValue1和EncValue2,得到值1和值2。
6)通过比较值1和值2的大小,我们可以相应地得到a1和a2的大小关系。
从上述过程可以看出,双方在没有告知对方真实年龄的情况下,就实现了年龄对比。不仅a1和a2,3)中生成的随机数X和Y也只有生成器知道。从而很好的保护了双方的隐私。
附相关概念
一分快三技巧。
3)F2随机生成两个大随机数X和Y,加密后得到EncX,EncY。
4)F2计算EncValue1=EncA1 * EncX货币,EncValue2=EncA2 * EncX货币
5)F2向F1传输EncValue1和EncValue2
5)双方解密EncValue1和EncValue2,得到值1和值2。
6)通过比较值1和值2的大小,我们可以相应地得到a1和a2的大小关系。
从上述过程可以看出,双方在没有告知对方真实年龄的情况下,就实现了年龄对比。不仅a1和a2,3)中生成的随机数X和Y也只有生成器知道。从而很好的保护了双方的隐私。