Eigene Verschlüsselung

Ein (sehr umfangreicher und mit vielen Bildern versehener) Text, der trotz großer Bemühungen seit 600 Jahren nicht entschlüsselt ist!
Eine sehr faszinierende Sache!

2 „Gefällt mir“

Mein Programm (native EXE für Windows) macht sich langsam. Wie gesagt, nur ein kleines Tool um Texte mit meiner eigenen Verschlüsselungsmethode abzuspeichern. Das Tool kommt dann auf USB, so per Autostart wird es dann gestartet. Werde dann noch was einbauen, damit das Tool nur von diesem USB Stick funktioniert. Aber sollte mal jemand den Stick haben, kommt erst mal das hier:

Um den verschlüsselten Text zu entschlüsseln braucht’s etwas Wissen :wink: Dass kenne nur ich. Aber dann wird entschlüsselt und das schaut dann so aus. Jedenfalls ist das eine TextArea und man kann lustig alles abspeichern, was man will.

Für die Eingabe werde ich aber noch einen anderen Font nehmen. Für das “grüne” oben braucht es halt “monospace”. Trotzdem finde ich Java noch etwas schwer. Ich denke noch mehr in Delphi und muss die KI oft fragen, wie was geht :wink: Aber man lernt doch jeden Tag etwas dazu. Mit Delphi wäre ich aber schon 3x fertig *lach wobei ich mich da auch wieder rein finden muss.

Programmierung ist die Frage, wie sich der Compiler (egal ob Java, Delphi,…) verhält, wenn er auf ein ihm bekanntes Schlüsselwort trifft. Java setzt hierbei andere formelle Prioritäten als Delphi. Wobei die verwendeten IDEs als weitere Komtrollschicht an die Code-Struktur und -Organisation agieren (können).

Wozu eigentlich? Das geht völlig an die Plattformunabhängigkeit vorbei.

Ist nur für mich. Ich brauche einen Zweck wenn ich mir das JAVA anschaue und anfange zu coden. So lerne ich die Syntax besser kennen.

Dafür könnte https://javabeginners.de/ (zumindest anfänglich) besser geeignet sein…

Jo, auch schon mal reingeschaut. Danke für den Link.
Wäre eh besser, die KI mal weg zu lassen. Aber es geht so leicht mit ihr. So auf die Art “Gib mir ein Code…”. Den muss man sich natürlich dann immer anpassen oder man schickt der KI ein Code zur Optimierung. Aber so lernt man natürlich schlechter.

Ich fragte nicht, warum du programmierst, sondern warum du auf exe-Dateien bestehst. Dann kannst du auch bei deinem Delphi bleiben, um es etwas überspitzt darzustellen.

“42” ist die Antwort auf die “endgültige Frage nach der EXE, der nativen Anwendung und dem ganzen Rest” :wink: … ich schrieb doch “Ich brauche einen Zweck”. Es soll wenigstens was gescheites dabei herauskommen, also ein Tool was ich gerne benutze und das verbinde ich halt mit JAVA lernen. Das JAVA für Windows Desktop Programme nicht die beste Sprache ist, hatte wir schon geklärt. Trotzdem will ich eine native EXE haben.

Ich brauche keine Apps für Handys
Ich brauche kein Linux
Ich habe kein Mac
Ich brauche kein Backend für irgendwelche Webseiten jedoch interessiert mich das eigentlich, weil es wohl sehr oft in der großen weiten Welt dafür genutzt wird.
Einen “localhost” (Apache und PHP) habe ich installiert. Wie ich da JAVA einbinde und mit einer Webseite kommuniziere… darüber habe ich mich noch 0% mit beschäftigt. Eins nach dem anderen…

Wo wird JAVA eigentlich noch eingesetzt? Also das Produkt oder Gerät. Hier wird das dann wohl raspberry sein mit Linux. Aber welche Beispiele gibt es, wo es genutzt wird? Kassensysteme (Penny, Rewe und Co.) oder irgendwelche Navigationsgeräte oder andere Dinge im Auto? Was gibt es sonst noch so?

1 „Gefällt mir“

Übrigens… habe es verschönert :wink:
Video (nur 7 Tage gültig)

Nochmal: warum? JRE reicht völlig aus, um deine Javaprogramme auszuführen, du brauchst nicht auf Biegen und Brechen eine exe zu erstellen.

Ohne “EXE” finde ich es unschön, nicht clean und ist einfach nicht mein Ding. Man muss immer schauen, dass man die Runtime mitliefert. Ich sagte zwar das Tool ist “nur für mich” aber ich mag das einfach nicht. Ich bin halt der Windows User :wink: Außerdem hat’s der Decompiler schwerer mit einer nativen EXE, so wie ich gehört hatte (kenne selbst keine Decompiler). Auch irgendwo mal gelesen, dass mit diesen “.jar” Dateien es sehr leicht ist, wieder an den Code zu kommen. Bei meinem Tool zur Verschlüsselung von Daten macht es sowieso Sinn zur nativen EXE. Zwar ist das dann alles immer noch nicht 100% sicher aber viel sicherer als so eine “.jar” Datei.

Für mich muss JAVA lernen auch Sinn ergeben. Also baue ich mir mein Programm, so wie ich es gerne habe. Und das ist nun mal die native EXE. Da packe ich rein, was geht, was ich brauche. Schon habe ich weniger “Abhängigkeiten” (worüber ich hier schon schrieb). Aber ich kann mir vorstellen, dass Firmen ihre großen Projekte auch lieber als native Anwendung verkaufen wollen - um Code zu schützen. Sicherlich gibt es dann noch andere Methoden um zu schützen.

:wink: Ich mache es mir immer etwas schwer, z.B. würde ich nie auf die Idee kommen, für kleine Daten eine SQL Datenbank zu benutzen. Es kommt immer darauf an aber lieber würde ich mir (als Vergleich) meine eigene dBase3 Struktur bauen, sie anpassen nach meinen Bedürfnissen und ne gescheit Fehlerroutinen einbauen, damit alles 100% geht. SQL (mit MS Access) habe ich nämlich mal getestet (Strom abgeschaltet beim speichern) und die ganze Datenbank war kaputt. Da gibt es sicherlich auch wieder Reparatur Tools aber verstehst du? Ich “programmiere” ein Dateiheader genauso gerne wie das erstellen von einer gescheiten EXE für Windows.

exe-Dateien kann man auch mit der GraalVM (i.V. mit Visual Studio Build Tools für C++) erstellen. Und der Verschlüsselungsalgorithmus sollte stark genug sein, so das eine zusätzliche Sicherung vor Dekompilierung lohnen könnte ( wobei aktuell ungeknackte Verfahren aber öffentlich les- und überprüfbar sind).
Java-Programme werden z.B. überall dort eingesetzt, wo sich dessen Investitionen in die Logik und der Einsatz langfristig lohnen könnte.

Ja, so mache ich das mit GraalVM. Deswegen war das ein großer Aufwand bis das funktionierte mit dem ganzen Setup (Setups + Umgebungsvariablen und Versionen).

Du hast es leider immernoch nicht verstanden.

Das ist security by obscurity. Also der Versuch, Sicherheit zu schaffen, indem man den Algorithmus verheimlicht. Das ist der falsche Ansatz, weil es eben nicht geheim bleiben kann. Alle, die den Algorithmus kennen, können deinen Text entschlüsseln. Deswegen gehen ausnahmslos alle aktuellen Verschlüsselungsalgorithmen so her, dass sie veröffentlicht sind. Ohne Kenntnis des richtigen Passworts kommt man nicht ran. Das Passwort kennen im Zweifel sehr viel weniger Menschen als den Algorithmus.

Du liegst komplett falsch. Wenn du deine Daten in die Cloud packst, dann ist das nicht nur für dich. Dann ist das im schlimmsten Fall für alle.

Nein, ist sie nicht. Im Gegenteil. Deine Verschlüsselung kann noch so gut ausgedacht sein, es gibt so viele Angriffsvektoren, die du bedenken musst.

Ein total triviales Beispiel:

Wenn du in einer modernen Programmiersprache zwei Strings vergleichst

if(text1==text2)

dann wird die Prüfung beim ersten Zeichen abgebrochen, was nicht mehr übereinstimmt. Das wird gemacht, um Performance zu sparen.

Wenn ich jetzt aber die Ausführungszeit sehr genau messe, dann kann ich anhand der Laufzeitunterschieede Zeichen für Zeichen erraten, weil jedes erratene Zeichen die Ausführung ein bisschen länger macht.

Diesen Angriffsvektor muss man aber kennen und dagegen vorgehen. Und dazu braucht es viel Erfahrung. Und die hast du nicht, dafür gibt es Expert:innen, die sowas wissen und behandeln. Und dann gibt es noch mehr Expert:innen, die solche Realisierungen dann auf alle möglichen Sicherheitslücken abklopfen.

Naja, es macht einen echten Unterschied, was man sich von der Entschlüsselung verspricht. Leute, die das in ihrer Freizeit aus Spaß versuchen werden niemals das erreichen, was eine Horde professionell agierender Hacker:innen erreichen kann. Nur muss man diese Horde auch bezahlen. Also muss sich das Ziel wirtschaftlich lohnen. Und dass sich ein 600 Jahre alter Text lohnt, glaube ich kaum.

Und wenn der Stick weg ist, sind alle deine Daten in der Cloud futsch?

Will er ja gar nicht. Im Gegenteil. Er will das ja auf genau einem USB-Stick laufen lassen.

Ich sag mal, als Programmierübung ist das schon ok. Aber du solltest dich unbedingt davor hüten, deine eigenen Fähigkeiten in Sachen Krypto überzubewerten. Alles was du oder ich oder wir hier gemeinsam in Sachen Krypto erreichen können ist Murks.

2 „Gefällt mir“

Es ging um sein Gejammere im anderen Thread: https://www.wer-weiss-was.de/t/habt-mal-mitgefuehl/9531120/9

1 „Gefällt mir“

Ich halte das Voynich-Manuskript für eines der spannendsten Verschlüsselungs-Rätsel der Weltgeschichte, wenn nicht gar für das Spannendste. Es hat aber mit dem, was dich interessiert, nicht wirklich was zu tun, gebe ich zu.
Da wurde im 15. Jahrhundert mit extrem hohen Aufwand und Kosten (ein oder mehrere Verfasser/ Schreiber haben da sehr lange dran gearbeitet) ein Manuskript erstellt, das bis heute mit den ausgeklügelsten Methoden moderner Kryptologie nicht entschlüsselt werden kann (alle „Erfolge“ widersprechen sich komplett und keiner wird von größeren Teilen der Fachwelt akzeptiert). Also ist das Voynich-Manuskript möglicher Weise ein Schabernack ohne Inhalt. So etwas ist aber - soweit ich weiß - für das 15. Jahrhundert kaum denkbar. Ein „Buch“, eine Handschrift hatte damals einen nicht fassbaren hohen geistigen Wert (für viele Menschen heutzutage vermutlich nicht mehr wirklich vorstellbar). Es wäre undenkbar gewesen, „aus Spaß“ ein sinnloses Werk zu schaffen (und dann auch noch für damalige Verhältnisse mit sehr hohem Aufwand). Wie plausibel die Theorie ist, dass das Werk eine wertvolle Handschrift (z. B. medizinischen, astrologischen Inhalts) vortäuschen sollte, vermag ich nicht zu beurteilen. Auch das widerspricht meines Wissens der Haltung der damaligen Zeit zu Schrift und Schriftwerk.

1 „Gefällt mir“

Das ist ja auch eigentlich der Hauptgrund, sprich JAVA kennenlernen. Ich denke jedenfalls nach wie man so seine eigenen Ideen einbauen kann. Alles Code bringt natürlich nichts wenn man irgendwo “if (isReady)” prüft und der Decompiler/Hacker die Prüfung einfach umbaut. Ja, da fehlt es mir aber im allg. an Erfahrung was Hacker alles so anstellen können.

Aber es macht Spaß sein Code mit unmöglichen verrückten Dingen zu füllen. Ich gehe inzwischen her und lese Teile aus meiner eigenen ausgeführten EXE um ein paar Dinge für den Schutz zu generieren. Der Hacker wird das rausfinden, das dieses Tool da was macht. Logisch aber auch hier führe ich (oder versuche) Ideen ein, damit der Hacker erst mal grübeln muss. :wink:

Ohne mein Tool kann man jedenfalls zu 100% schon mal die Datendatei nicht richtig entschlüsseln, da ich auch eine Word Array Liste nutze. Also einige Wörter werden gar nicht erst in der Datendatei abgespeichert. Einfacher Schutz = große Wirkung (deshalb meinte ich, dass ich die Datendatei als Backup schon im Internet ablegen kann). Auch diese Liste (in der EXE) wird verschlüsselt. Ich versuche überall einen Weg im Code zu finden, um es dem Hacker schwerer zu machen. Das ganze will ich eigentlich so bauen, damit man kein Schlüsselwort braucht aber es gibt gewisse Aktionen die der Anwender machen muss (die man kennen muss) damit das Tool richtig arbeitet. Sollte ein Hacker mal mein USB Stick klauen hat er natürlich beides (Tool + Datendatei) aber er kennt dann immer noch nicht meine kleinen verrückten Ideen, damit die Datendatei überhaupt entschlüsselt wird. Aber auch hier ist es nicht einfach alles zu verstecken. Der Hacker mit seinem Decompiler/Tools kann sicherlich immer (auch wenn nur Maschinencode) so manches in Erfahrung bringen. Man muss hier einfach versuchen, Verwirrung zu stiften damit der Hacker die Lust daran verliert.

Aber klar. Es ist nur eine Spielerei.

Für eine Verschlüsslung (also um es Angriffsvektoren aller Art möglichst schwer zu machen) mag der Aufwand Sinn haben ( sofern die zu benutzenden Datenträger funktionieren ). Code-technisch haben Schlagwörter ( oder Empfehlungen ) wie Code-Lesbarkeit, -Auslagerung, -Erweiterbarkeit und -Testbarkeit, UML, Design-Patterns,.. langfristig mehr Sinn

Ich gebe auf *lach
Brauchte JNA. In der IDE klappt’s aber keine native EXE mehr. Hab mit der KI soviel ausprobiert… Fehler hier, Fehler dort. Einmal sogar ging es fast. Anwendung gestartet aber nur in der Vorschau (ALT+TAB) war sie zu sehen. Aber sie konnte nicht in den Vordergrund kommen. Versionskonflikte 21.0.6 vs 21.0.2 usw. usw.
Jetzt habe ich soviel geändert, da weiß ich nicht mehr was so hatte.

Mir rechts :wink: Ich mach mit Delphi weiter, ggf. schaue ich mit mal C++ an.
Euch viel Spaß mit JAVA