【问题标题】:How to convert between PGP keyrings and Java keystore files?如何在 PGP 密钥环和 Java 密钥库文件之间进行转换?
【发布时间】:2014-05-01 18:14:46
【问题描述】:

我目前正在开发一个与远程机器上的服务器进程通信的 Android 应用程序。 Android客户端和服务器的安装包都需要加密签名;具有 Java 密钥库文件 (JKS) 的 Android 客户端和具有来自密钥环文件的 PGP 密钥的服务器。如果可能的话,我想通过使用相同的密钥对两个包进行签名来减少依赖关系,但是两个签名工具都不支持相反的文件格式。

是否可以将 PGP 密钥环文件转换为 JKS 文件?或者,是否可以将 JKS 文件转换为 PGP 密钥环文件?如果有,怎么做?

编辑澄清:这里的想法是使用单个加密密钥作为两个不同签名工具的输入。这些工具彼此不了解;这只是他们的一些随机密钥。我不想使用 PGP 对 Android 包进行签名,也不想使用 Android 的签名工具对服务器安装包进行签名,因为两者都会使最终用户无法读取输出。

【问题讨论】:

  • 但是您并不想要其他格式的(假设:RSA)密钥。我假设您还想使用 JKS 密钥生成 PGP 签名或使用 PGP 密钥生成 Android 签名。它们实际上并不使用相同的结构,是吗?
  • 嗯,文件格式明显不同,但用于对内容进行签名的基本算法应该与 PGP 或 Android 签名相同。或者这就是我的理解。
  • 即使他们使用(或支持)相同的签名方案(例如具有相同哈希的概率签名方案的 RSA),如果仍然无法为具有其他?我知道这似乎是一个好主意,但在实践中构建这样一个跨系统解决方案似乎并不值得付出努力,而是仅使用两个(不兼容的)密钥。
  • 我认为我们没有正确理解对方。编辑了原始问题以使其更加清晰。

标签: java android encryption cryptography pgp


【解决方案1】:

虽然理论上可能可行,但肯定没有工具可以做到这一点。如果你想自己写一个,有很多障碍需要克服。在低级别视图中,有许多不同的方式来签署数据(即使您将自己限制为 RSA,仍然有许多标准和参数可供选择)。在高级视图中,此类密钥文件及其证书的前端抽象或 pgp 端的简单“密钥”包含许多元信息,如有效期、所有权信息等。如果您实际上可以处理低加密问题,那么您仍然需要定义从一组元数据到另一组元数据的一些转换。

此外,从密码学的角度来看,任何密钥重用都受到强烈反对。如果以非预期的方式使用声音原语,通常有多种方式可以分解。当然,Android 工具和 PGP 工具背后的算法的作者和实现者并没有想到他们的工具可以与这种交叉生成的密钥一起使用。

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 2019-03-26
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 2017-07-23
    相关资源
    最近更新 更多