【问题标题】:Decrypt RSA message with part of private key censored?解密带有部分私钥审查的 RSA 消息?
【发布时间】:2013-12-08 19:09:51
【问题描述】:

所以,我遇到了这个问题,我不知道如何解决它。

我有一个 RSA 私钥,其中一部分已被审查。

$ cat key.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDGlcensoredcensoredcensoredcensored1TUxhnjkCbowxZc
7PIpI1E2Po6aIgCBd9+6i0NUIfYm8vR6kqiqLz8k8o4LYoBkq/9Jx7pgV2Jqhr4u
wvlaQQUzi9c4qPKXp+QGoUu9f1zp8ORIMpeJmF7uA20DC93uba07qdC6twIDAQAB
AoGBAIovDuYnGiiQS6K27L4EY8e/5sbqAwdlTOVlWsfz+ai3DLNiFPSbbT1Wx9G4
4b06X6O258SD1suZ/g/ICnmnxxe5ua3a5+iiDIwGYmBDcNfq5gMq/d+1/UJF/Bb4
A1nuH2iUg6gRTPEpbg2+RYwquyWenFbqfHMgXqbHVGmOXj7hAkEA8rChKjs5zVmd
j9Gk53psry4CtuxRc39NrHuLqat9Iu0MA51Sgv4c+8dgo75DVAnT5PoLBhHJJAVa
e+rUMC4kfwJBANF7jcKzJ2UuPmL6JpbWcyirybjMIm2eCxR5U1bYlNYT+A49oOFS
Eg5woswgCyH9gDPk2Zwpq3qud9HD7Rn0bckCQQDHgwdrRXc2ZybN1eZAWffBaAzZ
PpuTXKOJWaOuX4mnTcLjsdDkWW2QWw8Kbd7B1rZ49kpbugFmeHQzjRDVbwmXAkBm
T3nFBcrP1+4QWSxPrx0/V+eFoe2OrAmtTjQtzkmi5M3Z5q+UXIkFFG3uVBgb2bur
nLHLW26s1Fkg0hgS/RZBAkAFnE+7QvRCW4+v3OsIkN63f+GIjHfCuv8L15RpBLlf
XXQyOmmu8YekTu5vbFHtSAiLyuW1yCeSsNmKYkX6Ew99
-----END RSA PRIVATE KEY-----

如您所见,第一部分行被部分删失。任务是你解密这条消息:

Qe7+h9OPQ7PN9CmF0ZOmD32fwpJotrUL67zxdRvhBn2U3fDtoz4iUGRXNOxwUXdJ2Cmz7zjS0DE8
ST5dozBysByz/u1H//iAN+QeGlFVaS1Ee5a/TZilrTCbGPWxfNY4vRXHP6CB82QxhMjQ7/x90/+J
LrhdAO99lvmdNetGZjY=

我的第一个猜测是暴力破解丢失的部分,但这似乎不太现实。

有人知道这是否可能吗?如果是这样,你将如何去做? 密钥长824个字符,删减部分32个字符,但是我不知道删减的每个字符是否对应私钥中的一个...

【问题讨论】:

  • 你需要学习编码 (ASN.1) 并首先弄清楚什么是被审查的。如果它只是一个公共黄金,那么使用的人相对较少,而且会很快。
  • 你有公钥吗?暴力破解意味着您必须尝试 $2 ^ 192$ 的可能性,我不建议这样做:P
  • @owlstead 不我没有公钥似乎找到了一个很好的分解键的不同部分..
  • 尝试暴力重构 PEM 格式的私钥。如果失败,它会退回到与根本不知道私钥相同的保护级别。 (这可能仍会花费您一生的时间来完成)。

标签: encryption cryptography rsa private-key


【解决方案1】:

你可以解决这个using an online ASN.1 parser(或openssl asn1parse),在那里你会发现base 64字符串——中间的文本,在以---开头的行之间——是一个ASN.1编码的私钥。 SEQUENCE 中的第二个元素(已更改)包含模数,而不是私有指数。该结构在PKCS#1中定义,这是一个相当易读的标准,也复制在RFC 3447

模数通常是公开的,但如果您没有公钥,您仍然可以重新创建它: How to factor RSA modulus given the public and private exponent?

【讨论】:

  • 很好,谢谢。所以当我有 e、d、p 和 q 时,我现在需要做什么。重新创建 m 并再次编码?然后在key中替换它并解密?
  • 是的,重新创建模数 n,就像你描述的那样。通常 n 用于模数,但总是期望符号不同。
  • 您对此有什么建议吗?当我通过将 p 和 q 相乘来重新创建 n 时,数字太大了,以至于我无法转换为十六进制。尝试直接使用十六进制数字,但我最终得到了 1059 位表示。结果应该是1024位吧?
  • 是的,模数始终与密钥大小相同。我还没有尝试过建议的解决方案,我只知道要寻找什么...如果您对算法本身有疑问,请尝试 crypto.stackexchange.com,或者尝试在此处发布您当前的代码的单独问题。请注意,给定的模数应包含足够的正确位以使用二进制比较验证结果。
猜你喜欢
  • 2018-02-13
  • 2018-07-17
  • 1970-01-01
  • 2021-01-08
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
相关资源
最近更新 更多