Wichtige Konzepte in Tink verstehen

Wenn Sie zum ersten Mal mit Tink arbeiten, sollten Sie einige Schlüsselkonzepte verstehen, bevor Sie mit der Arbeit beginnen. Diese werden in den folgenden Abschnitten beschrieben.

Primitive

Tink verwendet Primitive als kryptografische Bausteine, die einen zugrunde liegenden Algorithmus verwalten, damit Nutzer kryptografische Aufgaben sicher ausführen können. Ein Primitive definiert die Details eines kryptografischen Algorithmus und den Schlüsseltyp.

Primitives mit Unterstützung von Tink:

  • Authenticated Encryption with Assigned Data (AEAD): Die gängigste Primitive für die Datenverschlüsselung; für die meisten Verschlüsselungsanforderungen geeignet. AEAD bietet Klartextvertraulichkeit und ermöglicht die Überprüfung seiner Integrität und Authentizität. Siehe Authenticated Encryption with Assigned Data (AEAD).
  • Deterministische Verschlüsselung:Eine primitive Verschlüsselung, die immer denselben Geheimtext für einen bestimmten Klartext und Schlüssel erzeugt. Dies kann riskant sein, da ein Angreifer nur herausfinden muss, welcher Geheimtext einer bestimmten Klartexteingabe entspricht, um ihn zu identifizieren. Siehe Deterministisches AEAD.
  • Digitale Signatur: Eine asymmetrische (siehe Asymmetrische Schlüsselverschlüsselung) Primitive zur Bestätigung der Authentizität und Integrität von signierten Daten. Weitere Informationen finden Sie unter Digitale Signatur.
  • Hybridverschlüsselung: Eine Primitive, die asymmetrische Schlüsselverschlüsselung und symmetrische Schlüsselverschlüsselung kombiniert (siehe Asymmetrische Schlüsselverschlüsselung und Symmetrische Schlüsselverschlüsselung). Die Hybridverschlüsselung kombiniert die Effizienz der symmetrischen Verschlüsselung mit der Bequemlichkeit der Verschlüsselung mit öffentlichem Schlüssel. Zum Verschlüsseln einer Nachricht wird ein neuer symmetrischer Schlüssel generiert und zum Verschlüsseln der Klartextdaten verwendet. Der öffentliche Schlüssel des Empfängers wird hingegen nur zum Verschlüsseln des symmetrischen Schlüssels verwendet. Der endgültige Geheimtext besteht aus dem symmetrischen Geheimtext und dem verschlüsselten symmetrischen Schlüssel. Siehe Hybridverschlüsselung.
  • Message Authentication Code (MAC): Eine symmetrische Primitive (siehe Symmetrische Schlüsselverschlüsselung) zur Bestätigung der Authentizität und Integrität von Daten. Siehe Nachrichtenauthentifizierungscode (MAC).
  • Streaming-AEAD: Ein Primitiv, der eine authentifizierte Verschlüsselung für Streamingdaten bereitstellt. Nützlich, wenn die zu verschlüsselnden Daten zu groß sind, um in einem einzigen Schritt verarbeitet zu werden. Siehe Streaming AEAD.

Informationen zur Kompatibilität finden Sie unter Unterstützte Primitive nach Sprache.

Weitere Informationen finden Sie unter Primitives Design.

Schlüsseltypen

Mit einem Schlüsseltyp wird eine bestimmte Primitive implementiert. Für die meisten Primitiven stehen mehrere Schlüsseltypen zur Auswahl, je nach Ihren Anforderungen an Sicherheit, Laufzeit und Speicherplatz. AES128_GCM ist beispielsweise ein AEAD, der für die meisten Anforderungen schnell und effektiv ist. Weitere Informationen finden Sie unter Unterstützte Schlüsseltypen nach Sprache.

Schlüsselsätze und Ziehpunkte für Schlüsselsätze

Tink verwendet Schlüsselsätze zur Verwaltung von Schlüsseln. Ein Keyset ist im Wesentlichen ein Satz von Schlüsseln, die die Schlüsselrotation ermöglichen. Wichtige Eigenschaften eines Schlüsselsatzes sind:

  • Jeder Schlüssel in einem Keyset hat eine eindeutige ID, die innerhalb eines Keyset eindeutig ist. Diese ID wird normalerweise jedem erzeugten Geheimtext, jeder Signatur oder jedem Tag als Präfix hinzugefügt, um anzugeben, welcher Schlüssel verwendet wurde. Weitere Informationen dazu, wie Tink Geheimtexte taggt, finden Sie hier.
  • In einem Schlüsselsatz ist jeweils nur ein Schlüssel als primärer Schlüssel festgelegt. Ein Primärschlüssel in einem Schlüsselsatz ist der Schlüssel „in Verwendung“.
  • Alle Schlüssel in einem Schlüsselsatz müssen Implementierungen derselben Primitive (z. B. AEAD) sein, können jedoch unterschiedliche Schlüsseltypen haben (z. B. einen AES-GCM- und einen XCHACHA20-POLY1305-Schlüssel).

Jede Tink-Implementierung stellt APIs zum Erstellen oder Bearbeiten von Schlüsselsätzen bereit. Wir empfehlen jedoch die Verwendung von Tinkey, unser CLI-Tool.

Nutzer bedienen einen Schlüsselsatz mithilfe von Schlüsselsatz-Handles. Ein Keyset-Handle schränkt die Offenlegung des tatsächlichen vertraulichen Schlüsselmaterials ein. Außerdem wird ein Schlüsselsatz abstrahiert, mit dem Nutzer ein Primitive abrufen können, das das gesamte Schlüsselsatz „umschließt“. Sie können beispielsweise eine AEAD-Primitive eines Schlüsselsatzes mit N-Schlüsseln abrufen. Bei der Verschlüsselung und Entschlüsselung mit der abgerufenen Primitiven wird dann der Primärschlüssel im Schlüsselsatz verwendet.

Weitere Informationen finden Sie unter Tastensatzdesign.