Scenarij 4.2: Re-Key (Novi ključ)

Kategorija: 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:

  1. [ ] Osigurati stari ključ (ako je još potreban)
  2. [ ] Identificirati sve sustave koji koriste certifikat
  3. [ ] Kreirati plan deploymenta
  4. [ ] Pripremiti plan povratka
  5. [ ] Komunicirati prozor održavanja

Nakon Re-Key-a:

  1. [ ] Deploirati novi certifikat na sve sustave
  2. [ ] Testirati veze
  3. [ ] Opozvati stari certifikat
  4. [ ] Sigurno uništiti stari ključ
  5. [ ] Ažurirati dokumentaciju

Povezani scenariji

Odnos Scenarij Opis
Alternativa 4.1 Obnova Isti ključ
Sljedeći korak 6.4 Opoziv Stari certifikat
Preduvjet 11.1 Generiranje ključeva Novi ključ
Povezano 11.5 Uništavanje ključeva Brisanje starog ključa

« ← 4.1 Obnova | ↑ Pregled upravljanja | 4.3 Arhiviranje → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: 30.01.2026. u 07:26