【问题标题】:Something I don't get about AES encryption关于 AES 加密我不明白的事情
【发布时间】:2015-11-08 13:52:34
【问题描述】:

我在我正在开发的应用程序中使用 RSA 加密,感觉非常安全......你有一个加密它的公钥和一个解密它的私钥。

现在我希望在不同的应用程序中使用 AES,而客户端和服务器端使用相同密钥的想法困扰着我……服务器端密钥不应该对客户端保密吗?否则,如果加密密钥不是秘密的,那为什么还要麻烦用它加密呢?

也许我对加密了解不够,只是看起来有点奇怪,我希望这里有人可以为我澄清困惑......

非常感谢!

【问题讨论】:

    标签: encryption aes


    【解决方案1】:

    服务器端密钥不应该对客户端保密吗?

    取决于他们是否相互信任,那么不,它不应该是秘密的。此外,如果你想使用对称加密,它就不能保密,因为双方需要共享一个密钥。

    否则,如果加密密钥不是秘密的,那何必呢? 还是用它加密?

    秘密的,只有服务器和客户端应该知道它 - 没有其他人。

    请注意,通常使用的是一方生成会话密钥(例如 AES 密钥),使用另一方的公钥对其进行加密 - 并将加密的密钥发送给另一方,另一方可以对其进行解密。然后这个 AES 密钥就可以用于通信了。

    【讨论】:

    • 客户知道就意味着大家都知道,不是吗?
    • 因为任何用户都可以获得密钥并且任何用户都可以解密他嗅到的任何东西......不是吗?
    • @Shay:如果通过获取密文正确加密数据,您应该无法获取密钥。如果有人在物理上(或远程)破坏了客户端并窃取了密钥,那么可以。查看我的更新。
    • 在每个请求上重新生成密钥是一个聪明的主意。感谢您花时间解释它!
    【解决方案2】:

    AES 是一种对称算法。两端必须具有相同的密钥。你 需要一种安全的方式在两个端点之间共享该密钥。那是 公钥密码学解决的问题。

    【讨论】:

      【解决方案3】:

      一个重要因素是 RSAAES 相比非常慢。大约慢 500 倍(取决于密钥长度以及是否有硬件支持等)。

      这就是为什么 RSA 经常与 AES 等快速对称算法 结合使用的原因。这称为混合加密。使用此方法,您可以生成一个对称密钥(例如 AES),用于加密消息有效负载。然后,您使用非对称密钥 (RSA) 对密钥本身进行加密,并将其与加密消息一起传递。这为您提供了对称加密的速度和非对称算法的便利性。

      如果是同一个人加密和解密,您会更喜欢快速 AES 而不是慢速 RSA

      【讨论】:

      • 另一个问题是 RSA 严格限制了它可以加密的数据量,尽管我对细节很模糊。
      猜你喜欢
      • 2019-09-09
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多