-1

当某些数据使用 PGP 加密时,不提供密码。PGP 的对称算法部分使用的密码是什么?

这是一个用 AES 256 加密的小字符串的输出。

-----BEGIN PGP MESSAGE-----
Version: BCPG v1.39

hI4D+UDEMBpnd50QAf9bWG97E9FfnSKB/WpVcBtLJqk5f/Ih9YZTUDULDZpSE0TP
ObJnCs91okOv6/BtDRDZ84ChF5pOZezb5+aL3TW5AfwK3gJ7nPTlmZOm5Kf7qOfB
n307xpn0qRw395y1mfOm10TsMpaCkbSvwjhqPi8hRMM17y29OsqGLstZdeAaNTGt
0mwB7EiZti4jOUF3/SCNnn2vA9hVc6o6c0l0h5vQOF0L+eL1Pmhg8RcFT4kHRnI/
A+Ad4hsbOxD1vvzZHx2iETkt1JmNTHmOOY5Cw/n+sFlU9JzZpzAtqwUjjnyN8NjQ
6NbpwL6gebTJCVTNW2c=
=kI32
-----END PGP MESSAGE-----

Old: Public-Key Encrypted Session Key Packet(tag 1)(142 bytes)
        New version(3)
        Key ID - 0xF940C4301A67779D
        Pub alg - ElGamal Encrypt-Only(pub 16)
        ElGamal g^k mod p(511 bits) - 5b 58 6f 7b 13 d1 5f 9d 22 81 fd 6a 55 70 1b 4b 26 a9 39 7f f2 21 f5 86 53 50 35 0b 0d 9a 52 13 44 cf 39 b2 67 0a cf 75 a2 43 af eb f0 6d 0d 10 d9 f3 80 a1 17 9a 4e 65 ec db e7 e6 8b dd 35 b9 
        ElGamal m * y^k mod p(508 bits) - 0a de 02 7b 9c f4 e5 99 93 a6 e4 a7 fb a8 e7 c1 9f 7d 3b c6 99 f4 a9 1c 37 f7 9c b5 99 f3 a6 d7 44 ec 32 96 82 91 b4 af c2 38 6a 3e 2f 21 44 c3 35 ef 2d bd 3a ca 86 2e cb 59 75 e0 1a 35 31 ad 
                -> m = sym alg(1 byte) + checksum(2 bytes) + PKCS-1 block type 02

New: Symmetrically Encrypted and MDC Packet(tag 18)(108 bytes)
        Ver 1
        Encrypted data [sym alg is specified in pub-key encrypted session key]
                (plain text + MDC SHA1(20 bytes))

我知道 AES 256 值9隐藏在第一个数据包(标签 1)中,但关键在哪里?由于公钥是用来加密的,所以公钥中没有隐藏密钥可以用来加密。此外,我认为 RFC 4880 从未真正指定从何处获取密钥。

我是否遗漏了一些关于公钥密码学的重要观点?

4

3 回答 3

2

您不需要密钥,因为任何人都可以使用公钥。公钥用于加密(在本例中为随机 AES 密钥,用于加密其余数据)。只有在解密期间,您才需要私钥来检索加密的 AES 密钥,当然还有数据。这当然是接收方的公钥/私钥对。

于 2012-07-03T00:01:05.350 回答
0

随机生成的会话密钥存储在第一个数据包中:

... Public-Key Encrypted Session Key Packet ...

原始数据永远不会直接使用公钥算法加密;相反,使用随机生成的会话密钥。如果您加密给多个收件人,相同的会话密钥将单独加密给每个收件人。

于 2012-07-03T00:00:56.280 回答
0

我刚刚意识到我session key在说明中误解为数据包,而不是密钥

于 2012-07-03T01:25:11.157 回答