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 |
| 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 |
| 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 |
| 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 |
– |
| 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 |
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