【问题标题】:How to be sure that public key belongs to private key (RSA) without modulus check?如何在没有模数检查的情况下确保公钥属于私钥(RSA)?
【发布时间】:2020-03-07 14:25:54
【问题描述】:

我正在使用Node.js 生成 RSA 密钥对,它们都存储在数据库中(私钥是 AES 加密的)。

我想检查解密后的私钥是否与公钥匹配,以确保公钥在静止时未被替换/篡改。

我发现无法使用 Node.js API 获取密钥模数。

如果我只是简单地加密一条随机消息,解密时得到原始消息,可以吗?

我只是想知道这是否安全,我不在乎它是慢还是不是最佳的。

有没有什么方法可以在没有任何外部库的情况下做到这一点?

我也不想直接从节点使用openssl CLI。

非常感谢。

【问题讨论】:

  • 也存储公钥?这通常是一个很小的数字。
  • 存储了公钥和私钥。
  • 您是否也存储了pq?如果是这样,请使用e x d = 1 \mod \phi(n) 否则加密和解密一些测试消息。
  • 密钥以 PEM 格式存储。我不存储个别字段。这是我的主要问题。因为我也无法从 node.js 获取单个字段(例如模数)。
  • 好的,太好了。这些密钥用于加密/解密,所以我想我会坚持我的第一个想法,即加密/解密随机消息以检查一切是否顺利。谢谢。

标签: node.js cryptography match rsa


【解决方案1】:

通常,我们会在一些已知消息上创建签名并验证(即使是空八位字节字符串),但加密/解密也可以。最好确保您使用密钥最初打算用于的操作确保您不签署或加密可能被对手使用的消息和/或不泄露结果。

不可能使用不具有功能等效的不同私钥。但是可能仍然存在差异,例如私钥可以包含用于直接取幂的私钥(普通 RSA),也可以包含用于中国剩余定理的密钥生成参数。在这种情况下,它不需要私有指数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2017-12-23
    • 2023-03-21
    相关资源
    最近更新 更多