Wie schwer ist es eine AES-Verschlüsselung zu programmieren?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Also einmal vorweg: Wenn du eine AES-Verschlüsselung für eine eigene Anwendung produktiv nutzen möchtest, dann nimm dafür eine etablierte Programmbibliothek, die das Ganze bereits implementiert. Das ist sicherer.

Für Python gibt es cryptography oder PyCryptodome. Für C++ könnte man auf libsodium zurückgreifen.

Um so eine Verschlüsselung selbst zu entwickeln, müsstest du dich mit folgenden Themen beschäftigen:

  • Den Grundlagen einer Programmiersprache: Variablen, Operatoren (speziell Bitoperatoren), Kontroll- und Datenstrukturen (Array, Liste) wären das Mindestmaß
  • Binärlogik (Bits, Bytes, Bitoperationen)
  • Matrizen- und modulare Arithmetik (speziell Galois-Feld-Berechnungen)
  • Ein paar Kryptographiegrundlagen (ein paar Stichworte: Betriebsmodi, Padding, Blockverschlüsselung)
  • AES selbst und einem dazugehörigen, sicheren Betriebsmodi (siehe AEAD: CCM oder GCM)
Aber wie kompliziert ist es wirklich, den Algorithmus zu verstehen (...)

Du musst kein Genie sein, um das Prinzip verstehen zu können. Es braucht halt Einarbeitung / Recherche und natürlich Motivation/Geduld. Ich denke, dass es genügend Quellen zu dem Thema geben dürfte. Ob nun in Buchform oder online.

(...) und richtig zu programmieren?

Das ist etwas schwerer, denn wenn du eine Operation falsch umsetzt, wird die gesamte Anwendung ja unbrauchbar. Noch härter wird es, sich vor Seitenkanalangriffen zu schützen. Beispielsweise können Angreifer anhand der Laufzeit Rückschlüsse auf den Schlüssel ziehen. Weitere solcher Angriffsmöglichkeiten werden unter anderem auf Wikipedia gelistet.

Muss man dafür viel Mathe können oder braucht man einfach nur Programmiererfahrung?

Siehe oben. Du musst Mathematik dafür nicht explizit studieren, aber du solltest zumindest mit den Grundlagen, die du in der Schule gelernt haben dürftest, nicht extrem fremdeln.

Und wie lange müsste ich ungefähr üben, um so eine Verschlüsselung selbst schreiben zu können, die auch sicher funktioniert?

Rechne in Monaten für Einarbeitung und Implementation, genauer lässt es sich meiner Meinung nicht abschätzen. Es sind übliche Faktoren (z.B. Lerngeschwindigkeit, Vorkenntnisse), die eine große Rolle spielen. Wobei ich dir ebenso noch den Rat mitgeben würde, dir keinen Zeitdruck dahinter aufzubauen. Durch irgendwelche Themen zu hetzen, bringt dich nicht weiter.

Ich schließe mich den anderen an.

Der Algorithmus selbst ist bekannt. Du musst ihn halt in Programmiersprache umsetzen.

Wenn du dieses zu Lernzwecken oder für Experimente tun möchtest - nur zu. Ist ein schönes Thema zum Üben.

Möchtest du AES aber irgendwo ernsthaft reinimplementieren, das später wirklich eingesetzt und sicherheitsrelevant ist, nimm bitte unbedingt eine fertige Bibliothek dafür, die gut gepflegt wird - Don't reinvent the square wheel - Dir gibt am Ende keiner einen Orden, dass du das low-level in C zusammenfummelst o.ä. und die vertane Zeit gibt dir keiner zurück.

Sicherheitskritische Teile baut man nicht selber, wenn gute Bibliotheken verfügbar sind. Wenn in deinem Auto die Bremse kaputt ist, kaufst du dir ja auch ein Fertigteil anstatt eine eigene zu schmieden :).

Grund: Programmierfehler können unbemerkt durchrutschen, solange "Buchstabensuppe" rauskommt und Encoder und Decoder zusammenpassen, hätten aber fatale Folgen! Selbst den Profis passiert das!!

Die Implementierung von AES ansich ist nicht schwer. Das eigentliche Problem ist dabei keinen Fehler zu machen, der die Verschlüsselung schwächen könnte,. Das betrifft vor allem auch Fehler im Handling der Platform, die Seitenkanäle für Angriffe eröffnen könnten.

Den Algorithmus ansich zu verstehen ist nicht so schwer, die mathematischen Hintergründe und die Wirkung zu verstehen und zum Beispiel auch die Güte der Verschlüsselung einzuschätzen und zu analysieren ist natürlich ein ganz anderes Thema.

Eine eigene Verschlüsseng (im Sinne eines eigenen Verfahrens) zu entwickeln, braucht etwas mehr als nur Übung, da braucht es dann schon die entsprechenden Kenntnisse in Zahlentheorie, Kryptographie(grundlagen), ....

Na dann mal viel Spass bei dem Mammutprojekt.

Mal etwas was du an Aufwand beachten musst.

Du musst alles Codieren. Die Empfänger Datei reagiert nur bei korrekter Codierung und den Berechtigungen. Du brauchst einen kleinen Kernel. Für jeden Zugangscode den du vergibst, brauchst du eine Loaddatei die den Benutzer identifiziert und ihn als berechtigten User freigibt. Du musst jedem Benutzer eine eigene Loaddatei zuordnen, in der seine Daten bereit stehen, die ihn als Berechtigten identifiziert. Dann muss dein Programm alles erkennen was ausserhalb deiner Programmierung versucht wird, und den Zugriff verweigern.

Und. Und. Und. Sehr viel Aufwand.

Moderne Verschlüsselungsalgorithmen sind im Prinzip (sehr hohe) Mathematik.

Ich zitiere mal ein paar Abschnitte aus dem Wikipedia-Eintrag zu AES (leider nur als Screenshot, da sich die Formeln hier nicht richtig einfügen lassen):

Bild zum Beitrag

Bild zum Beitrag

Wenn du bei diesen Formeln und Begriffen wie "multiplikatives Inverses" und "affine Transformation" nicht direkt mit "das ist ja völlig selbstverständlich!" reagierst, dann wird das eher nichts mit einer eigenen Implementation von AES. Ich muss sagen, ich verstehe hier nur Bahnhof.

Das liegt aber wie gesagt daran, dass Verschlüsselungsalgorithmen an sich nichts mehr mit Programmieren zu tun haben. Das ist rein theoretische Informatik, also eben mathematische und logische Strukturen, die losgelöst von jeglichen Programmiersprachen entwickelt wurden.

Gerade bei Verschlüsselungen und anderen, sicherheitstechnischen Softwarekomponenten ist es aber extrem wichtig, genaustens zu wissen, was man tut, denn ansonsten bist du nicht in der Lage, eventuelle Fehler oder Sicherheitslücken in deiner Implementation zu erkennen. Je nachdem wie die Software eingesetzt wird, können solche Fehler fatale Folgen haben.

Man muss quasi mathematisch beweisen können, dass die Implementation sicher ist. Das ist auch der Grund, warum die zugrundeliegende Theorie so komplex ist.

Daher sollte man bei kryptografischen Softwarekomponenten wie Verschlüsselung besser auf bewährte, unabhängig geprüfte Open Source Implementationen setzen.

 - (Computer, PC, Python)  - (Computer, PC, Python)

Tryen354 
Beitragsersteller
 30.07.2025, 03:01

mich interessiert eben genau sowas xD
auch wenn ich mir nicht ganz sicher bin ob es die ganze zeit wert ist solche sachen zu lernen da mich nicht nur Kryptographie interessiert ich finde pentesting reverse engineering und exploit development auch spannend bis jetzt habe ich nur bei Kryptographie rein geschnuppert und finde es extrem spannend

Ireeb  30.07.2025, 03:07
@Tryen354

Interessant und spannend ist das Thema auf jeden Fall. Aber ohne Mathematik- und/oder Informatikstudium ist es aber glaube ich kaum möglich, in diesem Bereich Fuß zu fassen. Da werden einfach sehr viele Konzepte vorausgesetzt, die nicht trivial und sehr abstrakt sind. Sowas kann man sich nicht wirklich selbst beibringen.

Wenn sowas für dich interessant ist, wäre aber ein einschlägiges Studium natürlich zu empfehlen.

Tryen354 
Beitragsersteller
 30.07.2025, 03:10
@Ireeb

ich denke es ist am schlausten wenn ich mich erstmal einfinde in dem ganzen thema cybersecurity da ich ziemlich neu bin zu all dem zeugs
pcs interessieren mich schon lange aber cybersecurity erst seit einem monat und vor kurzem hab ich erst die erste verschlüsselung geschrieben