~~NOTOC~~
====== Scenarij 4.2: Re-Key (Novi ključ) ======
**Kategorija:** [[.:start|Upravljanje certifikatima]] \\
**Složenost:** ⭐⭐⭐⭐ (Visoka) \\
**Preduvjeti:** Postojeći certifikat \\
**Procijenjeno vrijeme:** 20-30 minuta
----
===== Opis =====
Ovaj scenarij opisuje **Re-Key** - izdavanje novog certifikata s **novim parom ključeva**. Re-Key je potreban kod sumnje na kompromitaciju, nadogradnje algoritma ili povećanja jačine ključa.
**Kada je Re-Key potreban:**
* Sumnja na kompromitaciju ključa
* Migracija s RSA na ML-DSA (Post-Quantum)
* Povećanje duljine ključa
* Rutinska rotacija (sigurnosna politika)
* Istek maksimalnog životnog ciklusa ključa
----
===== Tijek rada =====
flowchart LR
OLD[Stari certifikat] --> GEN[Novi par ključeva]
GEN --> CSR[Novi CSR]
CSR --> ISSUE[Novi certifikat]
ISSUE --> DEPLOY[Deployment]
DEPLOY --> REVOKE[Opoziv starog]
GEN --> BACKUP[Sigurnosna kopija ključa]
style GEN fill:#fff3e0
style ISSUE fill:#e8f5e9
----
===== Primjer koda (C#) =====
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
using var ctx = PqCryptoContext.Initialize();
// Učitavanje starog certifikata (za Subject/SAN)
var oldCert = ctx.LoadCertificate("server.crt.pem");
// Učitavanje CA
var caCert = ctx.LoadCertificate("intermediate-ca.crt.pem");
var caKey = ctx.LoadPrivateKey("intermediate-ca.key.pem", "CaPassword!");
// NOVI par ključeva (PQ nadogradnja!)
using var newKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
// Preuzimanje Subjecta i SAN-ova od starog certifikata
var oldSans = ctx.GetSubjectAlternativeNames(oldCert);
// Novi CSR s novim ključem
var csr = ctx.CreateCertificateRequest(
newKey,
oldCert.SubjectName, // Preuzimanje Subjecta
new ExtBuilder()
.SubjectAlternativeName(oldSans) // Preuzimanje SAN-ova
.Build()
);
// Izdavanje novog certifikata
var newCert = ctx.IssueCertificate(
csr,
issuerCert: caCert,
issuerKey: caKey,
serialNumber: ctx.GenerateSerialNumber(),
validDays: 365,
extensions: new ExtBuilder()
.BasicConstraints(ca: false, critical: true)
.KeyUsage(KeyUsageFlags.DigitalSignature | KeyUsageFlags.KeyEncipherment)
.ExtendedKeyUsage(ExtKeyUsage.ServerAuth)
.SubjectKeyIdentifier(newKey.PublicKey) // NOVI SKI!
.AuthorityKeyIdentifier(caCert)
.CrlDistributionPoint("http://crl.example.com/intermediate.crl")
.Build()
);
// Spremanje
newCert.ToPemFile("server-rekeyed.crt.pem");
newKey.ToEncryptedPemFile("server-rekeyed.key.pem", "NewKeyPassword!");
Console.WriteLine("Re-Key završen:");
Console.WriteLine($" Stari algoritam: {oldCert.PublicKey.Oid.FriendlyName}");
Console.WriteLine($" Novi algoritam: ML-DSA-65");
Console.WriteLine($" Stari SKI: {oldCert.GetSubjectKeyIdentifier()}");
Console.WriteLine($" Novi SKI: {newCert.GetSubjectKeyIdentifier()}");
----
===== PQ migracija: RSA na ML-DSA =====
Za migraciju s klasičnih na post-kvantne algoritme:
// Hibridni Re-Key: RSA + ML-DSA paralelno
public class HybridRekey
{
public static (X509Certificate2 classical, X509Certificate2 pq) PerformHybridRekey(
X509Certificate2 oldRsaCert,
PqCryptoContext ctx,
X509Certificate2 caCert,
AsymmetricAlgorithm caKey)
{
// 1. Obnova RSA ključa (prijelazna faza)
using var newRsaKey = RSA.Create(4096);
var rsaCsr = ctx.CreateCertificateRequest(newRsaKey, oldRsaCert.SubjectName);
var rsaCert = ctx.IssueCertificate(rsaCsr, caCert, caKey, validDays: 365);
// 2. Kreiranje ML-DSA ključa (budućnost)
using var mlDsaKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
var pqCsr = ctx.CreateCertificateRequest(mlDsaKey, oldRsaCert.SubjectName);
var pqCert = ctx.IssueCertificate(pqCsr, caCert, caKey, validDays: 365);
return (rsaCert, pqCert);
}
}
----
===== Zahtjevi za Re-Key po industrijama =====
^ Industrija ^ Maks. životni vijek ključa ^ Okidač za Re-Key ^ Posebnost ^
| **Financijski sektor** | 2 godine | HSM politika | FIPS 140-3 usklađenost |
| **Zdravstvo** | 3 godine | Nalaz revizije | DiGAV sukladnost |
| **Energetika/SCADA** | 5 godina | Prozor održavanja | Offline sposobnost |
| **Automobilska** | Životni vijek vozila | Sigurnosno ažuriranje | OTA mehanizam |
----
===== Kontrolna lista za Re-Key =====
**Prije Re-Key-a:**
- [ ] Osigurati stari ključ (ako je još potreban)
- [ ] Identificirati sve sustave koji koriste certifikat
- [ ] Kreirati plan deploymenta
- [ ] Pripremiti plan povratka
- [ ] Komunicirati prozor održavanja
**Nakon Re-Key-a:**
- [ ] Deploirati novi certifikat na sve sustave
- [ ] Testirati veze
- [ ] Opozvati stari certifikat
- [ ] Sigurno uništiti stari ključ
- [ ] Ažurirati dokumentaciju
----
===== Povezani scenariji =====
^ Odnos ^ Scenarij ^ Opis ^
| **Alternativa** | [[.:renewal|4.1 Obnova]] | Isti ključ |
| **Sljedeći korak** | [[hr:int:pqcrypt:szenarien:widerruf:zertifikat_widerrufen|6.4 Opoziv]] | Stari certifikat |
| **Preduvjet** | [[hr:int:pqcrypt:szenarien:schluessel:generierung|11.1 Generiranje ključeva]] | Novi ključ |
| **Povezano** | [[hr:int:pqcrypt:szenarien:schluessel:vernichtung|11.5 Uništavanje ključeva]] | Brisanje starog ključa |
----
<< [[.:renewal|← 4.1 Obnova]] | [[.:start|↑ Pregled upravljanja]] | [[.:archivierung|4.3 Arhiviranje →]] >>
{{tag>scenarij upravljanje rekey ključ migracija pq}}
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//