AVR-Crypto-Lib/en

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

Eine deutsche Version dieses Artikels ist unter AVR-Crypto-Lib verfügbar.


IMPORTANT: This page is quite out of date. It is provided for rough orientation. A lot of things happened since this page was updated. Please be patient, we do our best to update this page in the near future to provide you with the latest information --Bg 23:53, 25. Mär. 2012 (CEST)



Where can I find it?[Bearbeiten]

repository[Bearbeiten]

git: git clone https://git.cryptolib.org/avr-crypto-lib.git

via trac :https://trac.cryptolib.org/avr-crypto-lib/browser

Short Facts[Bearbeiten]

  • small implementation of cryptographic algorithms in C (quite portable)
  • even smaller implementations in assembly language (ATmega, gnu-avr-as)
  • all functions are reentrant (except functions of the PRNG "Entopium")
  • license: GPLv3 (nearly everything) (for different licensing contact the author)

About[Bearbeiten]

Crypto-avr-lib is a set of implementations of different cryptographic primitives. Due to the special limitations of microcontrollers (very little space, RAM and flash are ranging from a few bytes to a few KiB) reference or "normal" optimised implementations are not usable. Therefore we try to provide special implementations which respect the extreme limited resources of microcontroller applications.

What should be done[Bearbeiten]

symmetric[Bearbeiten]

block blowfish cast6 twofish idea kasumi
stream seal A5/1 Turing Rabbit
hashes ripemd

What we have[Bearbeiten]

blockciphers[Bearbeiten]

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

streamciphers[Bearbeiten]

  • ARCFOUR (RC4 compatible)
  • Trivium
  • Grain
  • MUGI

hashes[Bearbeiten]

  • Blake
  • BlueMidnightWish
  • Grøstl
  • MD5
  • SHA-256
  • SHA-1
  • SHA-3 (Keccak)
  • SHABAL
  • Skein
  • Twister
  • Whirlpool

others[Bearbeiten]

Facts[Bearbeiten]

Blockchiphers[Bearbeiten]

Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Keysize (Bits) Blockize (Bits) Cycles (Initialisation) Cycles (Encryption) Cycles (Decryption) Nessie test Attacs Paper License / Patents
AES 128 C 2668 176 128 128 4632 21279 39340 ok
AES 192 C 2668 208 192 128 5082 25724 47799 ok
AES 256 C 2668 240 256 128 6161 30174 56253 ok
AES 128 Asm 2070 176 128 128 2039 2555 6764 unconfirmed
AES 192 Asm 2070 208 128 128 2267 3039 8164 unconfirmed
AES 256 Asm 2070 240 128 128 2852 3521 9562 unconfirmed
AES 128-fastdec Asm 2580 176 128 128 2039 2555 3193 unconfirmed
AES 192-fastdec Asm 2580 208 128 128 2267 3039 3819 unconfirmed
AES 256-fastdec Asm 2580 240 128 128 2852 3521 4443 unconfirmed
Camellia C C 8694 32 128 128 10190 43200 44066 unconfirmed
Camellia C+Asm C+Asm 4088 32 128 128 11115 10185 10217 unconfirmed
Cast5 C C 14312 75 0 – 128 64 13742 12550 13109 unconfirmed
RC5 RC5-32/r/b C 1650 3+(8*#rounds+1) 1 – 2040 79352 7827 7223 unconfirmed US-Patent 5,724,428 expires: 03/03/2015
RC6 RC6-32/r/b C 2780 19+(8*#rounds) 1 – 2040 128 139940 26600 25986 unconfirmed
Noekeon C C 1616 0 (16) 128 128 26037 25798 26396 unconfirmed
Noekeon Asm Asm 774 0 (16) 128 128 10416 10191 10745 unconfirmed
DES C C 2642 0 56 64 284952 284977 unconfirmed
TDES C C 2642 0 168 64 852082 852107 unconfirmed
Serpent Non-bitslice C 3064 528 1 – 256 128 537021 492884 493004 unconfirmed
Serpent Non-bitslice, small Asm 1290 528 1 – 256 128 114844 105771 105871 unconfirmed
Serpent Non-bitslice, fast Asm 1400 528 1 – 256 128 110582 101648 101743 unconfirmed
Serpent bitslice C 4482 528 1 – 256 128 102098 70827 70462 unconfirmed
Skipjack C C 1144 0 80 64 38109 38450 unconfirmed
Present C C 1514 256 80 64 30395 105796 151624 unconfirmed
SEED C C 3726 16 128 128 181 56906 56427 unconfirmed
SEED Asm Asm 1656 16 128 128 181 11401 11394 unconfirmed
XTEA C C 820 0 128 64 9912 9789 unconfirmed
XTEA Asm Asm 504 0 128 64 7687 7688 unconfirmed
Shabea C C 1988 0 0 – infinit 256 unconfirmed
Threefish-256 Asm Asm 5068 64 256 256 375 40936 40912 unconfirmed
Threefish-512 Asm Asm 5068 96 512 512 547 93020 93240 unconfirmed
Threefish-1024 Asm Asm 5068 160 1024 1024 892 220606 218694 unconfirmed
Threefish-256 C C 19752 64 256 256 806 229592 223251 unconfirmed
Threefish-512 C C 19752 96 512 512 1299 453625 440279 unconfirmed
Threefish-1024 C C 19752 160 1024 1024 2267 1033056 1010445 unconfirmed
Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Keysize (Bits) Blockize (Bits) Cycles (Initialisation) Cycles (Encryption) Cycles (Decryption) Nessie test Attacs Paper License / Patents


Streamciphers[Bearbeiten]

Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Keysize (Bits) Output size (Bits) Cycles (Initialisation) Cycles (Generation) Attacs Paper License / Patents
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
MUGI C C 3500 152 128 64 113886 4105


Hashes[Bearbeiten]

Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Hashsize (Bits) Blockize (Bits) Cycles (Initialisation) Cycles (per block) Cycles (per byte) Cycles (Finalisation) Attacs Paper License / Patents
Blake-28 C C 3508 53 192 224 512 343 71340 1114.69 71907
Blake-32 C C 6684 53 192 256 512 344 71340 1114.69 71975
Blake-48 C C 3508 101 376 384 1024 884 510637 3989.35 518644
Blake-64 C C 6684 101 376 512 1024 885 510637 3989.35 521119
BlueMidnightWish-224 size C 4478 68 288 224 512 404 109548 1711.69 220709
BlueMidnightWish-224 C C 6721 68 470 224 512 404 88759 1386.86 179107
BlueMidnightWish-224 seperate asm 1536 68 246 224 512 509 52979 827.80 106634
BlueMidnightWish-224 tiny asm 1590 68 246 224 512 509 52979 827.80 106640
BlueMidnightWish-224 asm asm 3274 68 250 224 512 229 31421 490.95 63422
BlueMidnightWish-256 size C 4478 68 288 256 512 404 109548 1711.69 220737
BlueMidnightWish-256 C C 6721 68 470 256 512 404 88759 1386.86 179131
BlueMidnightWish-256 seperate asm 1536 68 246 256 512 513 52979 827.80 106659
BlueMidnightWish-256 tiny asm 1590 68 246 256 512 515 52979 827.80 106659
BlueMidnightWish-256 asm asm 3274 68 250 256 512 231 31421 490.95 63455
BlueMidnightWish-384 size C 17729 132 914 384 1024 2004 382079 2984.99 767017
BlueMidnightWish-384 C C 17729 132 914 384 1024 2004 382079 2984.99 767017
BlueMidnightWish-512 size C 17729 132 914 512 1024 2005 382079 2984.99 767125
BlueMidnightWish-512 C C 17729 132 914 512 1024 2005 382079 2984.99 767125
CubeHash-224 C C 1502 130 76 224 256 635986 64027 2000.84 700639
CubeHash-256 C C 1502 130 76 256 256 635986 64027 2000.84 700664
CubeHash-384 C C 1502 130 76 384 256 635986 64027 2000.84 700802
CubeHash-512 C C 1502 130 76 512 256 635986 64027 2000.84 700934
ECHO-224 C C 4324 90 585 224 1536 450 222446 1158.57 223610
ECHO-256 C C 4324 90 585 256 1536 454 222446 1158.57 223635
ECHO-384 C C 4324 154 521 384 1024 841 275324 2150.97 276329
ECHO-512 C C 4324 154 521 512 1024 828 275324 2150.97 276441
Groestl-224 C C 2234 68 250 224 512 323 522120 8158.12 783256
Groestl-256 C C 2234 68 250 256 512 323 522120 8158.12 783289
Groestl-384 C C 2330 132 450 384 1024 662 1459656 11403.56 2189646
Groestl-512 C C 2330 132 450 512 1024 661 1459656 11403.56 2189774
Keccak-224 C C 2889 206 412 224 1152 1049 642795 4463.85 643979
Keccak-256 C C 2889 206 404 256 1088 1049 642707 4725.79 643875
Keccak-384 C C 2889 206 372 384 832 1049 642355 6176.49 643456
Keccak-512 C C 2889 206 340 512 576 1049 642003 8916.71 643043
MD5 C C 2506 20 172 128 512 32 42642 666.28 43057
MD5 asm asm 1686 20 117 128 512 32 18258 285.28 18556
SHA-1 C C 2526 28 225 160 512 52 75766 1183.84 76762
SHA-1 asm asm 1022 28 170 160 512 181 37030 578.59 37275
SHA-256 C C 3240 40 405 256 512 225 177455 2772.73 181789
SHA-256 asm asm 1598 40 376 256 512 298 50125 783.20 50479
Shabal-192 C C 2312 188 106 192 512 1549 59423 928.48 231621
Shabal-192 asm asm 1580 188 90 192 512 1047 13689 213.89 50762
Shabal-224 C C 2312 188 106 224 512 1549 59423 928.48 231650
Shabal-224 asm asm 1580 188 90 224 512 1047 13689 213.89 50793
Shabal-256 C C 2312 188 106 256 512 1549 59423 928.48 231699
Shabal-256 asm asm 1580 188 90 256 512 1047 13689 213.89 50825
Shabal-384 C C 2312 188 106 384 512 1549 59423 928.48 231824
Shabal-384 asm asm 1580 188 90 384 512 1047 13689 213.89 50930
Shabal-512 C C 2312 188 106 512 512 1549 59423 928.48 231952
Shabal-512 asm asm 1578 188 90 512 512 1047 13689 213.89 51050
Skein-1024-1024 C C 7130 146 643 1024 1024 1124414 1122133 8766.66 2245416
Skein-1024-1024 asm asm 2486 146 487 1024 1024 222141 220067 1719.27 441455
Skein-1024-128 C C 7130 146 643 128 1024 1124414 1122133 8766.66 2244520
Skein-1024-128 asm asm 2486 146 487 128 1024 222141 220067 1719.27 440669
Skein-1024-160 C C 7130 146 643 160 1024 1124414 1122133 8766.66 2244552
Skein-1024-160 asm asm 2486 146 487 160 1024 222141 220067 1719.27 440697
Skein-1024-224 C C 7130 146 643 224 1024 1124414 1122133 8766.66 2244616
Skein-1024-224 asm asm 2486 146 487 224 1024 222141 220067 1719.27 440753
Skein-1024-256 C C 7130 146 643 256 1024 1124414 1122133 8766.66 2244648
Skein-1024-256 asm asm 2486 146 487 256 1024 222141 220067 1719.27 440781
Skein-1024-384 C C 7130 146 643 384 1024 1124414 1122133 8766.66 2244776
Skein-1024-384 asm asm 2486 146 487 384 1024 222141 220067 1719.27 440893
Skein-1024-512 C C 7130 146 643 512 1024 1124414 1122133 8766.66 2244904
Skein-1024-512 asm asm 2486 146 487 512 1024 222141 220067 1719.27 441005
Skein-256-128 C C 4986 50 281 128 256 233990 232285 7258.91 465291
Skein-256-128 asm asm 2052 50 194 128 256 39911 38606 1206.44 77830
Skein-256-160 C C 4986 50 281 160 256 233990 232285 7258.91 465323
Skein-256-160 asm asm 2052 50 194 160 256 39911 38606 1206.44 77858
Skein-256-224 C C 4986 50 281 224 256 233990 232285 7258.91 465387
Skein-256-224 asm asm 2052 50 194 224 256 39911 38606 1206.44 77914
Skein-256-256 C C 4986 50 281 256 256 233990 232285 7258.91 465419
Skein-256-256 asm asm 2052 50 194 256 256 39911 38606 1206.44 77944
Skein-256-384 C C 4986 50 281 384 256 233990 232285 7258.91 698164
Skein-256-384 asm asm 2052 50 194 384 256 39911 38606 1206.44 116992
Skein-256-512 C C 4986 50 281 512 256 233990 232285 7258.91 698292
Skein-256-512 asm asm 2052 50 194 512 256 39911 38606 1206.44 117103
Skein-512-1024 C C 5466 82 399 1024 512 487951 486054 7594.59 1460518
Skein-512-1024 asm asm 2154 82 291 1024 512 93984 92429 1444.20 279124
Skein-512-128 C C 5466 82 399 128 512 487951 486054 7594.59 972682
Skein-512-128 asm asm 2154 82 291 128 512 93984 92429 1444.20 185447
Skein-512-160 C C 5466 82 399 160 512 487951 486054 7594.59 972714
Skein-512-160 asm asm 2154 82 291 160 512 93984 92429 1444.20 185475
Skein-512-224 C C 5466 82 399 224 512 487951 486054 7594.59 972778
Skein-512-224 asm asm 2154 82 291 224 512 93984 92429 1444.20 185531
Skein-512-256 C C 5466 82 399 256 512 487951 486054 7594.59 972810
Skein-512-256 asm asm 2154 82 291 256 512 93984 92429 1444.20 185559
Skein-512-384 C C 5466 82 399 384 512 487951 486054 7594.59 972938
Skein-512-384 asm asm 2154 82 291 384 512 93984 92429 1444.20 185671
Skein-512-512 C C 5466 82 399 512 512 487951 486054 7594.59 973066
Skein-512-512 asm asm 2154 82 291 512 512 93984 92429 1444.20 185785
Twister-224 C C 3248 80 250 224 512 398 240983 3765.36 509259
Twister-224 asm asm 1614 80 2566 224 512 517 164208 2565.75 347203
Twister-256 C C 3248 80 250 256 512 398 240983 3765.36 509395
Twister-256 asm asm 1614 80 228 256 512 395 164208 2565.75 347264
Twister-384 C C 3822 144 252 384 512 715 269537 4211.52 860078
Twister-384 asm asm 2156 144 228 384 512 722 183008 2859.50 585820
Twister-512 C C 3822 144 252 512 512 715 269537 4211.52 967704
Twister-512 asm asm 2156 144 228 512 512 723 183008 2859.50 659311


MACs[Bearbeiten]

Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Keysize (Bits) Blockize (Bits) Cycles (Initialisation) Cycles (per block) Cycles (Finalisation) Attacs Paper License / Patents
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[Bearbeiten]

Name Variant Language Size (Flash) (Bytes) Size (Context) (Bytes) Size (Stack) (Bytes) Blockize (Bits) Cycles (Input) Cycles (Output) Attacs Paper License / Patents
Entropium C 2174 64 256