8. Digitalni potpisi

Scenariji: 4
FFI funkcije: ~30
Status: Planirano

Ova kategorija obuhvaća sve scenarije za kreiranje i verifikaciju digitalnih potpisa. Potpisivanje dokumenata, Code-Signing i vremenske oznake s ML-DSA.


Scenariji

ID Scenarij Opis Složenost Status
8.1 Potpisivanje dokumenata Potpisivanje PDF, XML, JSON ⭐⭐⭐
8.2 Potpisivanje koda Izvršne datoteke, DLL-ovi, Paketi ⭐⭐⭐
8.3 Vremenska oznaka Trusted Timestamp (RFC 3161) ⭐⭐⭐⭐
8.4 Verifikacija potpisa Provjera potpisa ⭐⭐

Tijek rada potpisa

flowchart LR subgraph SIGN["Potpisivanje"] DOC[Dokument/Kod] HASH[Izračun hasha] SIG[Kreiranje potpisa] end subgraph VERIFY["Verifikacija"] VHASH[Izračun hasha] VSIG[Provjera potpisa] VCERT[Validacija certifikata] end DOC --> HASH --> SIG DOC --> VHASH SIG --> VSIG VSIG --> VCERT style SIG fill:#e8f5e9 style VCERT fill:#e3f2fd


Algoritmi za potpis

Način Algoritam Duljina potpisa Standard
PostQuantum ML-DSA-65 3309 bajta NIST FIPS 204
Hibridni ECDSA P-384 + ML-DSA-65 ~3400 bajta Composite Signatures
Klasični ECDSA P-384 96 bajta NIST FIPS 186-5

Preporuka: Za dugoročno arhiviranje koristite hibridne potpise. Oba potpisa moraju biti slomljena.


Formati potpisa

Format Primjena Sadržaj
CMS/PKCS#7 Općenito, E-mail Potpis + Certifikat + opcionalna vremenska oznaka
XML-DSig SOAP, SAML Potpis u XML strukturi
JWS REST API-ji, JWT JSON Web Signature
Authenticode Windows PE Code-Signing za EXE/DLL

Zahtjevi specifični za industriju

Industrija Tip potpisa Zahtjevi
Zdravstvo Kvalificirani potpis (QES) eIDAS-usklađen, gematik
Automobilska Code-Signing UNECE R156, Secure Boot
Energetika Dokument + Vremenska oznaka Audit zahtjevi, NIS2
Industrija 4.0 Firmware-Signing IEC 62443

Brzi početak s kodom

Potpisivanje dokumenta

using WvdS.Security.Cryptography.Signatures.Extensions.PQ;
 
// Učitavanje ključa za potpisivanje
var signingKey = ctx.LoadPrivateKey("signing.key.pem", password);
var signingCert = ctx.LoadCertificate("signing.crt.pem");
 
// Potpisivanje dokumenta (CMS/PKCS#7)
byte[] document = File.ReadAllBytes("ugovor.pdf");
var signature = ctx.SignData(
    data: document,
    privateKey: signingKey,
    certificate: signingCert,
    mode: CryptoMode.Hybrid,
    options: new SignatureOptions
    {
        IncludeCertificate = true,
        AddTimestamp = true,
        TimestampServer = "http://timestamp.example.com"
    }
);
 
File.WriteAllBytes("ugovor.pdf.p7s", signature);

Verifikacija potpisa

// Učitavanje potpisa
byte[] signature = File.ReadAllBytes("ugovor.pdf.p7s");
byte[] document = File.ReadAllBytes("ugovor.pdf");
 
// Verifikacija
var result = ctx.VerifySignature(
    data: document,
    signature: signature,
    trustStore: trustStore
);
 
if (result.IsValid)
{
    Console.WriteLine($"Potpisao: {result.SignerCertificate.Subject}");
    Console.WriteLine($"Vremenska oznaka: {result.Timestamp}");
}

Povezane kategorije

Kategorija Odnos
3. Izdavanje certifikata Code-Signing certifikati
5. Validacija Validacija certifikata za potpis
9. Autentifikacija Potpis kao metoda autentifikacije

« ← 7. Šifriranje | ↑ Scenariji | 9. Autentifikacija → »


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