Skip to main content

Crate zerodds_security_keyexchange

Crate zerodds_security_keyexchange 

Source
Expand description

Crate zerodds-security-keyexchange. Safety classification: SAFE (duenner Wrapper um ring::agreement + ring::hkdf).

X25519 / P-256 Ephemeral-Diffie-Hellman fuer den DDS-Security 1.1 Authentication-Handshake (Spec §8.3.2).

§Schichten-Position

Layer 4 — Core Services. Konsumiert von zerodds-security-pki.

§Zweck

Der Authentication-Handshake (Spec §8.3.2) braucht am Ende einen SharedSecret. Der uebliche Weg ist ephemeral-DH: jede Seite erzeugt ein temporaeres Schluesselpaar, tauscht die Public-Keys aus, und leitet das Shared-Secret aus x25519(priv, remote_pub) ab. HKDF-SHA256 zieht daraus einen 32-byte Key.

§API

use zerodds_security_keyexchange::KeyExchange;

// Beide Seiten erzeugen ephemerals.
let alice = KeyExchange::new().expect("alice");
let bob = KeyExchange::new().expect("bob");

// Public-Keys tauschen (ueber den SPDP-Handshake-Token).
let a_pub = alice.public_key().to_vec();
let b_pub = bob.public_key().to_vec();

// Jede Seite leitet den gleichen 32-byte SharedSecret ab.
let s1 = alice.derive_shared_secret(&b_pub).expect("alice derive");
let s2 = bob.derive_shared_secret(&a_pub).expect("bob derive");
assert_eq!(s1, s2);

§Public API (Stand 1.0.0-rc.1)

§Nicht-Ziele

RSA-OAEP-Key-Transport (Spec §8.3.2.11 als optionale Alternative fuer Legacy-Vendors ohne ECDH/X25519) ist explizit nicht in RC1: alle relevanten Vendoren (Cyclone DDS, FastDDS, RTI Connext) sprechen ECDH oder X25519, und ring 0.17 exponiert keine RSA-Encrypt-API. Falls ein konkreter Legacy-Use-Case auftaucht, wird der Pfad ueber die rsa-Crate als Major-2.0-additive-Erweiterung wieder eingefuehrt.

Structs§

KeyExchange
Ephemerales DH-Schluesselpaar fuer einen einzelnen Handshake.

Enums§

KxSuite
DH-Suite-Auswahl.