Comprendre les concepts clés de Tink
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Lorsque vous commencez à utiliser Tink, vous devez comprendre certains concepts clés décrits dans les sections suivantes.
Primitives
Tink utilise des primitives comme composants de base cryptographiques, qui gèrent un algorithme sous-jacent afin que les utilisateurs puissent effectuer des tâches cryptographiques de manière sécurisée. Une primitive définit les détails d'un algorithme cryptographique et le type de clé.
Primitives prises en charge par Tink:
- Authentifier le chiffrement avec des données associées (AEAD): primitive la plus courante pour le chiffrement de données. Adapté à la plupart des besoins de chiffrement. AEAD assure la confidentialité du texte brut, et permet de vérifier son intégrité et son authenticité. Consultez la page Chiffrement authentifié avec les données associées (AEAD).
- Chiffrement déterministe:primitive qui produit toujours le même texte chiffré pour un texte brut et une clé donnés. Cela peut être risqué, car un pirate informatique n'a besoin de trouver que le texte chiffré correspondant à une entrée en texte brut donnée pour l'identifier. Voir AEAD déterministe.
- Signature numérique: primitive asymétrique (voir Chiffrement par clé asymétrique) pour confirmer l'authenticité et l'intégrité des données signées. Consultez Signature numérique.
- Chiffrement hybride: primitive qui combine le chiffrement par clé asymétrique et le chiffrement à clé symétrique (consultez les pages Chiffrement par clé asymétrique et Chiffrement par clé symétrique). Le chiffrement hybride combine l'efficacité du chiffrement symétrique à la commodité du chiffrement à clé publique. Pour chiffrer un message, une nouvelle clé symétrique est générée et utilisée pour chiffrer les données en texte brut, tandis que la clé publique du destinataire est uniquement utilisée pour chiffrer la clé symétrique. Le texte chiffré final se compose du texte chiffré
symétrique et de la clé symétrique chiffrée. Consultez la page Chiffrement hybride.
- Message Authentication Code (MAC): primitive symétrique (voir Chiffrement par clé symétrique) permettant de confirmer l'authenticité et l'intégrité des données. Voir Message Authentication Code (MAC).
- AEAD en flux continu: primitive fournissant un chiffrement authentifié pour les flux de données. Ce type de chiffrement est utile lorsque les données à chiffrer sont trop volumineuses pour être traitées en une seule étape. Consultez la section AEAD en flux continu.
Pour en savoir plus sur la compatibilité, consultez la section primitives compatibles par langage.
Pour en savoir plus, consultez la section Conception primitive.
Types de clés
Un type de clé implémente une primitive spécifique. La plupart des primitives proposent plusieurs types de clés en fonction de vos exigences en termes de sécurité, d'exécution et d'espace. Par exemple, AES128_GCM est un AEAD rapide et efficace pour la plupart des besoins. Pour en savoir plus, consultez la section Types de clés compatibles par langage.
Collections de clés et poignées de jeux de clés
Tink utilise des ensembles de clés pour gérer les clés. Une collection de clés est essentiellement un ensemble
de clés qui facilitent la rotation des clés. Les propriétés notables d'une collection de clés sont les suivantes:
- Chaque clé d'une collection de clés possède un identifiant unique, qui est unique au sein d'une collection de clés. Cet ID est généralement ajouté en tant que préfixe à chaque texte chiffré, signature ou balise produits pour indiquer la clé utilisée (pour en savoir plus, découvrez comment Tink identifie le texte chiffré).
- Dans une collection de clés, une seule clé à la fois est principale. La clé primaire d'une collection
de clés est la clé "en cours d'utilisation".
- Toutes les clés d'une collection de clés doivent être des implémentations de la même primitive (AEAD, par exemple), mais peuvent avoir des types de clés différents (par exemple, une clé AES-GCM et XCHACHA20-POLY1305).
Chaque implémentation de Tink fournit des API permettant de créer ou de modifier des collections de clés. Toutefois, nous vous recommandons d'utiliser notre outil CLI Tinkey.
Les utilisateurs opèrent sur une collection de clés à l'aide de poignées de collection de clés. Un gestionnaire de collection de clés limite l'exposition du matériel de clé sensible réel. Elle extrait également une collection de clés, ce qui permet aux utilisateurs d'obtenir une primitive qui "encapsule" la totalité de cette collection. Par exemple, vous pouvez obtenir la primitive AEAD d'une collection de clés à l'aide de clés N
. Le chiffrement et le déchiffrement avec la primitive obtenue utilisent ensuite la clé primaire de la collection.
Pour en savoir plus, consultez la section Conception d'une collection de clés.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 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)."]]