~~NOTOC~~ ====== 8. Digitalni podpisi ====== **Scenariji:** 4 \\ **FFI-funkcije:** ~30 \\ **Status:** ⏳ Načrtovano Ta kategorija zajema vse scenarije za ustvarjanje in verifikacijo digitalnih podpisov. Podpisovanje dokumentov, podpisovanje kode in časovni žigi z ML-DSA. ---- ===== Scenariji ===== ^ ID ^ Scenarij ^ Opis ^ Kompleksnost ^ Status ^ | [[.:dokument_signieren|8.1]] | Podpisovanje dokumentov | Podpisovanje PDF, XML, JSON | ⭐⭐⭐ | ⏳ | | [[.:code_signieren|8.2]] | Podpisovanje kode | Izvršljive datoteke, DLL-ji, paketi | ⭐⭐⭐ | ⏳ | | [[.:timestamp|8.3]] | Časovni žig | Zaupanja vreden časovni žig (RFC 3161) | ⭐⭐⭐⭐ | ⏳ | | [[.:signatur_verifizieren|8.4]] | Verifikacija podpisa | Preverjanje podpisov | ⭐⭐ | ⏳ | ---- ===== Potek dela pri podpisovanju ===== flowchart LR subgraph SIGN["Podpisovanje"] DOC[Dokument/Koda] HASH[Izračun zgoščene vrednosti] SIG[Ustvarjanje podpisa] end subgraph VERIFY["Verifikacija"] VHASH[Izračun zgoščene vrednosti] VSIG[Preverjanje podpisa] VCERT[Validacija certifikata] end DOC --> HASH --> SIG DOC --> VHASH SIG --> VSIG VSIG --> VCERT style SIG fill:#e8f5e9 style VCERT fill:#e3f2fd ---- ===== Podpisni algoritmi ===== ^ Način ^ Algoritem ^ Dolžina podpisa ^ Standard ^ | **PostQuantum** | ML-DSA-65 | 3309 bajtov | NIST FIPS 204 | | **Hibridni** | ECDSA P-384 + ML-DSA-65 | ~3400 bajtov | Kompozitni podpisi | | **Klasični** | ECDSA P-384 | 96 bajtov | NIST FIPS 186-5 | **Priporočilo:** Za dolgoročno arhiviranje uporabite hibridne podpise. Oba podpisa morata biti prelomljena. ---- ===== Formati podpisov ===== ^ Format ^ Uporaba ^ Vsebuje ^ | **CMS/PKCS#7** | Splošno, e-pošta | Podpis + certifikat + opcijski časovni žig | | **XML-DSig** | SOAP, SAML | Podpis v XML strukturi | | **JWS** | REST API-ji, JWT | JSON Web Signature | | **Authenticode** | Windows PE | Podpisovanje kode za EXE/DLL | ---- ===== Panožne zahteve ===== ^ Panoga ^ Tip podpisa ^ Zahteve ^ | **Zdravstvo** | Kvalificiran podpis (QES) | Skladen z eIDAS, gematik | | **Avtomobilska industrija** | Podpisovanje kode | UNECE R156, Secure Boot | | **Energetika** | Dokument + časovni žig | Revizijske zahteve, NIS2 | | **Industrija 4.0** | Podpisovanje strojne programske opreme | IEC 62443 | ---- ===== Hiter začetek s kodo ===== ==== Podpisovanje dokumenta ==== using WvdS.Security.Cryptography.Signatures.Extensions.PQ; // Nalaganje podpisnega ključa var signingKey = ctx.LoadPrivateKey("signing.key.pem", password); var signingCert = ctx.LoadCertificate("signing.crt.pem"); // Podpisovanje dokumenta (CMS/PKCS#7) byte[] document = File.ReadAllBytes("vertrag.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("vertrag.pdf.p7s", signature); ==== Verifikacija podpisa ==== // Nalaganje podpisa byte[] signature = File.ReadAllBytes("vertrag.pdf.p7s"); byte[] document = File.ReadAllBytes("vertrag.pdf"); // Verifikacija var result = ctx.VerifySignature( data: document, signature: signature, trustStore: trustStore ); if (result.IsValid) { Console.WriteLine($"Podpisal: {result.SignerCertificate.Subject}"); Console.WriteLine($"Časovni žig: {result.Timestamp}"); } ---- ===== Povezane kategorije ===== ^ Kategorija ^ Povezava ^ | [[.:zertifikate:start|3. Izdaja certifikatov]] | Certifikati za podpisovanje kode | | [[.:validierung:start|5. Validacija]] | Validacija certifikata podpisa | | [[.:authentifizierung:start|9. Avtentikacija]] | Podpis kot metoda avtentikacije | ---- << [[sl:int:pqcrypt:szenarien:verschluesselung:start|← 7. Šifriranje]] | [[sl:int:pqcrypt:szenarien:start|↑ Scenariji]] | [[.:authentifizierung:start|9. Avtentikacija →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorija podpisi podpisovanje cms časovni-žig}}