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
Zuletzt geändert: 30.01.2026. u 00:32