全同态加密(FHE)设计思路

开珠宝店

  • Alice开了一家珠宝店。她拥有稳定的珠宝货源。
  • 当客户向珠宝店下订单后,Alice根据客户提供的首饰图样,将珠宝制作成华丽的首饰。
  • 但是Alice没有雕琢珠宝的能力,因此她雇佣了熟练工人为她加工首饰。
  • 但是,Alice偶尔会担心工人将珠宝的偷偷带走一些。这很难察觉,因为雕琢珠宝本身会带来一定的损耗。

锁起来

  • 有一天,Alice突发奇想:我把所有珠宝都锁起来不就好了?
  • 于是Alice将打造一件首饰所需的珠宝,都放入一个坚固的铁盒子里,并且加上了一把很安全的锁
  • 当需要将某件首饰卖给客户时,Alice就把铁盒子以及对应的钥匙交给客户。
  • 天哪!这样客户不得不自己把铁盒子里的珠宝雕琢成首饰!

手套

  • Alice很聪明,她发明了一种新型盒子:盒子由透明材料制成,并且盒子上带有一个手套。

  • Alice把珠宝以及雕琢珠宝的工具,都放入这种带手套的盒子里。工人按照图纸,使用盒子内的工具,带上手套对盒子内的珠宝进行加工。

  • 由于盒子很坚固,手套也足够坚韧,这保证工人无法从盒子里偷走珠宝。

  • 不幸的是,Alice所使用的这种坚韧的手套有缺陷:在使用一小时后,手套会老化变硬,使得工人无法继续加工珠宝。

  • 并且,市面上找不到其他足够坚韧的手套了。

套娃

  • Alice很苦恼,她几天几夜睡不着觉。有一天,Alice无聊的玩着她最喜欢的俄罗斯套娃,突然福至心灵。
  • 啊哈!如果盒子上有一个单向的插槽,可以把一个盒子放入另一个盒子里边。那么就可以在第二个盒子内部,将第一个盒子打开,然后就可以继续处理珠宝了!
  • 说做就做:
    • Alice首先把珠宝放入第一个盒子,并使用第一把锁将盒子锁住。
    • 然后,Alice把第一把钥匙放入第二个盒子,再用第二把锁将第二个盒子锁住。然后把第二把钥匙放入第三个盒子……
    • 对于某个首饰图样,Alice认为十个小时足够处理完珠宝了。因此,Alice将第十个盒子锁上后,将第十把钥匙放入自己的裤兜里。
  • 然而,当工人带上手套后,操作不便。并且Alice使用的锁虽然很安全,但解锁比较麻烦。工人在实际操作时,发现居然没办法在一个小时的时间内,在盒子内部把前一个盒子的锁打开!

润滑

  • Alice仔细研究了如何开锁。她发现,只要在锁孔里涂上润滑油,那么开锁的速度就会大大提升。
  • 因此,Alice在每个盒子锁上之前,在盒子里面都放上一瓶润滑油。
  • 然而,工人实操时,由于向锁孔里加入润滑油也需要花费一定的时间,最终工人依旧没办法在手套变硬之前完成开锁。

预处理

  • Alice是学计算机出身的,因此她借鉴了计算机中离线计算的思想,在每一把锁上都预先涂上润滑油。
  • 如此一来,工人们在操作时,可以直接对已经涂好润滑油有的锁进行开锁操作。
  • Alice迫不及待地让工人进行尝试。终于,工人可以在手套变硬不能用之前,将前一个盒子的锁打开了。并且,还剩余一段时间,使得工人可以对珠宝进行处理。
  • 但是由于开锁花费时间,并且工人戴上手套后缓慢的加工速度,Alice不得不使用很多的盒子,以完成首饰的加工。这就不得不购买很多的锁和钥匙。但Alice常常把一些锁和钥匙的配对关系弄混,结果就是在盒子里边的钥匙无法打开前一个盒子的锁,这真是尴尬。

使用一样的钥匙

  • Alice想到了一种好办法:所有的锁都相同,并且准备好许多把相同的钥匙。这样一来,任意一把钥匙都可以打开任意的一把锁,再也不用苦恼锁和钥匙配对的问题啦。
  • 就这样,Alice开开心心的将这种盒子投入生产。
  • 但是,Alice有一天猛然发现,居然可以用钥匙从盒子里面把盒子上的锁打开!Alice冷汗直冒,心悸不已。

只能从外面打开的锁

  • 不过上述问题的解决办法倒也简单。Alice狠狠地臭骂了设计这种安全锁的公司,并为自己的盒子更换了只能从外面打开的安全锁。
  • Alice对自己设计的盒子十分自豪,并在自己的珠宝店里使用这种十分安全的盒子。
  • 工人们再也无法偷偷拿走Alice的珠宝了,并且珠宝可以被加工成任意的首饰,无论图样多么繁复。
  • 完美!
  • 但是,真的“完美”么?

昂贵的代价

  • 由于手套的使用,严重降低了工人们的加工速度。
  • 工人们不快乐,因为戴着手套雕琢珠宝很麻烦。Alice也不快乐,因为她不得不因此拒绝一些客户的首饰预订。
  • 在经历了几天的低产量后,Alice不得不减少了盒子的使用。只有加工特别贵重的珠宝时,才使用这种盒子。

你可能感兴趣的:(密码学,密码学,算法,数学)