Quellcodezeilen Verschlüsseln

Horst_33

Lieutenant
Registriert
Dez. 2008
Beiträge
684
Hi,

ich bin scho seit längerer Zeit auf der Suche nach einer Möglichkeit gewisse Quellcodezeilen zu verschlüsseln, damit sie nicht mehr in Klartext vorhanden sind. V.a. Passwörter sind hier ein großes Sicherheitsrisiko.

Was ich bisher ausprobiert habe:

- ExecuteEncrypted

Funktionierte bei mir nicht zuverlässig. Zudem bestehen noch die nervigen Probleme mit den || Zeichen, die es sehr umständlich machen.

- VBScripte

Also ich kann keine Programmiersprache, nur etwas intensiveres Batch Scripting, daher fiel VBS für mich meist flach. Möchte ehrlich gesagt nichts verwenden, wass ich nicht zu mind. 90% kapiere.

Wie das ganze durchgeführt wird ist mir relativ egal, es sollte nur funktioieren. Solange die Passwörter oder auch Pfadangaben nicht komplett in Klartext darstehen reicht es schon. Es muss nicht unbedingt eine fast perfekte Asyncrone verschlüsselung sein ;)

Zudem möchte ich das Batchscripte auch in Zukunft mal ändern, daher wäre eine Batch2Exe Lösung für mich inakzeptabel, macht mich zu unflexibel.
 
Passwörter => PHP => MD5!

MD5 ist nur per Rainbow-Tables rückentschlüsselbar.

Also beim Login einfach das eingegebene ein, oder je nach Sicherheit auch zweimal, also
$wort1 = md5(md5($wort));
per md5 verschlüsseln und dann mit der DB vergleichen
.
 
Wozu überhaupt verschlüsseln?

@foolproof
Hashen != entschlüsseln ! Ver- und Entschlüsseln kannst du so oft wie du willst ohne auch nur eine Information zu verlieren, hashen kannst du nur einmalig und auch nicht mehr zurück.
 
Ich hab ja schlussendlich for z. B. NET USE Befehle mit Benutzernamen und Passwörtern auszuführen und eben diese Passwörter zu verschlüsseln. Wie ich da jetzt ein PHP Element einbauen soll und was das mit einer Datenbank zu tun hat ist mir auch nicht ganz klar. :confused_alt:

Zudem ist doch MD5 nur für Vergleiche nützlich also Summe von Datei A erstellen und mit bereits erstelllter Summe vergleichen -> Inhalt ist nicht aus Summe errechenbar. Genau das möchte ich jedoch machen, aus dem Crypt die Info herauslesen. :hammer_alt:
 
Aso, das musst du natürlich auch sagen :)
 
Horst_33 schrieb:
ich bin scho seit längerer Zeit auf der Suche nach einer Möglichkeit gewisse Quellcodezeilen zu verschlüsseln, damit sie nicht mehr in Klartext vorhanden sind. V.a. Passwörter sind hier ein großes Sicherheitsrisiko.

Um welche Sprache geht es denn überhaupt?

Dir muss klar sein, dass sowas nur gegen komplette Laien hilft. Denn wenn du den Quellcode bei dir entschlüsseln musst um ihn auszuführen, dann kann das eine Person das an dem System sitzt auch.
 
Horst_33 schrieb:
NET USE Befehle mit Benutzernamen und Passwörtern auszuführen und eben diese Passwörter zu verschlüsseln.
Wenn du das mit Batch-Dateien realisieren willst, kannst du es gleich komplett vergessen, denn die Befehle erwarten plain text und keine verschlüsselten Sachen. Wenn musst du den Umweg über ein eigenes Programm gehen, was genau das gleiche macht, du deine Passwörter aber verschlüsselt übergeben kannst oder du fragst nach dem Nutzer/Passwort (wäre die einfachste Möglichkeit).
 
snow1 schrieb:
Um welche Sprache geht es denn überhaupt?

Dir muss klar sein, dass sowas nur gegen komplette Laien hilft. D

Also es muss wie gesagt keine 1A Verschlüsselung sein, jedoch wäre sowas banales wie die Umrechnung von den Buchstaben + Zahlen [36er Zahlensystem] ins Binärsystem oder ähnlich einfache Sachen etwas zu einfach.

Der Leser soll halt beim Lesen des Passworts im Quellcode keine Ahnung haben, dass es sich...

a) um ein Passwort handelt [Unabhängig von der Stelle im Syntax natürlich]
b) wissen, wie lange das Passwort ist
c) informationen über Bestandteile des Passwortes erfahren [Verwendete Zeichen]

Die Verschlüsselung von ExecuteEncrypted hat mir eig. ganz gut gefallen. Würde es jetzt noch die || Elemente entfernen und zuverälssig funktionieren wäre dieser Thread sowieso unnötig.

Sprache: Also verwendet werden nur Batch Befehle innerhalb einer Batch-Datei. Davon auch nur standard Windows-Batch Befehle. In welcher Sprache die Verschlüsselung stattfindet ist mir vorest egal. Ich möchte nur verstehen wie verschlüsselt wird und ob das ganze vertrauenswürdig ist.
 
Naja, du kannst dir schon was programmieren, was verschlüsselte Dateien entschlüsselt und dann ausführt. Die meisten Programmiersprachen haben irgend eine Crypto Bibliothek mit drinnen. Wenns ganz billig sein darf kannst du auch von/nach Base64 konvertieren (auch wenn sichs dabei nicht um eine Verschlüsselung handelt)

Aber da sind dann zwei Hürden:
1) du musst ein wenig programmieren können (sollte in 10-20 Zeilen machbar sein)
2) du musst wiederum irgendwo ein Passwort zum Entschlüsseln hinterlegen
 
Also entweder denke ich zu einfach oder es ist wirklich so schwierig...

Ich verschlüssle das Passwort mit einer Art Generator von Passwort123 zu fe6fa98138ffab6339e4adeee157538c

Anschließend lege ich ziemlich weit oben fest, dass diese Zeichenfolge mit einen kleinen CLI Tool ausgelesen werden soll, welches diesen Zeichencode in Plaintext umwandelt -> In Variable weiterleiten und beim NET USE die Variable %Passwort_001% verwendet. Denke, dass man für sowas nur einen anfänglichen Generator/ Verschlüssler und ein kleines CLI Tool + n paar DLLs benötigt.

So wären jetzt meine Vorschläge zu dieser Idee. Leider gibts wohl sowas nicht bzw. ich habs noch nicht gefunden.
 
Wenn du ein CLI Tool hast, dass aus deinem fe6fa98138ffab6339e4adeee157538c wieder Passwort123 macht, dann kann auch jeder andere dieses CLI Tool aufrufen und damit an das Passwort kommen
 
Wenn er das CLI Tool hat. Also so isses immer noch besser als PlainText. Denke, dass das für den Anfang mal reicht. Wäre ja in dem Sinn nichts anderes als das anfangs erwähnte Encryption Tool, welches jedoch nur bedingt funktioniert.
 
Ob du jetzt das Passwort oder das CLI Tool geheim hältst bleibt sich aber letztendlich wurscht
 
Horst_33 schrieb:
Also es muss wie gesagt keine 1A Verschlüsselung sein, jedoch wäre sowas banales wie die Umrechnung von den Buchstaben + Zahlen [36er Zahlensystem] ins Binärsystem oder ähnlich einfache Sachen etwas zu einfach.

Klingt nach ECB Verschlüsselung per Binärbaum. Musste sowas ähnliches mal in einer Hausübugn schreiben.
 
Horst_33 schrieb:
Also entweder denke ich zu einfach oder es ist wirklich so schwierig...

Ich verschlüssle das Passwort mit einer Art Generator von Passwort123 zu fe6fa98138ffab6339e4adeee157538c

Anschließend lege ich ziemlich weit oben fest, dass diese Zeichenfolge mit einen kleinen CLI Tool ausgelesen werden soll, welches diesen Zeichencode in Plaintext umwandelt -> In Variable weiterleiten und beim NET USE die Variable %Passwort_001% verwendet. Denke, dass man für sowas nur einen anfänglichen Generator/ Verschlüssler und ein kleines CLI Tool + n paar DLLs benötigt.

So wären jetzt meine Vorschläge zu dieser Idee. Leider gibts wohl sowas nicht bzw. ich habs noch nicht gefunden.
Doch das geht schon. Um sinnvoll zu sein, muß hinter deinem "Generator" eine ordentliche Ver- und in deinem CLI-Tool die passende Entschlüsselungsfunktion stecken. Das erste macht aus Passwort123 fe6fa98138ffab6339e4adeee157538c, letzteres genau umgedreht. Das ist sehr wohl sicher zu realisieren (solange der Nutzer keine Möglichkeit hat, dem Prozess mit einem Debugger o.ä. zu Leibe zu rücken .. damit findet er das Klartextpasswort im Speicher).

ABER:
Sowohl Ver- als auch Entschlüsselungsfunktionen benötigen als zweiten Parameter neben dem Klartext (bzw neben dem Schlüsseltext beim entschlüsseln) einen SCHLÜSSEL, der ggf. wieder geheim gehalten werden muß (bei klassischer Verschlüsselung mit gleichem Schlüssel beim ver- und entschlüsseln).

Du hast mit deiner Aktion dann im Quellkode ein Passwort zuverlässig durch Verschlüsselung geschützt, dir dabei aber ein neues Passwort eingehandelt, was zur Entschlüssung des 1. Passworts nötig ist. Verschlüsselung ohne Schlüssel gibts nicht. :)

Es gibt alternativ public key Verschlüsselungsverfahren, bei denen die Schlüssel zum Ver- und Entschlüsseln unterschiedlich sind. Vielleicht ist dein Problem damit lösbar. Ich glaube allerdings, dass dein ganzer Ansatz Schrott ist. Sorry.

Du solltest mal das Drumherum deines Problems beschreiben, also nicht nur sagen: "ich will 'net use passwort' machen lassen, ohne den Nutzer das Passwort wissen zu lassen", sondern wer das wann machen soll und warum er das Passwort nicht kennen soll. Dein Szenario ist von Konzept her *ähm* schräg, da dein Nutzer einerseits mit diesem Passwort Zugang zu geschützten Ressourcen des Netzes bekommen soll, andererseits aber das Zugangspasswort nicht kennen soll. Wenn man das Drumherum kennen würde, ließe sich vermutlich eine vernünftige Lösung finden.

Du hast kein Verschlüsselungsproblem. Du hast ein Problem für dein Szenario eine geeignete Zugangsbeschränkung zu finden. Sehr wahrscheinlich sieht die vernünftige Lösung etwa so aus:
1. Identifiziere und Nutzer (z.B. durch Zwang, sich am System mit PW gesichert anzumelden)
2. Erlaube _diesem_ _nun_ _bekannten_ Nutzer das Verwenden des net-use-Dings ohne Paswort.
 
Zuletzt bearbeitet:
Ich verstehe als Programmierer auch nicht was du GENAU möchtest. Beschreib mal ein wenig die Umstände, dir kann bestimmt geholfen werden.

Überlege dir doch, das ganze als .NET-Anwendung zu schreiben. Die Kennwörter (wie oben geschrieben) nicht im Programm, sondern in einer Datei als MD5-gehashte Werte speichern und gut isses.

Kleines 1-mal-1 der Programmierung, dafür gibts in C# ungefähr 10.000 Tutorials.

Aber bitte, beschreib und, WAS genau dein Problem ist und wie die Umstände sind, sonst muss ich meine Kristallkugel wieder rausholen und das dauert immer so ewig ;)

LG,
Mad
 
Madman1209 schrieb:
Überlege dir doch, das ganze als .NET-Anwendung zu schreiben. Die Kennwörter (wie oben geschrieben) nicht im Programm, sondern in einer Datei als MD5-gehashte Werte speichern und gut isses.

Und was soll er dann mit den Hashes anfangen? :freak:
 
Ok, hab gerade erst die Posts in der Mitte des TE entdeckt...

Dann hilft ihm das natürlich nichts... richtig. Aber solange er nicht rausrückt, was genau sein Ziel und Zweck ist kann man keine vernünftigen Ratschläge geben.

Edit:
Zudem möchte ich das Batchscripte auch in Zukunft mal ändern, daher wäre eine Batch2Exe Lösung für mich inakzeptabel, macht mich zu unflexibel.

Verstehe ich auch nicht. Wenn du es änderst dann ändere eben die Batch und erstelle eine neue Exe... wo ist dabei das Problem?
 
Zuletzt bearbeitet:
Madman1209 schrieb:
net use und Konsorten brauchen plain passwords und keine Hashes oder verschlüsselten Kram. Wenn du einen net use Befehl mit Hashes erfindest, dann zeig mal her. ;)
 
Also erstens habe ich meinen Beitrag bereits überarbeitet. Daher ist das Zitat bereits hinfällig.
Und zweitens "erfinden" kann ich diesen Befehl leider nicht, es ist aber keine Schwierigkeit, ein Programm zu schreiben (Client-Server-Architektur als Stichwort) welches die gleichen Funktionen beistzt wie "net use" und gehashte Kennwörter übernimmt.

Aber das führt glaube ich zu weit off, daher btt. :)

LG,
Mad
 
Zurück
Oben