Forum: Projekte & Code Library für Verschlüsselung mit chacha20-poly1305


von drama (Gast)


Angehängte Dateien:

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

von greg (Gast)


Lesenswert?

> für Fragen bin ich natürlich offen. :)

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

von drama (Gast)


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.

von drama (Gast)


Lesenswert?

Mit Gemurkse meine ich übrigens sowas [1] und dann noch solche Sachen 
wie Block-Cipher im ECB-Mode verwenden. Absolut unbrauchbar, wird aber 
immer noch häufig gemacht. :( Oder schlichtweg das Fehlen von 
Authentifikation, usw.

[1] Beitrag "Verschlüsselung- kann man das so machen?"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.