Bauformen im Vergleich
Der Dienst liegt in zwei Bauformen vor, l4re und win. Beide sind eigenständige Rust-Pakete ohne
gemeinsamen Quelltext. Sie bieten dieselben Verfahren an, unterscheiden sich aber in Transport,
Nachrichtenformat, Operationsumfang und Fehlercodes. Diese Seite hilft bei der Wahl und zeigt, wo eine
Anbindung an die eine Bauform nicht auf die andere übertragbar ist.
Begriffe
- Bauform: eines der beiden Pakete,
l4re-crypto-serviceim Ordnerl4re/oderwvds-crypto-service-winim Ordnerwin/. - Dataspace: ein Speicherbereich unter L4Re, den zwei Tasks gemeinsam einblenden.
DataspaceEndpoint: die Komponente des Plattformlieferanten, die zwei Tasks über Dataspaces verbindet. Sie gehört nicht zum Dienst; der Dienst ruft sie über eine C-Schnittstelle auf.- Named Pipe: ein benannter Kommunikationskanal von Windows, hier zeilenweise genutzt: eine JSON-Zeile je Anfrage, eine JSON-Zeile je Antwort.
Gegenüberstellung
l4re | win |
|
|---|---|---|
| Zielsystem | L4Re auf x86_64 und aarch64 | Windows x86_64 |
| Fassung | 0.2.0 | 0.3.0 |
| Transport | DataspaceEndpoint, geteilter Speicher | Named Pipes, Standardname \\.\pipe\wvds_crypto |
| Nachrichtenformat | binär, 16-Byte-Kopf, Little Endian | eine JSON-Zeile, Binärdaten Base64-kodiert |
| Größte Nachricht | 64 KiB Nutzdaten | nicht begrenzt |
| Operationen | 10 bediente Anfragetypen, 12 mit ChaCha20; 5 reserviert | 10 benannte Operationen |
| Schlüssel erzeugen | ML-DSA, ML-KEM | AES-256, ML-DSA, ML-KEM |
| Nonce bei AES-GCM | liefert die anfragende Seite | erzeugt der Dienst |
| Fehlercodes | Zahlen, 32 Bit | Namen wie KEY_NOT_FOUND |
| Verbindliche Beschreibung | l4re/pub/include/wvds_crypto.h | win/src/protocol.rs |
| Bedienoberfläche | keine | Textoberfläche im Terminal, abschaltbar |
Die Einzelheiten jeder Spalte stehen unter Binärprotokoll der L4Re-Bauform und JSON-Protokoll der Windows-Bauform.
Wann welche Bauform
l4re ist für Systeme gedacht, in denen sicherheitskritische Teile als getrennte Tasks auf dem
Mikrokern L4Re laufen. Der Krypto-Dienst ist dann eine eigene Task; ein Fehler in der anfragenden Task
erreicht die Schlüssel nicht, weil der Mikrokern die Adressräume trennt.
win ist für Entwicklung, Vorführung und Windows-Gateways gedacht. Das JSON-Format lässt sich mit
jedem Werkzeug lesen und schreiben, das eine Named Pipe öffnen kann. Mehrere Pipes („Gateways“) mit
eigener Statistik lassen sich über eine Konfigurationsdatei betreiben; siehe
Bauoptionen und Konfiguration.
Wie die L4Re-Bauform heute gebaut wird
Die Bauziele in l4re/.cargo/config.toml sind x86_64-unknown-linux-gnu und
aarch64-unknown-linux-gnu. Ein eigenes Rust-Ziel für L4Re ist vorbereitet, aber auskommentiert, weil
es das L4Re-SDK voraussetzt.
Daraus folgt:
- Der Weg, der Anfragen über
DataspaceEndpointannimmt, wird nur übersetzt, wenn das Zielsystem L4Re ist (target_os = "l4re"). - Ein Programm für ein Linux-Ziel startet stattdessen eine Vorführung: Es führt AES-256-GCM, ML-DSA-65, ML-KEM-768 und HKDF-SHA256 je einmal aus, gibt das Ergebnis aus und endet.
- Unter Windows ersetzt das Paket
l4redie Funktionen vonDataspaceEndpointdurch Platzhalter, die stets scheitern. So lassen sich Bibliothek und Tests ohne L4Re übersetzen und prüfen.
Wer den Dienst als echte L4Re-Task betreiben will, braucht das L4Re-SDK, ein Rust-Ziel für L4Re und die
Bibliothek DataspaceEndpoint des Plattformlieferanten.
Was diese Seite nicht behandelt
- Den Aufbau der einzelnen Nachrichten; dafür gibt es die beiden Protokollreferenzen.
- Den Bau selbst; siehe Bauen und testen.