Illustration mit einem Muster aus zahlreichen Schlössern

Datenschutz für Roam Research: Graphen verschlüsseln

Persönliche Notizen enthalten viele private, vertrauliche oder gar geheime Informationen. Wer seine Notizen mit Roam Research verwaltet, will sich darauf verlassen können, dass niemand anders darauf zugreifen kann. Dies ist aber nur dann gewährleistet, wenn man seine Graphen verschlüsselt.

Es ist unglaublich praktisch, alle seine persönlichen Notizen in einem Tool wie Evernote, Microsoft OneNote, Notion, Tana, Obsidian oder eben Roam Research zu verwalten. Aber ist es auch sicher?

Was Daten sicher macht

Wenn man Daten gegenüber Dritten schützen möchte, dann spielen folgende Aspekte eine Rolle:

1. Ort der Datenspeicherung

Gewisse Apps speichern ihre Daten ausschliesslich auf dem lokalen Datenträger des Benutzers. Obsidian, Logseq oder Bear gehören beispielsweise in diese Kategorie. Dies macht sie vergleichsweise sicher – sofern der Benutzer verantwortungsvoll mit diesen Daten umgeht. Denn wenn man allerdings seine Dateien mit Dropbox, Microsoft OneDrive oder Google Drive in die Cloud synchronisiert, dann macht man den Vorteil der lokalen Datenspeicherung wieder zunichte. Und falls man sich eine Malware einfängt, die heimlich Daten an einen Hacker oder einen Geheimdienst übermittelt, dann bietet ein lokale Datenträger ebenfalls keinen Schutz.

2. Verschlüsselung von Dateien und Datenbanken

Verschlüsselung schützt Daten selbst dann, wenn die Dateien bzw. Datenbanken in fremde Hände gelangen sollten: Ohne das richtige Passwort (oder einen anderen Sicherheitsschlüssel) kann man die enthaltenen Informationen nicht lesen. Allerdings ist nicht jede Verschlüsselung gleich sicher: Es gibt unterschiedlich starke Verschlüsselungsmethoden, und natürlich müssen auch die Empfehlungen für sichere Passworter beachtet werden.

Entscheidend ist auch, ob es sich um eine Ende-zu-Ende-Verschlüsselung handelt (englisch End-to-End Encryption, kurz E2EE). Dies bedeutet, dass Daten sowohl bei der Speicherung als auch bei einer allfälligen Übermittlung durchgehend verschlüsselt sind und ausschliesslich vom Besitzer entschlüsselt werden können.

Das ist beispielsweise bei den genannten Cloud-Speichern nicht der Fall: Zwar werden die Dateien bei Dropbox, Microsoft OneDrive und Google Drive über eine sichere Verbindung übermittelt (Encryption in Transit) und verschlüsselt auf dem Server abgelegt (Encryption at Rest). Aber die Betreiber können den Inhalt der Dateien einsehen, wenn sie das wollen oder wenn es die Behörden verlangen. Wirklich sicher sind Daten also nur dann, wenn der Cloud-Betreiber keinen Zugriff darauf hat (Zero Knowledge).

3. 2-Faktor-Authentifizierung oder Passkeys

Bei besonders sensiblen Daten bietet ein Passwort allein keinen ausreichenden Schutz. Aus diesem Grund muss man sich beim E-Banking immer mit einem zweiten Code identifizieren, den man mit einer Smartphone-App oder einem Kartenlesegerät generiert.

Wer alle seine persönlichen Notizen in einer einzigen App verwaltet, möchte diese Notizen unter Umständen ähnlich gut schützen. Eine 2-Faktor-Authentifizierung sollte also zumindest als Option angeboten werden. Noch besser sind Passkeys, die benutzerfreundlicher und eher sicherer sind als die 2-Faktor-Authentifizierung.

4. Einsehbarer Quellcode

Wem seine Privatsphäre besonders am Herzen liegt, der sollte Open Source Software nutzen. Hier kann man den Programmcode studieren und selbst beurteilen, ob die Software sicher und vertrauenswürdig ist. Auch wenn man selbst zu wenig von Programmierung versteht, kann man zumindest darauf hoffen, dass andere Nutzer allfällige Sicherheitslücken schnell entdecken würden.

Datenschutz bei Roam Research

Nimmt man die genannten Kriterien als Massstab, dann sind persönliche Notizen bei Roam Research nicht besonders gut aufgehoben.

Lokale Datenspeicherung nur mit Einschränkungen

Roam speichert Daten im Normalfall in der Cloud als sogenannte Hosted Graphs. Local Graphs, die Daten auf dem lokalen Datenträger verwalten, waren zunächst den Kunden mit dem teuersten Preisplan vorbehalten. Seit April 2021 können zwar alle Kunden Local Graphs nutzen, aber wahrscheinlich haben sich die wenigsten die Mühe gemacht, bestehende Hosted Graphs zu konvertieren.

Zudem ist der Umgang mit Local Graphs gewöhnungsbedürftig. Die Daten werden nicht in einem frei wählbaren Verzeichnis gespeichert, sondern im Local Storage des Browsers. Wenn man also den Browser Cache löscht, ist der Local Graph weg, weshalb man zwingend ein automatisches Backup einrichten muss. Medien wiederum (also Bilder, PDFs und andere Dateien) liegen im Verzeichnis C:\Users\USER_NAME\AppData\Roaming\Roam Research\local-graph-uploads\GRAPH_NAME\uploads\ und sind im Backup nicht enthalten. Ausserdem funktionieren Local Graphs nur mit der Desktop App ohne Einschränkungen: In der Browser-Version kann man keine Medien in einen Local Graph einfügen.

Verschlüsselung erst seit 2022 und nur optional

Als Roam im Oktober 2019 als Public Beta veröffentlicht wurde, fehlte die Ende-zu-Ende-Verschlüsselung. Erst im Januar 2022 wurde diese nachgerüstet. Dadurch sind mutmasslich viele Graphen noch immer unverschlüsselt, denn man kann einen bestehenden Graphen nicht nachträglich verschlüsseln. Zudem ist die Verschlüsselung nicht standardmässig aktiviert, wenn man einen neuen Graphen anlegt.

Keine 2-Faktor-Authentifizierung

Beim Login auf roamresearch.com werden nur Benutzername und Passwort abgefragt (wobei die minimale Länge für Passwörter nur gerade 8 Zeichen beträgt). Eine 2-Faktor-Authentifizierung wird ebensowenig angeboten wie Passkeys.

Keine Open Source Software

Der Quellcode von Roam ist nicht einsehbar – man kann also nur hoffen, dass die Entwickler ihren Job gut machen und keine bösen Absichten verfolgen. Die wenig professionelle Kommunikation des Unternehmens und die schleppende Weiterentwicklung der App sind hier nicht unbedingt vertrauensbildend. Allerdings ist mir bisher nichts über Sicherheitslücken oder Backdoors zu Ohren gekommen.

Ungeschützte Medien

Ein weiter Punkt ist die spezielle Art und Weise, wie Roam mit Bildern, PDF-Dateien und anderen Dokumenten umgeht, die man in einen Hosted Graph einfügt. Diese werden nicht direkt in diesem Graphen gespeichert, sondern auf einen Google-Server hochgeladen und dann eingebettet. Im Graphen selbst findet man nur eine URL nach folgendem Schema: https://firebasestorage.googleapis.com/v0/b/firescript-577a2.appspot.com/o/imgs%2Fapp%2F<my_graph_name>%2F<random_filename>.png

Das Problem dabei ist: Diese Dateien sind nicht geschützt. Zwar muss man sowohl den Namen des Graphen als auch den zufälligen, 10-stelligen Dateinamen kennen, um eine Datei herunterladen zu können. Das ist prinzipiell ähnlich sicher wie eine Kombination aus Benutzername und Passwort. Allerdings sehe ich bei diesem System keinen Schutz gegen Brute-Force-Attacken.

Immerhin: Wenn man den Graphen verschlüsselt, denn werden auch die Dateien vor dem Upload verschlüsselt. Man sieht das direkt beim Einfügen am Fortschrittsbalken, man erkennt es aber auch am Dateinamen: aus *.png wird *.png.enc («enc» steht für «encrypted»). Selbst wenn ein Angreifer die URL herausfinden würde, wäre der Dateiinhalt für ihn nicht zugänglich.

Graphen in Roam verschlüsseln

Weil Local Graphs noch nicht so lange verfügbar sind und auch keine vollwertige Alternative darstellen, dürften die meisten Roam-Benutzer mit Hosted Graphs arbeiten. In diesem Fall sollte man unbedingt die Verschlüsselung nutzen, um den Schutz seiner Notizen zu gewährleisten.

Bei neuen Graphen ist der Vorgang sehr einfach: Man braucht nur die Option «Encrypted» anzuwählen und ein Passwort einzugeben. Wie bei jeder Ende-zu-Ende-Verschlüsselung sollte man dieses Passwort sehr sorgfältig aufbewahren, denn es gibt keine Möglichkeit, ein vergessenes Passwort zurückzusetzen. Auch die Roam-Entwickler können das Passwort nicht wiederherstellen – das ist ja der Sinn der Sache.

Ist ein Graph einmal verschlüsselt, dann muss man das Passwort jedes Mal eingeben, wenn man ihn öffnet. Dies gilt auch dann, wenn man die Desktop App nutzt, wo man sich sonst nur einmal in sein Roam-Konto einloggen muss. Zu Beginn empfindet man das vielleicht als anstrengend, aber Sicherheit hat nun einmal seinen Preis. Bei einem Passwort-Manager muss man sich ja auch jeden Tag neu anmelden.

Wichtig zu wissen ist, dass die Verschlüsselung nicht für Exporte und Backups gilt. Solange diese auf dem eigenen Rechner verbleiben und der Zugang zum Rechner abgesichert ist, scheint mir das ein vertretbares Risiko. Allerdings führt es die Verschlüsselung von Local Graphs (die ebenfalls möglich ist) ad absurdum: Wenn Local Graphs prinzipbedingt ein automatisches Backup brauchen, das Backup aber nicht verschlüsselt werden kann und auf dem gleichen Datenträger gespeichert wird, dann braucht man den Graphen gar nicht erst zu verschlüsseln.

Bei bereits bestehenden Graphen ist die Verschlüsselung etwas umständlicher, denn man kann nicht einfach nachträglich die Option «Encrypted» aktivieren. Vielmehr muss man seine Notizen aus dem unverschlüsselten Graphen als JSON-Datei exportieren und diese JSON-Datei anschliessend in einen verschlüsselten Graphen importieren. Das ist nicht speziell kompliziert, aber es kann etwas dauern: Bei 10’000 Seiten nimmt der Import gerne eine Stunde in Anspruch. Übrigens werden vorhandene Bilder und Dateien bei dieser Operation nicht nachträglich verschlüsselt – die Verschlüsselung wirkt sich nur auf zukünftige Uploads aus.