ZeroBin

Es kommt öfter mal vor, dass man mal längere Textausschnitte (z.B. Log-Meldungen oder Programmcode) posten möchte, aber man es nicht unbedingt per E-Mail senden, oder in einem Forum eintragen will.

Dafür gibt es seit langer Zeit das tolle Tool PasteBin. Einziges Manko: Die Sachen werden unverschlüsselt gespeichert. Vor einiger Zeit hat Sébastien Sauvage das tolle Tool ZeroBin veröffentlicht, welches Einträge per JavaScript verschlüsselt. So sieht der Server nie, was eigentlich geschrieben wurde.

Ich habe nun einen eigenen ZeroBin-Server laufen, und zwar hier: zero.azapps.de.

Noch ein paar  technische Informationen und Tipps zur Installation:

Technische Informationen

URL

Die URL eines Eintrags ist folgendermaßen aufgebaut:

http://zero.azapps.de/?4c31c4883b6dd29f#A5rWM2NAkRD8QMbaADmDT2fHMaXSwwz2rs09JQVO9Nk=

Der Interessante Teil ist logischerweise der nach dem »?« .

Als erstes steht dort die ID des Eintrags (4c31c4883b6dd29f). Dies ist einfach eine JSON-Datei auf dem Server, die sich PHP holt und an den Browser schickt. Soweit so gut, aber der Interessante Teil ist der nach der Raute. Das ist der Schlüssel zum Ent– und Verschlüsseln. Dieser wird vom Browser nicht an den Server geschickt, also kann der Server selber die Daten nicht entschlüsseln, und außerdem kann man auch über einen unsicheren Kanal mit dem Server kommunizieren, ohne dass ein Angreifer mitlesen kann. Es ist natürlich klar, dass, sobald der Key dem Angreifer bekannt ist, er alles mitlesen kann.

Verschlüsselung

Das eigentlich interessante an ZeroBin ist die Verschlüsselung und Entschlüsselung. Diese funktioniert nämlich im Browser und basiert auf AES-256. Das ist zum heutigen Zeitpunkt ein ziemlich guter Verschlüsselungsalgorithmus. Da dieser Symmetrisch ist, kann man sogar Konversationen mit einem einzigen Schlüssel führen.

Die JavaScript-Implementierung des Algorithmus stammt von der Stanford–Universität: Stanford Javascript Crypto Library.

Installation

Lade dir das aktuelle Script hier herunter, oder noch besser, klone es dir aus dem Git-Repo:

git clone git://github.com/sebsauvage/ZeroBin.git

Dann lege noch folgende Ordner an:

mkdir data
mkdir tmp

Der data-Ordner ist für die Text(JSON)-Dateien (ZeroBin braucht keine Datenbank) und der tmp-Ordner ist für das Template (RainTPL) da. Logischerweise müssen beide Ordner für PHP beschreibbar sein:

chmod 777 -R tmp/ data/

Das wars auch schon. Viel Spaß mit ZeroBin.

Ich werde vielleicht noch versuchen einen Syntax-Highlighter und einen Datei-Upload (Unverschlüsselt :( ) für ZeroBin zu basteln.