Question

J'ai la tâche de transférer des petits messages binaires (1 ou 2 kb de long) entre une application de bureau et les appareils mobiles. Les messages doivent être chiffrés asymétriquement (RSA par exemple). D'après ce que j'ai appris il faut utiliser un système de chiffrement hybride pour ce genre de tâche:

  1. Générer clé symétrique aléatoire
  2. Chiffrer texte brut avec clé symétrique (en utilisant AES par exemple)
  3. Chiffrer clé symétrique avec la clé publique
  4. Transmettre un texte chiffré et la clé symétrique cryptée

Je voudrais inventer un pas propre format pour stocker le texte chiffré et la clé symétrique cryptée. Donc, je suis tombé sur standard CMS (syntaxe des messages Cryptographic). Au premier abord, il ressemble exactement à ce que je dois. Si je comprends bien la norme correctement, il intègre le texte chiffré et la clé symétrique cryptée, ainsi que des informations sur les algorithmes utilisés.

Quelqu'un peut-il dire si on doit utiliser la norme CMS pour la tâche décrite? Est-ce que le soutien CMS OpenSSL est suffisant pour mes besoins?

Cheers, Christian

Était-ce utile?

La solution

CMS supporte définitivement la séquence d'opérations que vous cherchez. En revanche, à la fois le format CMS lui-même et l'API OpenSSL pour elle sont assez complexes.

Un détail mineur est CMS fonctionne la plupart du temps en termes de certificats X.509 plutôt que les clés publiques. Vous pouvez traiter dans votre système, soit en roulant en fait une infrastructure à clé publique, ou tout simplement d'utiliser des certificats auto-signés (qui sont essentiellement équivalents à passer des clés RSA autour de nu, mais qui ont l'avantage d'être un format générique pour lier la clé et métadonnées ce qui est parfois très utile d'avoir de toute façon).

OpenSSL

a côté aucune documentation de l'API CMS; la meilleure référence pour ce que je pourrais trouver est cms.c dans les applications / de la distribution source OpenSSL; le code est structuré comme une fonction principale 1000 de la ligne, ce qui est un peu inquiétant, mais il ne fonctionne chiffrement avec une clé publique de sorte que vous pouvez probablement l'utiliser comme un guide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top