2010-08-30 74 views
7

我在高级开发中明天会参加考试,但我被困在加密主题上。我已阅读它http://support.microsoft.com/kb/246071。但是我仍然感到困惑。非对称加密

如果使用非对称加密方式使用公钥对消息进行加密,那么解密器如何知道解密它的私钥?当然,唯一的办法是公开私钥,但这会破坏非对称加密的对象。

有人可以请一位非技术人员能够理解它的方式解释吗?它唯一的非对称加密我不明白,而不是对称加密。提前致谢。

问候,

理查德

编辑:所以总结起来在Web应用程序的情况下,所有的答案(具体使用了,我需要知道这一点):

  1. 用户访问一个网站;
  2. 要求用户提供公钥;
  3. 用户创建公钥和私钥对,私钥私钥并将公钥返回给服务器;
  4. 服务器使用公钥对需要发送给用户的任何内容进行加密并将信息发送给用户;
  5. 用户使用他/她的私钥解密来自服务器的响应;
  6. 用户做他们需要的事情,并使用私钥对服务器发送回应给服务器;
  7. 服务器使用公钥解密。 步骤4 - 7可能会继续多次,或者它们可能只发生一次,或者只发生4和5。

这一切是否正确?如果是的话,这应该是我需要知道的考试。如果有关于这个问题的问题出现,我不应该认为我需要了解更多信息以获得最多40%的答案 - 但会提到证书和签名的存在。

谢谢你的帮助。

问候,

理查德

编辑:嗯,我刚刚从我的考试回来了,它走得比好,我想。但是没有问题出现在密码学上,然而......无论如何,这个帮助很受赞赏。谢谢大家。

问候,

理查德

+1

http://en.wikipedia.org/wiki/Public-key_cryptography? – 2010-08-30 19:51:00

+1

顺便说一句,如果你对密码学感兴趣,你应该看看Simon Singh编写的“The Code Book” – 2010-08-30 19:55:35

+0

感谢wiki的链接,但是a)我们被告知永远不要使用wiki(反正我仍然这么做对于大多数情况!!)和b)在这里解释的方式比wiki更容易理解。然而维基确实有一些关于实际意义的好章节。 – ClarkeyBoy 2010-08-30 21:37:02

回答

7

Alice创建她的私钥+公钥。她保密私钥。她公开公开她的公钥。

Bob拿着Alice的公钥(他应该首先验证它是真的Alice的公钥!),并用它来加密他发送给Alice的消息。

Alice可以使用她的私钥解密邮件。

+0

从我所了解到的情况来看,这也是相反的 - Alice可以使用她的私钥进行加密,然后Bob可以解密。好的方法来解释它。谢谢。 – ClarkeyBoy 2010-08-30 21:17:20

+0

否。在这种情况下,Bob将不得不使用公钥解密。但其他人也知道公钥(它是公开的!)并且可以解密。 – Jens 2012-05-31 08:13:53

+0

@Jens:这对于加密(在保密意义上)没有用,但是这可以用来签名消息。注意:根据密码方案,使用不同的密钥进行签名和加密可能很重要(请参阅http://security.stackexchange.com/q/1806) – 2012-05-31 11:07:41

2

公钥是由“解密”提供给“加密”,因此,根据定义,“解密”知道私钥(因为它的一部分由“解密”。

+0

啊,那么你是说你的消息是由解密器使用私钥加密的,那么加密者可以解密这个消息,然后发回一个使用公钥加密的消息,只有拥有原始私钥的用户才能解密?这是有道理的,除非黑客掌握了带有公钥的原始信息。或者我还没有得到它? – ClarkeyBoy 2010-08-30 19:59:10

+1

不......使用非对称加密法,您只需将您的公钥发送给其他人。无论谁听这封邮件,任何人都可以使用您的公钥加密信息并将其发送给您。如果有人正在倾听,这并不重要,因为只有你有私钥(不应该传送)。 – Sebastian 2010-08-30 20:04:16

+0

因此,我认为您的意思是,在Web应用程序中,客户端(用户)自己将公钥提供给服务器并保留私钥。如果是这样,那就完全合理了。谢谢。 – ClarkeyBoy 2010-08-30 21:20:55

1

创建的密钥对我们说:“解密器” = d,和“加密” = E.

d以前送他的公钥E,使E能加密mesage。因为只有D知道他自己的私钥,所以只有D才知道如何解密E发送给他的消息(记住:一个密钥用于加密,另一个用于解密)。这样,你就可以获得隐私。

5

其他人提供了一个“通用”的描述,我会深入到现实生活中。

大多数现代非对称加密标准不是使用原始的公钥和私钥,而是使用更复杂的包装,如X.509证书或OpenPGP密钥(这是当今最流行的两种非对称加密基础结构)。证书和OpenPGP密钥都包含额外的信息,可以轻松识别,搜索和管理它们。

现在,加密的数据块通常包括用于加密的公共部分(即,证书或公共OpenPGP密钥)或至少ID(该公共部分的散列)。数据的接收者通常拥有(或应该有)公共部分和私人部分(私钥通常与证书或公共openpgp密钥放在一起)。因此,当收件人收到加密数据时,他知道他需要查看其公钥部分的私钥存储(如果包含在加密数据中)。

存在没有包含任何内容的情况。然后收件人无事可做,但尝试所有可用的私钥进行解密。但是这种情况很少见,因为默认情况下,加密数据块中存在证书或密钥ID。

+0

这是一个很好的答案 - 您需要添加标识信息到加密块/ blob,以确定哪些密钥将会使其崩溃。 (公钥名称,指纹或散列) – 2010-08-30 20:24:57

12

私钥只能被其合法用户知道,而不能被分发。它的副本,公钥可能会分发给任何人。

在此基础上,你可以得到4个操作:使用公共密钥

  • 解密使用使用私钥
  • 私钥
  • 标志

    • 加密使用公开验证签名键

    您可能遇到的下一个问题是身份与公钥的绑定(因为您不会遇到这种情况)不想加密某件东西或信任与冒名顶替者公钥签名的东西)。有各种公钥分配模型。通常,您可以有:

    • a web of trust,其中人们在公钥和身份之间签署对方的关联:这通常是PGP模型。
    • a public key infrastructure(PKI)您可以通过树状分层结构获得证书颁发机构的证书(通常是中间件)。 (PGP也可以使用这种模式,但这似乎不太常见。)