====== Schlüsselmanagement ====== Kompakte Beispiele für Schlüsselmanagement. → **Details:** [[de:int:pqcrypt:szenarien:schluessel:start|Schlüssel-Szenarien]] ---- ===== Schlüssel generieren ===== // ML-DSA (Signaturen) using var mlDsa65 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65); using var mlDsa87 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa87); // ML-KEM (Key Exchange) using var mlKem768 = MlKem.Create(MlKemParameterSet.MlKem768); using var mlKem1024 = MlKem.Create(MlKemParameterSet.MlKem1024); // Klassisch (Hybrid) using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384); using var rsa = RSA.Create(4096); → **Details:** [[de:int:pqcrypt:szenarien:schluessel:generierung|Generierung]] ---- ===== Schlüssel speichern ===== // DPAPI (Windows) byte[] privateKey = mlDsa.ExportPrivateKey(); byte[] encrypted = ProtectedData.Protect(privateKey, entropy: null, DataProtectionScope.CurrentUser); // PEM mit Passwort string pem = mlDsa.ExportEncryptedPkcs8PrivateKeyPem( "passwort"u8, new PbeParameters( PbeEncryptionAlgorithm.Aes256Cbc, HashAlgorithmName.SHA256, 100000)); → **Details:** [[de:int:pqcrypt:szenarien:schluessel:speicherung|Speicherung]] ---- ===== Schlüssel rotieren ===== var rotationService = new KeyRotationService(options => { options.RotationInterval = TimeSpan.FromDays(90); options.MaxKeyAge = TimeSpan.FromDays(365); }); // Prüfen ob Rotation nötig if (rotationService.ShouldRotate(currentKey)) { var newKey = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65); rotationService.Rotate(currentKey, newKey); } → **Details:** [[de:int:pqcrypt:szenarien:schluessel:rotation|Rotation]] ---- ===== Schlüssel-Backup ===== // Shamir Secret Sharing (3-of-5) var shares = ShamirSecretSharing.Split( privateKey, totalShares: 5, threshold: 3); // Verteilen an Treuhänder foreach (var (index, share) in shares) SaveToTrustee(index, share); // Wiederherstellen var recoveredShares = new[] { shares[0], shares[2], shares[4] }; byte[] recovered = ShamirSecretSharing.Combine(recoveredShares); → **Details:** [[de:int:pqcrypt:szenarien:schluessel:backup|Backup]] ---- ===== Schlüssel vernichten ===== // Sicheres Löschen CryptographicOperations.ZeroMemory(privateKeyBytes); // Zertifikat widerrufen var crlBuilder = new CertificateRevocationListBuilder(); crlBuilder.AddEntry(cert.SerialNumber, DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise); → **Details:** [[de:int:pqcrypt:szenarien:schluessel:vernichtung|Vernichtung]] ---- ===== Empfehlungen ===== ^ Schlüsseltyp ^ Algorithmus ^ Gültigkeit ^ | Root-CA | ML-DSA-87 | 20+ Jahre | | Intermediate-CA | ML-DSA-65 | 5-10 Jahre | | End-Entity | ML-DSA-65 / Hybrid | 1-2 Jahre | | Ephemer | ML-KEM-768 | Session | ---- << [[.:start|← Kurzreferenz]] | [[de:int:pqcrypt:szenarien:schluessel:start|→ Schlüssel-Szenarien (Details)]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kurzreferenz schluessel generierung rotation backup}}