Gast
#3975630
Moin, Verschlüsselung taucht hier ja immer mal wieder als Thema auf. Es ist komplex, daher kann man viel falsch machen. Dauernd wird da irgendwie herumgemurkst. Halbgare und offensichtlich unsichere Lösungen scheinen an der Tagesordnung zu sein. Das muss aber nicht sein! Ich habe (zuerst für eigene Zwecke) eine Library zusammengestellt, die folgende Eigenschaften hat: - Symmetrische Verschlüsselung (chacha20) mit 128/256 Bit Keys - One-Time-Authentification/MAC (poly1305) - Kombiniert als AEAD (authenticated encryption with associated data) - Die AEAD-Konstruktion ist chacha20-poly1305 nach IETF draft [1] - Sehr schnell (deutlich schneller als AES128-GCM o.ä.) - Kleine Codegröße (ca 3 KB auf Cortex-M3 mit gcc 4.9 und -Os) - Kann auch für Verschlüsselung ohne Authentifizierung oder Authentifizierung ohne Verschlüsselung genutzt werden Kurz: die Library ermöglicht es mit einem einfachen Interface, die Vertraulichkeit, Integrität und Authentizität von Nachrichten inkl. Metadaten/Header zu sichern. chacha20-poly1305 ist eine recht neue Primitive der Kryptographie, wird aber bereits für TLS/SSL, SSH, libsodium u.a. [2] intensiv genutzt. Durch die Schnelligkeit und geringe Codegröße ist chacha20-poly1305 m.M.n. für eingebette Systeme ideal. Eine Einführung in AEAD werde ich hier jetzt nicht geben, aber als kleinen Hinweis möchte ich noch anbringen, dass es für die Sicherheit essenziell ist, dass die Nonce [3] für jede verschlüsselte Nachricht einmalig ist. Das grundsätzliche Interface ist grob in chachapoly.c dokumentiert und für Fragen bin ich natürlich offen. :) [1] https://tools.ietf.org/html/draft-agl-tls-chacha20poly1305-04 [2] http://googleonlinesecurity.blogspot.co.uk/2014/04/speeding-up-and-strengthening-https.html [3] https://en.wikipedia.org/wiki/Cryptographic_nonce