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
Asymmetrisch
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
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 |
2086 |
20 |
|
128 |
512 |
71 |
41786 |
42358 |
|
|
|
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 |
|
|
|
|
|