Zum Inhalt springen

Exe vor Decompiler schützen


DeMon Toll

Empfohlene Beiträge

Hi alle zusammen :),

ich soll gerade ein Verschlüsselungstool das Passwörter bei Eingabe verschlüsselt (oder aber aus einer *.txt Datei ausliest). Jetzt steh ich natürlich an einem Punkt an dem ich mich frage. Wie kann ich meine Exe vor einem Decompiler schützen?! Da der Algorythmus zur berechnung ja im QT steckt, soll dieser natürlich nicht sofort sichtbar werden denn somit wäre dann jedes Verschlüsselte Passwort sofort zurückrechenbar. Weis da jemand was?! Ausser Bat 2 Exe....da unser Virenscanner darauf anspringt und es als Virus meldet und die Ausführung sperrt.

Wäre für jeden Tipp dankbar :)

so long

DeMon

Edit: Grml......sry falsches Forum...könnte den jemand bitte eins weiter hoch schieben?!^^......Sry

Bearbeitet von DeMon Toll
Link zu diesem Kommentar
Auf anderen Seiten teilen

Was du da vorhast, klingt stark nach Security through Obscurity.

Wenn es dir darum geht, den Verschlüsselungsalgorithmus geheim zu halten, dann ist ein Decompiler nicht dein einziges Problem, sondern z.B. auch ein Debugger. Wenn der Benutzer sogar beliebige Klartexte verschlüsseln kann, ist möglicherweise nicht mal das notwendig.

Welchen Zweck soll dieses Tool denn erfüllen?

Edit: Grml......sry falsches Forum...könnte den jemand bitte eins weiter hoch schieben?!^^......Sry

Warten wir's mal ab - ich wittere hier ein konzeptionelles Problem ;)
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie Klotzkopp ja schon gesagt hat kannst du den Algorithmus nicht verstecken.

Außerdem werden Passwörter normalerweise auch nicht verschlüsselt sondern gehasht. Das heißt du bildest einen Hashwert des eingegebenen Passworts und speicherst diesen ab. Aus diesem Hash lässt sich das Passwort nicht wiederherstellen allerdings liefert das selbe Passwort immer den selben Hash so das du bei erneuter eingabe einfach wieder den Hashwert bilden und mit dem gespeicherten vergleichen musst.

Wenn du das Passwort aus irgendeinem Grund trotzdem verschlüsseln musst (was normalerweise keinen Sinn macht ;) ) dann steckt das Geheimnis dabei nicht im Algorithmus mit dem verschlüsselt wurde sondern im Schlüssel der dafür verwendet wurde. Das heißt dieser müsste dann irgendwo sicher ausgelagert werden, z.B. dadurch das er vom Benutzer eingegeben wird...

Bearbeitet von Guybrush Threepwood
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi erst mal danke,

der Grundgedanke bei meinem Tool ist das der User ein Passwort Manuell, per *.txt Datei und per MySQL Server abruf (ist im moment noch im Aufbau da ich noch SSL einbauen muss....Vorschrift vom Cheffe^^) in das Programm einlesen kann und es dann verschlüsselt wird. Dabei wird jedes zeichen einer Eingabe (mit 4 zufalls generierten Zahlen verschlüsselt. Jede zahl steht für ein anderes Zeichen (Buchstaben (Unterscheidung Groß/Klein), Ziffern und Sonderzeichen) die in einer Liste bzw. einem Array stehen ersetzte (ähnlich dem S-Box verfahren beim AES (bzw. Rjndal Verfahren)). Dies ist der erste Schritt der Verschlüsselung. An diesem Punkt kann der User entscheiden ob die Verschlüsselung so aussreicht oder ob er es noch verstärken möchte. Wenn es so belassen wird dann wird dieses neue Passwort in einer Lokalen DB gespeichert inkl. der Anzahl von Zeichen des Ursprünglichen PW's). Wählt der User die erweiterung kommt der Einsatz des MySQL Servers mit SSL verbindung. Im ersten Schritt wird natürlich die SSL verbindung aufgebaut und das bis zu diesem Zeitpunkt verschlüsselte PW gesendet. Dann wird das derzeitige PW erweitert (lässt sich ähnlich der Schlüsselexpansion bei AES am besten erklähren) und das vom CLient geschickte PW in einer Zufälligen Reihenfolge XOR verknüpft und gespeichert.

Soweit mal meine bisherige Planung^^.

so long

DeMon

Edit: Achja...der Link war ganz nützlich danke :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Zweck bzw. Sinn dieser Aufgabe die mir (mehr oder weniger zu Übungszwecken gegeben wurde.....übung für meine Abschlussprüfung die ich dieses jahr habe) besteht darin das das Passwörter hat die man laut gesetzt nicht per E-Mail schicken oder aber in einer Word Datei abspeichern darf und diese dann verschicken (ist bei mir so arbeite im Rechtlich Öffentlichen Dienst weis nicht ob es in der "Freien Marktwirschaft" ebenfalls so ein Gesetz gibt). Das man diese Passwörter ohne weiteres mit sich herumtragen und wegen mir auch verlieren kann oder aber geklaut werden kann (Stichwort: Social Engineering). Das soll der Sinn und Zweck dieses Tools sein. Ob es schließlich auch eingesetzt wird ist fraglich aber es ist auf jeden fall eine gute Übung die mein Cheffe sich da hat einfallen lassen. Da ich in sachen SSL & MySQL ziemlich auf Neuland treffe und doch hin und wieder am Straucheln bin^^.

so long

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja wie soll der Empfänger der EMail das Passwort denn dann entschlüsseln?

Außerdem ist dabei, wie oben schon gesagt, nicht der Algorithmus das entscheidende was geheim gehalten werden muss sondern der Schlüssel mit dem verschlüsselt wurde.

Dann sind wir schon wieder soweit das du auch einfach die komplette EMail mit einem gängigem Verfahren verschlüsseln kannst und dir den Rest sparst ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klar einfach AES oder Blowfish oder wie se alle hießen zu implementieren wäre das einfachste. Ist aber nich sinn und Zweck der Aufgabe ;).

Aber ich glaube ich weis worauf ihr raus wollt.

Das entschlüsseln soll mittels der auf der Server DB hinterlegten Informationen wieder in seinen Ursprung zurück gerechnet werden. Ich habe noch nicht angefangen zu Coden da ich laut Aufgaben stellung erst einmal eine Konzeption (jeder Schritt soll einzeln aufgelistet und erläutert werden) anfertigen soll und dann bei meinem Cheffe abgeben. Das problem das sich mir nun stellt (also nicht die eigentlich Frage) ist das Entschlüsseln. Weil Verschlüsseln ist kein Problem sondern wie die gegenstelle das PW wieder in seinen Ursprungszustand bringt. Und da ist mir halt die Idee mit dem DB Server gekommen auf den z.B. (jetzt mal rein fiktiv^^) 2 Firmenstandorte Zugriff haben.

Aber danke mal für eure Ratschläge. Ich hatte so sachen wie Public & Privat Key ganz ausser Acht gelassen :bimei

so long

DeMon

Bearbeitet von DeMon Toll
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn beide Standorte Zugriff auf den Firmenserver haben, kannst du das Passwort auch unverschlüsselt über den Server übermitteln (z.B. 2 Accessanwendungen an den Standorten, eine Schreibt, die andere liest)

Wenn du ein Kryptografie(nahes) Projekt als Abschlussprojekt machst, überlege dir das sehr genau. FI sind nciht wirklich darauf spezialisiert Aufgaben aus der Kryptografie zu übernehmen und wenn sich einer deiner Prüfer mit dem Thema auskennt, kann es sein, daß er dein Projekt komplett auseinander nimmt.

Wenn du eine gute Übung haben möchtest, implementiere das "One-Time-Pad" Verfahren auf 2 Standorte verteilt. Das Verfahren ist leicht zu verstehen und absolut sicher. SSL kann man da eventuell auch einbinden

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

das mit den beiden Standorten war jetzt mal so rein Überlegerisch^^.

Das mit dem Abschlussprojekt mag zwar sein aber ich hatte eh nicht vor das als Projektvorschlag einzureichen....ist doch ein bissl Heavy für 35h :D.

Der Grund für diese aufgabe ist laut aussage meines Ausbildungsleiters folgende:

Da sind viele Prüfungsthemen mit drin.

Datenbanken, Programmieren, Protokolle übertragungen etc. Ausserdem ich dachte du magst es schwierig (Zitat ende)^^.

Und ja ich bin so ein typ der sich immer die Schwersten aufgaben raussucht.

Aber nochmal zurück zu meiner Eigentlichen Frage......Wie schütze ich meine Exe vor Dekompielern?! Der Link von Klotzkopp war schon sehr Hilfreich....weis da noch jemand was?!

so long

DeMon

Link zu diesem Kommentar
Auf anderen Seiten teilen

gar nicht.

Du kannst den Algorythmus höchstens so "komplex" bauen bzw. an Referenzinformationen koppeln, die ein dekodieren mit zu viel Aufwand verbinden würden. z.B. benötigt eine referenz-Byte datei oder etwas in der art von der letztlich alles abhängt.

Bedenke, eine exe muss ja für den Rechner ausführbar bleiben, spätestens dann ist das Programm im Ram so oder so sichtbar, das lässt sich nicht verhindern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klingt vielleicht eklig, aber Skype macht es doch auch:

Du schreibst im Grunde nur ein Ladeprogramm. Das lädt dein eigentliches, verschlüsseltes Programm dann in den Arbeitsspeicher und führt es aus.

Dadurch kannst du dich vor Decompilern schützen. Ansonsten wenn du nicht möchtest das es debuggt wird, kannst es entweder mit irgendwelchen perversen Windowssecurity Options machen oder im schlimmstenfall läuft dein Programm einfach nicht wenn es von einem Debugger gestartet wird, bzw. drangehängt wird.

So bleibt im Grunde nur ein Dump des laufenden Programms, was mit genügend Komplexität kein Problem sein sollte. Vorallem wenn du sie vielleicht auch noch im Arbeitsspeicher verschlüsselst, aber da fehlen mir die nötigen Referenzwerte. Achja durch W^X und die Datenausführungsverhinderungsschicht wirst du an üble Grenzen stoßen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Richtig sicher wäre wohl wirkilch* nur eine Public Key Infrastruktur. Du hast den Public Key entweder Ladbar oder fest eingebaut im System und der private Key liegt auf dem Server wo ja auch die Rückrechnung erfolgen soll. Das Binary selber effizient zu verschlüsseln...

Beim Laden des Programms sollte es doch möglich sein festzustellen ob das Programm dekompiliert wird, bzw. es ein vorhaben gibt. Außerdem kann ja der Speicher nach Laden der Bibliothek mit Zufallsdaten überschrieben werden.

Sicher kein absoluter Schutz, aber es steigert die Hürde des Crackens, vorallem wenn das Programm als Blackbox geliefert wird und diese Mechanismen ja nicht bekannt sind.

*Selbst da gilt, das gerade Public Key Algorithmen mathematisch angreifbar sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, es gibt zwei Wege:

1)

- Der Client wird gestartet und lädt entweder über eine .txt Datei oder interaktiv die Passwörter rein

- diese werden mit dem Public Key verschlüsselt

2)

- Als Alternative kann ein zusätzlich vom User anzugebenes Token für die Verschlüsselung verwendet werden. Dass würde aber voraussetzen das diese Token den Usern bekannt ist und geheim gehalten wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Normalerweise sollte das eine Kombination aus 1 und 2 sein. Das heißt die Verschlüsselten Inhalte (Passwörter in dem Fall) werden an den Client geschickt welcher diese mit dem vorhandenen Key entschlüsseln kann um diesen Key verwenden zu können muss er allerdings ein Passwort eingeben mit welchem der Key verschlüsselt ist.

Was aber in diesem Scenario wieder zum Ursprungsproblem zurückführt ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...