Mit dem Digital Signature-Primitive können Sie überprüfen, ob Ihre Daten manipuliert wurden. Sie bietet Authentizität und Integrität, aber nicht die Geheimhaltung der signierten Daten. Sie ist asymmetrisch, d. h. sie verwendet ein Schlüsselpaar (öffentlicher und privater Schlüssel).
Das Primitive für digitale Signaturen hat die folgenden Eigenschaften:
- Authentizität: Es ist nicht möglich, eine Signatur zu erstellen, die mit
PublicKeyVerify.Verify(signature, message)validiert werden kann, es sei denn, Sie haben den privaten Schlüssel. - Asymmetrisch: Beim Erstellen der Signatur wird ein anderer Schlüssel verwendet als für die Verifizierung. Dadurch können Sie den öffentlichen Schlüssel verteilen, um Signaturen für Parteien zu verifizieren, die Signaturen nicht selbst erstellen können.
Wenn Sie keine Asymmetrie benötigen, sollten Sie stattdessen das einfachere und effizientere MAC-Primitive verwenden.
Die Funktionalität digitaler Signaturen wird in Tink als Paar von Primitiven dargestellt:
- PublicKeySign zum Signieren von Daten
- PublicKeyVerify zum Überprüfen der Signatur
Wenn sich der private Schlüssel an einem Ort befindet, an den die Nachricht nicht einfach gesendet werden kann, z. B. ein HSM oder ein KMS, finden Sie weitere Informationen unter Prehash und SignPrehash. Dort wird die Signierung in einen Hashing-Schritt nur mit öffentlichem Schlüssel und einen Signierungsschritt nur mit privatem Schlüssel unterteilt.
Schlüsseltyp auswählen
Wir empfehlen für die meisten Anwendungsfälle die Verwendung von ML_DSA_65 oder ECDSA_P256. Es gibt jedoch eine Vielzahl von Optionen. Im Allgemeinen gilt Folgendes:
- ML-DSA-65 ist quantensicher. Wir arbeiten aktiv an der Implementierung und empfehlen die Verwendung für Programmiersprachen, für die sie verfügbar ist.
Bei den folgenden nicht postquanten-sicheren Algorithmen müssen Sie den Schlüsseltyp in naher Zukunft ändern.
- ECDSA_P256 ist die am häufigsten verwendete Option und ein angemessener Standardwert. Beachten Sie jedoch, dass ECDSA-Signaturen verformbar sind.
- ED25519 erstellt deterministische Signaturen und bietet eine bessere Leistung als ECDSA_P256.
- RSA_SSA_PKCS1_3072_SHA256_F4 erstellt deterministische Signaturen und bietet die beste Überprüfungsleistung (die Signierung ist jedoch viel langsamer als bei ECDSA_P256 oder ED25519).
Minimale Sicherheitsgarantien
- Die zu signierenden Daten können eine beliebige Länge haben.
- 128-Bit-Sicherheitsniveau gegen adaptive Chosen-Message-Angriffe für auf elliptischen Kurven basierende Schemata
- 112-Bit-Sicherheitsniveau gegen adaptive Chosen-Message-Angriffe für RSA-basierte Schemata (ermöglicht 2.048-Bit-Schlüssel)
Formbarkeit
Ein Signaturschema ist verformbar, wenn ein Angreifer eine andere gültige Signatur für eine bereits signierte Nachricht erstellen kann. In den meisten Fällen ist das kein Problem, aber in einigen Fällen gehen Programmierer implizit davon aus, dass gültige Signaturen eindeutig sind, was zu unerwarteten Ergebnissen führen kann.
Anwendungsbeispiel
Weitere Informationen finden Sie unter Daten digital signieren.