是否应该使用加密消息语法(CMS)执行此任务?

Chr*_*arz 4 openssl cryptography encryption-asymmetric encryption-symmetric

我的任务是在桌面应用程序和移动设备之间传输小的二进制消息(1或2 kb长).消息应该是非对称加密的(例如RSA).从我所学到的,应该使用混合密码系统来完成这种任务:

  1. 生成随机对称密钥
  2. 使用对称密钥加密纯文本(例如,使用AES)
  3. 使用公钥加密对称密钥
  4. 传输密文和加密的对称密钥

我不想发明一种自己的格式来存储密文和加密的对称密钥.所以我偶然发现了CMS标准(加密消息语法).乍一看它看起来就像我需要的一样.如果我正确理解了标准,它会嵌入密文和加密的对称密钥以及有关所用算法的信息.

有人可以说是否应该使用CMS标准来完成概述的任务?OpenSSL的CMS支持是否足以满足我的需求?

干杯,基督徒

Jac*_*oyd 6

CMS绝对支持您正在寻找的操作顺序.不利的一面是,CMS格式本身和OpenSSL API都相当复杂.

一个小的皱纹是CMS主要使用X.509证书而不是公钥.您可以通过实际推出PKI或仅使用自签名证书(基本上相当于传递裸RSA密钥,但具有绑定密钥和元数据的通用格式)在您的系统中处理此问题.无论如何,这有时非常有用).

OpenSSL几乎没有CMS API的文档; 我能找到的最好的参考资料是OpenSSL源代码发行版的apps /目录中的cms.c; 代码结构为一个1000行主要功能,这有点令人不安,但它确实使用公钥执行加密,因此您可以将其用作指南.