Entschlüsseln von Bildern mittels JavaScript im browser

Ich habe eine web-basierte Anwendung, die erfordert, dass die Bilder verschlüsselt werden, bevor Sie zum server gesendet, entschlüsselt und nach in den browser geladen vom server, wenn der richtige key war ein user.

[Edit: Das Ziel ist, dass das ursprüngliche Bild und die Schlüssel verlassen nie den computer des Benutzers so, dass er/Sie nicht erforderlich, um Vertrauen in die server.]

Mein Erster Ansatz war, der zum verschlüsseln der Bild-Pixel mit AES und lassen Sie die image-Header unberührt. Ich hatte zum speichern der verschlüsselten Bild im verlustfreien format wie png. Verlustbehaftetes format wie jpg ändern würde, die AES-verschlüsselten bits und machen Sie unmöglich entschlüsselt werden.

Nun die verschlüsselten Bilder können in den browser geladen, mit einem erwarteten vollständig verschlüsselt Aussehen. Hier habe ich ein JavaScript-code zu Lesen, in den Bilddaten als RGB-Pixel mit Image.canvas.getContext("2d").getImageData(), erhalten Sie den Schlüssel bilden die Anwender, entschlüsseln Sie die Pixel unter Verwendung von AES, Neuzeichnen des canvas-Bereichs und zeigen Sie das entschlüsselte Bild, um den Benutzer.

Dieser Ansatz funktioniert, leidet aber zwei große Probleme.

Das erste problem ist, dass das speichern der komplett verschlüsselt Bild im verlustfreien format nimmt eine Menge von bytes, 3 bytes pro pixel.

Das zweite problem ist, dass die Entschlüsselung von großen Bildern im browser dauert eine lange Zeit.

Dies ruft der zweite Ansatz, der zur Verschlüsselung der Bild-Header anstelle der tatsächlichen Pixel. Aber ich habe nicht gefunden, einen Weg, um Lesen in der Bild-Header in JavaScript, um Sie zu entschlüsseln. Die Leinwand gibt nur die bereits dekomprimierten Pixeldaten. In der Tat, der browser zeigt das Bild mit veränderten header als ungültig.

Vorschläge zur Verbesserung der den ersten Ansatz zu machen, oder der zweite Ansatz möglich, oder bietet andere Ansätze sind sehr geschätzt.

Sorry für den langen post.

  • "erfordert, dass die Bilder verschlüsselt werden, bevor Sie zum server gesendet" Frage... wie bekommt man die Bilddaten vor dem senden an den server?
  • "Host-proof-hosting" ist der Begriff, den du suchst.
  • Genau, danke.
InformationsquelleAutor timeon | 2010-10-14
Schreibe einen Kommentar