Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Quellcode verschlüsseln? (https://www.delphipraxis.net/116704-quellcode-verschluesseln.html)

bonanza 4. Jul 2008 17:09


Quellcode verschlüsseln?
 
Hi,

ich suche eine möglichkeit meinen quellcode zu verschlüsseln... Ich habe einige Strings in meinem programm ,die man ja leider z.b. per Hexedit auslesen kann, was ich allerdings verhindern möchte.

gibt es dort überhaupt eine möglichkeit das zu verhindern?

mkinzler 4. Jul 2008 17:11

Re: Quellcode verschlüsseln?
 
Man könnte sie verschlüsselt als Ressourcen ablegen

Matze 4. Jul 2008 17:14

Re: Quellcode verschlüsseln?
 
Hallo,

soweit ich weiß kann man das Auslesen nicht verhindern. Denn spätestens dann, wenn dein Programm es intern entschlüsselt, kann man diese Daten auslesen. Es gibt Möglichkeiten, dies zu erschweren, doch ganz verhindern kann man es meines Wissens nicht. Eine Verschlüsselung bringt auch nur wirklich was, wenn dafür ein Passwort verwendet wird, das natürlich nicht in der Anwendung selbst gespeichert werden darf.

Falls es um das Schützen von Zugangsdaten gehen sollte, gibt es meist auch andere, bessere Methoden.
Um welche Daten handelt es sich denn genau bzw. was genau hast du vor?

Grüße

himitsu 4. Jul 2008 17:16

Re: Quellcode verschlüsseln?
 
das heißt, du mußt sie schon verschlüsselt im QuellCode eintragen.

also die Strings z.B. über ein externes Programm verschlüsseln


und dann im QuellCode z.B.
Delphi-Quellcode:
S := Entschlüsseln('4dfs56c-DerVerschlüsselteText-f43dgfsd');

werden diese Strings aber irgendwann mal im Programm angezeigt?
wenn ja, dann kann man sich diese ja ganz einfach abschreiben und die Verschlüsselung wäre "sinnlos".

Matze 4. Jul 2008 17:18

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von himitsu
werden diese Strings aber irgendwann mal im Programm angezeigt?
wenn ja, dann kann man sich diese ja ganz einfach abschreiben und die Verschlüsselung wäre "sinnlos".

Das müsste auch gehen, wenn sie nicht angezeigt werden, sondern nur im Speicher (in einer Variablen) entschlüsselt vorliegen.

bonanza 4. Jul 2008 17:18

Re: Quellcode verschlüsseln?
 
ja es geht um zugangsdaten, allerdings nichts brisant wichtiges, sondern einfach nur um FTP Benutzername und Passwort eines Webspaces.

Ich greife auf den Server per Indy-FTP zu..gibts da vielleicht ne eingebaute Verschlüsselungkomponente?

Apollonius 4. Jul 2008 17:23

Re: Quellcode verschlüsseln?
 
Wir hatten erst kürzlich einen Thread mit dem selben Thema: klick

Edit: Matze, wir denken in letzter Zeit ziemlich oft das gleiche...

Matze 4. Jul 2008 17:23

Re: Quellcode verschlüsseln?
 
Kürzlich hatten wir hier ein ähnliches Thema in dem 2 sichere Vorschläge genannt wurden:

Entweder du legst einen Standard-FTP-Zugang ohne Zugangsdaten ("anonymous"-User oder wie sich das nennt) an oder du gehst über ein PHP-Skript, das deine Benutzerdaten enthält, die FTP-Verbindung aufbaut und die Datei zurückgibt.

Edit: Ah genau das Thema meine ich.

bonanza 4. Jul 2008 17:46

Re: Quellcode verschlüsseln?
 
ok danke ich werds ausprobieren

Meflin 4. Jul 2008 17:49

Re: Quellcode verschlüsseln?
 
In dem Fall (FTP) bringt die ganze Verschlüsselung im Programm nichts.

Der viel einfachere Weg, an die Logindaten zu kommen, wäre, den Verbindungsaufbau mit Wireshark o.ä. zu sniffen - und schwuppdiwupp hat man die Logindaten im Plaintext, eine kleine unzulänglichkeit aller IP-Standardprotokolle (wie FTP, SMTP, POP3)...

Wie dus besser machen kannst, wurde ja schon erwähnt ;)

Cyf 4. Jul 2008 19:21

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von Matze
oder du gehst über ein PHP-Skript, das deine Benutzerdaten enthält, die FTP-Verbindung aufbaut und die Datei zurückgibt

Natürlich musst du die Daten dann auch - wo immer auch du sie hinsendest (PHP, CGI auf einem Server) - verschlüsselt senden und sie müssen beim Ziel entsprechend verschlüsselt vorliegen. Man kann sowas z.B. mit MD5 machen, was aber bei kurzen Passwörtern mittlerweile sehr anfällig für Rainbowtables ist, aber das ist ein anderes Thema.

lbccaleb 4. Jul 2008 19:33

Re: Quellcode verschlüsseln?
 
du kannst auch exe crypter nehmen, aber auch hier besteht keine 100%ige sicherheit
ausserdem muss das programm vorher in den speicher entpackt werden..

ferby 4. Jul 2008 19:41

Re: Quellcode verschlüsseln?
 
hello,

also ich verwende dafür den upx exepacker, ist zimlich einfach und strings sind nicht mehr in klartext.
nehm mal an so sicher, das es selbst jemand nicht aus einer variabel im Arbeitsspeicher rausfinden soll,
brauchst du's eh nicht....

lbccaleb 4. Jul 2008 19:44

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von ferby
hello,

also ich verwende dafür den upx exepacker, ist zimlich einfach und strings sind nicht mehr in klartext.
nehm mal an so sicher, das es selbst jemand nicht aus einer variabel im Arbeitsspeicher rausfinden soll,
brauchst du's eh nicht....

ja und so sicher, das man in den ersten bytes erkennt, das es upx ist, und mit der option /u normal wieder entschlüsseln kann ;-)
also sicherheit, weniger als 0%...

ferby 4. Jul 2008 20:43

Re: Quellcode verschlüsseln?
 
naja, ich glaub mal das ein normal sterblicher anwender damit nix anfangen kann....
ein pw sicher in einer anwendung speichern geht sowieso nicht, weill die anwendung es ja selbst entschlüsseln können muss....

und wenn schon jemand die Datei in einen Hexaeditor öffnet und auch mit UPX was anfang, dann ist das sowieso kein Noob mehr und wird
auch die meisten anderen "Sicherheitsvorkehrungen" umgehen können....

upx ist halt ne schnelle methode damit das pw nicht plain vorliegt

Namenloser 4. Jul 2008 21:23

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von ferby
naja, ich glaub mal das ein normal sterblicher anwender damit nix anfangen kann....

Wenn einer mit einem HEX-editor die daten findet wird er wohl auch schlau genug sein, das programm mit UPX zu entpacken

Aber ich glaube hier ist das ganze wirklich unangebracht, weil das Kernproblem nicht die Logindaten in der Exe sind, sondern der Übertragungsmechanismus mit FTP.
Denk also lieber über einen zweiten FTP-Account mit nur Lese-Rechten nach oder leg dir eine PHP-datei an. An der Unsicherheit deiner jetzigen Methode ändert auch das Verschlüsseln der Exe nichts.

Apollonius 4. Jul 2008 21:31

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von Cyf
Zitat:

Zitat von Matze
oder du gehst über ein PHP-Skript, das deine Benutzerdaten enthält, die FTP-Verbindung aufbaut und die Datei zurückgibt

Natürlich musst du die Daten dann auch - wo immer auch du sie hinsendest (PHP, CGI auf einem Server) - verschlüsselt senden und sie müssen beim Ziel entsprechend verschlüsselt vorliegen. Man kann sowas z.B. mit MD5 machen, was aber bei kurzen Passwörtern mittlerweile sehr anfällig für Rainbowtables ist, aber das ist ein anderes Thema.

Der Trick ist, über PHP eine eingeschränkte Schnittstelle zur Verfügung zu stellen. An das PHP-Script wird gar nichts übertragen, es enthält selbst die Login-Daten und liegt friedlich auf einem globalen Server.
Und wie man Hashes einsätzen soll, kann ich an dieser Stelle auch nicht sehen.

Namenloser 4. Jul 2008 21:47

Re: Quellcode verschlüsseln?
 
Vielleicht den hash des Passworts übertragen und die PHP-datei prüft dann, ob er stimmt? Wär aber sinnlos.

Matze 4. Jul 2008 21:51

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von NamenLozer
Vielleicht den hash des Passworts übertragen und die PHP-datei prüft dann, ob er stimmt? Wär aber sinnlos.

In der Tat. *g*

lbccaleb 4. Jul 2008 22:03

Re: Quellcode verschlüsseln?
 
verschlüssel einfach die strings, und erst bei starten der anwendung entschlüsselst du diese!!
das ist schon ziemlich sicher, verschlüsselungsmethoden findest du auch hier im forum, musst mal suchen..

Cyf 4. Jul 2008 22:14

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von Apollonius
Zitat:

Zitat von Cyf
Zitat:

Zitat von Matze
oder du gehst über ein PHP-Skript, das deine Benutzerdaten enthält, die FTP-Verbindung aufbaut und die Datei zurückgibt

Natürlich musst du die Daten dann auch - wo immer auch du sie hinsendest (PHP, CGI auf einem Server) - verschlüsselt senden und sie müssen beim Ziel entsprechend verschlüsselt vorliegen. Man kann sowas z.B. mit MD5 machen, was aber bei kurzen Passwörtern mittlerweile sehr anfällig für Rainbowtables ist, aber das ist ein anderes Thema.

Der Trick ist, über PHP eine eingeschränkte Schnittstelle zur Verfügung zu stellen. An das PHP-Script wird gar nichts übertragen, es enthält selbst die Login-Daten und liegt friedlich auf einem globalen Server.
Und wie man Hashes einsätzen soll, kann ich an dieser Stelle auch nicht sehen.

Hab mit der Hash Sache grade am Thema vorbei gedacht, war in letzter Zeit zu oft Verschlüsselung :wink:
Die könnten, um den Beitrag zumindest ein wenig Sinn zu geben, Verwendung finden, wenn man sie an eine CGI auf einem http-Server überträgt.
Back to topic: Die Schwachstelle bei dem ganzen Verfahrung liegt wesentlich mehr bei der Übertragung der Daten, als bei ihrer Speicherung.

Matze 5. Jul 2008 07:26

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von Cyf
Die Schwachstelle bei dem ganzen Verfahrung liegt wesentlich mehr bei der Übertragung der Daten, als bei ihrer Speicherung.

Ich glaube, du hast noch nicht ganz verstanden, was einige hier meinen. ;)
Die Zugangsdaten müssen nicht zwischen Anwendung und Server übertragen werden, wenn man ein PHP-Skript verwendet:

Code:
<?php

$user = 'user';
$pass = 'password';
$host = 'ftp.example.com';

$conn_id = ftp_connect($host);
$login_result = ftp_login($conn_id, $user, $pass);

?>
Die Daten enthält einzig alleine das PHP-Skript und dort bleiben sie auch. Das Skript baut die Verbindung auf und wieder ab.

Grüße

Cyf 5. Jul 2008 12:32

Re: Quellcode verschlüsseln?
 
Ich meinte, dass diese deswegen verhindert werden muss. :wink:
Wenn ich so drüber les, vielleicht doch ein bisschen unklar.

Was (je nach Anwendungsfall) die ganzen Lösungen gemeinsam hatten, war ja die Tatsache, dass die Zugangsdaten auf dem Server liegen, weil eben grade die Übertragung verhindert werden soll.

Eine solche Methode ist eigentlich die einzige vernünftige, wenn die Datei nicht einfach algemein zugänglich sein darf (http, anonymer FTP-Zugang <-> nur über den Client bzw. das PHP-Skript hier).

Damit entfällt dann auch gleich die Speicherung, aber falls man es doch speichern wollte, wäre die Übertragung die Schwachstelle.
Allerdings wird in dieser Variante wiederum, die Adresse des PHP-Skriptes, gespeichert werden müssen, dass ja jedem die Datei auf Anfrage schickt, wenn man dafür keine Überprüfung einbaut, oder? (hier könnte ich mich jetzt irren).

Matze 5. Jul 2008 12:47

Re: Quellcode verschlüsseln?
 
Zitat:

Zitat von Cyf
Allerdings wird in dieser Variante wiederum, die Adresse des PHP-Skriptes, gespeichert werden müssen, dass ja jedem die Datei auf Anfrage schickt, wenn man dafür keine Überprüfung einbaut, oder? (hier könnte ich mich jetzt irren).

Ja, man könnte dann herausfinden, was ans Skript gesendet wird und dies selbst senden. Ich denke etwas hundertprozentig sicheres gibt es nicht. Wichtig ist jedoch, dass die Zugangsdaten sicher bleiben.

Man kann sicher noch irgendwelche Prüfdaten versenden, doch was da sinnvoll ist, weiß ich auch nicht.
Evtl. eine Art Mini-Dialog, dass das Programm dem Skript mitteilt, dass gleich Daten angefordert werden. Das Skript sendet daraufhin etwas an das Programm und dieses antwortet darauf.Hat das Skript die Antwort als korrekt erkannt, werden die Daten übertragen.

Aber das ist auch nur eine Idee, von der ich nicht weiß, ob sie sinnvoll ist. ;)

DGL-luke 5. Jul 2008 12:56

Re: Quellcode verschlüsseln?
 
klar, über ein challenge-response-verfahren mit sicherem key-"austausch" zum beispiel mit diffie-hellman kann man eine beweisbar sichere authentifizierte verbindung aufbauen...

das in PHP asynchron zu implementieren, wäre dann die herausforderung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz