• person rss_feed

    Stefan’s feed

    Blog

    • chevron_right

      Profanity und OpenPGP for XMPP (OX)

      Stefan · Tuesday, 21 September, 2021 - 18:42 · 2 minutes

    In Debian 11 ("Bullseye") ist Profanity 0.10.0 verfügbar. Installiert werden kann es mit dem Befehl apt install profanity. Profanity ist ein ncurses basierter XMPP Client.

    Lust mal auf ein Experiment? Profanity OX experimental Implementierung! Wir nehmen an, deine XMPP-Adresse ist alice@domain.tld und du willst OpenPGP als Verschlüsselung für deine XMPP Nachrichten verwenden.

    OpenPGP Schlüsselpaar erzeugen

    Im ersten Schritt muss man, wie wir es bei OMEMO auch kennen, ein Schlüssel erzeugen. Der Schlüssel wird in unserem Fall mit dem Programm gpg erstellt und sieht wie folgt aus:

    gpg --quick-generate-key xmpp:alice@domain.tld future-default default 3y
    

    Was passiert hier? Mit diesem Befehl wird ein Schlüsselpaar mit der UID xmpp:alice@domain.tld erzeugt. Die Option future-default wird verwendet, damit ein ed25519/cv25519 Schlüssel erzeugt wird. Der Schlüssel wird nach 3 Jahren ablaufen, wenn dieser nicht verlängert wurde.

    pub   ed25519 2021-09-21 [SC] [verfällt: 2024-09-20]
          583BAE703A801095B6B71A56BD801174B1A0B84A
    uid                      xmpp:alice@domain.tld
    sub   cv25519 2021-09-21 [E]
    

    Öffentlichen Schlüssel exportieren

    Damit andere die Möglichkeiten haben dir verschlüsselte Nachrichten zu schicken, musst du deinen öffentlichen Teil deines Schlüssels mit Freunden austauschen. Der folgende Befehl exportiert einen minimalen Schlüssel und speichert diesen in die Datei tmp/pep-key.gpg. XMPP Adresse und Key-ID müssen natürlich angepasst werden.

    gpg --export \
      --export-options export-minimal \
      --export-filter 'keep-uid=uid =~ xmpp:alice@domain.tld' \
      --export-filter 'drop-subkey=usage =~ a' \
      583BAE703A801095B6B71A56BD801174B1A0B84A \
      > /tmp/pep-key.gpg
    

    Der Key kann vor dem veröffentlichen wie folgt geprüft werden: gpg --show-key --with-sig-list /tmp/pep-key.gpg

    Schlüssel veröffentlichen

    Nachdem man sich mit profanity angemeldet hat, kann man seinen Schlüssel in PEP hochladen. Dies geht mit dem /ox announce Befehl.

    /ox announce /tmp/pep-key.gpg
    Annonuce OpenPGP Key for OX /tmp/pep-key.gpg ... 
    

    Es werden im PEP zwei Einträge vorgenommen.

    Schlüssel von Kontakten abfragen

    Du kannst die Schlüssel deiner Kontaktpersonen abfragen und diese importieren.

    /ox discover buddy@domain.tld
    Discovering Public Key for buddy@domain.tld 
    1234567890ABCDEF1234567890ABCDEF12345678
    

    Die Schlüssel können dann mit dem folgenden Befehl importiert werden.

    /ox request buddy@domain.tld 1234567890ABCDEF1234567890ABCDEF12345678
    Requesting Public Key 1234567890ABCDEF1234567890ABCDEF12345678 for buddy@domain.tld
    Public Key imported 
    

    Schlüssel zertifizieren

    Der Schlüssel lässt sich mit dem gpg Befehl gpg -k buddy@domain.tld anzeigen. Jetzt werden wir den Schlüssel noch unterschreiben.

    gpg --ask-cert-level --default-key 583BAE703A801095B6B71A56BD801174B1A0B84A --sign-key 1234567890ABCDEF1234567890ABCDEF12345678
    

    Der default-key ist unser Schlüssel und sign-key der des Kommunikationspartners.

    Kontakte mit einem OpenPGP-Key für XMPP lassen sich via /ox contacts anzeigen, während /ox keys alle Schlüssel anzeigt.

    Chatten

    In einem Chat Fenster kann OX mit dem Befehl /ox start gestartet werden. Beendet wird es mit dem Befehl /ox end.

    Die Nachrichten werden verschlüsselt und signiert übertragen.

    #Debian #XMPP #Profanity #OX