~~NOTOC~~ ====== 8. Digitale Signaturen ====== **Szenarien:** 4 \\ **FFI-Funktionen:** ~30 \\ **Status:** ⏳ Geplant Diese Kategorie umfasst alle Szenarien zur Erstellung und Verifikation digitaler Signaturen. Dokument-Signierung, Code-Signing und Zeitstempel mit ML-DSA. ---- ===== Szenarien ===== ^ ID ^ Szenario ^ Beschreibung ^ Komplexität ^ Status ^ | [[.:dokument_signieren|8.1]] | Dokument signieren | PDF, XML, JSON signieren | ⭐⭐⭐ | ⏳ | | [[.:code_signieren|8.2]] | Code signieren | Executables, DLLs, Packages | ⭐⭐⭐ | ⏳ | | [[.:timestamp|8.3]] | Zeitstempel | Trusted Timestamp (RFC 3161) | ⭐⭐⭐⭐ | ⏳ | | [[.:signatur_verifizieren|8.4]] | Signatur verifizieren | Signaturen prüfen | ⭐⭐ | ⏳ | ---- ===== Signatur-Workflow ===== flowchart LR subgraph SIGN["✍️ Signieren"] DOC[Dokument/Code] HASH[Hash berechnen] SIG[Signatur erstellen] end subgraph VERIFY["✅ Verifizieren"] VHASH[Hash berechnen] VSIG[Signatur prüfen] VCERT[Zertifikat validieren] end DOC --> HASH --> SIG DOC --> VHASH SIG --> VSIG VSIG --> VCERT style SIG fill:#e8f5e9 style VCERT fill:#e3f2fd ---- ===== Signatur-Algorithmen ===== ^ Modus ^ Algorithmus ^ Signaturlänge ^ Standard ^ | **PostQuantum** | ML-DSA-65 | 3309 Bytes | NIST FIPS 204 | | **Hybrid** | ECDSA P-384 + ML-DSA-65 | ~3400 Bytes | Composite Signatures | | **Classic** | ECDSA P-384 | 96 Bytes | NIST FIPS 186-5 | **Empfehlung:** Für Langzeit-Archivierung Hybrid-Signaturen verwenden. Beide Signaturen müssen gebrochen werden. ---- ===== Signaturformate ===== ^ Format ^ Anwendung ^ Enthält ^ | **CMS/PKCS#7** | Allgemein, E-Mail | Signatur + Zertifikat + optionale Timestamp | | **XML-DSig** | SOAP, SAML | Signatur in XML-Struktur | | **JWS** | REST APIs, JWT | JSON Web Signature | | **Authenticode** | Windows PE | Code-Signing für EXE/DLL | ---- ===== Branchenspezifische Anforderungen ===== ^ Branche ^ Signaturtyp ^ Anforderungen ^ | **Healthcare** | Qualifizierte Signatur (QES) | eIDAS-konform, gematik | | **Automotive** | Code-Signing | UNECE R156, Secure Boot | | **Energie** | Dokument + Timestamp | Audit-Anforderungen, NIS2 | | **Industrie 4.0** | Firmware-Signing | IEC 62443 | ---- ===== Code-Schnellstart ===== ==== Dokument signieren ==== using WvdS.Security.Cryptography.Signatures.Extensions.PQ; // Signaturschlüssel laden var signingKey = ctx.LoadPrivateKey("signing.key.pem", password); var signingCert = ctx.LoadCertificate("signing.crt.pem"); // Dokument signieren (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); ==== Signatur verifizieren ==== // Signatur laden byte[] signature = File.ReadAllBytes("vertrag.pdf.p7s"); byte[] document = File.ReadAllBytes("vertrag.pdf"); // Verifizieren var result = ctx.VerifySignature( data: document, signature: signature, trustStore: trustStore ); if (result.IsValid) { Console.WriteLine($"Signiert von: {result.SignerCertificate.Subject}"); Console.WriteLine($"Zeitstempel: {result.Timestamp}"); } ---- ===== Verwandte Kategorien ===== ^ Kategorie ^ Beziehung ^ | [[.:zertifikate:start|3. Zertifikate ausstellen]] | Code-Signing-Zertifikate | | [[.:validierung:start|5. Validierung]] | Signaturzertifikat validieren | | [[.:authentifizierung:start|9. Authentifizierung]] | Signatur als Authentifizierungsmethode | ---- << [[de:int:pqcrypt:szenarien:verschluesselung:start|← 7. Verschlüsselung]] | [[de:int:pqcrypt:szenarien:start|↑ Szenarien]] | [[.:authentifizierung:start|9. Authentifizierung →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorie signaturen signing cms timestamp}}