【问题标题】:Asymmetric Encryption非对称加密
【发布时间】:2011-04-05 22:42:29
【问题描述】:

我明天有一个高级开发考试,但我被困在加密这个话题上。我已经在http://support.microsoft.com/kb/246071 阅读了它。但是我还是一头雾水。

如果使用公钥对消息进行了非对称加密,那么解密者将如何知道用于解密它的私钥?当然,这样做的唯一方法是公开私钥,但这会破坏非对称加密的目标。

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

问候,

理查德

编辑:所以总结一下网络应用程序的所有答案(我需要知道的具体用途):

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

这一切都正确吗?如果是这样,那么这应该是我考试需要知道的全部内容。如果出现有关此主题的问题,我不应该认为我需要知道更多信息才能获得最高 40% - 不过会提到证书和签名的存在。

感谢大家的帮助。

问候,

理查德

编辑:嗯,我刚从考试中回来,我觉得还不错。但是,没有出现关于密码学的问题……无论如何,我们都非常感谢您的帮助。谢谢大家。

问候,

理查德

【问题讨论】:

  • 顺便说一句,如果你对密码学感兴趣,你应该看看 Simon Singh 的“密码书”
  • 感谢 wiki 的链接,但是 a)我们被告知永远不要使用 wiki(我仍然对大多数事情进行操作!!)和 b)这里解释的方式很远比wiki更容易理解。然而 wiki 确实有一些关于实际意义的好章节。

标签: encryption encryption-asymmetric


【解决方案1】:

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

【讨论】:

  • 啊,你是说消息是由解密器使用私钥加密的,所以加密器可以解密消息,然后发回使用公钥加密的消息,只有用户拥有原来的私钥可以解密吗?这是有道理的,除非黑客要获取带有公钥的原始消息。还是我仍然没有得到它?
  • 不...使用非对称加密,您只需将您的公钥发送给其他人。无论谁收听该消息,任何人都可以使用您的公钥加密信息并将其发送给您。如果有人在听,那没关系,因为只有您拥有私钥(永远不应该传输)。
  • 因此我认为您的意思是,在 Web 应用程序中,是客户端(用户)自己向服务器提供公钥并保留私钥..?如果是这样,那是完全有道理的。谢谢。
【解决方案2】:

假设“解密器”= D,“加密器”= E。

D 之前将他的公钥发送给 E,因此 E 可以加密消息。因为只有 D 知道自己的私钥,所以只有 D 会知道如何解密 E 刚刚发送给他的消息(记住:一个密钥用于加密,另一个用于解密)。通过这种方式,您可以获得隐私。

【讨论】:

    【解决方案3】:

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

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

    Alice 可以使用她的私钥解密消息。

    【讨论】:

    • 据我了解,反之亦然——Alice 可以使用她的私钥加密,然后 Bob 可以解密。解释它的好方法。谢谢。
    • 没有。在这种情况下,鲍勃必须使用公钥来解密。但是其他人也知道公钥(它是公开的!)并且也可以解密。
    • @Jens:它对加密没有用(在保密的意义上),但这可以用来签署消息。注意:根据密码方案,使用不同的密钥进行签名和加密可能很重要(参见例如security.stackexchange.com/q/1806
    【解决方案4】:

    其他人提供了“通用”描述,我将更深入地探讨现实生活。

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

    现在,加密的数据块通常包括用于加密的公共部分(即证书或公共 OpenPGP 密钥),或者至少包括 ID(此公共部分的哈希)。数据的接收者通常拥有(或应该拥有)公共和私人部分(私钥通常与证书或公共 openpgp 密钥一起保存)。因此,当接收者收到加密数据时,他知道他需要在他的私钥存储中查找具有给定 ID 的公共部分(或者当它包含在加密数据中时为给定的公共部分)。

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

    【讨论】:

    • 这是一个很好的答案 - 您需要将识别信息添加到加密的块/blob 以识别哪些密钥将对其进行重新加密。 (公钥的名称、指纹或哈希)
    【解决方案5】:

    私钥只供其合法用户知道,而不是分发。其对应的公钥可以分发给任何人。

    基于此,可以得到4个操作:

    • 使用公钥加密
    • 使用私钥解密
    • 使用私钥签名
    • 使用公钥验证签名

    您可能会遇到的下一个问题是将身份绑定到公钥(因为您不希望使用冒名顶替者的公钥对某些内容进行加密或信任某些内容)。有多种公钥分发模型。通常,您可以:

    • web of trust,人们在公钥和身份之间签署彼此的关联:这通常是 PGP 模型。
    • public key infrastructure (PKI),您可以在其中让证书颁发机构以树状层次结构生成证书,通常带有中间体。 (PGP 也可以使用这种模型,但这似乎不太常见。)

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 1970-01-01
      • 2010-10-30
      • 2017-02-22
      • 2011-03-01
      • 1970-01-01
      • 2013-04-22
      • 2021-05-30
      • 2020-12-01
      相关资源
      最近更新 更多