Sicher ist sicher - weitere Komponenten

ZRTP

Die Sicherheit der Kommunikation mit ZSipOs beruht auf dem Protokoll ZRTP. „Z“ steht für Zimmermann, den Krypto-Pionier und Erfinder von PGP.
Das Verfahren wurde 2011 als RFC 6189 veröffentlicht.

ZRTP nutzt das Diffie-Hellman-Verfahren, um für jede Verbindung abhörsicher einen geheimen Sitzungsschlüssel zu erzeugen. Dieser wird dann für eine VoIP-Datenverbindung nach dem SRTP-Protokoll verwendet und nach dem „Auflegen“ gelöscht. Damit ist das nachträgliche Entschlüsseln eines aufgezeichneten Gesprächs unmöglich.
ZRTP setzt keine gemeinsamen Geheimnisse und keine Public Key-Infrastruktur (PKI) voraus.
Der Diffie-Hellman Schlüsselaustausch bietet keine Sicherheit gegen einen „man in the middle“ („Mittelsmann“)-Angriff. Um diesen auszuschließen, wird aus den Sitzungsschlüsseln ein „Short Authentification String“ (SAS) generiert und auf beiden Endgeräten im Display angezeigt. Der SAS wird von den miteinander bekannten Gesprächspartnern verbal verglichen. Stimmt er überein, ist ein Mittelsmann ausgeschlossen.

Schlüsselkontinuität

Wurde mit der Gegenstelle bereits eine ZRTP- Verbindung aufgebaut, so „erinnern“ sich beide Seiten an das „geteilte Geheimnis“ der letzten Verbindung und verwenden dieses zum Aufbau einer neuen. Der SAS-Vergleich kann entfallen, ein Mittelsmann bleibt ausgesperrt.
Das heißt, im Normalfall, also wenn mit der Gegenstelle bereits eine gesicherte Verbindung aufgebaut wurde, wird die volle Vertraulichkeit hergestellt, ohne dass der Benutzer zusätzliche Bedienungsschritte durchführen muss. Wird eine Verbindung mit einer Gegenstelle hergestellt, mit der früher bereits ein SAS Vergleich erfolgt war, so wird sofort die Vertrauenswürdigkeit angezeigt.

seL4 Mikrokernel

Gefahr

Ein normales Betriebssystem, wie Linux oder Windows ist so ähnlich aufgebaut wie ein großes Gebäude: Es gibt außen starke Mauern, aber auch viele Türen, Fenster oder andere Zugänge. Jeder dieser Zugänge ist gut gesichert, aber es sind viele und es schleichen sich immer wieder Fehler ein.

Hat ein Eindringling eine dieser Zugangssicherungen überwunden, so kann er sich im ganzen Gebäude ungehindert frei bewegen. Er hat Zugang zu allen Daten und kann diese nach Belieben ausspionieren oder verändern.

Lösung

Wir setzen seL4 als Mikrokernel Systemkern ein. Das Ziel dieses Aufbaus ist, die Folgen eines Eindringens zu begrenzen.
Es gibt immer noch verschiedene Zugänge mit verschiedenen Zugangssicherungen. Aber wenn ein Eindringling eine davon überwunden hat, dann kann er sich im System nicht mehr frei bewegen. Die Funktionalität ist unterteilt in verschiedene Tasks. Diese sind voneinander extrem abgeschottet. Diese Trennung wurde im Fall von seL4 auch formal verifiziert [5]. Die Kommunikation zwischen verschiedenen Tasks kann nur über die Mechanismen des Mikrokernels erfolgen, ein direkter Datenzugriff in andere Tasks ist nicht möglich. Gelingt der Angriff über eine Schnittstelle, so ist also nur die dahinterliegende Task kompromittiert, der Rest des Systems bleibt weiterhin geschützt.

RISC-V CPU

Gefahr

Wir finden ein reichhaltiges Spektrum von Open Source-Lösungen. Angefangen vom Betriebssystem (z. B. Linux) bis hin zu Applikationsprogrammen (z. B. Open Office).
Allerdings bleibt bei den üblichen Lösungen ein wichtiger Teil im Dunkeln: die CPU.
Deren Funktion ist zwar vom Hersteller dokumentiert, doch ist es nicht möglich, die Dokumentation auf Vollständigkeit zu überprüfen. Zusätzliche Befehle oder Varianten dokumentierter Befehle könnten eingebaut werden – eine „Erweiterung“, die ein Programmierer nicht erkennen kann. Zusätzlich besteht die Möglichkeit, versteckte Funktionen nur bei bestimmten Daten zu aktivieren (Semantischer Angriff). Damit können Angreifer sogar in Systeme mit offener Software eindringen. Das wäre auch bei Kenntnis der Software nicht erkennbar.

Es gibt keinen Grund, anzunehmen, dass von dieser Möglichkeit kein Gebrauch gemacht wurde.

Lösung

Wir bauen eine „offene CPU“.  Auf Basis expliziter Logik-Elemente würde das Ergebnis eine Turnhalle füllen. Die Entwicklung einer CPU als integrierte Schaltung würde ein Multi-Millionen-Budget verschlingen.
Doch es gibt einen dritten Weg: Frei programmierbare Gate Arrays ermöglichen es uns, mit marktgängigen ICs beliebige komplexe Logikschaltungen aufzubauen. Auf Basis der Hardware-Beschreibungssprache Verilog wird eine RISC CPU definiert: RISC-5.

Damit haben wir eine durchgängig offene Hardware und Software-Plattform zur Verfügung.

Umsetzung: ZSipOs

ZSipOs basiert auf dem RISC-V Project (https://risc-v.org). Dafür liegt eine komplette Schaltung in der Hardware- Beschreibungs­sprache Verilog vor. Die wird übersetzt und dann in den FPGA „eingebrannt“.
Der Einsatz des FPGAs bietet uns auch die Möglichkeit, zusätzlich Hardware-Funktionen, z. B. zur Anbindung von externen Komponenten zu realisieren.
Darüber hinaus können wir zeitkritische Algorithmen direkt in Hardwaremodule auslagern, die durch die FPGA gebildet werden. In der ZSipOs-Architektur kommt dies für die symmetrische Verschlüsselung AES und die Hash-Funktion SHA-1 mit fester Blocklänge zum Einsatz.