AVR-Crypto-Lib

Aus LaborWiki

Wechseln zu: Navigation, Suche

for an english version of this site go to AVR-Crypto-Lib/en.


Dieses Projekt wird demnächst auf den neuen Labor-Server Vegas wechseln.
Bei diesem Umzug wird die Versionsverwaltung von Subversion auf Bazaar geändert.
Gleichzeitig wird es ein Wiki eigens für dieses Projekt geben.


ACHTUNG: Die Angaben für die Geschwindigkeit diverser Algorithmen scheint fehlerhaft
         zu sein! Verlassen Sie sich nicht auf diese Angaben!

[Bearbeiten] Wo finde ich das

[Bearbeiten] neues repository

bzr: [1]

trac: [2]

nächtlich erstellter tar ball: [3]

[Bearbeiten] altes Repository

SVN: [4]

via Trac (auch svn, aber geeignet zum direkten Browsen):[5]

[Bearbeiten] 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)

[Bearbeiten] 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.

[Bearbeiten] Was soll rein

[Bearbeiten] Symmetrisch

[Bearbeiten] Block

twofish khazad blowfish
idea kasumi misty-1
shacal-2 mars

[Bearbeiten] Stream

seal Turing
Rabbit

[Bearbeiten] Hashes

ripemd whirlpool

[Bearbeiten] Asymmetrisch

DH RSA ElGamal
EC DSA

[Bearbeiten] Was ist da

[Bearbeiten] Blockchiffren

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

[Bearbeiten] Stromchiffren

  • ARCFOUR (RC4 kompatibel)
  • Trivium
  • Grain
  • MUGI
  • Mickey-128 (v2)

[Bearbeiten] Hashes

  • Blake
  • BlueMidnightWish
  • Grøstl
  • MD5
  • SHA-256
  • SHA-1
  • Shabal
  • Skein
  • Twister

[Bearbeiten] Sonstiges

  • HMAC-SHA256 (nach RFC 2104)
  • HMAC-SHA1
  • HMAC-MD5
  • PRNG

[Bearbeiten] Facts

[Bearbeiten] Blockchiffren

Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Taktzyklen (Initialisierung) Taktzyklen (Verschlüsselung) Taktzyklen (Entschlüsselung) Nessie test Angriffe Paper Lizenz / Patente
AES 128 C 2668176 128128 4632 21279 39340 ok
AES 192 C 2668208 192128 5082 25724 47799 ok
AES 256 C 2668240 256128 6161 30174 56253 ok
AES 128 Asm 2070176 128128 2039 2555 6764 unconfirmed
AES 192 Asm 2070208 128128 2267 3039 8164 unconfirmed
AES 256 Asm 2070240 128128 2852 3521 9562 unconfirmed
AES 128-fastdecAsm 2580176 128128 2039 2555 3193 unconfirmed
AES 192-fastdecAsm 2580208 128128 2267 3039 3819 unconfirmed
AES 256-fastdecAsm 2580240 128128 2852 3521 4443 unconfirmed
CamelliaC C 8694 32 128128 10190 43200 44066 unconfirmed
CamelliaC+AsmC+Asm 4088 32 128128 11115 10185 10217 unconfirmed
Cast5 C C 1431275 0 – 12864 137421255013109 unconfirmed
RC5 RC5-32/r/bC16503+(8*#Runden+1) 1 – 2040 79352 7827 7223 unconfirmed US-Patent 5,724,428 expires: 03/03/2015
RC6RC6-32/r/bC278019+(8*#Runden) 1 – 2040128 1399402660025986 unconfirmed
NoekeonCC16160 (16) 128128 260372579826396 unconfirmed
NoekeonAsmAsm7740 (16) 128128 104161019110745 unconfirmed
DESCC26420 5664 284952284977 unconfirmed
TDESCC26420 16864852082852107 unconfirmed
SerpentNon-bitsliceC3064528 1 – 256128537021492884493004 unconfirmed
SerpentNon-bitslice, smallAsm1290528 1 – 256128114844105771105871 unconfirmed
SerpentNon-bitslice, fast Asm1400528 1 – 256128110582101648101743 unconfirmed
SerpentbitsliceC4482528 1 – 2561281020987082770462 unconfirmed
SkipjackCC11440 80643810938450 unconfirmed
PresentCC1514256 806430395105796151624 unconfirmed
SEEDCC 372616 128128 18156906 56427 unconfirmed
SEEDAsmAsm165616 1281281811140111394 unconfirmed
XTEACC8200 1286499129789 unconfirmed
XTEAAsmAsm5040 1286476877688 unconfirmed
ShabeaCC198800 – infinit256 unconfirmed
Threefish-256AsmAsm506864 256256 3754093640912 unconfirmed
Threefish-512AsmAsm506896 512512 5479302093240 unconfirmed
Threefish-1024AsmAsm5068160 10241024 892220606218694 unconfirmed
Threefish-256 C C 1975264 256256 806229592223251 unconfirmed
Threefish-512 C C 1975296 512512 1299453625440279 unconfirmed
Threefish-1024 C C 19752160 10241024 226710330561010445 unconfirmed
Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Taktzyklen (Initialisierung) Taktzyklen (Verschlüsselung) Taktzyklen (Entschlüsselung) Nessie test Angriffe Paper Lizenz / Patente

[Bearbeiten] Stromchiffren

Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Ausgabegröße (Bits) Taktzyklen (Initialisierung) Taktzyklen (Generierung) Angriffe Paper Lizenz / Patente
ARCFOURC C 230258 8 – 20408 64086 56
ARCFOURAsmAsm112258 8 – 20408 6689 42
TriviumC C 424 36 801 775726 665
Grain C C 778 20 801 107366 617
MUGI C C 3500152 128641138864105


[Bearbeiten] Hashes

Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Länge des Hash-Wertes (Bits) Blockgröße (Bits) Taktzyklen (Initialisierung) Taktzyklen (pro Block) Taktzyklen (pro Byte) Taktzyklen (Finalisierung) Angriffe Paper Lizenz / Patente
Blake-28 C C 3774 53 224 512 386 71362 1115.03 71893
Blake-32 C C 3774 53 256 512 387 71362 1115.03 71961
Blake-48 C C 7422 101 384 1024 924 511222 3993.92 519337
Blake-64 C C 7422 101 512 1024 925 511222 3993.92 521812
BlueMidnightWish-224 C C 6857 68 224 512 444 88835 1388.05 179259
BlueMidnightWish-224 asm asm 3274 68 224 512 269 31461 491.58 63502
BlueMidnightWish-256 C C 6857 68 256 512 444 88835 1388.05 179283
BlueMidnightWish-256 asm asm 3274 68 256 512 271 31461 491.58 63535
BlueMidnightWish-384 C C 18305 132 384 1024 2030 384343 3002.68 771581
BlueMidnightWish-384 asm asm 18281 132 384 1024 2030 384343 3002.68 771581
BlueMidnightWish-512 C C 18305 132 512 1024 2031 384343 3002.68 771686
BlueMidnightWish-512 asm asm 21555 132 512 1024 2031 384343 3002.68 771686
Groestl-224 C C 2330 68 224 512 356 522414 8162.72 783700
Groestl-256 C C 2330 68 256 512 356 522414 8162.72 783732
Groestl-384 C C 2330 132 384 1024 706 1460488 11410.06 2190914
Groestl-512 C C 2330 132 512 1024 697 1460488 11410.06 2191042
Keccak-224 C C 3705 206 224 1152 1089 1307954 9083.01 1309167
Keccak-256 C C 3705 206 256 1088 1089 1307866 9616.66 1309070
Keccak-384 C C 3705 206 384 832 1089 1307514 12572.25 1308657
Keccak-512 C C 3705 206 512 576 1089 1307162 18155.03 1308248
MD5 C C 2506 20 128 512 75 42682 666.91 43137
MD5 asm asm 1686 20 128 512 75 18297 285.89 18636
SHA-1 C C 2764 28 160 512 92 75422 1178.47 76333
SHA-1 asm asm 1022 28 160 512 221 37070 579.22 37355
SHA-256 C C 3386 40 256 512 261 177155 2768.05 181300
SHA-256 asm asm 1598 40 256 512 338 50165 783.83 50559
Shabal-192 C C 2312 188 192 512 1582 59463 929.11 231809
Shabal-192 asm asm 1580 188 192 512 1087 13729 214.52 50842
Shabal-224 C C 2312 188 224 512 1582 59463 929.11 231838
Shabal-224 asm asm 1580 188 224 512 1087 13729 214.52 50877
Shabal-256 C C 2312 188 256 512 1582 59463 929.11 231887
Shabal-256 asm asm 1580 188 256 512 1087 13729 214.52 50905
Shabal-384 C C 2312 188 384 512 1582 59463 929.11 232012
Shabal-384 asm asm 1580 188 384 512 1087 13729 214.52 51010
Shabal-512 C C 2312 188 512 512 1582 59463 929.11 232140
Shabal-512 asm asm 1578 188 512 512 1087 13729 214.52 51130
Skein-1024-1024 C C 7130 146 1024 1024 1125066 1122785 8771.76 2246720
Skein-1024-1024 asm asm 3246 146 1024 1024 222289 220215 1720.43 441751
Skein-1024-128 C C 7130 146 128 1024 1125066 1122785 8771.76 2245824
Skein-1024-128 asm asm 2486 146 128 1024 222289 220215 1720.43 440965
Skein-1024-160 C C 7130 146 160 1024 1125066 1122785 8771.76 2245856
Skein-1024-160 asm asm 2486 146 160 1024 222289 220215 1720.43 440993
Skein-1024-224 C C 7130 146 224 1024 1125066 1122785 8771.76 2245920
Skein-1024-224 asm asm 2486 146 224 1024 222289 220215 1720.43 441049
Skein-1024-256 C C 7130 146 256 1024 1125066 1122785 8771.76 2245952
Skein-1024-256 asm asm 2486 146 256 1024 222289 220215 1720.43 441077
Skein-1024-384 C C 7130 146 384 1024 1125066 1122785 8771.76 2246080
Skein-1024-384 asm asm 2486 146 384 1024 222289 220215 1720.43 441189
Skein-1024-512 C C 7130 146 512 1024 1125066 1122785 8771.76 2246208
Skein-1024-512 asm asm 2486 146 512 1024 222289 220215 1720.43 441301
Skein-256-128 C C 4986 50 128 256 234138 232433 7263.53 465587
Skein-256-128 asm asm 2052 50 128 256 39951 38646 1207.69 77910
Skein-256-160 C C 4986 50 160 256 234138 232433 7263.53 465619
Skein-256-160 asm asm 2052 50 160 256 39951 38646 1207.69 77938
Skein-256-224 C C 4986 50 224 256 234138 232433 7263.53 465683
Skein-256-224 asm asm 2052 50 224 256 39951 38646 1207.69 77994
Skein-256-256 C C 4986 50 256 256 234138 232433 7263.53 465715
Skein-256-256 asm asm 2052 50 256 256 39951 38646 1207.69 78024
Skein-256-384 C C 4986 50 384 256 234138 232433 7263.53 698604
Skein-256-384 asm asm 2052 50 384 256 39951 38646 1207.69 117108
Skein-256-512 C C 4408 50 512 256 234138 232433 7263.53 698732
Skein-256-512 asm asm 2052 50 512 256 39951 38646 1207.69 117219
Skein-512-1024 C C 5466 82 1024 512 488243 486346 7599.16 1461354
Skein-512-1024 asm asm 2154 82 1024 512 94064 92505 1445.39 279312
Skein-512-128 C C 5466 82 128 512 488243 486346 7599.16 973266
Skein-512-128 asm asm 2154 82 128 512 94064 92505 1445.39 185599
Skein-512-160 C C 5466 82 160 512 488243 486346 7599.16 973298
Skein-512-160 asm asm 2154 82 160 512 94064 92505 1445.39 185627
Skein-512-224 C C 5466 82 224 512 488243 486346 7599.16 973362
Skein-512-224 asm asm 2154 82 224 512 94064 92505 1445.39 185683
Skein-512-256 C C 5466 82 256 512 488243 486346 7599.16 973394
Skein-512-256 asm asm 1798 82 256 512 94064 92505 1445.39 185711
Skein-512-384 C C 5466 82 384 512 488243 486346 7599.16 973522
Skein-512-384 asm asm 2154 82 384 512 94064 92505 1445.39 185823
Skein-512-512 C C 5466 82 512 512 488243 486346 7599.16 973650
Skein-512-512 asm asm 2154 82 512 512 94064 92505 1445.39 185937
Twister-224 C C 3248 80 224 512 438 241131 3767.67 509591
Twister-224 asm asm 1614 80 224 512 572 164320 2567.50 347463
Twister-256 C C 3248 80 256 512 438 241131 3767.67 509727
Twister-256 asm asm 1614 80 256 512 435 164320 2567.50 347524
Twister-384 C C 3822 144 384 512 783 269721 4214.39 860590
Twister-384 asm asm 2156 144 384 512 776 183120 2861.25 586188
Twister-512 C C 3822 144 512 512 783 269721 4214.39 968288
Twister-512 asm asm 2156 144 512 512 778 183120 2861.25 659715


[Bearbeiten] MACs

Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Schlüssellänge (Bits) Blockgröße (Bits) Taktzyklen (Initialisierung) Taktzyklen (pro Block) Taktzyklen (Finalisierung) Angriffe Paper Lizenz / Patente
HMAC-SHA256 C2712 (incl. SHA256)40 beliebig 512
HMAC-SHA1 C2182 (incl. SHA1)28 beliebig 512
OMAC-Noekeon Asm1184 (incl. Noekeon)16 128 128 95 10533 21474
OMAC-Noekeon C1284 (incl. Noekeon)16 128 128 95 10589 21741


[Bearbeiten] PRNGs

Name Variante Sprache Größe (Flash) (Bytes) Größe (Kontext) (Bytes) Größe (Stack) (Bytes) Blockgröße (Bits) Taktzyklen (Eingabes) Taktzyklen (Ausgabe) Angriffe Paper Lizenz / Patente
Entropium C217464 256
Persönliche Werkzeuge