Library für Verschlüsselung mit chacha20-poly1305

Gast #3975630
Lesenswert?

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
Angehängte Dateien:
Gast #3975746
Lesenswert?

greg schrieb:
> Warum sollten wir davon ausgehen dass das hier kein herumgemurkse ist?
> Basiert der code auf libsodium/...?

Naja, ich dachte das wäre schon klar. Es werden bereits etablierte 
Standard verwendet. Die Implementierung dieser ist natürlich getestet 
(siehe chachapoly_test). Der Code für chacha20 und poly1305 basiert 
darüber hinaus auf bekannten Referenzimplementierungen, ich habe nur 
einige Optimierungen eingebracht und die Portabilität verbessert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren