Tja das sind Fragen
Ich empfehle, und das musst du mit Vorsicht geniesen!, cmCTS und cmCFS weil ich diese selber gebaut habe sie verstehe. Ich emfehle beide da es eben unterschiedliche Anforderungen gibt, zb. Performance. cmCTSx ist im Grunde das Gleiche wie cmCFS8, nur mit dem Unterschied das CTS auf Blockgröße des Ciphers arbeitet und CFS8 auf Bytegröße im Feedback Register. Jo ist ne blöde Namensgebung da ich ja beim cmCFBx und cmCFB8 diesen Fehler nicht gemacht habe.
Der beste Kompromiss wird sein sich auf cmCTSx zu einigen. Dieser arbeitet bei ganzen Datenblöcken auch auf Blockgröße und ist demzufolge circa 16 mal schneller beim AES wie cmCFS8. Sobald ein Datenblock nicht BlockSize Bytes groß ist, wechselt der Cipher automatisch in den cmCFS8 Modus und fängt an damit die restlichen Bytes zu verschlüsseln. Danach befindet sich der Cipher im csPadded Status und kann keine weiteren Datenblöcke verschlüsseln.
Als Cipheralgorithmus gibt es viele zur Auswahl, auch wieder abhängig von den Anforderung. Ich persönlich finde RC4, leicht abgewandelt gut wenn ich zb. für den Palm Handheld meine Kommunikation per
TCP/
IP mit einem Server von mir entwickelt hatte. RC4 nutze ich auch in einigen meiner Bootloader für Mikrokontroller auf AVR oder ARM basis. Einfach weil RC4 leicht zu handhaben ist, da Streamcipher und auf jeder Plattform sehr einfach zu programmieren geht. Gleichs gilt für TEA und XTEA, diese sind super einfach und sehr schnell auf solchen Plattformen zu programmmieren.
Auf PCs bevorzuge ich AES, weil es eben Standard ist und als sicher gilt. Oder IDEA den ich auf Grund der Patente/Lizensen zwar niemals benutze dessen Design ich aber super finde. Als Hash SHA1, manchmal auch SHA256/384 und auch RipeMD aus politischen Gründen da dieser eropäisch ist und nicht amerikanisch. Bendenkt man die lange Zeit herrschende Vorgehensweise der USA bei solchen Verfahren sollte man eigentlich immer misstrauisch sein. Ansonsten noch MD4/5 falls ich bestehende Protokolle die diese Algos. nutzen implementieren muß. Es bleibt dann ja nichts anderes übrig. SCOP finde ich auch noch gut. Und das ist noch mein PMC wenn ich was ganz kompliziert haben möchte. Das ist ein polymorpher Cipher dh. der hat keine feststehende Encryptionfunktion sondern diese wird aus dem Schlüselstrom quasi zur Laufzeit kompiliert. Und das dann aber blockweise, also jeder Datenblock a 16 Bytes wird mit einer eigenen zur Laufzeit auf Grund eines Schlüselstromes komplierten Verschlüsselungsfunktion verschlüsselt. Das hat den Vorteil das zb. bei einer Nachricht mit 256 Bytes insgesamt also 16 verschiedene Verschlüsselungsfunktonen kopiliert werden die jede jeweils bis zu 512 Kb an Code enthält -> macht also 8 MByte an Verschlüsselungfunktionscode und wird einen Cracker auf die Palme bringen. Denn dieser produzierte Maschinencode ist abhängig vom Passwort und den Daten die man verschlüsselt
Ansonsten ist dieses Monster schnarch lahm. Dann habe ich noch einen Cipher entwickelt der die Daten als komplettes Packet verschlüsselt. Im Gegensatz zu heutigen Verfahren die immer in Byteströmen oder Blöcken aus x Bytes arbeiten arbeitet dieser Cipher also auf der kompletten Nachricht als Gesammtes. Das bietet ganz andere Möglichkeiten der kryptographischen Sicherheit, zb. komplette Verwürfelung der gesammten Nachricht, arbeiten mit der Mathematik der Zahlentheorie, dh. die komplette Nachricht wird als super große Zahl betrachtet, und die Benutzung perfekter Komprimierungen zu Beseitigung jedweiger Redundanz. Auch dieses Teil ist schnarch langsam aber dürfte enorm sicher sein. Praktisch gesehen von wenig Relevanz ausser man möchte Hochsicherheitssysteme bauen.
Naja, eben für jeden Anwendungsbereich ein eigener Ansatz je nach Aufgabenstellung. Mit AES+SHA1 macht man nichts falsch.
Gruß Hagen