Cryptomator-Laufwerk verschwindet unter macOS

Vor knapp einem Monat schrieb ich über die freie Software Cryptomator. Mit Hilfe dieser Software können Verzeichnisse verschlüsselt werden. Dies eignet sich vor allem für den Einsatz in Diensten wie Dropbox, Nextcloud und Co. Unter macOS hat die Cryptomator-App allerdings ein Problem – wenn man das Laufwerk einige Minuten nutzt, verschwindet es plötzlich wieder.

Die aktuelle Betaversion beherrscht die Laufwerkseinbindung über FUSE

Möchte man weiter mit dem Laufwerk arbeiten muss es im Cryptomator neu gemountet werden; ein entsprechender Bugreport beschreibt das Problem im Detail. Der Grund für dieses Problem ist allerdings nicht beim Cryptomator zu finden, sondern bei macOS. Hier existiert ein Problem das die WebDAV-Verbindung nach einiger Zeit bzw. unter bestimmten Bedingungen kappt. Das Problem tritt somit nicht nur beim Cryptomator, sondern auch bei anderen Anwendungen auf, welche unter macOS WebDAV nutzen.

Abhilfe bei der Nutzung des Cryptomator schafft die Version 1.4.0, welche aktuell in der zweiten Beta-Version vorliegt. In dieser Version findet die Laufwerkseinbindung standardmäßig über FUSE statt, so das die WebDAV-Probleme der Vergangenheit angehören. Die Betaversion kann auf GitHub über die Release-Seite des Projektes bezogen werden.

Transparente Verschlüsselung für Cloud-Dienste

Wenn man Daten in die Dropbox schiebt oder bei anderen Cloud-Diensten hinterlegt, so geschieht dies in der Regel unverschlüsselt. Im Umkehrschluss bedeutet dies, dass der Anbieter einen vollen Zugriff auf die eigenen Daten hat. Abhilfe schaffen hier Programme welche den Inhalt auf der Seite des Clients verschlüsseln. Eine dieser Lösungen ist Cryptomator.

Cryptomator in Aktion

Mit dem Cryptomator wird ein Tresor in dem Cloud-Dienst der Wahl, wie z.B. Dropbox angelegt und mit einem Passwort gesichert. Die App erstellt nach dem Entsperren des Tresors ein neues Laufwerk, in welchem die Daten als Klartext vorliegen. Mit diesem Laufwerk kann anschließend gearbeitet werden. Über das Passwort bzw. daraus abgeleitete Schlüssel, werden die Dateien und Ordner verschlüsselt. Neben Applikationen für Linux, macOS und Windows, existieren ebenfalls Apps für iOS und Android.

‎Cryptomator 1: Legacy
Preis: 14,99 €
Cryptomator
Preis: 14,99 €

Auf der offiziellen Webseite wird detailliert über das Sicherheitskonzept informiert. Der Quelltext des Cryptomator ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL in Version 3 und damit freie Software.

Health-Daten in die iCloud synchronisieren

Die Gesundheitsdaten welche unter iOS gespeichert werden, können über die Health-App angeschaut werden. Möchte man die Daten von einem iOS-Gerät zu einem anderem iOS transferieren, so funktionierte dies bis iOS 11 nur über ein verschlüsseltes iTunes-Backup. Dieses musste von einem Gerät zum anderen Gerät transferiert werden.

Health-Synchronisierung in den iOS-Einstellungen

Seit iOS 11 können die Gesundheitsdaten über die iCloud synchronisiert werden. Dafür muss das Ganze in den Einstellungen unter Apple ID (bzw. Name) -> iCloud aktiviert werden. Damit stehen die Gesundheitsdaten auf allen iOS-Geräten mit der gleichen Apple ID zur Verfügung. Standardmäßig ist die Option aufgrund der sensiblen Daten deaktiviert. Laut einem Support-Dokument von Apple werden die Daten bei der Synchronisierung über iCloud verschlüsselt:

Für die Übertragung zwischen iCloud und Ihrem Gerät sowie für die Speicherung in iCloud werden die Daten verschlüsselt.

Auf der Infoseite zu Health gibt es ähnliche Informationen:

Mit iCloud werden alle deine Gesundheitsdaten auf allen deinen Geräten automatisch aktualisiert und dabei verschlüsselt übertragen und in iCloud abgelegt.

Wie genau die Verschlüsselung funktioniert und ob es sich um eine Ende-zu-Ende-Verschlüsselung handelt, geht daraus leider nicht hervor.

Let’s Encrypt unter Ubuntu und Nginx einrichten

Vor einigen Tagen habe ich damit begonnen alle von mir betriebenen Webseiten auf TLS umzustellen. Dabei nutzte ich Zertifikate der Zertifizierungsstelle Let’s Encrypt. Let’s Encrypt ging dabei im letzten Jahr in Betrieb und liefert kostenlose Zertifikate für TLS. Die CA wird dabei unter anderem von der EFF und Mozilla unterstützt. Im Gegensatz zu anderen Lösungen ist der Prozess bei Let’s Encrypt hochgradig automatisiert, so das die Einrichtung schnell von statten geht.

Der offizielle Client hört dabei auf den Namen Certbot (früher Let’s Encrypt Client) und implementiert das ACME-Protokoll (Automated Certificate Management Environment) über welches der Prozess abgewickelt wird. Neben dem offiziellen Client gibt es viele weitere Clients welche das ACME-Protokoll implementieren. Um Let’s Encrypt unter Ubuntu zu nutzen, muss im ersten Schritt der Client installiert werden:

apt-get install letsencrypt

Nachdem der Client installiert wurde, kann mit der Erzeugung der Zertifikate begonnen werden. Im Gegensatz zu Apache wird unter Nginx die automatische Einrichtung nicht unterstützt. Aus diesem Grund werden nur die Zertifikate mit dem Client erzeugt. Dies geschieht mit dem Befehl:

letsencrypt certonly

Damit wird der interaktive Modus gestartet in welchem das Zertifikat erzeugt werden kann. Zuerst wird nach einer Mailadresse gefragt, mit welcher das Recovery in Notfällen möglich ist. Anschließend müssen die allgemeinen Geschäftsbedingungen akzeptiert werden. Nun wird nach den Domains gefragt, für welche ein Zertifikat erstellt werden soll. Hier kann man mehrere Domains per Komma bzw. Leerzeichen getrennt angeben – allerdings scheint dies in der aktuellen Version nicht zu funktionieren. Stattdessen wird nur für die erste angegebene Domain ein Zertifikat erzeugt. Standardmäßig benötigt Certbot während der Generierung der Zertifikate Zugriff auf den Port 80. Hintergrund für dieses Verhalten ist das der Client kurz einen Webserver aufsetzt um die Kommunikation mit der CA durchzuführen.

Abgelegt werden die erzeugten Zertifikate dabei im Ordner /etc/letsencrypt/. In diesem Ordner liegen neben den Stammzertifikaten auch die eigentlichen Zertifikate für die einzelnen Domains. Nun kann dieses Zertifikat in Nginx eingebunden werden. Dazu muss die Konfigurationsdatei der jeweiligen Seite (z.B. /etc/nginx/sites-available/example) geöffnet werden. Im ersten Schritt wurde dazu in der Konfiguration eine Weiterleitung eingerichtet:

server {
        listen 80;
        listen [::]:80;

        server_name .example.org;

        return 301 https://$host$request_uri$is_args$args;
}

Diese Weiterleitung sorgt dafür das eine Verbindung über unverschlüsseltes HTTP automatisch auf die verschlüsselte Variante umgeleitet wird. Weiter geht es mit der Konfiguration der verschlüsselten Verbindung:

server {
        listen   443 ssl;
        listen [::]:443 ssl;

        ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;

        ...

Jedes erzeugte Zertifikat von Let’s Encrypt ist 90 Tage lang gültig, so das ein automatischer Prozess eingerichtet werden sollte um die Zertifikate automatisch zu erneuern. Mit dem Befehl:

letsencrypt renew --agree-tos

kann dabei der Erneuerungsprozess angestoßen werden. Möchte man das ganze ohne Risiko testen, so sollte der Parameter –dry-run angefügt werden.

letsencrypt renew --agree-tos --dry-run

Bei der Erneuerung der Zertifikate kann es nun vorkommen das man den Nginx-Server vorher beenden muss. Das ganze kann man in ein Skript gießen:

#!/bin/sh
service nginx stop
letsencrypt renew --agree-tos
service nginx start

Dieses Skript kann man nun zum Beispiel einmal in der Nacht per Cronjob ausführen. Der Client überprüft dabei ob eine Erneuerung notwendig ist und führt diese dann automatisch durch.

Certificate pinning im Browser

Beim sogenannten Certificate pinning werden Zertifikate, welche für die Verschlüsselung von Webseiten und anderen Diensten genutzt werden, lokal gespeichert. Dies hat den Vorteil, das dass Zertifikat nicht einfach unbemerkt durch ein anderes Zertifikat ausgetauscht werden kann und erschwert damit das abhören von SSL/TLS-Verbindungen.

Certificate Patrol
Preis: Kostenlos

Leider ist diese Funktionalität in den gängigen Browsern nicht vorhanden. Mit dem Firefox-AddOn Certificate Patrol kann man ein solches Certificate pinning im Browser nachrüsten. Zertifikate müssen dabei einmalig akzeptiert werden – anschließend wird man informiert, wenn sich das Zertifikat ändert. Damit ist es für einen Angreifer wesentlich schwieriger geworden, dem Nutzer falsche Zertifikate unterzuschieben.