【问题标题】:Loading a keystore without checking its integrity加载密钥库而不检查其完整性
【发布时间】:2009-05-15 11:10:54
【问题描述】:

这个问题是在 Java 类 java.security.KeyStore 及其 load(InputStream stream, char[] password) 方法的特定上下文中,该方法可以接受空值作为密码以绕过完整性检查。

在不检查其完整性的情况下加载和查询密钥库有哪些风险?将查询密钥库以获取用户的私钥,该私钥将用于签署不可否认的文档。查询的证书将根据用户注册时存储在数据库中的副本和(假定完全相同的)证书进行进一步验证。

【问题讨论】:

    标签: java security cryptography


    【解决方案1】:

    主要的风险是任何可以读取文件的人也可以修改它。所以有人可以用不同的密钥库替换您读取的文件,该密钥具有相同的密钥名称但包含不同的私钥,因此您最终会使用错误的私钥签署文档,并且它们都不会通过验证。

    此外,任何有权访问该文件的人都可以访问私钥并可以签署文档,就好像它们来自您的应用程序一样。

    【讨论】:

    • “所以有人可以用不同的密钥库替换您读取的文件,该密钥库具有相同的密钥名称但包含不同的私钥”但是攻击者也可以“欺骗”证书吗?我的应用程序将使用用户在注册期间上传的证书验证检索到的证书。如果攻击者无法欺骗证书,那么私钥应该是相同的,对吗?
    • 等等...你要管理用户的私钥吗?所以他们不会真的是私人的吗?或者您打算在客户端应用程序中执行此密钥库加载操作?如果是后者,那么您应该让用户在创建 KeyStore 时设置密码,然后在检索时要求输入。
    • 不,我不会管理私钥。是的,我将在客户端应用程序中加载密钥库。
    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2014-11-12
    • 2020-12-26
    • 2020-09-29
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多