AVR-Crypto-Lib

Aus LaborWiki
Wechseln zu: Navigation, Suche
UC-Crypto-logo.png

for an english version of this site go to Crypto-avr-lib/en.

Wo finde ich das

SVN: [1]

via Track (auch svn, aber geeignet zum direkten Browsen):[2]

Short Facts

  • kleine Implementierungen von Kryptofunktionen in C (fast alle Mikrocontroller)
  • noch kleinere Implementierungen von Kryptofunktionen in Assembler (ATmega, gnu-avr-as)
  • alle Funktionen sind reentrant (außer den Funktionen des Zufallsgenerators "Entropium")
  • Lizenz: GPLv3 (nahezu alles) (andere Lizenz auf Anfrage beim Autor)

About

Die crypto-avr-lib stellt ein Reihe kryptographischer Funktionen für Atmels AVR Mikrocontroller zur Verfügung. Aufgrund der besonderen Begrenzungen in Mikrocontrollern (sehr wenig Speicher, sowohl RAM als auch Flash bewegen sich je nach Controller im Byte- oder unteren KiB-Bereich) kann in der Regel keine Standard- oder Referenzimplementierung (in C) für den Mikrocontroller genutzt werden. Daher werden hier sowohl an die Anforderungen angepasste C Implementierungen zur Verfügung gestellt (die sich auch leicht auf andere Systeme portieren lassen) wie auch optimierte Assembler-Implementierungen.

Was soll rein

Symmetrisch

Block

aes* cast6 twofish
idea kasumi misty-1
shacal-2 E2 mars

*=(davon gibt es eigentlich schon eine Menge)

Stream

seal Turing
Rabbit mickey-128

Hashes

  • ripemd
  • whirlpool

Asymmetrisch

DH RSA ElGamal
EC DSA

Was ist da

Symmetrisch

Block

  • XTEA
  • CAST5
  • Camellia
  • Skipjack
  • Noekeon
  • RC5
  • RC6
  • SEED
  • DES
  • TDES (aka EDE-DES, 3DES)
  • SHABEA
  • Serpent
  • Present

Stream

  • ARCFOUR (RC4 kompatibel)
  • Trivium
  • Grain

Asymmetrisch

Hashes

  • SHA-256
  • SHA-1
  • MD5

Sonstiges

  • HMAC-SHA256 (nach RFC 2104)
  • PRNG

Facts

Blockchiffren

Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Zeit (Initialisierung) Zeit (Verschlüsselung) Zeit (Entschlüsselung) Angriffe Paper Lizenz / Patente
Camellia C C 32 128 128
Camellia C+Asm C+Asm 5803 32 128 128
Cast5 C C 14128 75 0 – 128 64 13742 12550 13109
RC5 RC5-32/r/b C 1524 3+(8*#Runden+1) 1 – 2040 64 79352 7827 7223
RC6 RC6-32/r/b C 2656 19+(8*#Runden) 1 – 2040 128 139940 26600 25986
Noekeon C C 1438 0 (16) 128 128 26037 25798 26396
Noekeon Asm Asm 774 0 (16) 128 128 10416 10191 10745
DES C C 2480 0 56 64 284952 284977
TDES C C 2480 0 168 64 852082 852107
Serpent Non-bitslice C 2862 528 1 – 256 128 537021 492884 493004
Serpent Non-bitslice, small Asm 1290 528 1 – 256 128 114844 105771 105871
Serpent Non-bitslice, fast Asm 1400 528 1 – 256 128 110582 101648 101743
Serpent bitslice C 4498 528 1 – 256 128 102098 70827 70462
Skipjack C C 1244 0 80 64 38109 38450
Present C C 1514 256 80 64 30395 105796 151624
SEED C C 16 128 128
SEED C+Asm C+Asm 4052 16 128 128 129 50086 49808
XTEA C C 754 0 128 64 9912 9789
XTEA Asm Asm 504 0 128 64 7687 7688
Shabea C C 2020 0 0 – infinit 256
Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Zeit (Initialisierung) Zeit (Verschlüsselung) Zeit (Entschlüsselung) Angriffe Paper Lizenz / Patente

Stromchiffren

Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Ausgabegröße (Bits) Zeit (Initialisierung) Zeit (Generierung) Angriffe Paper Lizenz / Patente
ARCFOUR C C 230 258 8 – 2040 8 64086 56
ARCFOUR Asm Asm 112 258 8 – 2040 8 6689 42
Trivium C C 424 36 80 1 775726 665
Grain C C 778 20 80 1 107366 617

Hashes

Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Hashlänge (Bits) Blockgröße (Bits) Zeit (Initialisierung) Zeit (pro Block) Zeit (Finalisierung) Angriffe Paper Lizenz / Patente
SHA-256 C C 3428 40 256 512 257 179184 183576
SHA-256 Asm Asm 1600 40 256 512 314 53386 53791
SHA-1 C C 2774 28 160 512 91 81344 85736
SHA-1 Asm Asm 1070 28 160 512 218 40330 40735
MD5 C C 2494 20 128 512 123 41454 42076
MD5 Asm Asm 1686 20 128 512 123 18030 18497

MACs

Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Zeit (Initialisierung) Zeit (pro Block) Zeit (Finalisierung) Angriffe Paper Lizenz / Patente
HMAC-SHA256 C 2712 (incl. SHA256) 40 beliebig 512
HMAC-SHA1 C 2182 (incl. SHA1) 28 beliebig 512
OMAC-Noekeon Asm 1184 (incl. Noekeon) 16 128 128 95 10533 21474
OMAC-Noekeon C 1284 (incl. Noekeon) 16 128 128 95 10589 21741

PRNGs

Name Varianten Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Blockgröße (Bits) Zeit (Eingabe) Zeit (Ausgabe) Angriffe Paper Lizenz / Patente
Entropium C 2174 64 256