~~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}}