Digitale Signatur
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Mit dem Primitiven „Digitale Signatur“ können Sie prüfen, ob Ihre Daten nicht manipuliert wurden. Sie sorgt für Authentizität und Integrität, aber nicht für Geheimhaltung der signierten Daten. Die digitale Signatur ist asymmetrisch, d. h. sie verwendet ein Schlüsselpaar (öffentlicher und privater Schlüssel).
Das Primitive „Digitale Signatur“ hat folgende 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, können 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 Verifizieren der Signatur
Schlüsseltyp auswählen
Wir empfehlen für die meisten Anwendungsfälle ECDSA_P256, es gibt aber eine Vielzahl von Optionen. Im Allgemeinen gilt:
- ECDSA_P256 ist die am häufigsten verwendete Option und eine angemessene Standardeinstellung. ECDSA-Signaturen sind jedoch manipulierbar.
- ED25519 erstellt deterministische Signaturen und bietet eine bessere Leistung als ECDSA_P256.
- Mit RSA_SSA_PKCS1_3072_SHA256_F4 werden deterministische Signaturen erstellt und die beste Überprüfungsleistung erzielt. Die Signatur ist jedoch viel langsamer als bei ECDSA_P256 oder ED25519.
Mindestsicherheitsgarantien
- Die zu signierenden Daten können beliebig lang sein.
- 128-Bit-Sicherheitsebene gegen adaptive Angriffe mit ausgewählten Nachrichten für elliptische-Kurven-basierte Systeme
- 112-Bit-Sicherheitsebene gegen adaptive Chosen-Message-Angriffe für RSA-basierte Systeme (ermöglicht 2.048-Bit-Schlüssel)
Verformbarkeit
Ein Signaturschema ist manipulierbar, 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. In einigen Fällen gehen Programmierer jedoch implizit davon aus, dass gültige Signaturen eindeutig sind, was zu unerwarteten Ergebnissen führen kann.
Anwendungsbeispiel
Ich möchte Daten digital signieren.
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-07-25 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-07-25 (UTC)."],[[["\u003cp\u003eDigital signatures ensure data integrity and authenticity by verifying that data hasn't been tampered with.\u003c/p\u003e\n"],["\u003cp\u003eThey use a pair of keys (public and private) for asymmetric signing and verification, allowing for secure distribution of the public key.\u003c/p\u003e\n"],["\u003cp\u003eTink provides two primitives for digital signatures: \u003ccode\u003ePublicKeySign\u003c/code\u003e for signing and \u003ccode\u003ePublicKeyVerify\u003c/code\u003e for verifying.\u003c/p\u003e\n"],["\u003cp\u003eECDSA_P256 is generally recommended, with ED25519 offering better performance and RSA_SSA_PKCS1_3072_SHA256_F4 providing the fastest verification.\u003c/p\u003e\n"],["\u003cp\u003eDigital signatures in Tink guarantee a minimum of 112-bit security and support data of any length.\u003c/p\u003e\n"]]],["Digital signatures ensure data authenticity and integrity using asymmetric key pairs (public and private). `PublicKeySign` signs data, while `PublicKeyVerify` checks signatures. Key options include the widely used ECDSA_P256, faster ED25519, and high-verification-performance RSA_SSA_PKCS1_3072_SHA256_F4. Signatures offer 128-bit security (elliptic curves) or 112-bit security (RSA). ECDSA signatures are malleable, allowing attackers to forge valid signatures. If asymmetry is not needed consider using MAC.\n"],null,["# Digital Signature\n\nThe Digital Signature primitive lets you verify that no one has tampered with\nyour data. It provides authenticity and integrity, but not secrecy, of the\nsigned data. It is asymmetric, meaning it uses a pair of keys (public key and\nprivate key).\n\nThe Digital Signature primitive has the following properties:\n\n- **Authenticity** : It is impossible to create a signature for which `PublicKeyVerify.Verify(signature, message)` validates, unless you have the private key.\n- **Asymmetric**: Creating the signature uses a different key than verifying it. This lets you distribute the public key to verify signatures to parties that can't create signatures themselves.\n\nIf you don't need asymmetry, consider using the simpler and more efficient\n[MAC](/tink/mac) primitive instead.\n\nThe functionality of digital signatures is represented in Tink as a pair of\nprimitives:\n\n- *PublicKeySign* for signing data\n- *PublicKeyVerify* for verifying the signature\n\n### Choose a key type\n\nWe recommend using **ECDSA_P256** for most use cases, but there are a variety of\noptions. In general, the following holds true:\n\n- ECDSA_P256 is the most widely used option and a reasonable default. Note though that ECDSA signatures are [malleable](#malleable).\n- ED25519 creates deterministic signatures and provides better performance than ECDSA_P256.\n- RSA_SSA_PKCS1_3072_SHA256_F4 creates deterministic signatures and provides the best verification performance (but signing is much slower than ECDSA_P256 or ED25519).\n\n### Minimal security guarantees\n\n- Data to be signed can have arbitrary length\n- 128-bit security level against adaptive chosen-message attacks for elliptic curve based schemes\n- 112-bit security level against adaptive chosen-message attacks for RSA based schemes (allows 2048-bit keys)\n\n### Malleability\n\nA signature scheme is malleable if an attacker can create a different valid\nsignature for an already signed message. While this is not a problem for most\nscenarios, in some cases programmers implicitly assume that valid signatures are\nunique, and this can lead to unexpected results.\n\n### Example use case\n\nSee I want to [digitally sign data](/tink/digitally-sign-data)."]]