Jav*_*eef 5 email encryption jakarta-mail smime
我打算用 JAVA 开发一个基于 SMIME 的应用程序。在某些领域,我需要对 SMIME 加密/解密进行更多说明。我了解在单个收件人的情况下如何对消息进行加密和解密。
如果只有一个收件人
如果有多个收件人,那么
如果多个接收者加密会话密钥带有相同的消息,
谁能帮助我找到任何有用的资源或为我的问题提供答案?
如果将消息发送给多个收件人,则对称密钥将由每个收件人的公钥单独加密。
对称会话密钥还可以选择对发送者进行非对称加密。
所有加密的对称密钥都打包在一起
每个接收者都有一个块,其中包含加密密钥、所用证书的序列号等。
然后,该随机会话密钥将使用每个接收者的公钥进行加密,然后发送 SMIME 消息。
不是这种情况。上面的步骤就足够了。生成的对称会话密钥需要对每个接收者(和发送者)进行非对称加密,而不是更多。
它在CMS RFC5652和S/MIME RFC5751中定义。S/MIME 消息由 MIME 主体和 CMS 内容类型组成。对于每个收件人(和发件人)都必须有一个 CMS RecipientInfo Type。该类型包含哪个加密密钥属于哪个接收者的信息。
openssl cms -inform smime -in Test_enc.mbox -cmsout -print
CMS_ContentInfo:
contentType: pkcs7-envelopedData (1.2.840.113549.1.7.3)
d.envelopedData:
version: <ABSENT>
originatorInfo: <ABSENT>
recipientInfos:
d.ktri:
version: <ABSENT>
d.issuerAndSerialNumber:
issuer: C=.., ST=.., L=.., O=.., OU=.., CN=..
serialNumber: 16756039346226544442
keyEncryptionAlgorithm:
algorithm: rsaEncryption (1.2.840.113549.1.1.1)
parameter: NULL
encryptedKey:
0000 - 07 b9 dc b8 97 ed ea b0-8f 9c 30 fa 0c f6 a0 ..........0....
...
01fe - f0 62 .b
d.ktri:
version: <ABSENT>
d.issuerAndSerialNumber:
issuer: C=.., ST=.., L=.., O=.., OU=.., CN=..
serialNumber: 16756039346226544442
keyEncryptionAlgorithm:
algorithm: rsaEncryption (1.2.840.113549.1.1.1)
parameter: NULL
encryptedKey:
0000 - 07 b9 dc b8 97 ed ea b0-8f 9c 30 fa 0c f6 a0 ..........0....
...
01fe - f0 62 .b
Run Code Online (Sandbox Code Playgroud)
由于该邮件是为我自己加密的,因此该块被包含两次,作为发送者和接收者。
- 接收端的解密是如何完成的?
- 接收方是否迭代所有加密的会话密钥并尝试解密会话密钥?
- 如果有50个接收者,那么接收者是否需要解密所有接收者的密文以获得会话密钥?
接收者只需在列表中搜索适当的issuer和即可找到正确的加密密钥。serial numberrecipientInfos
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |