2013-01-11 1 views
6

Einfache Privacy In der Vergangenheit die sichere Speicherung und vertrauliche Informationen übertragen erforderlich, um die Installation von speziellen Software. Der neue Mega verschlüsselt und entschlüsselt Ihre Daten transparent in Ihrem Browser, , im laufenden Betrieb. Sie halten die Schlüssel zu dem, was Sie in der Cloud speichern, nicht wir.Wie ist es möglich, clientseitige Dateiübertragungen in einem Webbrowser zu de-verschlüsseln?

Dieses Zitat aus dem website des neuen Megaupload Filehosting-Dienst genommen, die in diesem Monat auf 19. Januar ins Leben gerufen werden soll, sheduled.

Natürlich bin ich als Web-Entwickler interessiert und neugierig auf die Technologie dahinter.

Alles, was ich finden konnte, waren Screenshots und Ansprüche, die es authentisch erscheinen lassen, dass die Daten wirklich sind, nie verlassen den Client unverschlüsselt!

Dateien und Übertragungen werden mit AES gesichert.

Jeder Client erhält ein asymmetrisches Schlüsselpaar, ich kann nur raten warum, aber ich denke, es wird verwendet, um den AES-Initialisierungsvektor und den Schlüssel für andere Clients zu verschlüsseln, mit denen Sie die Datei teilen möchten.

aber meine Frage ist:

Wie ist es technisch möglich, die Datei-Upload abzufangen/herunterladen?

Ich weiß, dass es Encrpytion Algorithmen für RSA und AES gibt, die in Javascript laufen und sehr effizient sind.

Aber der einzige Browser, der Unterstützung für den Betrieb innerhalb des Dateisystems scheint, ist Chrome.

Wie werden die Daten von der Festplatte zum Client-Browser verschlüsselt? Und wie kommt es von dort zu einer Datei auf der Festplatte?

Ich weiß nicht über so etwas wie eine Dateisystem-API. Sogar html5 unterstützt nur eine Art von Objektspeicher.

Ich denke, es ist ziemlich trivial mit einigen Arten von Browser-Plugins oder maby ein Java oder Adobe Air Applet, aber sie behaupten, dass es keine Dinge wie Software von Drittanbietern, die installiert werden müssen.

Gibt es einen anderen Weg?

+0

"Wie ist es technisch möglich, den Upload/Download der Datei abzufangen?" meinst du mit Angreifer oder allgemein? Wenn überhaupt, dann stelle ich mir vor, dass sie die html5-Datei-API benutzen, um Dateien zu lesen, sie zu verschlüsseln und über das Internet mit Ajax oder was auch immer zu versenden. Derselbe Fall mit Download. Es ist fast sicher, dass es nicht durch regelmäßiges Hochladen von Dateien mit POST oder Download gemacht wird, denn das wäre AFAIK unmöglich. BTW interessante Frage - es ist das erste Mal, dass ich über neue Megaupload zu hören. – WTK

+0

Wahrscheinlich verschlüsselte Dateien werden nicht mit dem Browser hochgeladen, aber eine OS-Anwendung wie Dropbox, Skydrive ... –

+0

Ich kenne die Mega-API überhaupt nicht, aber ich sehe nicht, was das mit dem Dateisystem zu tun hat. Ich schätze den Upload-Prozess geht: 1. Laden Sie eine Datei in den Browser mit einem '' Element, 2. Lesen Sie diese Datei und verschlüsseln Sie sie mit einem [JS Crypto-Bibliothek] (https://www.google.com/search?q=javascript+crypto+library), 3. Senden Sie den verschlüsselten Wert für die Speicherung auf einem Server. Um eine Datei vom Server zu holen, holen Sie sie mit Ajax, entschlüsseln Sie sie und lassen Sie sie vom Browser als Datei speichern (oder zeigen Sie sie dem Benutzer im Browser an). – apsillers

Antwort

6

Wie ist es technisch möglich, den Upload/Download der Datei abzufangen?

Sie nicht abfangen es. Der Benutzer wählt eine Datei (oder Dateien) mit einem <input type="file"> Element aus, dann liest JavaScript den Wert der Dateieingabe und verschlüsselt sie. Der Upload wird wahrscheinlich über Ajax erfolgen.

Aber der einzige Browser, der Unterstützung für den Betrieb innerhalb des Dateisystems scheint, ist Chrome.

Chrome ist die erste, die filesystem API, zu implementieren, die von den file API unterscheidet. Die Dateisystem-API verwaltet ein Sandbox-Dateisystem (nicht das wahre Dateisystem des Benutzers). Die Datei-API liest Dateien aus <input type="file"> Elementen. Die Datei-API hat much broader support (aber nicht perfekte Unterstützung) in den meisten modernen Browsern.

Zum Verschlüsseln und Hochladen kann JavaScript Dateien lesen, die der Benutzer mit einer Dateieingabe auswählt und den verschlüsselten Wert über Ajax an den Server sendet. Zum Herunterladen kann der Browser einen Ajax-Abruf der Ressource durchführen, ihn entschlüsseln und den Benutzer auffordern, die Datei zu speichern (z. B. durch Umleiten zu einer data: URI). Es ist kein programmatischer Zugriff auf das Dateisystem erforderlich.

+0

kam mir auch das Daten-URI-Schema in den Sinn, aber ich finde es ziemlich problematisch mit großen Dateien, sagen wir ein paar hundert Megabytes? Denkst du nicht so? Auch alles ins Gedächtnis zu schreiben könnte hässlich werden. natürlich theoretisch funktioniert es, aber ich denke in einer praktischen situation benötigen wir einige on-the-fly streaming lösung, die mit chunks funktioniert ... ich bin nicht wirklich sicher, ob dies möglich ist mit der datei api/data uri –

+0

in ordnung, scheint es in der Tat möglich sein, durch die Auswahldatei zu suchen! Sehr schön! das sollte jetzt das Upload-Problem lösen. Aber wie wäre es mit dem Download von zwei Dateien? –

+0

und noch einmal, die Antwort scheint die Datei API zu sein, bietet es ordnungsgemäße Schreibfunktionalität :) Danke! +1 –