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