クライアント側のアプリケーショントラフィックをスニッフィングしていて、暗号化されたデータが見つかりました。復号化できません。私が持っている情報は
公開鍵:
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHfIm5pYrEMUuJUevmED6bUFx8p9G/5vF+ia+Qnrn8OeMpIJ/KS2nqDLxXx/ezNKlFArWK1Wer4diwQJ2cdiCqNorubAgnOXMV+/FsiATQjMT2E2lI9xUWqqNq+PfgyCPILRliNHT/j2qOvAOHmf3a1dP8lcpvw3x3FBBKpqtzqJAgMBAAE=
秘密鍵:
MIICWAIBAAKBgHfIm5pYrEMUuJUevmED6bUFx8p9G/5vF+ia+Qnrn8OeMpIJ/KS2nqDLxXx/ezNKlFArWK1Wer4diwQJ2cdiCqNorubAgnOXMV+/FsiATQjMT2E2lI9xUWqqNq+PfgyCPILRliNHT/j2qOvAOHmf3a1dP8lcpvw3x3FBBKpqtzqJAgMBAAECgYAJ1ykxXOeJ+0HOvl/ViITCol7ve6e5F1dXfKPI9NqDL5Pn+3oN7hLKEvN+btqoNBBLJcR7OQeMZtDs3AJQJvXIqN4UJUBf6fUshhdf9Y5MSpSqAjlqLjted2uw8xuL8gDmOYWV0yjeivvb4Qf7Vl7jAJSBwnlVsGCKmmBXDn+EoQJA63MnjKX1kWVb44HmXX+IDmgTQE6Ezpqzxbjf7ySdxYLb4yfZR+i5oEE+xtqEO5xR4vkEV5s1MuXjNdJHTkc2XwJAgj0HsrIGFw2DgyWF2Rc1w5BbtXH0+GrLTP6+kOuLw1eAZbDjQghzRGmhtdrl38ZtYZMdsrxE2HXDihsdjj2oFwJAl6470FQp+1z88XgB3EIIeJ97p3XuANuQ7NPJD9ra+R7wYUqOo9C9pQvjUV/8yBpQdpRNw9JtVzjaQxYQcdFWqQJAALclG64uqmHAny/NlGu0N+bLGiwOFG9BvqKHmXQxyFjqs6RNG0fAmleaM82IBbqpTyfnudue5TGAaXnMp8Ne8QJAKx/zf5AKPTkqZ7hBQ3IYfx7EbS2f6lelf8BNC+A/iz4dxLgx7AupPtoaKZC0Z6FWpm2s0HNvYhleU3FcAfKRig==
暗号化された文字列:
MpTF1+cqa23PdxQ6EoG9E77jfRJGYjORc4omawTg/g8jtUDZNNEeEr3waadTSLjQAfmJO94fpaA145yanoU9khrzCd/nAGIIAVwMC67UnsX+XY6dOEZMo41Z0dU1n42rUtkdXgldHXR1SQXaeDyjRnMj/mMMreNdykl8b4vNVPk=
すべてのキーを取得できますが、暗号化されたコンテンツを表示できません。手順で解読するのを手伝ってください。
3つの部分をそれぞれpub.b64
、priv.b64
、blob.b64
に保存することから始めます。
$ base64 -d < pub.b64 | openssl asn1parse -inform DER -i
0:d=0 hl=3 l= 158 cons: SEQUENCE
3:d=1 hl=2 l= 13 cons: SEQUENCE
5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
16:d=2 hl=2 l= 0 prim: NULL
18:d=1 hl=3 l= 140 prim: BIT STRING
明らかにX.509v3証明書ではありません。とにかく、復号化する必要はありません。 openssl dumpasn1
はここでのやりがいのある状況ではありません。PeterGutmannの dumpasn1
を試して、ビット文字列の内部を調べてください。
$ base64 -d < pub.b64 > pub.der
$ dumpasn1 -al pub.der
0 158: SEQUENCE {
3 13: SEQUENCE {
5 9: OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
: (PKCS #1)
16 0: NULL
: }
18 140: BIT STRING, encapsulates {
22 136: SEQUENCE {
25 128: INTEGER
: 77 C8 9B 9A 58 AC 43 14 B8 95 1E BE 61 03 E9 B5
: 05 C7 CA 7D 1B FE 6F 17 E8 9A F9 09 EB 9F C3 9E
: 32 92 09 FC A4 B6 9E A0 CB C5 7C 7F 7B 33 4A 94
: 50 2B 58 AD 56 7A BE 1D 8B 04 09 D9 C7 62 0A A3
: 68 AE E6 C0 82 73 97 31 5F BF 16 C8 80 4D 08 CC
: 4F 61 36 94 8F 71 51 6A AA 36 AF 8F 7E 0C 82 3C
: 82 D1 96 23 47 4F F8 F6 A8 EB C0 38 79 9F DD AD
: 5D 3F C9 5C A6 FC 37 C7 71 41 04 AA 6A B7 3A 89
156 3: INTEGER 65537
: }
: }
: }
それはよりそれに似ており、1024ビットのモジュラスのように見えるものと、おそらく65537の公の指数があります。
鍵は、DER(バイナリ)形式のbase64エンコードされた通常のRSA鍵です。
$ base64 -d priv.b64 | openssl rsa -inform DER > out.key
writing RSA key
$ cat out.key
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgHfIm5pYrEMUuJUevmED6bUFx8p9G/5vF+ia+Qnrn8OeMpIJ/KS2
nqDLxXx/ezNKlFArWK1Wer4diwQJ2cdiCqNorubAgnOXMV+/FsiATQjMT2E2lI9x
UWqqNq+PfgyCPILRliNHT/j2qOvAOHmf3a1dP8lcpvw3x3FBBKpqtzqJAgMBAAEC
gYAJ1ykxXOeJ+0HOvl/ViITCol7ve6e5F1dXfKPI9NqDL5Pn+3oN7hLKEvN+btqo
NBBLJcR7OQeMZtDs3AJQJvXIqN4UJUBf6fUshhdf9Y5MSpSqAjlqLjted2uw8xuL
8gDmOYWV0yjeivvb4Qf7Vl7jAJSBwnlVsGCKmmBXDn+EoQJBAOtzJ4yl9ZFlW+OB
5l1/iA5oE0BOhM6as8W43+8kncWC2+Mn2UfouaBBPsbahDucUeL5BFebNTLl4zXS
R05HNl8CQQCCPQeysgYXDYODJYXZFzXDkFu1cfT4astM/r6Q64vDV4BlsONCCHNE
aaG12uXfxm1hkx2yvETYdcOKGx2OPagXAkEAl6470FQp+1z88XgB3EIIeJ97p3Xu
ANuQ7NPJD9ra+R7wYUqOo9C9pQvjUV/8yBpQdpRNw9JtVzjaQxYQcdFWqQJAALcl
G64uqmHAny/NlGu0N+bLGiwOFG9BvqKHmXQxyFjqs6RNG0fAmleaM82IBbqpTyfn
udue5TGAaXnMp8Ne8QJAKx/zf5AKPTkqZ7hBQ3IYfx7EbS2f6lelf8BNC+A/iz4d
xLgx7AupPtoaKZC0Z6FWpm2s0HNvYhleU3FcAfKRig==
-----END RSA PRIVATE KEY-----
そのキーをデコードすると:
$ openssl asn1parse < out.key
0:d=0 hl=4 l= 600 cons: SEQUENCE
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=3 l= 128 prim: INTEGER
:77C89B9A58AC4314B8951EBE6103E9B505C7CA7D1BFE6F17E89AF9
09EB9FC39E329209FCA4B69EA0CBC57C7F7B334A94502B58AD567A
BE1D8B0409D9C7620AA368AEE6C0827397315FBF16C8804D08CC4F
6136948F71516AAA36AF8F7E0C823C82D19623474FF8F6A8EBC038
799FDDAD5D3FC95CA6FC37C7714104AA6AB73A89
138:d=1 hl=2 l= 3 prim: INTEGER :010001
[...snip...]
公開キーのdumpasn1
デコードと比較すると、1024ビットの係数と指数を共有していることがわかります。これは、公開キーと秘密キーが一致しているように見えます。良い。
したがって、暗号化されたデータをデコードします。
$ base64 -d blob.b64 > blob
そしてそれを復号化します:
$ openssl rsautl -decrypt -inkey out.key < blob > decrypted
$ hexdump decrypted
0000000 0355 1739 575b 5434 ccc5 bec7 e70a 0d44
0000010 a4a9 11d4 166c 3423 4e36 e657 2fea ef53
これは32バイト(256ビット)です。RSAを使用すると比較的少量のデータしか暗号化できないため 、対称暗号でより多くのデータを暗号化するために使用されるキーである可能性が高いです
次の部分で頑張ってください;-)
文字列をbase64からバイナリにデコードした後、使用するアルゴリズムに応じて、以下を試してください。
これは、base64からバイナリにエンコードします。あなたもおそらくキーでそれを行う必要があります(または単に手動でそれらをデコードする)
$ openssl enc -in ciphertext -out binarytext -d -a
そして、復号化を実行するには:
$ openssl rsautl -decrypt -in binarytext -out plaintext -inkey private.pem