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
8.1 Dokument signieren PDF, XML, JSON signieren ⭐⭐⭐
8.2 Code signieren Executables, DLLs, Packages ⭐⭐⭐
8.3 Zeitstempel Trusted Timestamp (RFC 3161) ⭐⭐⭐⭐
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
3. Zertifikate ausstellen Code-Signing-Zertifikate
5. Validierung Signaturzertifikat validieren
9. Authentifizierung Signatur als Authentifizierungsmethode

« ← 7. Verschlüsselung | ↑ Szenarien | 9. Authentifizierung → »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:13