8. Firme digitali
Scenari: 4
Funzioni FFI: ~30
Stato: Pianificato
Questa categoria comprende tutti gli scenari per la creazione e verifica delle firme digitali. Firma documenti, Code-Signing e timestamp con ML-DSA.
Scenari
| ID | Scenario | Descrizione | Complessità | Stato |
|---|---|---|---|---|
| 8.1 | Firmare documento | Firmare PDF, XML, JSON | Media | Pianificato |
| 8.2 | Firmare codice | Executables, DLL, Packages | Alta | Pianificato |
| 8.3 | Timestamp | Trusted Timestamp (RFC 3161) | Alta | Pianificato |
| 8.4 | Verificare firma | Verificare firme | Bassa | Pianificato |
Workflow delle firme
flowchart LR
subgraph SIGN["Firmare"]
DOC[Documento/Codice]
HASH[Calcolare hash]
SIG[Creare firma]
end
subgraph VERIFY["Verificare"]
VHASH[Calcolare hash]
VSIG[Verificare firma]
VCERT[Validare certificato]
end
DOC --> HASH --> SIG
DOC --> VHASH
SIG --> VSIG
VSIG --> VCERT
style SIG fill:#e8f5e9
style VCERT fill:#e3f2fd
Algoritmi di firma
| Modalità | Algoritmo | Lunghezza firma | Standard |
|---|---|---|---|
| PostQuantum | ML-DSA-65 | 3309 Bytes | NIST FIPS 204 |
| Ibrido | ECDSA P-384 + ML-DSA-65 | ~3400 Bytes | Composite Signatures |
| Classico | ECDSA P-384 | 96 Bytes | NIST FIPS 186-5 |
Raccomandazione: Per archiviazione a lungo termine utilizzare firme ibride. Entrambe le firme devono essere violate.
Formati delle firme
| Formato | Applicazione | Contiene |
|---|---|---|
| CMS/PKCS#7 | Generale, E-Mail | Firma + Certificato + Timestamp opzionale |
| XML-DSig | SOAP, SAML | Firma in struttura XML |
| JWS | REST APIs, JWT | JSON Web Signature |
| Authenticode | Windows PE | Code-Signing per EXE/DLL |
Requisiti specifici per settore
| Settore | Tipo di firma | Requisiti |
|---|---|---|
| Sanità | Firma qualificata (QES) | Conforme eIDAS, gematik |
| Automotive | Code-Signing | UNECE R156, Secure Boot |
| Energia | Documento + Timestamp | Requisiti audit, NIS2 |
| Industria 4.0 | Firma firmware | IEC 62443 |
Guida rapida al codice
Firmare documento
using WvdS.Security.Cryptography.Signatures.Extensions.PQ; // Caricare chiave di firma var signingKey = ctx.LoadPrivateKey("signing.key.pem", password); var signingCert = ctx.LoadCertificate("signing.crt.pem"); // Firmare documento (CMS/PKCS#7) byte[] document = File.ReadAllBytes("contratto.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("contratto.pdf.p7s", signature);
Verificare firma
// Caricare firma byte[] signature = File.ReadAllBytes("contratto.pdf.p7s"); byte[] document = File.ReadAllBytes("contratto.pdf"); // Verificare var result = ctx.VerifySignature( data: document, signature: signature, trustStore: trustStore ); if (result.IsValid) { Console.WriteLine($"Firmato da: {result.SignerCertificate.Subject}"); Console.WriteLine($"Timestamp: {result.Timestamp}"); }
Categorie correlate
| Categoria | Relazione |
|---|---|
| 3. Emettere certificati | Certificati Code-Signing |
| 5. Validazione | Validare certificato di firma |
| 9. Autenticazione | Firma come metodo di autenticazione |
« ← 7. Crittografia | ↑ Scenari | 9. Autenticazione → »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
Zuletzt geändert: il 30/01/2026 alle 06:53