rbin
rbin ist ein minimaler Pastebin-Dienst für verschlüsselten Texttausch. Der Inhalt wird serverseitig verschlüsselt — in der Datenbank liegt nur der Ciphertext, die Passphrase wird nie gespeichert.
Ablauf
sequenceDiagram
participant Browser
participant Server
participant DB
Browser->>Server: POST /api/paste (Plaintext im Body)
Server->>Server: generateID() → 32-stellige alphanumerische ID
Server->>Server: generatePassphrase()
Server->>Server: passphraseToKey(passphrase, id) via HKDF-SHA256
Server->>Server: encryptText() → AES-256-GCM
Server->>DB: speichert Ciphertext
Server-->>Browser: JSON { url: "/p/{id}/{passphrase}" }
Browser->>Server: GET /p/{id}/{passphrase}
Server->>DB: GetPaste(id) → Ciphertext
Server->>Server: decryptText() → Plaintext
Server-->>Browser: HTML-Seite mit Plaintext darin
Verschlüsselung
Jeder Paste wird serverseitig mit AES-256-GCM verschlüsselt. Der Schlüssel wird per HKDF-SHA256 aus der Passphrase und der Paste-ID abgeleitet. Die Passphrase wird nie in der Datenbank gespeichert — wer nur die DB hat, kann den Inhalt nicht entschlüsseln.
Passphrase statt Passwort
Nach dem Erstellen eines Pastes bekommt man eine zufällige dreigliedrige Passphrase wie wasser-maus-flugzeug. Diese steckt direkt in der URL — wer den Link hat, kann den Inhalt lesen. Kein Login, kein Account.
Editor
Der eingebaute Editor basiert auf CodeMirror mit Dracula-Theme und Syntax-Highlighting. Pastes lassen sich direkt im Browser bearbeiten — beim Speichern wird der Inhalt mit demselben Schlüssel neu verschlüsselt, die URL bleibt stabil.
Automatisches Ablaufen
Alle Pastes werden nach 7 Tagen automatisch gelöscht. Ein täglicher Cleanup-Job räumt abgelaufene Einträge aus der SQLite-Datenbank.
API
rbin lässt sich direkt per curl nutzen — kein Browser nötig:
# Text direkt übergeben
curl -X POST https://rbin.nullsession.de/api/paste \
--data-binary "dein text hier"
# Aus einer Datei
curl -X POST https://rbin.nullsession.de/api/paste \
--data-binary @datei.txt
Die Antwort enthält ID, Passphrase und die fertige URL zum Teilen.
Technik
- Geschrieben in Go, gehostet auf eigenem Server
- Speicherung in SQLite mit WAL-Modus, kein externer Datenbankdienst
- Paste-IDs: 32-stellige alphanumerische Zufallsstrings (~62³² Kombinationen)
- Paste-Limit: 1 MiB pro Eintrag
- Kein Tracking, keine Werbung