4

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

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

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

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

干杯,基督徒

4

1 回答 1

6

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

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

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

于 2009-10-15T04:25:53.767 回答