leon123
Goto Top

Passwort im Code

Hallo zusammen,

ich stehe vor einem Problem das schon viele hatten aber überall gibt es keine wirkliche Lösung.

Ich habe ein Programm geschrieben (Allerdings in C# was noch leichter zum decompilen ist). Hier habe ich ein Configfile das ich gerne verschlüsseln würde, da sich hier auch Login-Daten zu E-Mail Konten enthalten sind.

Egal welche Verschlüsselung ich nehme ich brauche ein MasterPW. Nur wo speichere ich das jetzt ab.
1. Im Code kann es jeder auslesen durch Decompiling. Das PW ist dann auch nicht änderbar also sinnlos.

2. Ich verteile den Key irgendwie in der Registry. Gefällt mir aber auch nicht.

3. Meine Idee: Bei der Installation kann der Benutzer ein MasterPW für die Anwendung eingeben, das dann in einer Konfigurationsdatei geschrieben wird. Diese Datei verschlüssele ich dann z.B. mit AES und nehme die MAC des Computers als Salz. Das ist dann zwar immer noch knackbar aber man benötigt dann zumindest mehr wissen. (BTW: Das MasterPW brauch ich damit ich die Konfiguration Backupen kann, Wenn ich die Config direkt mit der MAC verschlüssle dann hab ich ein Problem auf anderen Computern)

Habt ihr Ideen?

Danke
Leon

Content-Key: 356906

Url: https://administrator.de/contentid/356906

Printed on: April 26, 2024 at 04:04 o'clock

Member: LordGurke
LordGurke Dec 03, 2017 at 21:42:00 (UTC)
Goto Top
Für welchen Zweck sind denn da Zugangsdaten enthalten?
Denn eventuell lässt sich das ganze einfacher und besser über eine HTTPS-API lösen.
Member: eisbein
eisbein Dec 04, 2017 updated at 07:51:24 (UTC)
Goto Top
Guten Morgen!

Wenn möglich würde ich über den Vorschlag von @LordGurke nachdenken.

Variante 3 ist sonst eine gute Alternative.
Du solltest aber, wenn möglich, den Inhalt der Datei mit einer eigenen Routine verschlüsseln, damit du den Text ggf. vom Programm wieder lesen kannst.

Gruß
eisbein

Edit:
Erzähl mal genauer was du vor hast.
Member: emeriks
emeriks Dec 04, 2017 updated at 07:54:42 (UTC)
Goto Top
Hi,
egal wie Du es machst, es läuft immer auf das Selbe hinaus. All Deine vorgeschlagenen Varianten kann man duch Dekompilierung knacken, mehr oder weniger aufwändig.

Solche Verfahren eignen sich höchsten, um die Daten an eine bestimmte Konstante zu binden. Also wenn Du verhindern willst, dass sich jemand einfach nur die Daten abholt, ohne dabei einen Prozess auf Deinem Computer zu starten. Wenn Du von letzteres ausgehst, dann kannst Du Dir eine beliebige Konstante Deines Computers aussuchen und diese als Schlüssll für die Verschlüsselung nehmen. Als Konstanten fallen mir spontan ein:
- MAC-Adresse des Computers
- MAC-Adresse des Standard Gateways
- Keyfile auf USB-Stick
- Smartcard
- SID des Computers
- Falls AD: GUID eines beliebigen Domänen-Objekts, z.B. der Domäne selbst oder des Compuertskontos in der Domäne; oder SID der Domäne oder des Computers-Kontos
Da sich aber auch solche Konstanten ändern können, wäre es dabei wichtig, a) diese zu dokuemtieren und b) einen Startparameter einzubauen, mit welchem man im Notfall diese Konstante manuell übergeben könnte.
Mit diesem Verfahren kannst Du max. erreichen, dass die Daten mit diesem Programm nur bei Ausführung an diesem Computer oder nur in diesem Subnetz oder nur in dieser Domäne entschlüsselt werden können.
Alles andere setzt immer die Eingabe eines Passwords bei jedem Start des Programms voraus, ohne dieses irgendwo zu speichern.

E.