【问题标题】:Asymmetric encryption for Android using KeyCzar使用 KeyCzar 的 Android 非对称加密
【发布时间】:2013-11-30 12:38:43
【问题描述】:

我想创建一个应用程序,使用服务器的公钥为服务器加密消息。我想使用 KeyCzar,但如果您有更好或其他好的想法,我会很高兴听到。

我的问题:

  1. 应用程序必须保存公钥。我应该把它存放在哪里?
  2. 如何使用此公钥加密消息?我没有找到非对称加密功能。 (应用会加密对称密钥,数据会被对称密钥加密)

顺便说一句,我必须使用公钥,因为来自同一发件人的消息不应该被收件人链接。

对于这种混合加密的参考和示例,甚至只是使用公钥加密方案(使用 KeyCzar 或其他推荐的工具),我们将不胜感激。

【问题讨论】:

    标签: java android encryption public-key keyczar


    【解决方案1】:

    对于 Keyczar,混合加密 api 位于 SessionCrypter

    C# version docs 中有更多关于它的信息,并且大部分应该适用于 java。

    Keyczar 会将它的所有密钥存储在磁盘上的密钥集中,该密钥集默认允许密钥轮换。但我已经看到它被修改为从 jar 资源中加载密钥。

    【讨论】:

    • 感谢您的回答。在我的应用程序中,我需要生成许多密钥,并且我想使用 KeyCzar,主要是因为它支持经过身份验证的加密。是否可以生成对称密钥(例如使用 KeyGenerator)并使用它们?是否可以使用 KeyCzar 生成密钥(直接到代码,而不是文件,因为这些密钥用于短时间段)?
    • 会话加密器执行此操作。公共私钥在密钥集中。每个会话都会生成和使用会话对称加密密钥。
    【解决方案2】:

    我会按顺序回答你的问题:

    1. 存储密钥的位置由您决定。也许你永远不想更新它。在这种情况下,您可以将其存储为资源甚至“硬编码”。在这种情况下,您必须为您的应用程序创建一个更新来更新它。公钥是公开的,因此无需保证它们的安全。另一方面,您可能需要添加一些代码来检查您的信任存储是否未被更改。您也可以使用 JKS 之类的 Java 密钥库,但在这种情况下,您需要创建证书链。只是将它们发送到应用程序不是一个好主意。您需要一条安全的路径来避免中间人攻击。

    2. 使用 RSA 的非对称加密肯定在 PKCS#1 标准中定义(在 Sun 提供程序中实现,在 Java 中使用 Cipher。定义了两种方案,PKCS#1 v1.5 方案和 OAEP。后者更安全。

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2012-08-08
      • 2020-10-26
      • 1970-01-01
      • 2011-04-05
      相关资源
      最近更新 更多