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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.