Frage

Ich habe die Aufgabe, kleine binäre Nachrichten zu übertragen (1 oder 2 kb lang) zwischen einer Desktop-Anwendung und mobilen Geräten. Die Nachrichten sollten asymmetrisch (RSA zum Beispiel) verschlüsselt werden. Von dem, was ich gelernt habe, sollte man eine Hybride Verschlüsselung für diese Art von Aufgabe verwenden:

  1. Generieren zufällige symmetrische Schlüssel
  2. Verschlüsseln Klartext mit symmetrischen Schlüsseln (unter Verwendung von beispielsweise AES)
  3. Verschlüsseln symmetrische Schlüssel mit einem öffentlichen Schlüssel
  4. Transmit Chiffretext und verschlüsselte symmetrische Schlüssel

Ich möchte nicht ein eigenes Format erfinden für den Chiffretext zu speichern und die verschlüsselten symmetrischen Schlüssel. So stolperte ich über CMS-Standard (Cryptographic Message Syntax). Auf den ersten Blick sieht es genau wie das, was ich brauche. Wenn ich den Standard richtig verstanden bettet sie den Chiffretext und den verschlüsselten symmetrischen Schlüssel sowie Informationen über die verwendeten Algorithmen.

Kann jemand sagen, ob man den CMS-Standard für die skizzierte Aufgabe verwenden sollte? Hat OpenSSL CMS Unterstützung für meine Bedürfnisse ausreichend ist?

Cheers, Christian

War es hilfreich?

Lösung

CMS unterstützt definitiv die Operationssequenz, die Sie suchen. Auf der anderen Seite sowohl die CMS-Format selbst und die OpenSSL API für sie sehr komplex sind.

Eine kleine Falte ist CMS vor allem in Bezug auf die X.509-Zertifikate und nicht als öffentliche Schlüssel arbeitet. Sie könnten mit diesem in Ihrem System umgehen entweder tatsächlich ein PKI Ausrollen oder nur mit selbst signierten Zertifikaten (die um nackten RSA-Schlüssel zu vorbei grundsätzlich gleichwertig sind, haben aber den Vorteil, ein generisches Format für die Bindung der Schlüssel und Metadaten zu sein die manchmal ganz nützlich ist sowieso haben).

OpenSSL hat so gut wie keine Dokumentation der CMS-API; die beste Referenz für das I ist cms.c in dem apps / Verzeichnis der Distribution OpenSSL Quelle finden kann; Der Code wird als eine 1000 Linie Hauptfunktion aufgebaut, die ein wenig störend ist, aber es führt Verschlüsselung mit einem öffentlichen Schlüssel, so dass Sie wahrscheinlich, dass als Führung verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top