Clarissa-NET - Ein Beispiel von Anfang an
By Mathias Ball
Clarissa-NET: Ein Beispiel von Anfang an - zum Nachmachen und Kennenlernen
Die Anwendung K4/Clarissa verwaltet nicht nur Deine Daten in privater Umgebung, sie ist auch bemüht um eine möglichst vertrauliche Kommunikation mit Deinen Kontakten. Obwohl zentralistische Kommunikationsdienste (wie z.B. Telegram) von der Anwendung K4/Clarissa benutzt werden, haben sie in ihrem Umfeld keinen exklusiven Charakter. Es gibt generell mehrere Wege zu Deinen Kontakten, sogar “peer-to-peer”.
Die unterschiedlichen Wege bzw. Systeme, über die Informationen ausgetauscht werden, bezeichnen wir im K4/Clarissa-Umfeld als Transportsysteme. Auf der Basis solcher Transportsysteme baut K4/Clarissa einen Kommunikationsrahmen auf, den wir Clarissa-NET nennen. Zu den Einzelheiten sei auf eine ältere Anmerkung verwiesen.
In diesem Artikel möchten wir Dir einen praktischen Einblick in K4/Clarissa und in die Fähigkeiten von Clarissa-NET geben. Glücklicherweise enthält das Projekt K4/Clarissa eine Testumgebung, die es u.a. ermöglicht, verschiedene Versuche zunächst ohne eigene Datenbasis und weitgehend ohne externe Server auszuführen.
Als erstes aber eine Installationsanleitung der Testumgebung unter Linux.
Installation einer K4/Clarissa Test- und Entwicklungsumgebung unter Linux
In diesem Abschnitt beschäftigen wir uns damit, wie ein Entwicklungssystem für K4/Clarissa unter (k)ubuntu 24.04 LTS aufgesetzt werden kann. Laßt uns davon ausgehen, wir haben ein frisch installiertes (k)ubuntu 24.04 LTS in deutscher Sprache vorliegen.
Ziel ist ein System mit welchem:
- K4/Clarissa weiterentwickelt werden kann
- Alle Tests der integrierten Testsuite in den Testkonstellationen “default” und “public” laufen
- Ein Freeze stattfinden kann, um die Software herauszugeben
Installation weiterer Pakete in das System
K4/Clarissa benutzt z.Z. Firebird 3 als Datenbanksystem. Die Testsuite jedoch umfaßt auch Tests mit PostgreSQL und Sqlite3. Neben diesen Datenbanken sind ferner einige Entwicklungswerkzeuge vonnöten.
Hier eine Übersicht der nötigen Pakete:
- Python3 Pakete zum Erstellen von virtuellen Umgebungen
- Einige Werkzeuge und Includes, benötigt für
pip install
- GIT und Werkzeuge
- Firebird-Server und Werkzeuge
- PostgreSQL Server
- Sqlite3
- Lazarus (Pascal-IDE)
- Entwicklungswerkzeuge u.a. für QT
- Werkzeuge für Freeze
- JAVA-Laufzeitumgebung für GreenMail
- Zusätzliche Fremdsoftware für den Betrieb von K4/Clarissa
- Software für den Anwender, die von K4/Clarissa aufgerufen wird, um diverse Medien anzuzeigen
Anschließend die konkreten Pakete in der (k)ubuntu 24.04 LTS Distribution:
apt install
python3-pip python3-venv python3-dev python3-psutil
portaudio19-dev libpq-dev
gitk meld
flamerobin firebird3.0-server
postgresql
sqlite3 sqlitebrowser
lazarus
qttools5-dev-tools qtpdf5-dev zbar-tools
make gcc (bei Bedarf, meist schon automatisch installiert)
patchelf p7zip-full
default-jre
syncthing
xdg-utils (bei Bedarf, meist schon automatisch installiert)
vlc gnuplot libreoffice ffmpeg
Es wird ein Paßwort für den Administrator sysdba
für Firebird erfragt: Benutze masterkey
!
Anmerkung: Debian 12 netinstall
Die Unterschiede bei der Installation eines Entwicklungssytems für K4/Clarissa unter (k)ubuntu 24.04 und Debian 12 (ausprobiert Desktop mit KDE) sind fast zu vernachlässigen. Die zu installierenden Pakete sind die gleichen.
K4/Clarissa holen und installieren
Intern verwenden wir GIT für die Versionsverwaltung. Jedoch ist das Repository noch nicht in seiner Gesamtheit aufgeräumt, so daß es öffentlich gemacht werden könnte.
Bis dahin stellen wir den aktuellen Stand der Software nur auf Anfrage als verschlüsseltes ZIP-Archiv zur Verfügung.
Nach dem Entpacken gibt es einen Ordner k4
mit folgenden Unterordnern:
k4/pm -- Python-Code für Clarissa und PM (Prozeßmanager) etc.
k4/pascal -- Object-Pascal Code für ein Firebird-Modul
k4/firebird -- (P)SQL-Dateien zum Aufbau der Datenbank
Im folgenden gehen wir davon aus, daß wir uns im Basisordner k4/
befinden.
Python venv - Anlegen einer virtuellen Umgebung
Alle von K4/Clarissa benötigten Python3-Pakete, werden über eine virtuelle Umgebung,
die sich im Unterordner pm/__venv__/
befinden muß, bereitgestellt.
Damit sind wir vom System unabhängig und können Pakete auch in erlesenen Versionen installieren.
Dazu folgende Kommandos ausführen:
cd pm/
python3 -m venv __venv__
source __venv__/bin/activate
pip install --upgrade pip
bash scripts/create_venv.sh
deactivate
Anmerkung:
- Es ist nicht sinnvoll, alle Pakete hier einzeln zu benennen, das ändert sich häufiger.
Das Script
create_venv.sh
zur Wiederherstellung der virtuellen Umgebung wird jedoch regelmäßig aktualisiert. - Bei
make enable
(siehe unten), wird u.a. eine Dateietc/modules.txt
erzeugt, in der alle benötigten Pakete und deren Versionsnummern aufgelistet sind.
Inbetriebnahme der Lazarus-IDE
Ursprünglich war vorgesehen, die gesamte generische GUI (d.h. Clarissa) mit Object-Pascal zu realisieren. Obwohl die Sprache gegenüber C++ einige Vorteile bietet (u.a. die unvergleichbare Kompiliergeschwindigkeit), hat sie sich in der praktischen Anwendung häufiger als sehr beschränkt erwiesen (z.B. bei der Integration einer modernen Webengine). Inzwischen setzt Clarissa vollständig auf PyQT5. Dennoch ist eine Komponente unter Object-Pascal verblieben, ein externes Modul für die Firebird-Datenbank zur Berechnung von Hashes.
Lazarus ist eine an Delphi angelehnte Entwicklungsoberfläche, die über das OS-Menü gestartet werden kann;
bei Bedarf auch über die Kommandozeile mit lazarus-ide
.
Das einzig verbliebene Teilprojekt ist zu finden unter pascal/libk4crypt/libk4crypt.lpi
.
Hauptmenü: Projekt => Projekt öffnen…
Hauptmenü: Package => Package-Datei (*.lpk) öffnen…
Im Dialog nach dcpcrypt-2.0.4.1
gehen und die Datei dcpcrypt.lpk
öffnen.
Dabei wird ein weiteres Fenster geöffnet, dort Kompilieren klicken. Danach dieses Fenster wieder schließen.
Anschließend: Hauptmenü: Start => Neu kompilieren
Danach kann die IDE geschlossen werden: Hauptmenü: Datei => Beenden
Zum Schluß muß das Kompilationsergebnis noch umbenannt werden:
cd pascal/libk4crypt/lib/
mv libk4crypt libk4crypt.so
Vorbereitungen an der Firebird-Datenbank
Wir gehen davon als, daß das Paßwort des Datenbank-Administrators sysdba
dem Standard entspricht,
d.h. masterkey
(siehe oben) lautet. Das ist zwar nicht empfehlenswert für eine Datenbank im Produktiveinsatz,
aber für die Test- und Entwicklungsumgebung am wenigsten problematisch.
Folgende Schritte als root:
cd pascal/libk4crypt/lib/
cp libk4crypt.so /usr/lib/x86_64-linux-gnu/firebird/3.0/UDF
nano /etc/firebird/3.0/firebird.conf
(Zeilen am Ende einfügen bzw. ersetzen)
DatabaseAccess = Restrict /var/lib/firebird/3.0/data/
UdfAccess = Restrict /usr/lib/x86_64-linux-gnu/firebird/3.0/UDF
systemctl restart firebird3.0.service
Vorbereitungen an der PostgreSQL-Datenbank für Tests
Die folgenden Einstellungen an PostgreSQL sind für die Testsuite erforderlich, jedoch nicht empfehlenswert für eine Datenbank im Produktiveinsatz.
Folgende Schritte als root:
su - postgres
psql
alter user postgres with password 'postgres';
\q
exit
nano /etc/postgresql/16/main/postgresql.conf
(Zeile am Ende einfügen bzw. ersetzen)
default_transaction_isolation = 'repeatable read'
systemctl restart postgresql
Erste Schritte: Wie komme ich zu einer umfassenderen Dokumentation?
Zunächst:
cd pm/
./dev.py make enable (oder: make enable)
Hierbei werden u.a. Dokumentationen im HTML-Form erstellt. Anschließend kann dieses Dokument (sowie alle weiteren) auch im Browser betrachtet werden:
cd pm/docs/technical.de/site/
firefox install/install-linux.html
Vorbereitungen für die Tests
Zur Vorbereitung der Testumgebung öffne eine Konsole und gehe dort in den Ordner k4/
.
Dort gib die folgenden Kommandos ein:
cd pm/
./dev.py make enable
./Clarissa.py --inittest
Das Kommando enable
baut eine vollständige Betriebumgebung auf.
Im heruntergeladenen und entpackten Zustand wäre K4/Clarissa ohne diese Initialisierung nicht lauffähig.
Das letzte Kommando öffnet eine GUI, um noch persönliche Daten abzufragen, welche für die Tests erforderlich sind.
Wähle in der ersten Maske die Variante der Testumgebung Standardtestkonfiguration
und klicke auf Weiter
:
In der zweiten Maske müssen zwei gültige Mobilnummern mit laufender Telegram-App (https://telegram.org) angegeben werden. Du brauchst unmittelbaren Zugriff auf beide, damit Du die Registrierungscodes von Telegram auch bekommst und nachfolgend eingeben kannst.
In den nächsten beiden Masken werden die Registrierungscodes erwartet.
Öffne Telegram auf dem jeweiligen Telefon - die Nummer ist in der Maske oben zu sehen - öffne dort den Kanal
zu Telegram
. Die Registrierungsnummer sollte binnen weniger Sekunden zugestellt werden.
Die Testumgebung ist eingerichtet mit test
als primären Spieler und gast
als sekundären.
Anmerkungen:
- Das Paßwort in den letzten Masken ist nur nötig, wenn Du in Telegram eins vergeben hast.
- Falls Du doch keinen Zugriff auf zwei Mobiltelefone hast, reicht zur Not auch eins. Gib lediglich die primäre Telefonnummer an und mache das Eingabefeld für die sekundäre leer. D.h. lösche die dort bereits eingetragene +49 Ländervorwahl! Dann werden die Tests ohne Kommunikationstests unter Telegram ausgeführt und in der sekundären Clarissa-Instanz wird Telegram auch nicht verfügbar sein.
Ausführen der Testsuite
Mit der Kommandozeile unter pm/
:
./pm.py testall --continue
werden alle Tests der Suite ausgeführt.
Die Option --continue
teilt der Testsuite mit, daß die Tests im Falle eines Fehlers fortgeführt werden.
Ohne diese Option werden weitere Tests im Fehlerfall nicht mehr ausgeführt.
Achtung: Die über 440 Tests laufen i.d.R. einige Stunden. Rechner mit klassischer Festplatte brauchen hierfür extra Zeit, da die Zugriffe auf die Datenbank zusätzlich gebremst sind.
Bedauerlich, aber wahr:
- Windows-Systeme haben sich bei den Datenbankzugriffen (bisher: Firebird 3, Stand Ende 2024) als effektiver erwiesen als vergleichbare Linux-Systeme.
- Sogar virtuelle Systeme (z.B. virtualbox) sind manchmal schneller als ihre Hosts.
Diese Tests werden außer endlosen Textausgaben nichts weiter liefern, sind aber für die Enwicklung (Stichwort: test driven development) unerläßlich. Nach Abschluß der Tests solltest Du die Konsole ein ganzes Stück nach oben scrollen, um eventuelle Fehlerfälle einsehen zu können.
Am Ende eines Testlaufes wird auch ein Bugreport erstellt, zu finden im Unterordner var/bugreports
.
Ausführen der Transporttests
Falls Du keinen Appetit auf die langwierigen Trockentests hast, kannst Du auch gleich hier beginnen.
Mit den Transporttests allein werden nur wenige der Tests von oben ausgeführt, die sich auf die Kontrolle der Transportsysteme beschränken.
./scripts/test_transports.sh
Dabei werden u.a. Nachrichten generiert, welche für die hier noch folgenden Versuche relevant sind.
Anlegen von Datenbanken zum Ausprobieren
Gib folgende Kommandos über die Konsole unter pm/
ein:
./scripts/cdb.sh test
./scripts/cdb.sh gast
Es werden Datenbanken für beide Spieler - test
und gast
- erzeugt und mit Testdaten beladen.
Auch das dauert für beide eine Weile - auf einem handelsüblichen Desktop ca. 10-15min pro Spieler.
Starten der GUI für den Spieler test
- interne Suche
Die ersten Versuche haben noch nichts mit Clarissa-NET selbst zu tun, zielen aber darauf ab, die GUI grundsätzlich kennenzulernen.
Das Kommando unter pm/
:
./Clarissa -C etc/k4ts-test.json
startet die GUI für den primären Spieler test
.
Die Anwendung startet im Testmodus immer mit der Hauptsuchseite.
Außerdem wird im Testmodus eine Konsole geöffnet, auf der sämtliche Logs des Hintergrundprogramms pm
(Prozeßmanager) zu sehen sind.
Die kann zunächst ignoriert werden. Aber bitte nicht schließen!
Das primäre Ordnungsschema der GUI sind Reiter - wie bei heute üblichen Webbrowsern. Jeder Reiter führt auf je eine Seite mit einer Sicht auf die persönlichen Daten in der Datenbank.
In der Testversion ist Heisenberg als Suchbegriff auf der Hauptsuchseite bereits eingegeben.
Es reicht, dort den Button Duchsuche meine Daten
zu klicken, um auf die folgende Ergebnisseite zu gelangen.
Es steht Dir natürlich frei, jeden beliebigen anderen Begriff einzugeben. Beachte jedoch, bisher werden nur einzelne Wörter oder Teile eines Wortes akzeptiert.
Bei jeder neuen Suche, die über die Hauptsuchseite angestoßen wird, erscheint eine neue Ergebnisseite. Dort sind alle Suchergebnisse zusammengetragen.
Beachte, daß einige der Ergebnisse das Wort Heisenberg erkennen lassen, andere aber nicht. Beispielsweise ein Dokument physik-faq.txt bzw. eine Mail mit dem Betreff Physik FAQ enthalten das Wort Heisenberg nur in den angehängten Inhalten (in diesem Fall eine Textdatei). Dennoch werden sie über den Index, den K4/Clarissa automatisch erweitert, gefunden.
Auf der Ergebnisseite sind einige weitere Aktionen möglich, auf die wir hier nicht näher eingehen. Stattdessen beschränken wir uns darauf, wie detaillierte Informationen zu einem Suchergebnis erhältlich sind. Ganz einfach: Doppelklick auf das Ergebnis, z.B. auf den ersten Bucheintrag von Weizsäcker.
Der Doppelklick leitet automatisch auf eine Seite weiter, die zur Anzeige des angeklickten Suchergebnisses geeignet ist. In diesem Fall ist es eine Seite zur Verwaltung von Büchern. Das geklickte Buch von Weizsäcker wird ausgewählt und seine Details auf der rechten Seite präsentiert.
Theoretisch könntest Du hier jetzt Änderungen vornehmen und speichern, aber auch das lassen wir hier außen vor.
Umgang mit Kontakten
Stattdessen begeben wir uns in das Hauptmenü und wählen dort Persönliches => Kontakte zusammenfügen
.
Dabei wird eine weitere Seite geöffnet, die darauf spezialisiert ist, Kontakte zu finden, die einander ähnlich sind und möglicherweise zusammengehören, d.h. ein- und dieselbe Kontaktperson repräsentieren. Gleich zu Beginn sind in der Liste auf der linken Seite etliche Kandidaten von Kontaktgruppen aufgeführt, die zusammengeführt werden können. Angezeigt wird in der Liste für jede Gruppe von Kontakten, die evtl. zusammengehören, je ein Element mit Informationen darüber, was bei den gefundenen Kontakten gleich ist. Im Beispiel sind oben eine Reihe Telefonnummern zu sehen, die in mehreren Kontakten auftreten. Klicke einen Eintrag (per Einfachklick), um eine solche Gruppe auszuwählen.
Daraufhin werden in der Liste in der Mitte alle Kontakte der angewählten Gruppe angezeigt.
Im Beispiel oben sind das drei Kontakteinträge, die alle den Namen Dr. Erika Mustermann tragen.
In der Maske rechts ist jetzt zu sehen, wie der Kontakt zusammengeführt aussehen würde.
Spiele ein wenig mit dem Button Permutation
, welcher die Reihenfolge bei der Zusammenführung von Kontakten verändert.
Bei 2 Kontakten sind das nur 2 Varianten, bei 3 schon 6!
Wenn das Ergebnis der Zusammenführung gefällt (achte dabei insbesondere auf den Namen),
klicke Selektion zusammenführen
.
Bei jeder neuen Zusammenführung wird die Anzahl der Gruppen in der Liste auf der linken Seite geringer. Wenn Du die Aktion wiederholt ausführst, ist die Liste irgendwann leer.
Jetzt kannst Du noch die Datenbanksicht (View) verändern, mit der weitere potentielle Kandidaten zum Zusammmenführen gefunden werden können. Dazu Klick auf die dunkelrot hinterlegte Nummer oberhalb der Liste auf der linken Seite. Bei Klick dort wird die Nummer (d.h. die Datenbank-View) zyklisch verändert und die Liste darunter angepaßt.
Dieser oben erwähnte rote Button besitzt auch ein Kontextmenü (Öffnen per Rechtsklick), in welchem die hinterlegten Datenbank-Views alle bezeichnet sind. Dort kann explizit eine View ausgewählt werden.
Andere Datenbank-Views liefern unter Umständen weitere Kandidaten von Kontakten, die zusammengeführt werden können.
In unserem Beispiel können wir alle Kandidaten zusammenführen, bis alle Datenbank-Views keine Kontakte mehr finden, die einander ähnlich sind.
Nachdem alle möglichen Kontakte auf die beschriebene Weise zusammengeführt worden sind,
gehe auf die Seite Kontakte
(im Testmodus ist diese schon als Reiter nach dem Start vorhanden).
Falls nicht, sie kann auch über das Hauptmenü Persönliches => Kontakte
erzeugt und geöffnet werden.
Auf der linken Seite befindet sich wieder eine Liste, in der Kontakte zur Auswahl stehen. Auch hier besteht die Möglichkeit, die Datenbank-View zu ändern, welche die Liste generiert. Wähle dort die letzte View (Nummer 4), welche alle Kontakte (außer jenen, die im Papierkorb sind) zurückgibt. Der Button links neben dem View-Button ändert die Art der Sortierung der Liste. Spiele ein wenig damit! Auch dieser Button hat ein Kontextmenü, über welches das Sortierkriterium verändert werden kann. Wähle eine nach Namen sortierte Liste und:
- Klick auf Max Mustermann
- SHIFT-Taste + Klick auf den Kontakt max777
Das Ergebnis sollte jetzt wie im obigen Bild aussehen.
Max Mustermann ist als primäres Objekt ausgewählt und neben der Liste im Detail zu sehen. Der zweite Kontakt max777 (andere Hintergrundfarbe in der Liste) ist als sekundäres Objekt ausgewählt und rechts zu sehen.
Wenn zwei Objekte (in unserem Fall Kontakte) auf dieser Seite ausgewählt sind,
kannst Du den Button Zusammenführen
rechts unten klicken.
Beide selektierten Kontakte verschwinden aus der Liste. Stattdessen erscheint ein neuer Kontakt Max Mustermann, der eine weitere Kontaktadresse (XMPP: max777fake@gmx.de) aufweist. Außerdem sind dem Kontakt Namensvarianten hinzugefügt worden, die aus der sekundären Auswahl stammen.
Hinweis: Auf diese Weise können auch andere Datenbankobjekte zusammengeführt werden.
Identitäten
K4/Clarissa verwaltet neben Kontakten auch sogenannte Identitäten. Unter einer Identität verstehen wir eine einzigartige Kennung für einen Teilnehmer am Clarissa-NET. Mit allen Leuten, die K4/Clarissa verwenden und dessen Identität Du kennst, kannst Du über jedes beliebige Transportsystem verschlüsselt kommunizieren. Für Versierte: Hinter der Identität verbirgt sich asymmetrische Kryptographie (z.Z. RSA).
Über das Hauptmenü Persönliches => Identitäten
öffnest Du eine weitere Seite,
wo Du alle Dir bekannten Identitäten in einer Tabelle vorfindest.
Klicke die erste und einzige Zeile in der Tabelle an.
Rechts neben der Tabelle sind die Details der Identität zu sehen inklusive eines QR-Codes. Wir arbeiten hier mit Testbeispielen, daher ist der QR-Code weniger interessant. Wenn Du jedoch auf Deiner eigenen Datenbasis arbeitest, können Freunde von Dir diesen QR-Code Deiner eigenen Identität abfotografieren und an ihren eigenen Telegram-Kanal Gespeiertes senden. Wenn sie gleichzeitig ihre eigene Clarissa-Instanz laufen haben, kann auf diese Weise die Identität zwar verläßlich, aber nicht geschützt übertragen werden.
Ein erster Blick auf die Seiten für die Kommunikation
Wenn im Vorfeld die Transporttests erfolgreich durchgelaufen sind, werden eine Reihe Nachrichten in unterschiedlichen Transportsystemen erzeugt. Diese sind bestens geeignet für einen ersten Blick auf jene Seiten, über welche die unterschiedlichen Transportsysteme repräsentiert werden.
Zunächst Hauptmenü Kommunikation => Syncthing P2P
;
nähere Informationen zum Transportsystem Syncthing sind hier zu finden.
Die Liste links auf der neuen Seite ist zunächst leer. Doch sofort nach der ersten Öffnung einer Kommunikationsseite werden verfügbare Nachrichten über das Transportsystem - in diesem Fall Syncthing - ausgelesen. Es erscheinen Kanaleinträge in der Liste links, die Du anklicken kannst, um die Nachrichtenhistorie im Kanal auf der rechten Seite zu sehen.
Das gleiche machen wir jetzt mit dem nächsten Transportsystem über Kommunikation => Trvfile Client
.
Über dieses Transportsystem laufen die meisten Kommunikationstests aus der Testsuite, daher werden hier etliche Nachrichten abgeholt, und das dauert auch eine Minute.
Hier ein paar Worte im Detail:
Es sind zwei Kanäle zu sehen, einer ist eingerahmt - Test Konto
.
Das ist der Kanal, der nur dem Eigner der Clarissa-Instanz gehört und somit eigene, nicht geteilte Daten enthält.
Werden solche Daten von außerhalb eingeschleust, erfahren sie beim Empfang in K4/Clarissa eine besondere Behandlung.
Sie werden nicht nur als Nachrichten erfaßt, die in der Historie rechts chronologisch betrachtet werden können,
sondern auch umgewandelt in passende Datenbankobjekte.
In der Regel sind das Notizen: Texte, Bildnotizen, Sprachnotizen und sogar Videos.
Wenn die Nachrichten Bilder mit QR-Codes enthalten, werden diese Codes ihrerseits interpretiert.
Der eben beschriebene Interpretationsprozeß erzeugt also neue Datenbankobjekte, diese werden durch kurze Nachrichten in der oberen rechten Ecke für ein paar Sekunden lang angezeigt.
In der Folge wird u.a. ein QR-Code interpretiert, der eine Identität trägt.
Wir wechseln wieder zurück zur Seite der Identitäten
und klicken dort den Refresh-Button (grüner Kreispfeil links oben, unterhalb der Reiterzeile).
Es ist jetzt eine zweite Identität für den Spieler gast
sichtbar geworden,
welche über eine Nachricht mit einem QR-Code importiert wurde.
Erinnern wir uns einige Zeilen zurück:
Wenn jemand einen QR-Code fotografiert und an seinen eigenen Telegram-Kanal Gespeiertes sendet,
wird die darin enthaltene Identität genau auf die gleiche Weise in die eigene Datenbank gebracht.
Allerdings stört uns diese Identität für die weiteren Versuche,
daher wählen wir diese aus und betätigen den Button In den Papierkorb
unterhalb des QR-Codes.
Die Identität für gast
sollte jetzt aus der Tabelle verschwinden.
Schlußendlich weisen wir noch auf die beiden Hauptmenü-Einträge:
Kommunikation => Matrix Client
Kommunikation => Telegram Client
hin, die in gleicher Weise Seiten für die Kommunikation über Matrix (https://matrix.org) bzw. Telegram öffnen. Matrix läuft im Testmodus über einen lokalen Testserver (Synapse - https://github.com/matrix-org/synapse). Telegram läuft wie im Normalbetrieb; dafür müssen auch die beiden Mobilnummern am Anfang der Übung angegeben werden. Je nachdem, wieviele Gesprächspartner Du auf Telegram hast bzw. wieviele öffentliche Kanäle abonniert, kann die erste Runde des Herunterladens von Nachrichten eine Weile dauern. Man kann auf der GUI gut beobachten, wie die Nachrichten in der Datenbank eintreffen und nach und nach neue Kanäle erscheinen.
Anmerkung: In der aktuellen Fassung lädt K4/Clarissa Nachrichten immer vollständig herunter (also mit angehängten Medien). In Telegram können Mediendateien bis zu 2GB groß sein, das Herunterladen solcher dauert entsprechend lange.
Das sekundäre Testkonto gast
Zunächst beenden wir unsere Aktionen auf der Datenbank für den primären Spieler test
.
Dazu Hauptmenü Steuerung => Beenden
oder Klick auf den Schließen-Button in der Fensterleiste.
Anschließend starten wir die GUI für den sekundären Spieler gast
:
./Clarissa -C etc/k4ts-gast.json
Wiederhole nun alle Aktionen für gast
, welche Du soeben für test
ausgeführt hast, d.h.:
- Die Suche nach Heisenberg sollte vergleichbare Ergebnisse liefern,
denn die Testdaten sind nach dem Erzeugen der Datenbanken mit
./scripts/cdb.sh
sehr ähnlich. - Auch die Kontakte sind sehr ähnlich, jedoch mit vertauschten Rollen:
gast
aliasGast Nutzer
ist jetzt der Eigner (in der Kontaktliste gesondert hervorgehoben), anstelle vontest
aliasTest Konto
. - Für den sekundären Spieler werden deutlich weniger Nachrichten heruntergeladen.
- Es existieren keine Nachrichten in eigenen Kanälen, wie das bei
test
der Fall war. Infolgedessen wurden auch keine QR-Codes interpretiert, welche in der Clarissa-Instanz vontest
eine Identität fürgast
erzeugt haben.
Zurück zur Kommunikation - Clarissa-NET
Teilnehmer am Clarissa-NET haben die folgenden Möglichkeiten:
- Austausch von Nachrichten
- Austausch von Identitäten - wenn ein persönliches Treffen zum Abfotografieren von QR-Codes nicht möglich ist
- Gekapselter bzw. verschlüsselter Nachrichtenaustausch
- Austausch von Dateien und/oder Ordnern
- Austausch von Datenbankobjekten
- Entfernte Suche
- Anfordern den Inhalts von Suchergebnissen
In diesem Abschnitt wollen wir uns diesen Möglichkeiten praktisch annähern.
Zunächst öffne zwei Konsolen unter pm/
, über jede gib je einen der beiden Befehle ein,
um die Clarissa-GUI für die Spieler test
und gast
parallel zu starten:
./Clarissa -C etc/k4ts-test.json
./Clarissa -C etc/k4ts-gast.json
Anmerkung: I.d.R. verhindert K4/Clarissa den Start mehrerer Instanzen. In der Testkonfiguration jedoch benutzt das sekundäre Konto alternative Ports für den Prozeßmanager im Hintergrund sowie für externe Software wie z.B. Syncthing.
Nachrichtenaustausch
Nun gehe in beiden Instanzen von K4/Clarissa auf die gleiche Kommunikationsseite, z.B. Matrix
.
In beiden Instanzen existiert nach den Tests der Transportsysteme (siehe oben) nur je ein Kommunikationskanal unter Matrix, zum jeweilig anderen.
Diese wähle aus! Das sollte bereits geschehen sein, wenn die Seite zu Matrix schon einmal geöffnet war,
d.h. K4/Clarissa merkt sich für jede Seite, was zuletzt selektiert worden ist.
Nun schreibe Nachrichten in die Box unten und schicke sie ab durch Klick auf den Button Sende
.
Versuche das in beiden Instanzen von K4/Clarissa!
Eine einmal gesendete Nachricht verschwindet aus dem Eingabefeld und erscheint u.a. mit Zeitstempel in der Historie darüber.
Kurze Zeit später wird sie auch in der Historie der anderen Clarissa-Instanz sichtbar, mit vertauschten Hintergrundfarben (für Ein- und Ausgang).
Neben der Eingabebox gibt es verschiedene Buttons mit Icons.
Gehe mit dem Mauszeiger darauf und warte einen Moment, es erscheinen Tooltips zum besseren Verständnis.
Klicken wir jetzt in der Clarissa-Instanz von gast
auf den Button mit dem Schloß.
Das Schloß, das zunächst offen war, erscheint jetzt geschlossen.
Das bedeutet, daß die nächste Nachricht mit der Absicht auf Verschlüsselung gesendet werden soll.
Zunächst jedoch, wird diese Nachricht nicht verschlüsselt, sondern nur gekapselt,
erkennbar an der roten Marke im Kopf der Nachricht in der Historie, nachdem sie gesendet wurde.
Ein Tooltip an dieser Marke erläutert die verschiedenen Farbcodierungen.
Warum also nur gekapselt?
Der Grund ist (dazu wirf einen Blick auf die Seite mit den Identitäten),
der Spieler gast
, der soeben gesendet hat, besitzt keine Kenntnis über die Identität von test
.
Eine Verschlüsselung ist daher nicht möglich.
Identitätsaustausch und verschlüsselte Kommunikation
Für diesen Zweck bietet Clarissa-NET die Möglichkeit zum Austausch von Identitäten über das Netz an.
Dazu wechsle in der Instanz von gast
auf die Kontakt-Seite und selektiere dort den Kontakt Test Konto
.
In der Maske mit den Details von Test Konto
(siehe rechts) gibt es einen Button
Einladung zu Clarissa
(Tooltip im Screenshot sichtbar). Ein Klick dort:
öffnet ein weiteres Fenster, wo in einer Combobox eine der gültigen Transportadressen ausgewählt
werden kann, die für Test Konto
aus der Sicht von gast
zur Verfügung stehen.
Wir haben test@~/tmp/trvfile
angewählt (Transportsystem Trvfile - also über Dateien),
das ist am schnellsten und für unsere Zwecke ausreichend.
Dann klicke Austausch der Identitäten
.
Hinweise:
- Der Austausch versendet und empfängt mehrere Nachrichten
- Es werden Plausibilitätsprüfungen durchgeführt, die es einem potentiellen Angreifer möglichst schwierig machen, sich in diesen Austausch einzuklinken, um gefälschte Identitäten zu verteilen (in der Kryptographie auch bekannt als Man in the Middle Attack)
- Wenn der Austausch über Syncthing P2P stattfindet, ist ein solches Unterjubeln falscher Identitäten theoretisch ausgeschlossen. Der Austausch setzt jedoch voraus, daß beide gleichzeitig on-line sind und dauert deutlich länger.
Nach dem Klick auf Austausch der Identitäten
verschwindet das Extrafenster.
Nachdem der Austausch selbst abgeschlossen ist,
erscheint in beiden Clarissa-Instanzen eine Information rechts oben über ein neues Identitätsobjekt.
Klicke darauf!
Du gelangst abermals auf die Identitäten-Seite, und Du hast für gast
einen neuen Eintrag, den für test
.
Vergleiche das mit der Identität von test
in der Clarissa-Instanz von test
selbst.
Es ist die selbe, wie im Screenshot oben erkennbar.
Jetzt gehe in beiden Clarissa-Instanzen zurück auf die Kommunikationsseiten von Matrix:
und wiederhole das Senden von Nachrichten von gast
nach test
mit geschlossenem Schloß-Icon.
Die gesendete und empfangene Nachricht ist fortan mit einem grünen Symbol markiert,
was signalisiert, daß diese Nachricht tatsächlich verschlüsselt übertragen wurde.
Übrigens: Verschlüsselte Nachrichten werden immer auch signiert,
d.h. der Empfänger kann sicher sein, daß der Sender authentisch ist und nicht irgend ein anderer.
Anmerkung: Gekapselte Nachrichten solltest Du nicht als Betriebsunfall betrachten, auch wenn das in diesem Beispiel so aussieht. Gekapselte Nachrichten erfüllen neben der Möglichkeit zur Verschlüsselung noch einen anderen Zweck: Nahezu alle Transportsysteme limitieren die Größe einzelner Nachrichten. Telegram-Benutzer sind hier mit 2GB Grenzgröße ziemlich gut aufgestellt. Andere Systeme wie E-Mail, XMPP, Matrix sind hierbei viel pingeliger. Möchte man dennoch Zeug übertragen, das größer ist als das Limit eines Transportsystems, hilft eine gekapselte Nachricht insofern, da sie fragmentiert werden kann, bevor sie gesendet wird. Das heißt, die gekapselte Nachricht wird in viele Teile zerlegt und passiert das Transportsystem in vielen Stücken. Die Empfängerseite sammelt alle Fragmente, setzt diese wieder zusammen und erscheint dort in der Form, bevor sie abgesendet wurde - als eine einzelne Nachricht.
Austausch von Dateien und/oder Ordnern
Einzelne Dateien ließen sich noch bequem als Anhänge von Nachrichten übertragen. Komplizierter wird es, wenn ein ganzer Ordner mit Dateien übergeben werden soll.
Hier helfen Archivdateien (*.zip oder *.tar.gz), welche übertragen und auf der Gegenseite wieder entpackt werden. Noch umständlicher wird es, wenn die Größe der Daten die Begrenzungen der Transportsysteme überschreitet. K4/Clarissa macht all das für Dich in einem Rutsch.
Laß uns, um das zu demonstrieren, wieder mit der Clarissa-Instanz von gast
beginnen.
Über das Hauptmenü Kommunikation => Übertrage Dateien ...
wird ein neues Fenster aufgerufen, über das Du mehrere Empfänger und den zu übertragenden Inhalt auswählen kannst.
Versuche den Namen des Empfängers einzugeben, in diesem Fall test
.
Beobachte wie das Eingabefeld eine Reihe von Möglichkeiten zur Schnellauswahl anbietet.
Die Liste der Angebote wird mit jedem eingegebenen Buchstaben überschaubarer.
Dateien und Ordner werden über die Buttons unten ausgewählt bzw. wieder entfernt.
Für unsere Demonstration reicht es, wenn wir den Ordner k4/pm/docs/manual.de/docs
auswählen.
Mit OK
wird die Übertragung schließlich ausgeführt.
Gehe nun in die Clarissa-Instanz von test
, dem Empfänger.
Nach der Übertragung erscheint abermals eine Benachrichtigung in der oberen rechten Ecke der Anwendung. Wenn Du darauf klickst, öffnet K4/Clarissa den Dateimanager des Systems in dem Ordner mit den übertragenen Dateien.
Hinweise:
- Ist die Identität des Empfängers bekannt, erfolgt die Übertragung immer verschlüsselt und signiert.
- Das Transportsystem zur Übertragung wird vom System selbst ausgewählt - im Screenshot ist es Syncthing gewesen. Am Rande: Warum eigentlich soll sich irgend ein Anwender damit beschäftigen, worüber gesendet wird?
- Selbst große Archive werden übertragen, indem die Daten gegebenenfalls fragmentiert werden.
- Aktuell stellt sich K4/Clarissa mit größeren Archiven (Umfang 100MB und mehr) noch sehr umständlich an. Solche Versuche empfehlen wir zunächst zu unterlassen, wenn Du das Ergebnis noch erleben möchtest.
Austausch von Datenbankobjekten
Dateien und Ordner übertragen ist eine nette Sache, interessanter wird es allerdings, wenn auch Datenbankobjekte wie Kontakte, Notizen etc. übermittelt werden. Als Beispiel nehmen wir hier eine Aufgabe (ein Ticket).
Als Anmerkung: K4/Clarissa bietet in rudimentäres Ticket-System an. Ein Ticket (bzw. eine Aufgabe) besteht in dieser Form lediglich aus einem Titel, einer Beschreibung, einigen Zeitstempeln und Daten zwecks Einordung. Alles andere sind Anhänge. Jeder Anhang hat wiederum einen Nicknamen (von wem kommt der Anhang), einen Zeitstempel und ein beliebiges Datenbankobjekt (den Inhalt des Anhangs). Das kann eine Notiz sein, eine angehängte Datei, eine Mail, eine Nachricht aus dem Chat - kurz, alles was Du Dir denken kannst.
Laß uns zunächst in beiden Clarissa-Instanzen über das Hauptmenü Sammlungen => Aufgaben
die Seiten öffnen, die für Aufgaben zuständig sind.
In den Beispieldatenbanken sind für beide Spieler je ein Ticket angelegt.
Beide Male ist das eine Zusammenstellung von Sonnenfinsternis-Fotos, die rechts chronologisch geordnet zu sehen sind.
Wir beginnen dieses Mal in der Clarissa-Instanz von test
.
Zunächst importieren wir eine weitere Aufgabe, über den Button Importieren ...
unten.
Gehe nach k4/pm/testdata/share/__common__/
und wähle dort ticket-20241211182439.zip
aus.
Mit einem Klick auf Öffnen
wird das kleine Archiv innerhalb einiger Sekunden importiert.
In der Folge erscheint in der Liste links ein neuer Ticket-Eintrag, welcher nun ausgewählt werden kann. Dabei erscheint rechts der Inhalt des Tickets mitsamt seiner Historie aus Notizen.
Anschließend klicke den Button Sende an ...
und wähle Gast Nutzer
als Empfänger aus.
Wechsle jetzt zur Clarissa-Instanz von gast
und erwarte dort eine Benachrichtigung über
einen Datenempfang.
Auch diese erscheint in der rechten oberen Ecke. Klickst Du darauf,
springt K4/Clarissa auf die Seite Aufgaben
, aktualisiert die Liste links und wählt das soeben
übertragene Ticket aus, so daß Du es rechts sehen kannst.
Es sei darauf hingewiesen, daß der Historie ein weiteres Ereignis angehängt wurde,
welches Auskunft darüber gibt, woher das Ticket gekommen ist.
Frage am Rande: Kannst Du Dir vorstellen, auf diese Weise - also über direkte Austausche und ohne Server - eine Zusammenarbeit zwischen mehreren Menschen zu organisieren?
Entfernte Suche und Suchergebnisse anfordern
Als letztes Feature von Clarissa-NET schauen wir uns noch das Suchen bei anderen an. Ich hoffe nicht, daß die Überschrift Herzrasen auslöst, gemäß der Befürchtung: Was wollen wir persönliche Daten verwalten, wenn doch wieder andere darin herumschnüffeln können? Ich vermag die Leser beruhigen: Was durch wen durchsucht und abgerufen werden kann, wird allein Deine Entscheidung sein!
Gehen wir wieder zur Clarissa-Instanz von test
und rufen über das Hauptmenü
Dokumente => Neue Notiz ...
auf.
Als Text schreiben wir hier nichts, klicken lediglich auf die Büroklammer,
um die Datei k4/pm/testdata/share/__common__/patent-381968.txt
zu laden.
Wir quittieren die neue Notiz mit OK
.
Nachdem die Notiz in der Datenbank angelegt ist, wechselt K4/Clarissa in die Ansicht für Notizen und zeigt die soeben geladene Notiz (enthält ein Patent von Nicola Tesla, Thema: Elektromotor) an.
Gehe jetzt zurück zur Hauptsuchseite:
und gebe dort den Suchbegriff coils
ein.
Klicke auf den Button Durchsuche meine Daten
.
Als Ergebnis erhalten wir einzig die zuletzt geladene Notiz.
Wenn wir zur Clarissa-Instanz von gast
wechseln und dort die gleiche Suche wiederholen,
bekommen wir selbstverständlich keine Ergebnisse.
Schließe dort die leere Ergebnisseite und kehren zurück auf die Hauptsuchseite.
Klicken wir auf der Hauptsuchseite von gast
stattdessen den Button Durchsuche Clarissa-NET
und wählen Test Konto
als Empfänger der Anfrage.
Nach Abschluß der Anfrage erscheint wiederum eine Benachrichtigung in der rechten oberen Ecke. Klicke darauf,
um das Ergebnis im Detail anzuschauen. Das, was wir hier sehen, ist das Ergebnis der Suchanfrage, nicht der Inhalt dessen. Alle Ergebnisse von Suchanfragen auf fremden Systemen werden in der Datenbank hinterlegt und auf dieser Seite verwaltet.
Hinweis am Rande: Manch einer mag sich fragen, wieso nicht gleich eine Ergebnisseite aufgerufen wird, wie das bei der lokalen Suche der Fall ist. Dein Kontakt, bei dem Du die Suche anforderst, muß zur selben Zeit nicht on-line sein. Dann wird die Suchanfrage vom Transportsystem zwar zugestellt aber nicht bearbeitet. Das wird sie erst, wenn der Empfänger seine Clarissa-Instanz erneut startet und neu eingetroffene Nachrichten bearbeitet. Das gleiche Spiel kann sich abermals wiederholen, wenn die Antwort zugestellt wird. Folglich kann eine Antwort beliebig zeitlich versetzt eintreffen.
Um auch an den Inhalt einer Suchanfrage zu kommen, markiere die Suchergebnisse, welche Du anfordern möchtest.
Das ist in diesem Fall nur eine einzige.
Es sei angemerkt, daß es mehrere sein können, wenn Du die Suchanfrage an mehrere gestellt hast.
Dann klicke den Button Auswahl anfordern
.
K4/Clarissa weiß, woher die Suchergebnisse gekommen sind und kann die Datenanforderungen entsprechend weiterleiten.
Sind die angeforderten Daten angekommen, gibt es wieder eine Benachrichtigung. Klicke darauf,
und Du landest auf einer Seite, die sogenannte Datenkörbe verwaltet. Dahinter verbirgt sich ein Ordnungsschema, das über die typischen Fremdschlüsselbeziehungen zwischen SQL-Tabellen hinaus geht. Die Idee eines Datenkorbs ist an die Idee eines Warenkorbs beim on-line Handel angelehnt. Man kann beliebige Daten in einen solchen Korb legen und dem Korb einen Kontext zuordnen, oder aber sie werden, wie hier, automatisch angelegt, wenn verschiedene Daten zwischen K4/Clarissa Anwendern ausgetauscht werden.
Mit einem Doppelklick auf den einzigen Inhalt des Korbs gelangen wir auf die Seite der Notizen,
und Du erblickst den selben Inhalt wie in der Clarissa-Instanz von test
,
d.h. Teslas Patentschrift zum Elektromotor.
Zum Schluß prüfen wir noch, ob das neu integrierte Objekt auch zu finden ist.
Wir wechseln auf die Hauptsuchseite von gast
,
geben dort abermals coils
ein und klicken dieses Mal auf Durchsuche meine Daten
.
Jetzt liefert K4/Clarissa sogar zwei Ergebnisse:
- die Ergebnisse einer entfernten Suchanfrage mit dem gleich lautenden Suchbegriff
- und die angeforderten Daten selbst.
Zusammenfassung
Was hier im Testmodus auf einer Maschine demonstriert worden ist, funktioniert auch über das Netz auf getrennten Maschinen, vorausgesetzt Du machst Dir die kleine Mühe, Deine Kontakte mit ihren Transportsystemen und Identitäten gewissenhaft zu verwalten. K4/Clarissa unterstützt Dich in jeder Hinsicht dabei, doch einige Entscheidungen (z.B. was zusammengeführt werden sollte) müssen von Dir getroffen werden.
Einmal getan, gestattet Dir K4/Clarissa eine verschlüsselte und signierte Kommunikation, Daten- und Dateiaustausche sowie entfernte Recherchen über jedes angebundene Transportsystem. Angenommen, eins der Systeme gerät durch Sanktionen oder Beschränkungen in Verruf, es gibt immer einen anderen Weg…
Einzige Voraussetzung: Vertraue Dich Deiner persönlichen Assistentin Clarissa an!
Bibliographie
- [1] Telegram - https://telegram.org
- [2] Matrix - https://matrix.org
- [3] XMPP - https://xmpp.org
- [4] Syncthing - https://syncthing.net
- [5] GreenMail - https://greenmail-mail-test.github.io/greenmail
- [6] Synapse - https://github.com/element-hq/synapse
Anmerkung zum Schluß
Die meiste Software heuzutage ist abstrakt und unpersönlich. Wir wollten mit K4/Clarissa ein Programmpaket schaffen, das, da es persönliche Daten verwaltet, auch persönlicher anmutet. Im obigen Beispiel ist das in sehr vereinfachter Form anhand eines immer wieder auftauchenden Bildes Deiner persönlichen Assistentin zu erkennen. Dieses Bild ist bisher nur vorläufigen Charakters und wird bei Gelegenheit ersetzt werden.