获取 IllegalBlockSizeException:使用 RSA 时数据不得超过 512 字节

Getting an IllegalBlockSizeException: Data must not be longer than 512 bytes while using RSA

提问人:Phil31 提问时间:7/15/2023 最后编辑:Phil31 更新时间:7/16/2023 访问量:215

问:

我正在尝试解密为 CTF 提供的自述文件。我有公钥和私钥

-----BEGIN RSA PRIVATE KEY-----
MIIJJwIBAAKCAgEAgBqs0zu5mQ8XcsZ1yYGR1Pg75Lwk5GU4hoJmDVvlSjsV4L/X
ol9Gc+zWSQzJhkcGNlE/dr+mAUQlYJ+E51/giuucZ/onupmYiVpmHMrvRSdj2HbU
Xzb9d/U/JeDMVlGsp8o71rXxpxHGRoMIZiJ+kEf0XfPl5a3NWXhezQ1U5S5UieA9
Yuh4J/3oIYMpR0+Fl/0fPtAe/nh1FeVoj+bPoKtWImdYe7GIg8kfGfxak/nO59ar
fICnoVAa138u/q7qL41+vs8a7RKfDev/htbOKbvn64a/FtiVDuHyolsV7rCblTmA
BXBYlq+Cl9TOL6ThdvfZkv9BTUVRGRi4Q03C5uXI1Hk7E8KvuBSXKDl9GESFBFYL
g5/8O96+Cr8lU7ovyR4+NH5eDvJW3s+s4sCnFM6OUWcRH3xbhnWSfdAyn16UL13X
cQ0ImWNBKP823Df2bsQHbtLlOIKTB/4GYjQmHVH75f4C0XzGnZUz/G5neBswq2w8
C14HK/VKZlKDxF2jyutLUz8giL31tztWMNwgXGbbldjCd9bhC8FViBXQyh58Hfqq
wpmfm9r+MNbbP1Q9f14cp062GgkSBCPj2Q3f0bqEKyRbBx+/rtz3Er/nmxZPjXqE
4RpM/Aoz47qmCa/aVlE2V/jwpi4Ti+dsMovo0g2sanKlk1nioksQTcZrBFMCAwEA
AQKCAgAp85JhYo+3NiABsEhmgw4U5m4GzC5wtU07j3yIJ24BTzQs8+ZUAEt8LzVF
mvBsDtpT82uLIdvlUkHDULofY2CPXfVMf7l+/EndwULrbvHIfcvO2atWuxVqsV/K
scF5Cyo1kJ7kA5Vtlv6NnN+lQuqbqVS3Z+YDv1UeVbMGB7Wjj/aTaGHyABtJTXc1
clSUS9B+I6CV22YrA5ukXgpOBdI81Z9RiPKLH2qLbdPHmMK47vf5KG3kSeWbiDYi
GD51nSaICBhXuE8jEBQSZRS7PaEqPaUHlosBmk/GHextitK15hQtXDU2ksIQJs3n
lwMmyyIi6avQ3dKu0WJri5LcR5zptMeCTEgWLj9zM85WVLdTcvXQU42Qttf9N8eb
5HzIU5snCiMvYSnHkU/op3+Sjq4w4RYTt/31z5r1IDb6ExB8uFnBlXqPELoFldKo
CPNAozAiapWlD1hSXAedtRKbUTvUX4PDTM96BNRP7QxqJ8wcZwwo2If0sfyRE050
IulrC3N4vb0Tzj8CKnb3N5AG7EzH/dnZ6MmYwgplBLJFzLrXc5b1D1WPsYd8AI3D
T9vMf+qHwxhS2VAxnIyaZLxtwBONeoorh8eE0QNKZKHsSHQU4B8q++1Nzik3inPM
WLfKS6z4sInuk4/zlXz/h9bu16HtAMMDIitNDcGTsAALbT6f0QKCAQEA0OwjLLI1
OOLLebqSaobLcuZXGHvFURShSFGfrPQqwW2Fo+Dn0ziS4qFYOGBx+mr7gOSXY/uY
HiDOY8qCY/iG8D8E1BQ760BAw7DoVg/2GVcr0DwV5pkrvGZWSyR4DeuBPIldSvJ0
6JO0fCduuCnG6xvNC6wRR8wmkBbMB8NUy1EoZOGPIwOaNphwFw1mH2bn7h1Lp21G
JaE0pEaqIVl7qIb5FTRwLX6vgxvyOp7RcrLl9JS/zDbEweffnbm7cUZ03iK8LUgB
1htPd2RbSUSrSSt120+RFz2RSW+UcyWZcL4LnsumxfTgq/Q0IOzlGN/TKewnjGUl
4EVbpGVRg7tUtQKCAQEAnPh42556OCU459nQ9YSHPTIj0BxlWAiALn8T4DSV6wAE
9aZytwNQXid8oFBBwDzqSqVNunIwM/iUxbPqabEFT+8umlElG/Lgv4ceDNrsDfYa
PsX75W8S/xJcMLImaWr+ngvAijBqE+uqyxVLXZCKxAGwipZbEAlpWp11fVT9Byn1
OEM+bZ6h7tzRBhdthwcgg7H1hQy/neNot95u5IveSL7Q5T116EME6iX/X0tVxBEa
mPrLyxRBfg4TnjOg4srGKSFCeV0oimkAeWTOeucBmHdWQUiFGSOIASmRwpj/iGGj
HRHvIrst6MrO+XLLNknOHpqYAQNXZUHwArtbhsVh5wKCAQAISqbmujfkhxO+RApV
kf33FG82eIsPObtg7GRi79nWjWs1YtKwjlk+B1tB+Ynsf1x19BySCkUyROkMCth7
8Twhws6FQDxUjNtFKPs/lyiUPuJtREU2PrP+qS0ZlFvzaXpalbUPKWo8ZMhP+Ryq
0HWllRfhM7YH3HFXXKBCWp096H2q60zL/fOb4Rbpw01fR61CxQTgozSaf7hgILHV
2wBOYvT1w3wEQjfjAzPs4aq8W59GwrSN/Up3y6UTVHC9ASfYPRas0WPJRJI10dTR
ppkJsWDfEFxYyMfAW15P55kcYV6CseBvkNVt3aZH/D7natKtokK7jrQfH4GQl7jR
epjVAoIBAAp7LNa9RjvpgFs62BEMwFr9thZ3Tu0J5EU2hwU5fakrXyln69D8j6k5
ycCKm1lSt/I0B3Sjm0RdHNH2qXhVMZ2cwufa8zdiiE9BnmgNViW4gRgf8CnpuML/
XtiBjL8NPeMftcOEaBDcc5ML4PRmal2cH0WhtILlnftG+EleG2cXDiCrnMeFCBsC
85IMjmuttiYVA+fWahUI0j00xQLNtBH3a8tixzSzBOj9kIe0aA2ndrcwR9tPhu/7
0KOHnv6Fu6WTavTfm41iZX21lXPvaNPdZA0H4ptDHBm3xNvRi353xoRyZh1TkkUx
BZDycU82rmSsvemTZ4qDVJtaF0pwc5ECggEAFbT/XaA/ZiAfAYESgz0fr/gmkCu0
w+b8r5H5i3XUM9iiJIuNDrxn00060mlGe3CsiKZT+4+9Bf13ArqrNOdpeidzc3Gu
DzHvO0S0+hhAmrmwaQUAMhJRYYlsulVv9R7tl4QQWWuX6fPiSgsjAKG7h8YpyCnZ
G6E9aoj9gvPNxFLmM9A/VHewYTfcvVRuViQm8QYPCiS+nbro1rrYt98tJIYb9K02
6mvvE1WGKPNWKTpuMkr3Um4C3eql6p4cWsPmMZB8qdJ8+KA8OxJR2JcnGNq30VX4
sKUlo8kQgjoW3lTbioAvuHisLFMWzHPBi+l2ymDlFeU6dG7cJjQyjsNAkA==
-----END RSA PRIVATE KEY-----

-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBqs0zu5mQ8XcsZ1yYGR
1Pg75Lwk5GU4hoJmDVvlSjsV4L/Xol9Gc+zWSQzJhkcGNlE/dr+mAUQlYJ+E51/g
iuucZ/onupmYiVpmHMrvRSdj2HbUXzb9d/U/JeDMVlGsp8o71rXxpxHGRoMIZiJ+
kEf0XfPl5a3NWXhezQ1U5S5UieA9Yuh4J/3oIYMpR0+Fl/0fPtAe/nh1FeVoj+bP
oKtWImdYe7GIg8kfGfxak/nO59arfICnoVAa138u/q7qL41+vs8a7RKfDev/htbO
Kbvn64a/FtiVDuHyolsV7rCblTmABXBYlq+Cl9TOL6ThdvfZkv9BTUVRGRi4Q03C
5uXI1Hk7E8KvuBSXKDl9GESFBFYLg5/8O96+Cr8lU7ovyR4+NH5eDvJW3s+s4sCn
FM6OUWcRH3xbhnWSfdAyn16UL13XcQ0ImWNBKP823Df2bsQHbtLlOIKTB/4GYjQm
HVH75f4C0XzGnZUz/G5neBswq2w8C14HK/VKZlKDxF2jyutLUz8giL31tztWMNwg
XGbbldjCd9bhC8FViBXQyh58Hfqqwpmfm9r+MNbbP1Q9f14cp062GgkSBCPj2Q3f
0bqEKyRbBx+/rtz3Er/nmxZPjXqE4RpM/Aoz47qmCa/aVlE2V/jwpi4Ti+dsMovo
0g2sanKlk1nioksQTcZrBFMCAwEAAQ==
-----END PUBLIC KEY-----

但是当我尝试使用 openssl 或 cyberchef 时,我得到一个 IllegalBlockSizeException:数据不得超过 512 字节。有人可以向我解释为什么会发生这种情况或指导我吗?谢谢!

我尝试用openssl,cyberchef解密它,你能想到的。但是我一直收到错误。

加密 OpenSSL, RSA, CTF

评论

0赞 President James K. Polk 7/15/2023
如果是CTF,肯定有更多的线索。
0赞 Phil31 7/15/2023
是的,这是一种勒索软件情况。他们建议从自述文件开始,这是一个 Markdown(加密)文件,使用私钥。标题是无限猴子定理,所以我想我会被困很长时间,哈哈
0赞 President James K. Polk 7/15/2023
如果我们能一起玩就好了。我保证我不会透露答案。
1赞 Phil31 7/15/2023
好吧,如果你想玩得开心,mediafire.com/file/k1xln03x2ypa3nq/workspace.zip/file
0赞 Phil31 7/15/2023
我也将挑战描述添加为图像

答:

0赞 Maarten Bodewes 7/15/2023 #1

您拥有的是一个 4096 位 RSA 私钥。RSA 使用模块化幂,因此仅限于该大小范围内的邮件。

根据 PKCS#1 中的定义,您可以看到实际上密文应该精确为 4096 / 8 = 512 字节,因为生成的数字只需以零位为前缀即可获得此(无符号)编码。

这限制了加密的输入值,进而限制了可以处理的消息大小。由于RSA与对称加密相比效率非常低,因此通常使用混合密码系统:对随机密钥进行加密,然后用于加密消息。

因此,对于此异常,您基本上有两种故障模式(尚未进入取消填充部分):要么 RSA 密文未正确显示,要么您需要查看前 512 个字节的解密是否不会导致 128、192 或 256 位密钥(这可能是 AES 密钥,尽管可以使用其他算法)。

仅仅解码密钥显然不是谜题的结束,那太容易了:)

评论

0赞 Phil31 7/15/2023
谢谢,我明白你的意思。我正在尝试解密 512 字节,但出现错误:加密块无效。根据我的研究,他们使用了RSAES-PKCS1-V1_5。我想知道我是否使用相同的填充算法进行加密和解密。
0赞 Maarten Bodewes 7/15/2023
这可能是下一个问题,是的。但是解密代码不在问题中,所以我不能说(对不起,没有注意到上面评论中的下一个错误)。或者,当然,您现在看到的数据不是 RSA 密文,但通常它由第一个字节组成。
0赞 Maarten Bodewes 7/16/2023
好。如果你认为这个答案对你有帮助,那么请接受它;我认为它确实清楚地说明了您至少收到错误的原因。否则,最好将谜题留给下一个人(很高兴您解决了它,但也许最好删除之前的评论)。
-1赞 Ian Boyd 7/16/2023 #2

您可以在此处查看解码的私钥

- Certificate SEQUENCE (9 elem)
  - tbsCertificate TBSCertificate INTEGER 0
  - signatureAlgorithm AlgorithmIdentifier INTEGER (4096 bit) 522619537995600330659362798382170334294884599411537923477852582607882…
  - signature BIT STRING INTEGER 65537
  - INTEGER (4094 bit) 171146993674742119666924704806111657760300490906975096719130752520413…
  - INTEGER (2048 bit) 263740111251701695242154015117783353622712014389724293829853199685866…
  - INTEGER (2048 bit) 198157017343803180079696350367430661633409074561527518264812238754480…
  - INTEGER (2044 bit) 104671869228935732383972808233723622193978050479526509948799635684108…
  - INTEGER (2044 bit) 132312298075359371962212373042384694952133620745722938176422228174864…
  - INTEGER (2045 bit) 274025760907982715469692757023388764574001657891745879566522826382768…