代码之家  ›  专栏  ›  技术社区  ›  ilya n.

同态加密算法的实际应用?

  •  30
  • ilya n.  · 技术社区  · 15 年前

    在密码学中似乎有一些有趣的事情:第一 homomorphic encryption 这个计划最近出现了( explanation , HT x 进入 f(x) 这样你就可以计算 f(x+y) 易懂 f(y) x y (同上 f(x*y) ).

    这是 :

    1. 电子投票
    2. 检查私有数据的完整性
    3. 是否有可能有助于一般隐私?

    :我在A、B、C银行有账户。实体X想确认我总共有1000多美元;它很乐意接受A、B、C或D银行的对账单,但不幸的是,我在任何一个账户中都没有足够的钱。银行A用我的公钥加密我的500美元信息;类似地,银行B和C分别加密我有200美元和300美元的信息。他们将这些数据发送给X,X将它们添加到某个数字中,我证明该数字实际上是加密的$1000(通过使用我的公钥加密$1000并证明结果是相同的)。我已经证明了一些事情,但没有向任何人透露 X 我每个帐户有多少钱。

    另一个例子 A. l而另一个是 B 持枪爱好者(所有名字都是虚构的)。他们决定,他们希望投票是私下的,但要迅速。他们以矢量格式发送选票 (1, vote_A, vote_B, vote_None) (count, count_A, count_B, count_None) count = count_A + count_B + count_None ,官员宣布其中一名候选人获胜,之后法官宣布选举无效,原因与电子投票无关,并在法庭上进行了10年的斗争,但是,嘿,这不是我的问题。

    笔记 -我相信这些特殊的例子甚至在RSA出现之前都是可能的,因为它只需要一个操作中的同态。我们希望通过更多的操作,我们能有更有趣的东西——所以,拿出例子来!

    • 我特别希望看到答案中包含代码和/或开发框架,这些代码和/或框架有可能在实践中使用,原因不是理论上的计算机科学讨论板。

    • 同态算法,重复下面在评论中所说的,允许创建一个程序,在不知道数据的情况下管理数据。不幸的是,程序的类型有些有限:你不能有 if (x=0) ... 因为 x 是加密的,每个步骤都非常慢(涉及到一些晶格)。

    10 回复  |  直到 15 年前
        1
  •  10
  •   Jeremy Powell    15 年前

    这是一张在黑暗中疯狂拍摄的照片:

    如果MRI制造商能够集中MRI数据计算,这将大大降低丢失算法的风险。然而,法律禁止他们访问私人患者数据。

    所以同态加密允许在患者数据和算法都受到保护的情况下发生这种情况。“完全”同态加密(即在加密数据上引入环同态)允许对数据进行更有效和更稳健的计算。

        2
  •  4
  •   Achintya Sharma    15 年前

    同态加密最大的应用将是在数据挖掘中,IMHO。该算法的使用可以同时解决隐私问题和趋势发现问题。例如,假设您的公司在某些SAS提供商上托管其销售信息。现在,该提供商可以为您提供复杂的数据挖掘服务,而无需您实际透露您的真实信息。

    另一个潜在的应用,在较低和更个人化的层面上,将是处理各种金融数据。ilya的扩展示例可以应用于由您的会计师提交纳税申报表,而不实际查看您的财务信息、信用卡处理等。

    然而,我会保持我的兴奋,直到这个计划经过严格的测试并被认为是安全的。加密算法有一个臭名昭著的习惯,第一次测试失败,进行修改并重复这个循环,直到被某个政府机构“认证”。

        3
  •  3
  •   bethlakshmi    15 年前

    作为一个PKI极客,如果同态密码函数也是一个非对称密钥系统,那么你在签名领域有一些非常有趣的可能性。签名者可能会对邮件进行签名,而收件人可能会重新传输邮件 部分 将消息和密码文本的相应部分发送给第三方。

    用户标志:

    并传送:

    发送(明文、密文、证书)

    纯文本=所需纯文本+其他纯文本

    如果密文::明文,则???::所需明文

    查找所需的密文

    应用程序仅将所需内容转发给外部服务:

    服务可以验证此消息,就像用户直接发送了它一样。

    如果您希望外部服务响应已签名的用户请求,但又不希望公开用户发送给该外部服务的所有内容,那么这可能非常有用。

    一个例子是一个简单的包裹订购系统——我向一个web应用程序发送购买一系列物品的请求。为了超级安全,我签署了一份采购订单,确认我想要(并承诺支付)一些物品,在特定的日期将其运到特定的地点,并附有特定的付款信息。现在web应用程序希望发生以下几件事:

    • 财务部需要向我的账户收费,并开始从我那里获得付款
    • 库存部门需要从库存中提取物品,或处理任何缺货问题
    • 发货需要从库存中接收,并将物品移动到我的地址

    没有理由让库存或发货人员知道我如何付款。财务部可能没有理由知道我的送货地址。。。在每种情况下,所需的明文和密文都会发生变化,这取决于接收者是谁。这在像Amazon.com二手书这样的系统中更为有效,因为我从Amazon购买的实体与提供商品的实体(二手书销售商)不同。

    阅读有关晶格密码的论文,它听起来更像是一个对称密钥系统。。。这对签名消息没有多大帮助。

    关于“永不说永不”的概念,我不会说将其用于隐私应用程序是不合理的。但是,你可以找到从密文到明文的多种方式,这显然很麻烦。

        5
  •  2
  •   Eugene Yokota    15 年前

    f(x) + f(x) 计算将是一种很好的方法,但也许它可以作为实现加密数据库的一种方法。

    您可以存储100万行加密的数据 f(x_1) , f(x_2) , ... f(x_n)

    SELECT SUM(x)
    FROM Foo
    WHERE y = 'some value'
    

    这可以通过先做 SUM(f(x)) 然后将其解密到 SUM(x) .

        6
  •  2
  •   Edward Kmett    15 年前

    这样,您可以执行深度有界的任意非递归电路,因此给定对数键长度,您可以执行NC1算法(基本上是前馈布尔电路)。

    那么,你怎么能用这个呢?

    让我们看一下映射/缩减电路和一组输入上的缩减方案。

    首先是数据:

    我们可能不希望客户端必须加密我们要搜索的所有数据,因此您可以向服务器提供加密的1和加密的0,让它使用环形结构为我们构造任意加密整数,或者我们可以直接将它们用作位。这样,服务器就可以提供我们正在搜索的部分或全部数据。对于整数,它可以通过农民算术(double或double,每个位加1)构造它们,对于位,它只提供适当的加密位。

    在我们的设计中,我们可以混合匹配布尔值和整数值,通过计算cond*then+(1-cond)*else,在cond中使用1作为真值,使用0作为假值,获得if/then/else(需要计算两个分支的SIMD样式),因此您可以不用使用环的内置算法来使电路更浅。

    所以,现在我们有了服务器提供的数据。现在,加密你不想让服务器知道的东西,比如你在搜索什么,并让他们在正确的位置将其输入电路,比如说作为映射函数的额外输入。

    我们应该能够在每个输入上映射一个任意的类似于NC1的电路,以提取一个字段,乘以一些值,并通常将其映射成一种可以廉价减少的形式。

    然后使用更多的小电路减少这些片段,例如对于一个简单的幺半群,它有一个很好的大小有界的结果。(也就是说,您映射以获得一个指示是否找到匹配项的位,然后使用一个小加法器电路对这些位进行计数以减少)

    由于您只需要在逻辑上构造电路并在同态环中的这些加密位上模拟其执行,因此您可能可以使用一个小DSL(例如Haskell中的Lava)相对快速地实现它,假设您直接获得同态加密片段。

    此外,请记住,每个门都是 认真地 执行起来很昂贵。

    所以总结一下,,

    1. 为服务器提供加密的1和0以及地图和reduce函数的所有加密元信息。
    2. 对于每个数据点,将其编码到同态环中,向地图电路提供输入和元信息,以获得适合减少的值。
    3. 在平衡二叉树(或其他平衡排列以最小化树高)中,将缩减操作应用于电路和任何加密地图元信息的输出。
    4. 将结果交给客户端进行解密
        7
  •  1
  •   Edward Kmett    15 年前

    另外,编码的复杂度似乎并不比自己执行多段逻辑电路的复杂度低,因此,除非你做了一些特别棘手的事情,否则你一开始并没有学到任何免费的工作。

        8
  •  1
  •   user132748 user132748    15 年前

    类分布式计算SETI@Home,蛋白质折叠项目,等等,是相当受欢迎的,因为他们利用捐赠的CPU时间和电力从成千上万的用户。更有趣的是,人们可以通过这种模式获得报酬,为商业项目提供这些资源。然而,没有一家负责任的公司愿意将其数据发送给数千台匿名计算机进行处理。如果可以有效地将算法应用于加密数据,则可以将处理委托给没有可信关系的任何人。

        9
  •  1
  •   mbaechtold    14 年前

    电子投票确实是同态加密的一个实际应用,即。 http://heliosvoting.org/

        10
  •  -1
  •   bakayim    7 年前

    借助同态加密,某些银行应用程序可能会变得更快。