W.Ehrhardt: Krypto

Kryptographische Algorithmen

  • In den meisten Situationen sollte Verschlüsselung nur zusammen mit
    Authentizitätscodes und Entschlüsselung mit der entsprechenden Verifikation verwendet werden.
    Fast alle Blockchiffren haben dafür den EAX-Betriebsmodus, und die
    HMAC-Konstruktion kann für beide
    Chiffrearten verwendet werden, siehe auch Poly1305.
  • Sichere Schlüssel sollten aus Passphrasen und „Salz“ berechnet werden
    (z.B. gemäß Standard PKCS#5 mit Funktionen aus der KDF-Unit).
  • Eine einfache Implementation der beiden Anforderungen kann man in den
    FCA-Demoprogrammen finden.

  • Die 128-Bit Blockchiffre Anubis
    (entwickelt von Vincent Rijmen und Paulo Barreto) verwendet Schlüssellängen
    von 128 bis 320 Bits in Schritten von 32 Bits. Anubis war ein NESSIE-Kandidat,
    jedoch keine der abschließenden Empfehlungen. Mein Pascal-Quellcode implementiert
    die sog. tweaked Version mit einer rekursiven Struktur der S-Box.

    Archiv: anubis_2013-01-07.zip


  • Camellia
    ist eine Feistelchiffre, die gemeinsam von NTT (Nippon Telegraph and Telephone)
    und Mitsubishi entwickelt wurde. Sie verwendet 128-Bit Blöcke und
    128, 192 oder 256 Bitschlüssel. Camellia ist eine der NESSIE-Empfehlungen,
    enthalten in ISO/IEC 18033-3 und beschrieben in RFC 3713.
    Feistelcode und S-Boxen verwenden jetzt 32-Bit-Code bzw. -Daten, die Schleifen
    für Ver- und Entschlüsselung sind aufgedröselt („unrolled“)
    und die Geschwindigkeit wurde erhöht: Faktoren 2.4 .. 2.9 bei 32-Bit
    bzw. 1.2 .. 1.4 bei 16-Bit Compilern.

    Archiv: camellia_2015-09-14.zip


  • Serpent
    (entwickelt von Ross Anderson, Eli Biham und Lars Knudsen) war ein
    AES-Finalist. Es ist eine 128-Bit Blockchiffre mit Schlüssellängen
    von 128, 192 oder 256 Bits. Hinweis: Obwohl mein Quellcode OMAC und EAX
    unterstützt, sind diese Betriebsarten nicht mit publizierten Testvektoren
    verifiziert (mangels Referenzwerten).

    Archiv: serpent_2014-08-25.zip


  • Die SEED-Chiffre wurde
    entwickelt von der KISA (Korea Information Security Agency) und benutzt
    128-Bit Blöcke und 128-Bit Schlüssel. SEED ist spezifiziert in ISO/IEC 18033-3
    und im RFC 4269.

    Archiv: seed_2013-01-07.zip


  • Die 256-Bit Blockchiffre SHACAL-2
    basiert auf der Kompressionsfunktion von SHA256, sie unterstützt
    Schlüssellängen von 128 bis 512 Bits. SHACAL-2 wurde entworfen von Helena
    Handschuh und David Naccache und ist die einzige 256-Bit Blockchiffre
    der NESSIE-Empfehlungen.

    Archiv: shacal2_2013-01-07.zip


  • SkipJack
    ist eine kompakte 64-Bit Blockchiffre mit 80-Bit Schlüsseln;
    sie wurde von der NSA entwickelt als (unausgeglichenes) Feistel-Netzwerk mit 32 Runden.
    SkipJack wurde 1998 als Reaktion auf öffentliche Kritik „deklassifiziert“
    und vom NIST veröffentlicht (2002 erfolgte eine
    Klarstellung
    der Spezifikation).

    Archiv: skipjack_2013-01-07.zip


  • XTEA (eXtended TEA)
    ist eine weitere kompakte 64-Bit Blockchiffre mit 128-Bit Schlüsseln.
    XTEA stammt von David Wheeler und Roger Needham.

    Archiv: xtea_2013-01-07.zip
  • poly_32x32 mit 32 x 32 -> 64-Bit-Multiplikationen, standardmäßig benutzt für Compiler mit U/Int64-Datentypen (D4+, FPC),
  • poly_16x16 verwendet 16 x 16 -> 32-Bit-Multiplikationen
    für alle anderen Compiler ohne Int64.
  • Während der Entwicklung habe ich auch poly_8x8 portiert;
    es ist als eine separate Include-Datei enthalten, wird aber
    aktuell nicht benutzt (weil langsamer für alle getesteten CPUs/Compiler).
© 2016 W.Ehrhardt Letzte Änderung 04. Juli 2016
Start CRC/Hash Krypto Sonstiges Info Links English
A E S
Compiler Cyc/Bl-F MB/s-F Cyc/Bl-C MB/s-C
TP5 6302 4.6 5356 5.4
TP55 6321 4.5 6980 4.1
TP6 1436 20.0 1762 16.3
BP7 1493 19.2 1927 14.9
Delphi2 365 78.6 398 72.1
Delphi3 373 76.9 398 72.1
Delphi4 386 74.3 398 72.1
Delphi5 375 76.5 398 72.1
Delphi6 380 75.5 398 72.1
Delphi7 380 75.5 398 72.1
Delphi9 381 76.3 397 72.3
Delphi10 380 75.0 398 72.1
VPC 426 67.3 425 67.3
FPC 2.2 -O3 416 69.0 417 68.8
FPC 1 GoV2 542 53.0 541 53.1
Paket/Compiler CTR CFB OFB ECB CBC OMAC
LibTom117/VC6 13.0 16.3 16.4 12.9 13.9 15.6
LTC117/GCC4.2.1 10.1 14.5 10.6 9.0 9.3 14.2
dcpcrypt2/D6 28.8 32.7 28.6 – 32.7 –
DEC5.1/D6 – 13.9 10.9 10.2 11.8 –
StrSecII/D6 9.0 11.5 9.1 7.7 9.3 –
WE/D3 9.0 8.1 8.1 7.7 9.1 9.1
WE/D6 9.0 8.0 8.0 7.7 8.4 9.1
WE/FPC 2.2 -O3 9.9 9.1 9.1 9.0 11.2 9.0
WE/VPC 2.1 10.4 10.2 10.3 9.3 13.9 12.0
WE/BP7 47.1 41.4 41.4 34.3 51.0 45.3
Fkt/Bit ASM C++ D6 VP FPC2 BP7
Enc/128 295 385 370 425 546 1490
Dec/128 293 376 382 405 551 1545
Enc/192 352 439 434 532 648 1768
Dec/192 346 443 451 476 653 1723
Enc/256 403 497 498 580 751 1948
Dec/256 407 507 518 549 755 1971
Twofish
Paket/Compiler CTR CFB OFB ECB CBC OMAC
LibTom112/VC6 11.9 14.6 14.4 10.3 11.2 14.4
LTC112/GCC4.0.1 13.4 14.9 13.5 12.5 11.7 14.2
dcpcrypt2/D6 21.5 25.4 21.3 – 25.7 –
DEC5.1/D6 – 31.9 28.7 27.7 29.6 –
StrSecII/D6 13.0 14.7 13.0 10.7 12.1 –
WE/D3 14.8 14.0 13.9 13.8 16.0 16.3
WE/D6 15.2 14.0 13.9 13.9 15.6 15.0
WE/FPC2 20.4 20.4 20.3 19.5 21.9 20.1
WE/VPC 17.6 17.3 17.6 17.0 22.9 18.4
WE/BP7 72.0 68.5 67.9 61.6 76.0 72.2
Blowfish
Paket/Compiler CTR CFB OFB ECB CBC OMAC
LibTom112/VC6 12.0 14.1 13.8 11.3 15.6 16.7
LTC112/GCC4.0.1 13.1 12.8 11.8 9.9 10.5 17.8
dcpcrypt2/D6 21.0 28.5 20.8 – 30.3 –
DEC5.1/D6 – 13.7 12.0 12.1 13.7 –
StrSecII/D6 14.1 15.1 14.0 10.9 13.5 –
WE/D3 14.0 12.2 10.8 10.2 12.4 11.5
WE/D6 14.1 12.3 10.8 10.6 12.4 11.4
WE/FPC2 18.2 17.4 18.8 14.5 16.8 16.5
WE/VPC 20.0 21.0 19.2 19.2 26.3 22.6
WE/BP7 64.8 57.1 57.1 40.7 72.8 58.3
Salsa20 / XSalsa20 / ChaCha
Compiler k8 k12 k20 e8 e12 e20 Bem.
ASM P4 F12 – – – 2.54 3.62 5.57 (1)
GCC 4.3.2 -O3 5.71 7.36 9.50 5.44 7.03 9.12 (2)
VC6 SP4 /O2 6.65 8.29 11.59 6.37 8.07 11.37 (2)
Delphi 3 3.57 4.93 7.93 6.16 7.53 10.23 –
Delphi 6 3.57 4.94 7.94 6.25 7.62 10.32 –
Delphi 10 3.57 4.93 7.94 6.12 7.48 10.21 –
VPC 2.1.279 4.40 5.77 8.51 6.89 8.25 10.98 –
FPC 2.2.4 -O3 4.57 5.93 8.66 7.92 9.33 11.92 –
BP7 Real 4.85 6.19 8.88 5.34 6.68 9.37 –
Sosemanuk
Compiler   k [s] k [MB/s]   e [s] e [MB/s]
GCC 4.3.2 -O3 7.253 110.3 10.220 78.3
VC6 SP4 /O2 7.520 106.4 10.930 73.2
Delphi 3 3.022 264.7 6.868 116.5
Delphi 6 3.013 265.5 6.897 116.0
Delphi 10 3.634 220.1 7.565 105.7
VPC 2.1.279 4.613 173.4 8.356 95.7
FPC 2.2.4 -O3 6.284 127.3 11.543 69.3
BP7 Real 5.490 145.7 7.679 104.2
Weitere Blockchiffren
Poly1305
Start CRC/Hash Krypto Sonstiges Info Links English

Vor dem Herunterladen von Software von diesen Seiten bitte diesen
rechtlichen Hinweis beachten.
Letzte Änderungen: CBC, CFB128, CFB8, CTR, ECB, OFBOMAC, CMAC, CCM, EAX, GCM, XTSt_gsp128-F-Ct_aes_wst_gspeedaestmr.cppASMC++komprimierter Tabellent_mkctabCachetiming-Angriffeaes_conf.incFCA-Demoprogrammfcaes256Giorgio Tanifca256Giorgio TaniLetzte Änderung: FZCA-ProgrammAchtungLetzte Änderung: Letzte Änderung: Letzte Salsa-Änderungen: t_salwekxexsalsarXSalsa20ChaChaEddyHawkMartokLetzte Änderungen: t_soseweGCCVC6keLetzte Änderungen: allgemeine Poly1305-Algorithmusdarf nichtkannConditional definesencfilesaltvielleichtresetresetxorroundsinline rotatechacha_xkeysetup Finite State Machinenumber used onceEinmal-ZahltagtagAESTwofishBlowfishSalsa20/XSalsa20/ChaChaSosemanukWeitere BlockchiffrenAnubisCamelliaSEEDSerpentSHACAL-2SkipJackXTEAaes_2015-09-14.ziphrtimeraes_cmpsrc_2006-07-30.zipLinkseitePeaZipfca_2016-05-01.zipaes_2015-09-14.ziputil_JJJJ-MM-TT.zipcrc_hash-JJJJ-MM-TT.zipzlibtf_2013-01-07.ziptf_cmpsrc_2006-06-15.zipbf_2013-12-02.zipbf_cmpsrc_2006-06-15.zipSalsa20eSTREAM-Portfoliosalsa_2015-09-14.zipPRNGSosemanukeSTREAM-PortfolioeSTREAM-Archivesosemanuk_2013-01-07.zipSerpentpoly1305_2016-05-01.zipGithubRFC 7539

Nach oben scrollen