如果说上次发不经意传输就已经是老本行了,那今天的同态加密就是老老本行,因为我现在在做的项目就是基于全同态加密,今天来分享一下它的基础原理(不会涉及高二以上知识,请放心食用。另,本文部分图片来自知乎著名密码学作者,刘巍然-学酥)。
云计算的发展速度越来越快,云服务器上的计算量愈发庞大。然而,当我们将那些极其私密的数据,像实验数据、个人信息等上传至云服务器进行运作时,数据泄露的风险便悄然浮现,不是说云服务商不值得信任,而是如果它们的服务器被攻击,数据依然会被泄露出去(学习通和CSDN,说的就是你们,跪下!)。
我们用一个经常在同态加密中提到的例子来说明同态加密的原理,假如有一个金店需要加工金项链,考虑这么两个问题:
1. 如何运输黄金而不被运输的人把黄金偷走
2. 如何把黄金交给工匠进行加工,而且使得工匠也无法获得任何黄金
对于问题一,可以很自然的想到,对黄金上锁(对数据加密),这样就不会被偷走
但是对于问题二,锁上了还怎么加工呢?这就要引入计算的同态性了,什么是同态呢?
考虑一个小小函数 y=4x,我们有两个数字a和b,y(a)=4a,y(b)=4b,那么y(a+b)=4(a+b)=4a+4b=y(a)+y(b),我们可以发现,y保持了和x一样的计算性质,这就是同态性。
这个过程可以形象地理解为,工匠可以通过保险柜上的手套操作黄金,这个过程中工匠对黄金地操作与不带手套是一样的,但同时工匠无法直接摸到黄金(物理层面上),这样工匠即能对黄金进行处理又无法窃取黄金。
当然,戴着手套效率肯定低,同样,全同态加密二点计算速度要比明文计算慢,且还要考虑噪声问题,如何提高效率,这也是全同态加密的一个重要研究方向。
我上次发葫芦换葫芦的中间人攻击,确实是硬蹭,这次我还想聊点西游记,不过这次不蹭“偷丹的贼”了,聊聊孙悟空的全同态,《西游记》里师徒四人路过朱紫国的时候,给国王看病,需要把脉,孙悟空就想到一招“悬丝诊脉”,用一根网线连着病人的手腕和自己的手指,隔空诊脉,不知道再给谁诊脉,还能得出病的名字,也符合“既想要对方给你处理数据,又不想让对方知道隐私数据内容”的目的
我真的很喜欢西游记