AVR-Crypto-Lib: Unterschied zwischen den Versionen
Bg (Diskussion | Beiträge) K (+ sha[1,256]_c speed) |
Bg (Diskussion | Beiträge) |
||
Zeile 13: | Zeile 13: | ||
*noch kleinere Implementierungen von Kryptofunktionen in Assembler (ATmega, gnu-avr-as) | *noch kleinere Implementierungen von Kryptofunktionen in Assembler (ATmega, gnu-avr-as) | ||
*alle Funktionen sind '''reentrant''' (außer den Funktionen des Zufallsgenerators "Entropium") | *alle Funktionen sind '''reentrant''' (außer den Funktionen des Zufallsgenerators "Entropium") | ||
*Lizenz: GPLv3 (nahezu alles) | *Lizenz: GPLv3 (nahezu alles) (andere Lizenz auf Anfrage beim Autor) | ||
==About== | ==About== |
Version vom 26. Juli 2008, 00:00 Uhr
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 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* | 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 | 850 | 0 (16) | 128 | 128 | 10566 | 10340 | 10895 | ||||
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 | 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) | Göße (Stack) (Bytes) | Schlüssellänge (Bits) | Ausgabegröße (Bits) | Zeit (Initialisierung) | Zeit (Generierung) | Angriffe | Paper | Lizenz / Patente |
ARCFOUR | C | C | 230 | 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 | 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) | 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 |