Rsa

如何在來自 ssh-keygen -t rsa -b 4096 的輸出文件上使用 openssl asn1parse 或等效項?

  • September 5, 2018

我生成一個 ssh 密鑰:

~ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kurtostfeld/.ssh/id_rsa): rsa_key
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in rsa_key.
Your public key has been saved in rsa_key.pub.
The key fingerprint is: <snip>

如果我使用空密碼,我可以成功解析私鑰文件,如下所示:

~ openssl asn1parse -in rsa_key

如果我使用非空密碼。這行不通。如何使用密碼解析 RSA 私鑰。那是什麼格式?

另外我根本無法解析公鑰。無論有沒有密碼,這都不起作用:

~ openssl asn1parse -in rsa_key.pub
Error: offset too large

如何解析 RSA 公鑰?

私鑰類似於PKCS#8 加密私鑰。但是,它錯過了指示使用的加密類型的包裝器。相反,此資訊出現在 PEM 標頭中。

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,12FF93A74CD3E34DFEF8B1CF04FFEFA6

bsUb0TiyTU9RML8PteBhjd1vwdDv/MB8kR6+J1506dkS3+t1b6mEYNKDkZeQYPPt
...
mnLNzPODtVFrEeinQcfzQCCIS+VOrtTE3dJ3bklN8he3qQmnDC9+nyQsX2Q8EuUw
-----END RSA PRIVATE KEY-----

因此,PEM 編碼的私鑰的 base 64 編碼內容就是構成封裝私鑰的密文。由於密文與隨機密文無法區分,因此您不會在其中找到太多結構。要解析它,您首先必須解密它。

至於 SSH 公鑰,密鑰是 OpenSSH 兼容格式,沒有使用 ASN.1 指定,也沒有使用 BER/DER 編碼。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTYu/U8i2a+AVe0GnZJbpJCRFwPa4yN0S77x0ZTKUudzx9OXf20reuiaDarH6x+r1XMvh/9EwarRw3CquXAdEIZ4O2AZHmgvkQCJK1Q7ZRN3rpfIrMMPqjf7NLAEmUNoI/oS977jSynRtBK001NGD4YqY9uuFLyMHPqEwR9Ii
...
/yE8pvaO6qJIIzNbTQ== maartenb@Lenovo-PC

所以試圖用 來解析它asn1parse顯然是行不通的。為此,您需要使用 SSH 本身。可以在這裡找到一種方法(很長的路) 。

引用自:https://crypto.stackexchange.com/questions/62088