Digitale Signatur

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.