基于身份的加密和开源

时间:2009-04-25 12:46:16

标签: java encryption cryptography aes jce

我最近遇到了基于身份的加密(IBE)的概念,这似乎是一个新颖的想法。但是,我没有注意到密码学界的许多人试图找到打破它的方法。我错了吗?

同样,我相信除非你能真正分发黑帽人群可以攻击它的开源实现,否则它可能没有价值?

我想我想了解整个社区使用这种方法的经验,以及将它们整合到您的应用程序和分发中是多么容易?

(编辑:这是基于ID加密的Wikipedia article。)

5 个答案:

答案 0 :(得分:4)

我不清楚你要问的是什么,所以我要做几件事,并回答它们。如果我变暖了,请告诉我。

首先,“基于身份的加密”实际上并不是一种加密方案,而是一种密钥管理方案。在任何公共/私人 - 或技术上,“非对称” - 加密中,有两个密钥。其中一个用于加密,一个用于解密,并且它们具有特殊属性,如果您知道其中一个,则构建另一个仍然是指数级硬(或被认为是指数级硬)。所以,我可以使用我的私钥加密一封信给你;我发布了我的公钥。如果您可以使用公钥解密该信件,您可以确保我是真正发送它的人。这是数字签名方案的核心理念。

问题是你必须有一种生成和管理这些密钥的方法,结果证明这很难,因为这个方案只有你私钥上的保护。有很多方法可以做到这一点。

基于ID的加密尝试通过提出从已知公共信息构造私钥的特殊算法来简化此key management问题:例如电子邮件地址。要以一种仍然难以找出私有方面的方式执行此操作,您需要拥有一个可信实体,该实体根据他们所知道的其他秘密构建私钥。因此,与知道您的电子邮件地址的人建立通信。您转到可信提供商并要求生成私钥。您要与之通信的人知道您使用的提供商,并从该提供商处获取主公钥

现在,您要发送给的人可以从您的ID生成公共端,除了来自提供商的一些主密钥信息之外不知道任何其他信息;关键是永远不会传播方向。

换句话说,它看起来像这样:Alice希望向Bob发送已加密的电子邮件。他们都信任提供者汤姆。

  • Alice通过电子邮件地址“alice@example.com”向Tom发送请求,并获取私钥 P 。有一个相应的公钥 p ,但 Tom不会将其发送给任何人。
  • Bob向Tom发送请求并获取Tom的主公钥 m
  • Alice用她的私钥加密她的消息“x”,给出{“x”} P 。 (该表示法只是“消息”x“”包裹“或用密钥 P 加密。)Alice然后将该消息发送给Bob。
  • Bon使用他对Alice的电子邮件地址和Tom的主密钥 m 的了解,并进行计算。 p = f (“alice@example.com”, m )。现在他将解密解密({“x”)P,p)和poof应用于Alice的消息。

关于这些方案的问题在于它简化了一些关键的管理问题,但只是在某种程度上。您仍然需要生成密钥,更糟糕的是,您必须真正信任Tom,因为他知道一切:他可以生成您的私钥,并使用它加密,使任何消息看起来像它来了来自你这意味着它创造了一个固有的密钥托管方案;你的私钥可以找到。

有些方面这很好;它处理丢失密钥的问题。但由于大多数原因,人们想要使用加密,这很糟糕。现在有人可以传唤汤姆,或者只是殴打他,并获取你的私人数据。

结果是基于身份验证的加密本身就是一个很好的想法,但却没有很多市场。

答案 1 :(得分:2)

查理走在正确的轨道上,但我想强调其他一些观点。 (我的评论是基于较早版本的Charlie的答案而写的。)IBE更像是一种密钥管理方案,而不是一种加密方法,它的密钥管理方法扫除了地毯下的重要问题。尝试使用身份作为基础充满了问题,因为没有人能够在电子应用程序中验证身份,无论是在网络上还是在物理世界中。如果没有一个良好的身份解决方案,一旦你强调他们所依赖的身份,这些IBE计划就会落在他们的脸上。

大多数IBE系统我已经看到任何关于真正转向“信任提供者”的技术细节,当你真正关心它时,它不会扩展并且不提供真正的安全性。提供商努力通过网络建立身份,然后充当受信任的第三方,为每个人保留加密密钥。依赖可信赖的第三方有许多已知的弱点。

现代密码学就是在寻找不必依赖第三方的方法。 Web信任是一种方法,主要缺点是它将密钥管理留给最终用户并且密钥管理是昂贵的。依赖证书发行人是另一种方法,但很明显发行人是受信任的第三方。几年前,所有浏览器都信任的一个主要问题破产并被一个显然不值得信赖的玩家从破产中收购,明确表明该方案的弱点是证书链的根源

答案 2 :(得分:2)

基于身份的加密在开源项目中难以实现,特别是那种不仅像自由一样自由,而且像啤酒一样免费的。如前所述,整个系统依赖于受信任的第三方来发布密钥。这需要硬件和软件的基础设施,购买和维护成本高昂。此外,它对正在进行密钥发布的一方承担了很多责任。使用该系统的人会期望发行人在出现问题时承担责任(他们会这样做);这种责任并不便宜,而且开源项目通常也不可行。

答案 3 :(得分:1)

您有什么特别的计划吗? “基于身份的加密”是一个相当广泛的术语。

但无论如何,可能你没有看到如此多的关注,因为它本身并不是加密的。密码学的一般原则仍然适用,例如加密密钥中有多少位熵?如果基本上无限期地使用相同的密钥,那么基于拥有大量明文/密文的冲突攻击和其他攻击的风险是什么??

答案 4 :(得分:-1)

试试it。好的和简单的解决方案。