# Bilder lokal signieren: Urheberschaft beweisen ohne Plattform

**Bauplan: Ein Bild kryptografisch als deins markieren, mit Werkzeugen, die
auf deinem Rechner laufen. Kein Dienst, kein Abo, keine Plattform, die
sterben kann.**

Von Steven Noack · stevennoack.de · Stand Juli 2026

## Was du am Ende hast

1. Ein Bild mit deinen Urheber-Metadaten direkt in der Datei
2. Einen SHA-256-Fingerabdruck, der das Bild eindeutig identifiziert
3. Ein signiertes, öffentlich prüfbares Nostr-Event (NIP-94), das Bild,
   Fingerabdruck und deine Identität für immer verknüpft

Ändert jemand auch nur ein Pixel, passt der Fingerabdruck nicht mehr. Deine
Signatur kann niemand fälschen, denn sie entsteht aus deinem privaten
Schlüssel.

## Was du brauchst

- **exiftool** (Metadaten): `brew install exiftool`
- **ImageMagick** (Konvertierung): `brew install imagemagick`
- **nak** (Nostr-Werkzeug): `brew install nak` oder github.com/fiatjaf/nak
- Ein Nostr-Schlüsselpaar (nsec/npub). Falls neu: `nak key generate`
- Irgendeinen Ort, an dem dein Bild öffentlich erreichbar ist (die eigene
  Website reicht, ein Ordner `public/` bei Cloudflare Pages oder GitHub
  Pages genügt)

## Schritt 1: Bild optimieren und Metadaten einbetten

```bash
magick bild.png -quality 90 bild.webp

exiftool -overwrite_original \
  -XMP-dc:Creator="Dein Name" \
  -XMP-dc:Title="Titel des Bildes" \
  -XMP-dc:Description="Kurze Beschreibung" \
  -XMP-dc:Rights="© 2026 Dein Name" \
  bild.webp
```

Die Urheberangabe steckt jetzt in der Datei selbst und reist überall mit.

## Schritt 2: Bild öffentlich erreichbar machen

Bei einer eigenen Website mit Git-Deployment (z. B. Astro auf Cloudflare
Pages) reicht:

```bash
cp bild.webp mein-website-repo/public/
cd mein-website-repo && git add public/bild.webp \
  && git commit -m "Bild: Titel" && git push
# → https://deine-domain.de/bild.webp
```

## Schritt 3: Signieren und veröffentlichen (NIP-94)

```bash
HASH=$(shasum -a 256 bild.webp | cut -d' ' -f1)
SIZE=$(stat -f%z bild.webp)

nak event --auth -k 1063 \
  --content "Beschreibung des Bildes. © Dein Name" \
  --tag url="https://deine-domain.de/bild.webp" \
  --tag m="image/webp" \
  --tag x="$HASH" \
  --tag size="$SIZE" \
  --tag dim="1600x900" \
  --tag alt="Alt-Text für Barrierefreiheit" \
  --sec DEIN_NSEC \
  wss://relay.primal.net wss://nos.lol wss://relay.nostr.band
```

Die Ausgabe enthält die Event-ID. Fertig: Bild, Fingerabdruck und deine
Identität sind jetzt öffentlich und dauerhaft verknüpft.

**Tipp zum Schlüssel:** Den nsec nie im Klartext ins Terminal tippen. Auf dem
Mac gehört er in den Schlüsselbund:

```bash
security add-generic-password -a "$USER" -s "nostr-nsec" -w "nsec1..."
# und im Befehl dann:
--sec "$(security find-generic-password -a "$USER" -s "nostr-nsec" -w)"
```

## Schritt 4: Prüfen

```bash
nak req -i EVENT_ID wss://relay.primal.net
```

Jeder Mensch kann diese Prüfung machen. Das ist der Punkt: Der Beweis liegt
nicht bei einem Dienst, dem man glauben muss, er ist mathematisch und
öffentlich.

## Stolperfallen aus der Praxis

- Manche Relays verlangen eine Anmeldung (NIP-42). Das Flag `--auth` bei nak
  löst das automatisch.
- WebP mit `-quality 90` ist fürs Web fast immer die richtige Wahl: ein
  Drittel der Dateigröße bei gleicher Optik.
- Erst hochladen, dann signieren. Die URL gehört ins Event, also muss sie
  vorher existieren.

---

*Dieser Bauplan darf geteilt werden, der Link genügt:
stevennoack.de/werkzeuge*
