公钥加密/数据解密

时间:2012-07-02 23:56:40

标签: cryptography public-key-encryption pgp

使用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实际上从未指定获取密钥的位置。

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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