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)
KeyExchange+KxSuite::X25519/KxSuite::EcdhP256— Ephemeral-DH-Roundtrip mit deterministischer SharedSecret-Ableitung.
§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.