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.
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.
Für verschlüsselte HTTP Verbindungen benötigt man ein Zertifikat. Dieses kann man sich von einer Zertifizierungsstelle (Certificate Authority, CA) ausstellen lassen. Der Haken an der Sache ist das dies Geld kostet (CACert und StartCom mal außen vor gelassen). Eine Alternative hierzu wäre es das Zertifikat selbst zu erstellen. Bei Diensten die man nur für einen kleinen Nutzerkreis z.B. für die Familie hostet, ist es auch vertretbar die Zertifikatswarnung im Browser über sich ergehen zu lassen. Für die Zertifikate wird ein Ordner erstellt und in diesen gewechselt:
Bei der Erstellung des Certificate Signing Request müssen einige Daten angegeben werden:
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Mecklenburg-Vorpommern
Locality Name (eg, city) []:Neubrandenburg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Skunk works
Common Name (e.g. server FQDN or YOUR name) []:example.org
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Nun muss das Zertifikat noch signiert werden, bevor wir es verwenden können:
In diesem Fall ist das Zertifikat 730 Tage, also zwei Jahre gültig. Da die Signierung nun abgeschlossen ist, kann das Zertifikat in Nginx eingebunden werden. Dazu öffnen wir die Datei „/etc/nginx/sites-available/example“, wobei „example“ hier natürlich für die entsprechende Konfigurationsdatei steht. Dort sollte die SSL Konfiguration vorgenommen werden:
server {
listen 443 ssl;
root /var/www/example/root;
index index.html index.htm;
server_name .example.org;
ssl_certificate /etc/nginx/ssl/example.crt;
ssl_certificate_key /etc/nginx/ssl/example.key;
}
Nach dem Aktualisieren der Konfiguration mittels:
service nginx restart
ist die verschlüsselte Verbindung für die eingerichtete Seite aktiv und kann genutzt werden.
Vor einigen Tagen kam die Version 2.0 der Anwendung Outbank heraus. Dabei handelt es sich um eine Banking Software für Mac OS X und iOS. Allerdings hatte sich in die Version ein schwerer Fehler eingeschlichen. So wurde das Passwort welches zu lokalen Verschlüsselung der Daten benutzt wird, im Klartext in die „system.log“ geschrieben, was dann im Beispiel so aussieht:
Jan 17 09:17:03 delphi.localdomain OutBank[537]: Open Store:Core Data key:123456->abcdefghijklmnopqrstuvwxyzABCDEF
Neben diesem Problemen hatte die erste Version dank iCloud Synchronisierung auch mit Problemen wie doppelten Umsätzen und ähnlichem zu kämpfen. Problematisch an dem Fehler im Log ist auch das Mac OS X von Zeit zu Zeit das ganze archiviert und es so dazu kommen kann, das dieses Passwort an mehreren Stellen zu finden ist. Das gleiche trifft auch auf die Kombination mit Backupsystemen wie Time Machine zu. Um nach dem Update auf Outbank die entsprechenden Logeinträge zu entfernen wird von „stoeger it“ folgende Zeile empfohlen welche man im Terminal ausführen sollte:
sudo -i -- 'cd /var/log && grep -vE "OutBank\[" system.log > system.log.clean && mv system.log.clean system.log && if [[ -f system.log.0.bz2 ]]; then for a in system.log.*.bz2; do bunzip2 $a && grep -vE "OutBank\[" ${a%.*} > ${a%.*}.clean && mv ${a%.*}.clean ${a%.*} && bzip2 ${a%.*} ; done; fi; rm -f /var/log/asl/*.asl'
Witzig sind in diesem Zusammenhang Aussagen von Tobias Stöger aus der Zeitschrift SFT (Spiele | Filme | Technik) wo er auf die Frage ob Outbank sicher ist unter anderem wie folgt antwortet:
Der Artikel bezog sich mal wieder auf das unsichere Android-OS. […] Hinzu kommen noch unsere Sicherheitsmaßnahmen, wie automatische Passwortsperre oder verschlüsselte Datenbank.
Das war dann wohl ein Fall von pauschaler Aussage zum falschen Zeitpunkt. Natürlich stellt sich die Frage warum (wenn auch nur für Debugzwecke) Passwörter überhaupt im Klartext gespeichert werden. Auch war keine Auskunft zu erhalten ob die neue Version von Outbank die Bereinigung der Dateien selber vornimmt. Zur Sicherheit sollte man dies also auf alle Fälle manuell nachholen und anschließend das entsprechende Passwort ändern.
Vor einiger Zeit schrieb ich einen Artikel darüber wie man ein verschlüsseltes Verzeichnis in der der Dropbox mittels „Fuse4X“ und „EncFS“ unter Mac OS X Lion mountet. Der Wehrmutstropfen an meiner Methode war allerdings das Spotlight nicht funktionierte. Das hängt wohl damit zusammen das Spotlight standardmäßig nicht auf die mit Fuse eingehängten Systeme zugreifen kann.
Dazu sind auch nur einige Änderungen nötig. So muss das alte Skript zum mounten:
#!/bin/bash
#Secure EncFS Dropbox mounter by Daniel Widerin
#Edited by seeseekey
SOURCE=~/Dropbox/Private
TARGET=/Volumes/DropboxEncrypted
VOLUME_TITLE=DropboxEncrypted
PASSWORD=ultrageheimespasswort
ENCFS=/usr/local/bin/encfs
mount | grep $TARGET >/dev/null
[[ "$?" -eq "0" ]] && /usr/sbin/diskutil unmount $TARGET
if [ ! -d $TARGET ]; then
echo "Create new mountpoint $TARGET"
mkdir $TARGET
chmod 0700 $TARGET
fi
echo $PASSWORD | $ENCFS $SOURCE $TARGET --stdinpass -ovolname=$VOLUME_TITLE -omodules=iconv -ofrom_code=UTF-8 -oto_code=UTF-8-MAC -oallow_root -olocal -ohard_remove -oauto_xattr -o nolocalcaches
Das neue Skript basiert dabei auf einer Variation eines Skriptes von Daniel Widerin und wurde etwas vereinfacht sowie um Angaben für den Zeichensatz erweitert. Nun kann man sich das ganze noch etwas bequemer machen, indem man das entschlüsselte Verzeichnis gleich beim Login einbindet. Das Skript sollte dabei einen Namen nach dem Schema „encryptDropbox.command“ tragen.
Nachdem dies geschehen ist, findet man in den Einstellungen unter „Benutzer & Gruppen“ -> „Anmeldeobjekte“ den entsprechenden Punkt. Dort wird einfach das entsprechende Skript hinzugefügt und schon wird dieses in Zukunft beim Login geladen.
In meiner Dropbox findet sich ein mittels „EncFS“ verschlüsselter Ordner. Dieser soll natürlich auch unter Mac OS X funktionieren. Im Netz gibt es einige Anleitungen um das ganze zum laufen zu bekommen, allerdings war darunter keine die bei mir funktionierte. Um den EncFS Ordner zu entschlüsseln muss man sich folgende Software herunterladen:
Nach dem Download muss man das ganze installieren und dann benötigt man nur noch ein kleines Skript zum mounten des ganzen. In dieser Skript trägt man folgendes ein:
Damit kann man das ganze mounten, ohne jedes mal das Passwort eingeben zu müssen. In Verbindung mit dem gemounteten Ordner gibt es leider ein Problem, so ignoriert Spotlight sämtliche Inhalte des entsprechenden Orders.