Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Verschlüsselter Dateidownload übers Internet (https://www.delphipraxis.net/186092-verschluesselter-dateidownload-uebers-internet.html)

Sunec 3. Aug 2015 08:39

Delphi-Version: XE8

Verschlüsselter Dateidownload übers Internet
 
Schönen guten Morgen Praxis :)

Ich habe eine Datei auf einem Webserver hinterlegt.

Nun möchte ich von meinem Programm aus auf diese Datei zugreifen und herunterladen.

Allerdings möchte ich, dass die Datei nur über mein Programm heruntergeladen werden kann und nicht über den direkten Aufruf der URL.

Denkbar wäre es Cookies zu setzten und erst dann Zugriff auf die Datei zuzulassen?

Des weiteren Schreiben Programm, wie beispielsweise Wireshark, den Netzwerverkehr mit. Lässt sich dieser Verschlüsseln?


Was wäre hier die optimale Herangehensweise?

vagtler 3. Aug 2015 08:50

AW: Verschlüsselter Dateidownload übers Internet
 
Verschlüsselung über SSL - das ist in den allermeisten Fällen hinreichend sicher. Ein entsprechend hochwertiges Zertifikat vorausgesetzt.

Für die Authentifizierung kommt dann eines der je nach Übertragungsmethode geeigneten Verfahren in Frage. Wir regeln Dateizugriffe meist über spezialisierte Webservices, die mittels OAuth2 abgesichert sind. Für unsere Szenarien ist das hinreichend sicher und vergleichsweise simpel zu realisieren.

Mavarik 3. Aug 2015 09:34

AW: Verschlüsselter Dateidownload übers Internet
 
Leg die Datei einfach auf Deinen Webserver...

Dann mit dem eigenen Programm runter laden und "entpacken"...

Ohne Deine Software kann keiner etwas mit der Datei anfangen, weil keine die Entschlüsselung kennt...

Dann kannst Du die URL auch in Google eintragen... :stupid:

So Einfach...

Brunhilde 3. Aug 2015 11:03

AW: Verschlüsselter Dateidownload übers Internet
 
Leider schreibst Du nicht wo der Webserver steht, LAN oder WAN? Bei einem WAN Standort gehe davon aus das nichts sicher ist was dort gespeichert ist. Es wird nur sicher wenn es verschlüsselt ist.

Ein Packer wie 7z geht mit Verschlüsselung und lässt sich auch in Delphi aufrufen. Des weiteren kannst Du ein FTP oder SFTP Protokoll benutzen um Dateien hoch oder runter zu laden.

Im FTP Server, auf deinem Webserver, kannst Du dann Benutzer einrichten die auf bestimmte Dateien zugriff haben oder nicht. Die Rechte Regeln sind aber schon wieder ein Thema für sich.

Mavarik 3. Aug 2015 11:33

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Brunhilde (Beitrag 1310767)
Leider schreibst Du nicht wo der Webserver steht, LAN oder WAN? Bei einem WAN Standort gehe davon aus das nichts sicher ist was dort gespeichert ist. Es wird nur sicher wenn es verschlüsselt ist.

Ein Packer wie 7z geht mit Verschlüsselung und lässt sich auch in Delphi aufrufen. Des weiteren kannst Du ein FTP oder SFTP Protokoll benutzen um Dateien hoch oder runter zu laden.

Im FTP Server, auf deinem Webserver, kannst Du dann Benutzer einrichten die auf bestimmte Dateien zugriff haben oder nicht. Die Rechte Regeln sind aber schon wieder ein Thema für sich.

Ist ja auch alles überhaupt nicht nötig...


Ich nehme mir eine Datei... Packe die mit einem beliebigen Packer... Dann zerhacke ich die Datei in 256 Byte happchen bei großen oder 16 Byte bei kleinen Dateien...

Dann füge ich die Datei per Zufall wieder zusammen und merke mir wo welcher Happen jetzt steht in meinen Programm...

Ich kann natürlich auch AES/RSA nehmen... Aber das andere geht ohne "alles"...

frankyboy1974 3. Aug 2015 11:40

AW: Verschlüsselter Dateidownload übers Internet
 
Hallo,

@Mavarik
Zitat:

Ohne Deine Software kann keiner etwas mit der Datei anfangen, weil keine die Entschlüsselung kennt...

Dann kannst Du die URL auch in Google eintragen...
weil heute eine Verschlüsselung als sicher gilt, muss dies nicht für immer gelten.

Der TE wollte ein Verfahren, dass wie folgt funktioniert

Zitat:

Allerdings möchte ich, dass die Datei nur über mein Programm heruntergeladen werden kann und nicht über den direkten Aufruf der URL.
Dann musst du tatsächlich erstmal eine Authentifizierung durchführen, dies kann über
Zitat:

OAuth2
erfolgen. Es gibt sicher auch noch andere Verfahren, um sicherzustellen ob jemand die Datei herunterladen darf oder dieser auch imstande ist diese zu entschlüsseln.

mfg

frank

mm1256 3. Aug 2015 12:41

AW: Verschlüsselter Dateidownload übers Internet
 
Hallo,

interessante Lösungsvorschläge. Weil ich OAuth2 noch nicht eingesetzt habe, würde mich interessieren, wie es da mit Wireshark aussieht. Weil...

Zitat:

Zitat von Sunec (Beitrag 1310740)
Des weiteren Schreiben Programm, wie beispielsweise Wireshark, den Netzwerverkehr mit. Lässt sich dieser Verschlüsseln?

Also braucht's dazu noch https, oder?

Lemmy 3. Aug 2015 12:50

AW: Verschlüsselter Dateidownload übers Internet
 
Nur mal so vom Spielfeldrand (ich habe damit einfach keine Erfahrung):

Das Programm läuft auf dem Kundenrechner, d.h. der hat alle Möglichkeiten um einzugreifen: z.B. den Netzwerkverkehr absichtlich über einen eigenen http-Server umlenken und schon ist https umsonst (-> Man in the Middle) - außer der Server und der Client prüfen explizit das Zertifikat des jeweils gegenüber. Oder habe ich an der generellen Arbeitsweise von https was nicht verstanden?

-> wenn das so passt, dann muss die Datei weiter verschlüsselt sein um das abzusichern - und hier haben wir das Problem, dass der Schlüssel zum entschlüsseln dem Clientprogramm bekannt sein muss -> um damit zu arbeiten muss der irgend wann in den Speicher und ist damit potentiell abgreifbar. Und hier spielt es nur eine kleine Rolle wie verschlüsselt wird (AES, PGP,...) wenn der Schlüssel zum entschlüsseln auslesbar ist.

Daher sollte erst klar sein gegen was die Absicherung helfen soll, eine (nahezu) 100% Sicherheit sehe ich bei den Randbedingungen nicht gegeben.

Grüße

mm1256 3. Aug 2015 14:37

AW: Verschlüsselter Dateidownload übers Internet
 
@Lemmy So sehe ich das auch. Denn, bevor ich beschreibe wie ich das Problem bei meinem Lizenz-Server (um so was Ähnliches geht es wohl hier auch) gelöst habe, wäre es zudem wissenswert, wie hoch das monatliche Budget ist. Denn von nix kommt nix. Weil, ein bischen Sicherheit taugt nichts, und kostet nichts, oder nicht viel, und wenn man(n) mehr will, scheitert's meistens schon am Geld.

Valle 3. Aug 2015 14:55

AW: Verschlüsselter Dateidownload übers Internet
 
Hi,

ich bin erstaunt dass das noch keiner geschrieben hat.

Das Vorhaben ist schlichtweg nicht möglich. Der Anwender hat vollen Zugriff auf seinen Computer und kann somit alles Geschehen dort mitlesen und manipulieren. Eine Verschlüsselung bringt nichts, da der Schlüssel auch auf dem PC liegen muss. Eine Authentifizierung bringt ebenso nichts, da der Schlüssel mitgeliefert werden muss.

Es ist allenfalls möglich das Vorhaben zu erschweren. Man sollte sich aber hier im Klaren sein, dass dies keine tatsächliche Sicherheit bietet. Wenn vollständige Sicherheit wirklich nötig ist (und ich vermute dem ist nicht so), dann muss wohl die Strategie überdacht werden. Gerade wenn es um Kopierschutzmaßnahmen geht, würde ich empfehlen mehr Zeit in das Produkt statt in Security through obscurity zu stecken.

Es läuft letztendlich also darauf hinaus, wie schwer man es dem Anwender machen möchte. Es wäre sinnvoll, wenn du uns verrätst, wozu du das brauchst. Dann können wir dir sicherlich besser helfen.

Zitat:

Zitat von mm1256 (Beitrag 1310796)
@Lemmy So sehe ich das auch. Denn, bevor ich beschreibe wie ich das Problem bei meinem Lizenz-Server (um so was Ähnliches geht es wohl hier auch) gelöst habe, wäre es zudem wissenswert, wie hoch das monatliche Budget ist. Denn von nix kommt nix. Weil, ein bischen Sicherheit taugt nichts, und kostet nichts, oder nicht viel, und wenn man(n) mehr will, scheitert's meistens schon am Geld.

Das sehe ich aber anders. Sicherheitslösungen die Geld kosten, sind von Firmen die diese nicht frei zur Verfügung stellen. Und Sicherheitslösungen die nicht frei sind, können nicht von jedermann überprüft werden. Damit sind sie per-se nicht sicher.

mm1256 3. Aug 2015 15:21

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Valle (Beitrag 1310797)
....Das sehe ich aber anders. Sicherheitslösungen die Geld kosten, sind von Firmen die diese nicht frei zur Verfügung stellen. Und Sicherheitslösungen die nicht frei sind, können nicht von jedermann überprüft werden. Damit sind sie per-se nicht sicher.

Ist leider die falsche Schlussfolgerung. Ich habe mit keinem Wort etwas von "Sicherheitslösungen die Geld kosten" erwähnt. Denn damit hat du leider Recht, da wird Kunden Sicherheit verkauft, die es dann in der Form meistens doch nicht gibt.

Ohne jetzt zu tief ins Detail gehen zu wollen, ich meinte damit einen eigenen physikalischen Root-Server. Kein virtueller Kram den man für 10 Euros monatlich an jeder Ecke mieten kann, sondern eine (oder 2) beim Provider gemietete HE mit einem eigenen Server.

Valle 3. Aug 2015 15:35

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von mm1256 (Beitrag 1310801)
Ohne jetzt zu tief ins Detail gehen zu wollen, ich meinte damit einen eigenen physikalischen Root-Server. Kein virtueller Kram den man für 10 Euros monatlich an jeder Ecke mieten kann, sondern eine (oder 2) beim Provider gemietete HE mit einem eigenen Server.

Achso. Da stimme ich dir zu.

Mavarik 3. Aug 2015 17:10

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Lemmy (Beitrag 1310786)
...Schlüssel zum entschlüsseln dem Clientprogramm bekannt sein muss -> um damit zu arbeiten muss der irgend wann in den Speicher und ist damit potentiell abgreifbar. Und hier spielt es nur eine kleine Rolle wie verschlüsselt wird (AES, PGP,...) wenn der Schlüssel zum entschlüsseln auslesbar ist.

Tja genau das ist doch der Punkt... Wenn der String:"Geheimer-AES-Schlüssel" heißt macht das keinen Sinn...

Zitat:

Zitat von Valle (Beitrag 1310797)

Ist hingegen ein guter Weg für 99% aller Lösungen...

Es kommt jedoch darauf an, was ich erreichen möchte...

Logisch es gibt keine 100%ig Sicherheit...

Die Frage gliedert sich doch einfach in drei Punkten

1. Was will ich schützen
2. Mit welchem Aufwand
3. Gegen wen

Ne Textdatei mit meinen Einstellungen gegen einen Enduser oder meinen Lizenzkey für ein Produkt das 100k kostet gegen einen Superhacker....

Mit ein bisschen verschlüsseln und den in Clienten vorhandenen Schlüssel nicht speichern, sondern errechnen und dir Routine mit dem Timer gegen nen Debugger absichern und und und... Kommt man schon sehr weit...

Mavarik

PS: Ach was waren das noch für Zeiten, wo man als 1. den Debug Interrupt umgebogen hat. Und die Routine die das gemacht lag als Grafik auf der VGA-Karte und wurde dort ausgeführt...Und immer wenn der Debugger an die Stelle gekommen ist, war der Code schon wieder weg...

Sunec 3. Aug 2015 17:35

AW: Verschlüsselter Dateidownload übers Internet
 
Danke schonmal für die rege Beteiligung am Thema! :thumb:

Das ganze ist ein Hobby-Projekt und nichts kommerzielles. Dies bedeutet, dass möglichst geringe Kosten anfallen sollten (< 100€).

Zitat:

Zitat von Brunhilde (Beitrag 1310767)
Leider schreibst Du nicht wo der Webserver steht, LAN oder WAN?

Der Webserver steht bei einem Hoster, nicht lokal.

@Mavarik
Daran habe ich ehrlich gesagt noch garnicht gedacht. Das Konzept mit der Decryption beim Client werde ich mir auf jeden Fall genauer ansehen. Mit etwas Aufwand sollte dies auch ausreichend Sicherheit bieten.

Allerdings wurde hierbei die Herangehensweise (Download nur per Programm und nicht per direktem Aufruf der URL) nicht berücksichtigt. Allerdings schließt das eine das andere ja nicht aus und eine Kombination ist möglich.

Zitat:

Zitat von Valle (Beitrag 1310797)
Das Vorhaben ist schlichtweg nicht möglich. Der Anwender hat vollen Zugriff auf seinen Computer und kann somit alles Geschehen dort mitlesen und manipulieren. Eine Verschlüsselung bringt nichts, da der Schlüssel auch auf dem PC liegen muss. Eine Authentifizierung bringt ebenso nichts, da der Schlüssel mitgeliefert werden muss.

Das eine 100%ige Sicherheit nicht gewährleistet werden kann ist mir bewusst. Irgendwie ist man doch immer angreifbar und selbst der beste Sicherheitsmechanismus kann geknackt werden.

Die Thematik an sich ist jedoch sehr intressant und da das Projekt aus meiner Motivation entsteht und ich keinen "Abgabetermin" habe kann ich mir auch Zeit lassen.


Ich möchte das Ganze nur so sicher wie möglich halten.

Möglicherweise ist eine Art "Streamer" recht gut realisierbar.
  1. Der Benutzer hat ein Programm (den Streamer) auf dem Rechner.
  2. Nachdem er diesen startet muss er sich authentifizieren (durch bspw. Username / PW oder aber Lizenzdatei).
  3. Ist diese erfolgreich läd der Streamer das eigentliche "Programm / Datei / Modul" in seinen Speicher.
  4. Nun erfolgt die Autorisierung im Programm selbst, ohne das etwas auf die Festplatte geladen wurde.
  5. Ist der Benutzer berechtigt sich die Datei anzusehen / Programm zu starten / Modul zu laden wird dies getan

Was haltet ihr davon?

Mavarik 3. Aug 2015 18:04

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Sunec (Beitrag 1310823)
Möglicherweise ist eine Art "Streamer" recht gut realisierbar.
  1. Der Benutzer hat ein Programm (den Streamer) auf dem Rechner.
  2. Nachdem er diesen startet muss er sich authentifizieren (durch bspw. Username / PW oder aber Lizenzdatei).
  3. Ist diese erfolgreich läd der Streamer das eigentliche "Programm / Datei / Modul" in seinen Speicher.
  4. Nun erfolgt die Autorisierung im Programm selbst, ohne das etwas auf die Festplatte geladen wurde.
  5. Ist der Benutzer berechtigt sich die Datei anzusehen / Programm zu starten / Modul zu laden wird dies getan

Was haltet ihr davon?

Wie schon gesagt... Eine Routine an einer Stelle die ggf. och ein true oder false zurück liefert, kann "man" leicht finden und mit NOP's überschreiben... Das ist dann i.d.R. der Knackpunkt.
Noch besser, wenn dahinter der MessageDLG 'Sie haben keine Berechtigung' steht...

Also alle statischen Texte verschlüsseln...
Keine Proceduraufrufe für die Kontrolle, sondern Ein Pointer auf einen Pointer auf eine Liste von Adressen die Du berechnest und dann zum Pointer springen.
So in dieser "Richtung" :stupid:

Lemmy 3. Aug 2015 18:08

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Mavarik (Beitrag 1310819)
Zitat:

Zitat von Lemmy (Beitrag 1310786)
...Schlüssel zum entschlüsseln dem Clientprogramm bekannt sein muss -> um damit zu arbeiten muss der irgend wann in den Speicher und ist damit potentiell abgreifbar. Und hier spielt es nur eine kleine Rolle wie verschlüsselt wird (AES, PGP,...) wenn der Schlüssel zum entschlüsseln auslesbar ist.

Tja genau das ist doch der Punkt... Wenn der String:"Geheimer-AES-Schlüssel" heißt macht das keinen Sinn...

nein, das sehe ich nicht als Punkt an - das ist absolute Grundlage bevor man sich überhaupt mit "ich will eine Datei runter laden" beschäftigt.. und falls man sich noch nicht damit beschäftigt hat, hier was zum Einstieg.

http://michael-puff.de/Programmierun...acking_1.shtml
http://www.inner-smile.com/nocrack.phtml#howto

Sir Rufo 3. Aug 2015 18:10

AW: Verschlüsselter Dateidownload übers Internet
 
Wenn der Benutzer sich anmelden muss, dann baut man daraus einen Hash und schickt diesen zum Server (Salzen bzw. mit einem Challenge vom Server). Der prüft und gibt dann den Download frei.

Die Verbindung mit SSL und schon ist das relativ dicht.

mm1256 3. Aug 2015 18:56

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von Sir Rufo (Beitrag 1310831)
...Die Verbindung mit SSL und schon ist das relativ dicht.

Aber an SSL scheitert's doch schon meistens finanziell. Ein Zertifikat selber kaufen, oder eines beim Provider "mieten", oder was auch immer, wie ich schon vorher schrieb, ein bisserl was kostet es eben, und das ist dann das Aus für Hobbyprojekte. Oder gibt's da was umsonst? Ist mir jedenfalls nichts bekannt.

Dalai 3. Aug 2015 19:01

AW: Verschlüsselter Dateidownload übers Internet
 
Zitat:

Zitat von mm1256 (Beitrag 1310836)
Oder gibt's da was umsonst? Ist mir jedenfalls nichts bekannt.

Gibt es: www.startssl.com, wobei das weniger umsonst als kostenfrei ist ;). Aber ein selbsterzeugtes Zertifikat ist jetzt nicht so schlimm finde ich, es sei denn, man muss es auf (vielen) fremden Rechnern ausrollen.

MfG Dalai

mm1256 3. Aug 2015 19:09

AW: Verschlüsselter Dateidownload übers Internet
 
Na ja, der Köder ist (wie fast überall) umsonst, aber den Fisch muss man dann kaufen :stupid:

Valle 3. Aug 2015 19:25

AW: Verschlüsselter Dateidownload übers Internet
 
Wozu braucht man denn eine Unterschrift einer bekannten CA, wenn man SSL nur im eigenen Programm nutzt?

Eigene CA erstellen und diese als vertrauenswürdig im Programm vermerken. Kost nix, ist genauso sicher.


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

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