Следует ли использовать криптографический синтаксис сообщений (CMS) для этой задачи? - PullRequest
4 голосов
/ 04 июня 2009

У меня есть задача передавать небольшие двоичные сообщения (длиной 1 или 2 КБ) между настольным приложением и мобильными устройствами. Сообщения должны быть зашифрованы асимметрично (например, RSA). Из того, что я узнал, нужно использовать гибридную криптосистему для такого рода задач:

  1. Генерация случайного симметричного ключа
  2. Шифрование простого текста симметричным ключом (например, с использованием AES)
  3. Шифрование симметричного ключа с открытым ключом
  4. Передача зашифрованного текста и зашифрованного симметричного ключа

Я бы не хотел изобретать собственный формат для хранения зашифрованного текста и зашифрованного симметричного ключа. Поэтому я наткнулся на стандарт CMS (синтаксис криптографических сообщений). На первый взгляд это выглядит именно так, как мне нужно. Если я правильно понял стандарт, он включает в себя зашифрованный текст и зашифрованный симметричный ключ, а также информацию об используемых алгоритмах.

Кто-нибудь может сказать, следует ли использовать стандарт CMS для намеченной задачи? Достаточно ли поддержки CMS OpenSSL для моих нужд?

Приветствия, христианин

1 Ответ

5 голосов
/ 15 октября 2009

CMS определенно поддерживает последовательность операций, которую вы ищете. С другой стороны, сам формат CMS и API OpenSSL для него довольно сложны.

Одна незначительная проблема - CMS в основном работает с сертификатами X.509, а не с открытыми ключами. Вы можете справиться с этим в своей системе, либо фактически внедрив PKI, либо просто используя самозаверяющие сертификаты (которые в основном эквивалентны передаче обнаженных ключей RSA, но имеют преимущество в виде общего формата для привязки ключа и метаданных что иногда бывает очень полезно иметь).

OpenSSL практически не имеет документации по CMS API; Лучшая ссылка на это - cms.c в каталоге apps / исходного кода OpenSSL; код структурирован как одна основная функция из 1000 строк, что немного беспокоит, но он выполняет шифрование с открытым ключом, так что вы, вероятно, можете использовать его в качестве руководства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...