AVR-Crypto-Lib
Aus LaborWiki
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)
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 im unteren KiB Bereich), kann in der Regel nicht eine Standard oder Referenzimplementierung (in C) für den Mikrocontroller genutzt werden. Daher werden hier zum einen 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 (davon gibt es eigentlich schon eine Menge)
- cast6
- twofish
- idea
- kasumi
- misty-1
- shacal-2
Stream
- seal
- A5/1
- Turing
- Rabbit
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 | 0 (16) | 128 | 128 | ||||||||
Noekeon | Asm | Asm | 850 | 0 (16) | 128 | 128 | 10566 | 10340 | 10895 | ||||
DES | C | C | 2480 | 0 | 56 | 64 | |||||||
TDES | C | C | 2480 | 0 | 168 | 64 | 0 | 852082 | 852107 | ||||
Serpent | Non-bitslice | C | 528 | 1 – 256 | 128 | ||||||||
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 | 0 | 128 | 64 | ||||||||
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) | Göße (Stack) (Bytes) | Schlüssellänge (Bits) | Ausgabegröße (Bits) | Zeit (Initialisierung) | Zeit (Generierung) | Angriffe | Paper | Lizenz / Patente |
ARCFOUR | C | C | 258 | 0 – 2040 | 8 | |||||||
ARCFOUR | Asm | Asm | 122 | 258 | 0 – 2040 | 8 | ||||||
Trivium | C | C | 424 | 36 | 80 | 1 | ||||||
Grain | C | C | 778 | 20 | 80 | 1 |
Hashes
Name | Varianten | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Göße (Stack) (Bytes) | Hashlänge (Bits) | Blockgröße (Bits) | Zeit (Initialisierung) | Zeit (pro Block) | Zeit (Finalisierung) | Angriffe | Paper | Lizenz / Patente |
SHA-256 | C | C | 40 | 256 | 512 | ||||||||
SHA-256 | Asm | Asm | 1600 | 40 | 256 | 512 | 314 | 53386 | 53791 | ||||
SHA-1 | C | C | 28 | 160 | 512 | ||||||||
SHA-1 | Asm | Asm | 1070 | 28 | 160 | 512 | 218 | 40330 | 40735 | ||||
MD5 | C | C | 2086 | 20 | 128 | 512 | 71 | 41786 | 42358 |
MACs
Name | Varianten | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Göß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 | 40 | beliebig | 512 | ||||||||
HMAC-SHA1 | C | 2182 | 28 | beliebig | 512 |
PRNGs
Name | Varianten | Sprache | Größe (Flash) (Bytes) | Größe (Kontext) (Bytes) | Göße (Stack) (Bytes) | Blockgröße (Bits) | Zeit (Eingabe) | Zeit (Ausgabe) | Angriffe | Paper | Lizenz / Patente |
Entropium | C | 2174 | 64 | 256 |