Laden...

Verschlüsselung von im Programm anzuzeigenden PDF-Dateien

Erstellt von der-Webdesigner vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.914 Views
D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren
Verschlüsselung von im Programm anzuzeigenden PDF-Dateien

Hi zusammen!

Ich würde gerne über mein Programm pdf-Dateien anzeigen lassen. Diese sollen aber nur und ausschließlich mit meinem Programm darstellbar sein. Meine Idee war es daher, einfach rar-Dateien mit Schlüssel auf einem Online-Server abzulegen, diese herunter zu laden und die rar-Datei dann zu entpacken wenn der User sich die pdf anschauen will und anschließend wieder zu löschen. Somit würde man ja nicht direkt an die pdf kommen ohne das Programm, das den Schlüssel dazu kennt. Unsicher bin ich mir aber, da ich vermute, dass die Datei dann irgendwie temporär nach dem Entpacken sichtbar ist, heißt dass man sie dann einfach kopieren könnte.

Hättet ihr andere Ideen? Würde es mehr Sinn machen, einfach bestimmte Bytes in der pdf-Datei abzuändern? Gibt es vielleicht sogar die Möglichkeit der Verschlüsselung der Dateien?

Vielen Dank für eure Meinungen,
Manuel

630 Beiträge seit 2007
vor 15 Jahren

Hallo,

sobald die Datei einmal entschlüsselt ist kommt man immer an sie ran (Arbeitsspeicher). Ausserdem musst du ja den Schlüssel zum entschlüsseln in deinem Programm speichern. Also würde es reichen dein Programm mit dem Reflector zu analysieren um an den Schlüssel zu kommen.

Aber WinRar zu benutzen ist garnicht notwendig da es auch den System.Security.Cryptography Namensraum gibt. Dieser bietet alles was man zum verschlüsseln braucht.

Gruss
tscherno

PS: WinRar speichert die entapackten Dateien in einem temporären Verzeichniss.

To understand recursion you must first understand recursion

http://www.ilja-neumann.com
C# Gruppe bei last.fm

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo der-Webdesigner,

das temporäre Speichern ist eigentlich nicht das Problem. Das Problem ist, wie tscherno sagt, dass der Schlüssel in deinem Programm enthalten sein muss. Siehe [FAQ] DB-Password/Kennwort/Connection-String sicher speichern. Und dieses prinzipielle Problem ist nicht zu umgehen. Daher kann man es nur so sicher machen, wie möglich, aber sowieso keinen 100%igen Schutz erreichen.

herbivore

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Dankeschön euch beiden.

Hatte vor, das Passwort aus der DB dann nochmals irgendwie zu modifizieren durch einen eigenen Algorithmus, aber auch an den kommt man dann ja dran. Heißt der sollte einfach möglichst gut versteckt sein? Ich wollte demnach das Passwort aus der DB um eine gewisse feste Länge erweitern und es umstellen, falls jemand das Passwort irgendwie beim Datentransport abfangen sollte.

Das rar-Dateiformat erschien mir dafür sinnig, da ich somit zusätzlich den Vorteil habe, dass meine Dateien komprimiert sind und der Download entsprechend schneller geht. Ich bin mir nur unsicher wie das mit dem Entpacken ist, denn wenn ich die Datei anklicke sollte sie auch möglichst schnell angezeigt werden. Temporär wäre die Datei dann aber wenigstens nicht sichtbar? Das wäre auf jeden Fall schon mal etwas.
Zusätzlich könnte man das rar-Archiv dann noch unlesbar machen indem man ein paar Bytes ändert oder? Das wären immerhin 2 Dinge, die man rausfinden müsste um an die wirkliche Datei zu kommen und wenn ich diese Algorithmen von Zeit zu Zeit ändere wärs sogar richtig Arbeit das immer wieder rauszufinden bzw. nachzuschauen. 😉

Lg,
Manuel

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo der-Webdesigner,

zum Packen kannst du SharpZipLib verwenden. Ansonsten scheinen mir deine mir deine Ansätze etwas übertrieben. Sicher kann man es so schwer wie möglich machen, aber man kann es auch übertreiben. 🙂

herbivore

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Dankeschön. Die Lib hatte ich mir die Tage auch schon runtergeladen. Ich werds einfach mit nem Passwort versuchen und das entsprechend verschlüsseln und fertig. Reicht ja auch aus und ich nutze wie gesagt den Vorteil, dass die Datei komprimiert ist und somit schneller heruntergeladen werden kann.

Dankeschön euch beiden! Dieses Forum ist wirklich klasse! lob
Manuel

A
266 Beiträge seit 2007
vor 15 Jahren

um was für pdfs gehts da eigentlich dass du sie unbedingt unlesbar machen willst???

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Ach einfach pdf-Dateien, die man nur mit dem Programm öffnen können soll, weil man sie sonst darüber runterlädt und sie dann einfach weiter verteilen kann ohne dass das Programm dafür genutzt werden muss.

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

das temporäre Speichern ist eigentlich nicht das Problem.

So, das Packen geht mittlerweile, am Entpacken bin ich gerade dran. Dort muss ich dann jedoch einen Pfad angeben wohin ich die Datei entpacken lassen möchte. Was genau wolltest du mir denn mit dem Satz sagen? Dass es kein Problem ist die Datei generell temporär zu entpacken oder dass man die Datei, während sie vom Nutzer geöffnet ist, irgendwie anders geschickt verstecken kann?
Denn wenn ich die zip-Datei mit einem Passwort schütze, derjenige die Datei mit meinem Programm öffnet, die temporär abgelegte Datei kopiert während er die Datei geöffnet hat, dann bringt mir auch der Passwortschutz mal wieder wenig bis gar nichts. 😉

Hat jemand dazu vielleicht eine Idee? Oder bindet man die Datei einfach nur ein und löscht sie auf der Stelle wieder?

Lg,
Manuel

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo der-Webdesigner,

der Benutzer muss ja überhaupt erstmal auf die Idee kommen, dass die Datei temporär auf der Platte steht. Außerdem kannst du das ja zusätzlich verschleiern, z.B. in dem du einen zufälligen Namen und eine andere oder keine Dateierweiterung verwendest. Außerdem könntest du die Datei sofort nach dem Schreiben mit FileShare.None öffnen.

herbivore

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Hallo herbivore!

Ich habs mittlerweile geöffnet und unter einem anderen Namen temporär gespeichert. Doch wie kann ich nun FileShare auf None setzen? Mein Problem ist, dass ich einfach die ActiveX-Komponente für Pdf-Dateien verwende. Gibt es da auch eine Möglichkeit die Datei vom Programm aus zu blockieren?

Vielen Dank,
Manuel

1.200 Beiträge seit 2007
vor 15 Jahren

Das ist irgendwo in der File Klasse. Die Open Methode nimmt eine enum entgegen bei der du FileShare.None einstellen kannst.

File.Open Method (String, FileMode, FileAccess, FileShare)

Shift to the left, shift to the right!
Pop up, push down, byte, byte, byte!

YARRRRRR!

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Danke dir! 🙂

Nur was mache ich wenn ich zum öffnen gar nicht diese Methode verwende? Einfach damit zusätzlich öffnen um die Datei zu blocken fände ich ineffektiv 😉

Lg,
Manuel

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo der-Webdesigner,

wie schon gesagt: 100%igen Schutz gibt es nicht. Die ActiveX-Komponente wirst du wohl nicht dazu bringen können, den von dir gewünschten Share-Mode zu verwenden.

herbivore

D
der-Webdesigner Themenstarter:in
54 Beiträge seit 2008
vor 15 Jahren

Ja ich weiss, es tut mir auch leid, dass ich sowas immer wieder frage... manchmal nicht ganz einfach ist da er nicht so schnell aufgibt

Könnte man denn dann einfach die Datei öffnen und anschließend wieder schließen, ohne dass das zu viele Resourcen verbrauchen würde? Denn wenn ich die Daten ja nicht auslese müsste die Open-Methode doch eine gar nicht so schlechte Lösung sein...

Lg,
Manuel

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo der-Webdesigner,

Könnte man denn dann einfach die Datei öffnen und anschließend wieder schließen

wenn du die Datei schließt, ist es danach so, als wäre sie nie geöffnet worden.

herbivore