Wichtige Konzepte in Tink verstehen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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\u003eTink utilizes primitives as fundamental cryptographic building blocks for secure data operations, covering encryption, signatures, and message authentication.\u003c/p\u003e\n"],["\u003cp\u003eKeysets in Tink efficiently manage multiple keys for a single purpose, enabling features like key rotation and supporting various key types within a set.\u003c/p\u003e\n"],["\u003cp\u003eKeyset handles provide a secure abstraction layer, allowing users to interact with keys and perform cryptographic operations without directly exposing sensitive key material.\u003c/p\u003e\n"],["\u003cp\u003eTink offers a diverse selection of primitives and key types, accommodating varying security, performance, and storage requirements, with options like AEAD, digital signatures, and hybrid encryption.\u003c/p\u003e\n"]]],["Tink employs cryptographic building blocks called *primitives*, which define algorithms and key types. These include AEAD, Deterministic encryption, Digital signature, Hybrid encryption, MAC, and Streaming AEAD. *Key types* implement primitives, offering choices based on security and performance. *Keysets*, a set of keys with unique IDs, manage key rotation. *Keyset handles* abstract keysets, providing access to a primitive that operates over the entire keyset, including encryption/decryption with the primary key.\n"],null,["# Understand Key Concepts in Tink\n\nWhen you start working with Tink for the first time, there are some key concepts\nyou should understand before you begin your journey; these are described in the\nfollowing sections.\n\nPrimitives\n----------\n\nTink uses *primitives* as cryptographic building blocks that manage an\nunderlying algorithm so users can perform cryptographic tasks safely. A\nprimitive defines the details of a cryptographic algorithm and the key type.\n\nPrimitives supported by Tink:\n\n- **Authenticated Encryption with Associated Data (AEAD)** : The most common primitive for data encryption; suitable for most encryption needs. AEAD provides plaintext confidentiality, and allows verification of its integrity and authenticity. See [Authenticated Encryption with Associated Data\n (AEAD)](/tink/aead).\n- **Deterministic encryption:** A primitive that always produces the same ciphertext for a given plaintext and key. This can be risky, because an attacker only needs to find out which ciphertext corresponds to a given plaintext input to identify it. See [Deterministic\n AEAD](/tink/deterministic-aead).\n- **Digital signature** : An asymmetric (see *Asymmetric key encryption* ) primitive for confirming the authenticity and integrity of signed data. See [Digital signature](/tink/digital-signature).\n- **Hybrid encryption** : A primitive that combines asymmetric key encryption and symmetric key encryption (see *Asymmetric key encryption* and *Symmetric\n key encryption* ). Hybrid encryption combines the efficiency of symmetric encryption with the convenience of public-key encryption. To encrypt a message, a fresh symmetric key is generated and used to encrypt the plaintext data, while the recipient's public key is used to encrypt the symmetric key only. The final ciphertext consists of the symmetric ciphertext and the encrypted symmetric key. See [Hybrid\n encryption](/tink/hybrid).\n- **Message Authentication Code (MAC)** : A symmetric (see *Symmetric key\n encryption* ) primitive for confirming the authenticity and integrity of data. See [Message Authentication Code (MAC)](/tink/mac).\n- **Streaming AEAD** : A primitive providing authenticated encryption for streaming data; useful when the data to be encrypted is too large to be processed in a single step. See [Streaming AEAD](/tink/streaming-aead).\n\nSee [Supported primitives by language](/tink/primitives-by-language) for\ncompatibility information.\n\nFor more info, see [primitive design](/tink/design/primitives_and_interfaces).\n\nKey types\n---------\n\nA *key type* implements a specific primitive. Most primitives have several key\ntypes to choose from depending on your requirements for security, runtime, and\nspace. For example, AES128_GCM is an [AEAD](/tink/aead) that is fast and\neffective for most needs. See more at [Supported key types by\nlanguage](/tink/supported-key-types).\n\nKeysets \\& keyset handles\n-------------------------\n\nTink uses *keysets* for managing keys. A keyset is essentially a set of keys\nthat facilitate key rotation. Noteworthy properties of a keyset are:\n\n- Each key in a keyset has a unique ID, which is unique within a keyset. This ID is usually added as a prefix to each produced ciphertext, signature or tag to indicate which key was used (see how Tink [tags\n ciphertexts](/tink/design/keysets#tagging_ciphertexts) for more info).\n- Only one key at a time in a keyset is *primary*. A primary key in a keyset is the key \"in use\" at the moment.\n- All the keys in a keyset *must* be implementations of the same primitive (such as AEAD), but can have different key types (for example, an AES-GCM and XCHACHA20-POLY1305 key).\n\nEach Tink implementation provides APIs to create or edit keysets. However, we\nrecommend using [Tinkey](/tink/tinkey-overview) our CLI tool.\n\nUsers operate over a keyset using *keyset handles* . A keyset handle limits the\nexposure of the actual sensitive key material. It also abstracts a keyset\nallowing users to obtain a primitive that \"wraps\" the entire keyset. For\nexample, you can get an AEAD primitive of a keyset with `N` keys; encryption and\ndecryption with the obtained primitive then uses the primary key in the keyset.\n\nFor more info, see [keyset design](/tink/design/keysets)."]]