2 Stimmen

Verschlüsselt, komprimierbar, plattformübergreifend, Dateisystem in einer Datei

Wir möchten eine Desktop-Anwendung entwickeln, die eine lokal gepackte Textdatenbank von einigen GB Größe durchsucht. Wir denken an die Verwendung von Lucene.

Der Benutzer sucht also nach einigen Wörtern, und die lokale Lucene-Datenbank gibt ein Ergebnis zurück. Wir wollen jedoch verhindern, dass der Benutzer einen Volltext-Dump des Lucene-Indexes macht, da die Textdatenbank wertvoll und geschützt ist. Eine Webanwendung ist hier nicht die Lösung, da der Kunde möchte, dass diese Desktop-Anwendung auch in Gegenden funktioniert, in denen das Internet nicht verfügbar ist.

Wie verschlüsseln wir die Lucene-Datenbank, so dass nur die Client-Anwendung auf den Lucene-Index zugreifen kann und ein neugieriger Benutzer nicht einen Volltext-Dump des Indexes machen kann?

Wir dachten, eine Möglichkeit wäre, den Lucene-Index in einem verschlüsselten Dateisystem innerhalb einer Datei zu speichern (so etwas wie truecrypt). Die Desktop-Anwendung würde also die Datei mit den Lucene-Indizes "mounten".

Und dies muss plattformübergreifend sein (Linux, Windows)... Wir würden Qt oder Java verwenden, um die Desktop-Anwendung zu schreiben.

Gibt es einen einfacheren/besseren Weg, dies zu tun?

[Dies ist für einen Kunden. Ja, ja, konzeptionell ist das eine schlechte Sache :-), aber so wollen sie es haben. Im Grunde geht es darum, dass nur die Desktop-Anwendung auf den Lucene-Index zugreifen kann und niemand sonst. Jemand hat darauf hingewiesen, dass dies im Wesentlichen DRM ist. Ja, es ähnelt DRM]

3 Stimmen

Ich meinte nicht "das ist böse, genau wie DRM". Ich meinte: "Das ist kaputt, genau wie DRM".

5voto

Matthew Flaschen Punkte 266507

Wie verschlüsseln wir die Lucene-Datenbank so dass nur die Client-Anwendung lucene's Index zugreifen kann und ein neugieriger Benutzer keinen Volltext-Dump des Index des Indexes machen kann?

Sie haben keine. Der Benutzer hätte den Schlüssel und die verschlüsselten Daten, so dass er auf alles zugreifen könnte. Sie können den Schlüssel in einer verschleierten Datei verstecken, aber das führt nur zu einer leichten Verzögerung. Es wird sicherlich keine neugierigen Benutzer abhalten. Sie müssen umdenken.

0 Stimmen

Eigentlich würde der Schlüssel von einem dieser standardmäßigen hardwarebasierten USB-Dongles mit Softwareschutz stammen.

2 Stimmen

@Sidharth: unabhängig von wobei Wenn der Schlüssel gespeichert ist, hat der Benutzer sowohl Zugriff auf die verschlüsselten Daten als auch auf den Schlüssel - Sie haben also bereits verloren. Genau aus diesem Grund funktionieren Kopierschutz und DRM nicht. (Einen Grund, warum ein USB-Dongle nutzlos ist, finden Sie unter ce )

0 Stimmen

@Sidharth: ein HW-Dongle könnte helfen (wenn er funktioniert - meist ist ein Seriell-zu-USB-Kniff drin, der alle Arten von Glück und Freude verströmt), aber dann muss die gesamte Anwendung kryptografisch sicher sein, sonst findet ein Cracker einfach die Stelle, an der der HW-Code geprüft wird, und patcht ihn entweder mit "immer zulassen" oder gibt den Entschlüsselungsschlüssel aus - und man ist wieder am Anfang.

3voto

Das Problem dabei ist, dass Sie versuchen, dem Nutzer gleichzeitig Daten zur Verfügung zu stellen und sie ihm vorzuenthalten. Dies ist im Grunde das DRM-Problem unter einem anderen Namen - der Angreifer (Benutzer) hat die volle Kontrolle über die Anwendungsumgebung (Hardware und Betriebssystem). In einer solchen Situation ist keine Sicherheit möglich, nur Verschleierung und Illusion von Sicherheit.

Sie können es zwar schaffen härter Wenn es für den Benutzer möglich ist, an die unverschlüsselten Daten heranzukommen, können Sie das niemals verhindern, denn das würde bedeuten, dass Ihre Anwendung nicht mehr funktioniert. Das Naheliegendste wäre wohl, eine versiegelte Hardware-Box anzubieten, aber das würde sie IMHO unbrauchbar machen.

Beachten Sie, dass eine halbherzige Illusion von Sicherheit aus rechtlicher Sicht ausreichend sein könnte (z. B. die Anti-Beschneidungsklauseln des DMCA) - aber das liegt außerhalb des Rahmens von SO.

0 Stimmen

(Für die DRM-Version siehe z. B. diese Frage: stackoverflow.com/questions/1790190/ )

2voto

Aaron Digulla Punkte 308693

Technisch gesehen, können Sie wenig tun. Lucene ist in Java geschrieben, und Java-Code kann immer dekompiliert oder in einem Debugger ausgeführt werden, um den Schlüssel zu erhalten, den Sie irgendwo speichern müssen (wahrscheinlich in dem Lizenzschlüssel, den Sie dem Benutzer verkaufen).

Ihre einzige Möglichkeit ist das Gesetz (oder der Vertrag mit dem Nutzer). Die Textdaten sind urheberrechtlich geschützt, so dass Sie den Nutzer verklagen können, wenn er sie in einer Weise nutzt, die nicht im Rahmen der Lizenzvereinbarung liegt.

Sie können aber auch Ihr eigenes Textindizierungssystem schreiben.

Oder Sie kaufen ein handelsübliches Gerät, das Ihren Bedürfnissen entspricht.

[EDIT] Wenn Sie einen verschlüsselten Index verwenden möchten, implementieren Sie einfach Ihren eigenen FSDirectory . Prüfen Sie die Quelle für SimpleFSDirectory für ein Beispiel.

0 Stimmen

Ja, die Leute könnten das tun... aber wir wollen es den Leuten schwer machen, nicht unbedingt unmöglich.

2 Stimmen

Ich schlage vor, die Nutzung Ihrer Anwendung zu vereinfachen, damit die Leute keinen Anreiz haben, die Daten herauszugeben. Geben Sie viel Geld aus, um Ihre legitimen Nutzer glücklich zu machen, anstatt sie mit einem Kopierschutz zu verärgern (der sie nur zum nächsten Cracker treibt, um eine Version Ihrer Anwendung ohne Kopierschutz und ohne Ärger zu bekommen).

4 Stimmen

Es ist nicht unsere Anwendung... sie ist für einen Kunden. Sie wollen es so haben. Wir können uns nicht auf eine moralische Debatte mit ihnen einlassen. Zu oft werden Fragen wie diese mit Philosophie verwechselt :-). Wir wollen wissen, wie man es macht, und nicht, ob es gut für den Welthunger ist :-)

1voto

Pascal Dimassimo Punkte 6828

Warum nicht einen Index erstellen, der nur die Daten enthält, auf die der Benutzer zugreifen kann, und diesen Index mit der Desktop-Anwendung ausliefern?

1voto

Adam Shiemke Punkte 3724

True-Crypt klingt für mich nach einem soliden Plan. Man kann Volumes mounten und sie auf alle möglichen verrückten Arten verschlüsseln und auf sie wie auf jede andere Datei zugreifen.

Nein, es ist nicht ganz sicher, aber es sollte gut genug funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X