~~NOTOC~~ ====== 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 ^ | [[.:dokument_signieren|8.1]] | Potpisivanje dokumenata | Potpisivanje PDF, XML, JSON | ⭐⭐⭐ | ⏳ | | [[.:code_signieren|8.2]] | Potpisivanje koda | Izvršne datoteke, DLL-ovi, Paketi | ⭐⭐⭐ | ⏳ | | [[.:timestamp|8.3]] | Vremenska oznaka | Trusted Timestamp (RFC 3161) | ⭐⭐⭐⭐ | ⏳ | | [[.:signatur_verifizieren|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 ^ | [[.:zertifikate:start|3. Izdavanje certifikata]] | Code-Signing certifikati | | [[.:validierung:start|5. Validacija]] | Validacija certifikata za potpis | | [[.:authentifizierung:start|9. Autentifikacija]] | Potpis kao metoda autentifikacije | ---- << [[hr:int:pqcrypt:szenarien:verschluesselung:start|← 7. Šifriranje]] | [[hr:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:authentifizierung:start|9. Autentifikacija →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija potpisi signing cms timestamp}}