An dieser Stelle wird über laufende Projekte berichtet.

/e/ für Samsung Galaxy S9+

Bei /e/ handelt es sich um eine offene Android Version, bei der der Datenschutz im Vordergrund steht. Allgemeine Infos zu diesem Custom ROM sind auf deren Homepage zu finden. Im Projekt sind allerdings eher die Entwickler Dokus von Interesse:

Die Anforderungen an die Build Plattform sind kritisch, bei weniger als 

  • 300 GByte Plattenplatz oder
  • 16 GByte RAM

bricht der Buildvorgang ab. Ohne Docker sollte man nicht anfangen, es geht wohl auch ohne Docker, aber IMHO sollte man bei solchen Dingen im den Empfehlungen der Entwickler folgen.

Projekt

Warum /e/ selbst compilieren? Nachdem mir eine SmartCard-HSM im Form einer Micro-SD Karte vorliegt, soll diese als Security Element für eine Mehrfaktor Authentifizierung in einem Android Smartphone dienen. Leider unterstützt Android nicht so wirklich Smartcards, wie es z.B. bei einem Desktop Linux der Fall ist.

Materialliste

Was wird für eine vernünftige Implementierung gebraucht?

  • Samsung Galaxy S9+, grundsätzlich sollte auch jedes andere Smartphone gehen, das (1) von /e/ unterstützt wird und (2) einen Micro-SD Slot hat.
  • Smartcard-HSM als Micro-SD Karte, grundsätzlich müsste auch die USB Version oder die Karte selbst gehen. Bisher war noch keine Doku für diese SD-Karte zu finden, mal sehen, was Cardcontact (der Hersteller von Smartcard-HSM) da liefern kann.
  • pcscd/OpenSC - Damit bekommt man eine komplett PKCS#11/PKCS#15 Unterstützung für viele Smartcards.

Mögliche Probleme

Was alles schief gehen kann oder worauf geachtet werden muss.

  • Der pcscd muss als root gestartet werden. Es soll allerdings vermieden werden, dass das Smartphone gerootet werden muss. Da bleibt also nur die Möglichkeit eines selbstcompilierten Custom ROMs. Der pcscd ist in C(++) geschrieben, muss also mit dem Android NDK compiliert werden. Die Binaries passen also nur zu der jeweiligen Hardware, für die /e/ compiliert wird.
  • Android Java unterstützt von Hause aus kein PKCS#11, das Unternehmen Gieseke&Devirent hat sich in Form von Seek for Android schon einmal damit beschäftigt. Ansonsten ist die PKCS#11 Implementierung von OpenJDK noch eine Lösung.

Ideen

Mit einer full-featured Smartcard, die sich auch entfernen lässt, kann man z.B. einen sicheren Boot-Prozess bauen, so dass das Smartphone sich ohne die Smartcard nicht starten lässt und die Daten im permanenten Speicher nicht entschlüsselt werden können. Durch die Wechselmöglichkeit kann auch eine veraltete Smartcard durch ein neues Modell ersetzen. Es spricht natürlich auch hier nichts dagegen, die PIN über einen Fingerabdruckscanner oder eine Gesichtserkennung zu erzeugen, allerdings sollte man noch eine Backup-PIN haben, mit der sich die Karte auch an einem anderen Gerät "offnen" lässt.

Die privaten Schlüssel eines X.509 Zertifikats haben nichts auf dem Massenspeicher zu suchen. Die Smartcard übernimmt hier eine HSM (Hardware Security Module) Funktion. Dort sind private Schlüssel deutlich besser aufgehoben, als in irgendeinem Security Device, das meist nicht einmal eine Zertifizierung hat. Smartcards mit EAL4+ oder besser sind dagegen heute der Normalfall.