====== Upravljanje ključev ======
Kompaktni primeri za upravljanje ključev. → **Podrobnosti:** [[..:schluessel:start|Scenariji ključev]]
----
===== Generiranje ključev =====
// ML-DSA (podpisi)
using var mlDsa65 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65);
using var mlDsa87 = MlDsaSigner.Create(MlDsaParameterSet.MlDsa87);
// ML-KEM (izmenjava ključev)
using var mlKem768 = MlKem.Create(MlKemParameterSet.MlKem768);
using var mlKem1024 = MlKem.Create(MlKemParameterSet.MlKem1024);
// Klasično (hibridno)
using var ecdsa = ECDsa.Create(ECCurve.NamedCurves.nistP384);
using var rsa = RSA.Create(4096);
→ **Podrobnosti:** [[..:schluessel:generierung|Generiranje]]
----
===== Shranjevanje ključev =====
// DPAPI (Windows)
byte[] privateKey = mlDsa.ExportPrivateKey();
byte[] encrypted = ProtectedData.Protect(privateKey,
entropy: null, DataProtectionScope.CurrentUser);
// PEM z geslom
string pem = mlDsa.ExportEncryptedPkcs8PrivateKeyPem(
"geslo"u8, new PbeParameters(
PbeEncryptionAlgorithm.Aes256Cbc,
HashAlgorithmName.SHA256, 100000));
→ **Podrobnosti:** [[..:schluessel:speicherung|Shranjevanje]]
----
===== Rotacija ključev =====
var rotationService = new KeyRotationService(options =>
{
options.RotationInterval = TimeSpan.FromDays(90);
options.MaxKeyAge = TimeSpan.FromDays(365);
});
// Preverjanje, ali je rotacija potrebna
if (rotationService.ShouldRotate(currentKey))
{
var newKey = MlDsaSigner.Create(MlDsaParameterSet.MlDsa65);
rotationService.Rotate(currentKey, newKey);
}
→ **Podrobnosti:** [[..:schluessel:rotation|Rotacija]]
----
===== Varnostna kopija ključev =====
// Shamir Secret Sharing (3-of-5)
var shares = ShamirSecretSharing.Split(
privateKey, totalShares: 5, threshold: 3);
// Razdelitev skrbnikom
foreach (var (index, share) in shares)
SaveToTrustee(index, share);
// Obnovitev
var recoveredShares = new[] { shares[0], shares[2], shares[4] };
byte[] recovered = ShamirSecretSharing.Combine(recoveredShares);
→ **Podrobnosti:** [[..:schluessel:backup|Varnostna kopija]]
----
===== Uničenje ključev =====
// Varno brisanje
CryptographicOperations.ZeroMemory(privateKeyBytes);
// Preklic certifikata
var crlBuilder = new CertificateRevocationListBuilder();
crlBuilder.AddEntry(cert.SerialNumber,
DateTimeOffset.UtcNow, X509RevocationReason.KeyCompromise);
→ **Podrobnosti:** [[..:schluessel:vernichtung|Uničenje]]
----
===== Priporočila =====
^ Tip ključa ^ Algoritem ^ Veljavnost ^
| Root-CA | ML-DSA-87 | 20+ let |
| Intermediate-CA | ML-DSA-65 | 5-10 let |
| End-Entity | ML-DSA-65 / hibridno | 1-2 leti |
| Efemerni | ML-KEM-768 | Seja |
----
<< [[.:start|← Kratka referenca]] | [[..:schluessel:start|→ Scenariji ključev (podrobnosti)]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>kurzreferenz schluessel generierung rotation backup}}