AES Verschluesselung in C++ programmieren ?



  • Jedenfalls sollte man nicht glauben, dass man mal eben so Krypto auf eine Art und Weise implementieren kann, dass da auch etwas rauskommt, dem man dann genug Vertrauen schenken könnte. Wie gesagt: Man kann da einfach sehr viele Fehler machen. Und selbst die "großen Jungs" machen Fehler. Siehe "OpenSSL Heartbleed". Man sollte sich wahrscheinlich am Besten auf eine handvoll Implementierungen beschränken. Gibt es zu wenige, (z.b. wenn alle OpenSSL benutzen), dann ist ein entdeckter schlimmer Bug quasi ein Supergau. Gibt es zu viele Implementierungen (wenn jeder was selbst bastelt), dann kann die durchschnittliche Implementierungsqualität auch nicht besonders hoch sein, da einfach zu wenige Augen auf eine Implementierung gucken.

    Bei Interesse kann man sich auch das hier mal angucken:
    http://competitions.cr.yp.to/caesar.html
    Da läuft nämlich gerade ein Wettbewerb für ein neues "authenticated encryption"-Verfahren. Vor 2017 wollen die allerdings nach aktuellem Zeitplan keine Sieger küren. Man kann sich aber schon alle Einsendungen angucken. Ich find' ja NORX interessant. Aber bevor da nicht genug Kryptographen drübergeschaut und das Ding auf Herz und Nieren geprüft haben, sollte man das nicht ernsthaft einsetzen. Versteht sich.


  • Mod

    kkaw schrieb:

    zumindest dann nicht, wenn die Implementierung effizient und Seitenkanal-resistent sein soll.

    Keiner hat gesagt, wie sicher oder effizient die Implementierung sein soll, solange sie einfach den korrekten Ciphertext herausspuckt ist sie konform.

    Und effizient macht man das AFAIR mit Lookup-Tables; Das hat cooky hinbekommen, und der hat laut eigener Aussage keine Ahnung von Kryptographie.



  • Arcoth schrieb:

    kkaw schrieb:

    zumindest dann nicht, wenn die Implementierung effizient und Seitenkanal-resistent sein soll.

    Keiner hat gesagt, wie sicher oder effizient die Implementierung sein soll,

    Du, ich zweifele auch ohne diese Bedingungen an der "Kinderleichtigkeit". Ich weiß, dass Du das mit dem Wort nicht so ganz ernst gemeint und ein bisschen übertrieben hast. Aber ich bin mir auch ziemlich sicher, dass Du den Implementierungsaufwand von AES unterschätzt.

    Aber es kommt wohl auch drauf an, ob man den Anspruch hat, auch zu verstehen, was man da tut oder zufrieden damit ist, wenn man Code-Schnippsel von hier und dort aneinander hängt. Ob man die Tabellen selbst berechnen können will, oder sie nur per copy & paste einbauen will. etc. Also ich würde das verstehen wollen.



  • Ist es bei Verschlüsselung nicht sogar so heftig, als dann man noch nicht mal fertige Crypto-Libs selbst einbinden sollte, da man selbst dabei heftige Fehler machen kann. Sollte man nicht eher auf fertig kompilierte Pakete wie GnuPG etc. zurück greifen, wenn man wirklich was für Kunden mit Verschlüsselung macht?

    Ich meine, zum Lernen kann man sich gerne mal an einer Implementierung wagen, aber für den Produktiveinsatz würde ich die Finger von lassen.



  • SwitchIO schrieb:

    Ist es bei Verschlüsselung nicht sogar so heftig, als dann man noch nicht mal fertige Crypto-Libs selbst einbinden sollte, da man selbst dabei heftige Fehler machen kann. Sollte man nicht eher auf fertig kompilierte Pakete wie GnuPG etc. zurück greifen, wenn man wirklich was für Kunden mit Verschlüsselung macht?

    Also, wenn es mit GnuPG lösbar ist, dann wär das ein sinnvoller Weg, ja. Und sonst würde ich sagen, dass es noch auf viele Dinge ankommt ... wie fit du in dem Bereich bist, wie high- oder low-levelig eine Schnittstelle einer Crypto-Bibliothek ist (je highleveliger, desto weniger kannst du falsch machen), ...

    Gefährlich wird's, wenn man sich selbst ein Protokoll überlegt und Low-Level-Bausteine auf eine unübliche Art und Weise mit einander verschaltet.


  • Mod

    Aber ich bin mir auch ziemlich sicher, dass Du den Implementierungsaufwand von AES unterschätzt.

    Ich hab es selbst implementiert, lange her. War wirklich nicht sonderlich schwer, ich hatte nirgends größere Schwierigkeiten; daher sage ich mal, es war leicht.

    Also ich würde das verstehen wollen.

    Macht Sinn.



  • Bist du ein Profi? Ansonsten wäre ich mit solchen Aussage vorsichtig. Eine sichere Verschlüsselung implementiert man nicht mal so eben selbst, habe ich mir sagen lassen.



  • SwitchIO schrieb:

    Bist du ein Profi?

    Bist du einer?

    Gerade auf Anfänger oder Fachfremde wirken Aussagen, die falsch sind, oftmals ziemlich konstantuiert und man lässt sich leicht beeindrucken...



  • Arcoth schrieb:

    kkaw schrieb:

    zumindest dann nicht, wenn die Implementierung effizient und Seitenkanal-resistent sein soll.

    Und effizient macht man das AFAIR mit Lookup-Tables; Das hat cooky hinbekommen

    Ja, aber eben nicht Sidechannel-Resistent, weshalb es für alles außer Dateien auf der eigenen Platte zu verschlüsseln komplett useless ist. Es Sidechannel-Resistent und performant zu schreiben ist sicher keine leichte Aufgabe. Was aber eher eine Schwäche von AES ist, ich denke wäre ihnen das Ausmaß dieses Problems 2001 bewusst gewesen, hätten sie einen anderen Algorithmus gewählt.



  • Hey 🙂 Super Ideen 🙂 und sehr interessant

    Also ich sehe AES ist ein guter Verschlüsselungsalgorithmus
    aber quasi alles was verschlüsseln werden kann , kann auch entschlüsselt werden

    und die Leichtigkeit liegt im Auge des Betrachters...

    aber wenn AES nicht gerade soderlich schwer ist..

    welche Verschlüsselugs Algorithmus würdet ihr vorschlagen ? der am sichersten ist z.B Daten zu verschlüssen ???

    Viele kennen doch das Stuxnet Virus oder ?

    Die Leute von Kaspersky saßen da ziemlich lange dran diesen Virus zu entschlüsseln... im nachhinein war die Entschlüsselung eine eigene Programmiersprache für sich... vllt. so eine Art von Verschlüsselung 🙂



  • wri8ter schrieb:

    welche Verschlüsselugs Algorithmus würdet ihr vorschlagen ? der am sichersten ist z.B Daten zu verschlüssen ???

    Was für Daten? In welchem Kontext? Wenn Du Krypto einsetzen willst, bau sie Dir lieber nicht selbst. Ich dachte erst, Dir ginge es um den Lerneffekt.

    Für Festplattenverschlüsselung ist im Moment der XTS Modus am beliebtesten. Das ist so ein "mode of operation" für Blockchiffren. Und wenn die CPU in Deinem Computer eine Hardwarebeschleunigung für AES hat, dann solltest Du sie auch nutzen. Wenn Du dem Hersteller Deiner CPU nicht vertraust, hast Du sowieso verloren. Ich nutze keine Festplatten-Vollverschlüsselung, weil mir das auf meinem Laptop zu lahm wäre (Ich habe keine Hardwarebeschleunigung für AES). Ich nutze stattdessen ecryptfs und encfs und verschlüssele selektiv.

    Für Emails empfehle ich dir GnuPG (und ggf ein entsprechendes Plugin, um Dein Mail-Programm mit GnuPG zu "verknoten").

    Für Instant Messaging empfehle ich Dir das XMPP-Protokoll in Kombination mit OTR (off-the-record). Das kriegst Du auch über Xabber auf einem Android-Handy zum laufen.

    Für "mobile messaging", wo man auch mal eine verschlüsselte Nachricht verschicken können will, ohne dass der andere online sein muss, empfehle ich Dir TextSecure.

    Es gibt bei diesen Anwendungsfällen zumindest für einen Anfänger keinen guten Grund, das Rad neu zu erfinden.

    Wenn dich die Thematik interessiert, schau mal, ob in Deiner Nähe vielleicht 'ne Cryptoparty veranstaltet wird. Wenn Du Bock auf technische Details hast, schau Dir die Quellen der oben genannten Projekte an oder besorg Dir ein schlaues Buch zum Thema.

    wri8ter schrieb:

    [...] Virus [...]

    Die beste Krypto hilft Dir dann natürlich nicht viel, wenn dein Gerät kompromitiert wurde und du darauf Daten ver/entschlüsselst.


  • Mod

    Ja, aber eben nicht Sidechannel-Resistent

    Was aber wiederum irrelevant ist, solange wir uns darauf beschränken lediglich die Qualität des Algorithmus zu beurteilen. Ergebnis und Geschwindigkeit.

    Eine sichere Implementierung hat sicherlich noch kein Hobby-Programmierer gemacht, daran sitzen Experten-Teams.



  • Skym0sh0 schrieb:

    SwitchIO schrieb:

    Bist du ein Profi?

    Bist du einer?

    Gerade auf Anfänger oder Fachfremde wirken Aussagen, die falsch sind, oftmals ziemlich konstantuiert und man lässt sich leicht beeindrucken...

    Nein, ich bin kein Profi, was ist denn falsch an meiner Aussage?


Anmelden zum Antworten