Comprende los conceptos clave de Tink
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Cuando comiences a trabajar con Tink por primera vez, hay algunos conceptos clave que debes comprender antes de comenzar; estos se describen en las siguientes secciones.
Primitivas
Tink usa primitivas como componentes básicos criptográficos que administran un algoritmo subyacente para que los usuarios puedan realizar tareas criptográficas de forma segura. Una primitiva define los detalles de un algoritmo criptográfico y el tipo de clave.
Funciones primitivas compatibles con Tink:
- Encriptación autenticada con datos asociados (AEAD): Es la primitiva más común para la encriptación de datos y es adecuada para la mayoría de las necesidades de encriptación. AEAD proporciona confidencialidad de texto simple y permite la verificación de su integridad y autenticidad. Consulta Encriptación autenticada con datos asociados (AEAD).
- Encriptación determinista: Es una primitiva que siempre produce el mismo texto cifrado para un texto simple y una clave determinados. Esto puede ser riesgoso, ya que un atacante solo necesita descubrir qué texto cifrado corresponde a una entrada de texto simple determinada para identificarla. Consulta AEAD determinista.
- Firma digital: Una primitiva asimétrica (consulta Encriptación de clave asimétrica) para confirmar la autenticidad y la integridad de los datos firmados. Consulta Firma digital.
- Encriptación híbrida: Es una primitiva que combina la encriptación de clave asimétrica y la criptografía de clave simétrica (consulta Encriptación de claves asimétricas y Encriptación de claves simétricas). La encriptación híbrida combina la eficiencia de la encriptación simétrica con la conveniencia de la encriptación de clave pública. Para encriptar un mensaje, se genera una clave simétrica nueva y se usa para encriptar los datos de texto simple, mientras que la clave pública del destinatario se usa solo para encriptar la clave simétrica. El texto cifrado final consta del texto cifrado simétrico y la clave simétrica encriptada. Consulta Encriptación híbrida.
- Código de autenticación de mensajes (MAC): Es un tipo primitivo simétrico (consulta Encriptación de claves simétricas) para confirmar la autenticidad y la integridad de los datos. Consulta Código de autenticación de mensajes (MAC).
- AEAD de transmisión: Es una primitiva que proporciona encriptación autenticada para datos de transmisión. Es útil cuando los datos que se encriptarán son demasiado grandes para procesarlos en un solo paso. Consulta Transmisión de AEAD.
Consulta primitivas compatibles por lenguaje para obtener información sobre la compatibilidad.
Para obtener más información, consulta el diseño primitivo.
Tipos de claves
Un tipo de clave implementa una primitiva específica. La mayoría de las primitivas tienen varios tipos de claves para elegir según tus requisitos de seguridad, entorno de ejecución y espacio. Por ejemplo, AES128_GCM es un AEAD que es rápido y eficaz para la mayoría de las necesidades. Consulta el artículo Tipos de claves admitidos por idioma para obtener más información.
Conjuntos de llaves y controladores de teclados
Tink usa conjuntos de claves para administrar claves. En esencia, es un conjunto de claves
que facilitan la rotación de claves. Las propiedades más importantes de un conjunto de claves son las siguientes:
- Cada clave de un conjunto de claves tiene un ID único, que es único dentro de un conjunto de claves. Por lo general, este ID se agrega como un prefijo a cada texto cifrado, firma o etiqueta producido para indicar qué clave se usó (consulta cómo Tink etiqueta texto cifrado para obtener más información).
- Solo una clave a la vez en un conjunto de claves es primaria. Una clave primaria en un conjunto de claves
es la clave “en uso” en este momento.
- Todas las claves de un conjunto de claves deben ser implementaciones de la misma primitiva (como AEAD), pero pueden tener diferentes tipos de claves (por ejemplo, una clave AES-GCM y una XCHACHA20-POLY1305).
Cada implementación de Tink proporciona APIs para crear o editar conjuntos de claves. Sin embargo, recomendamos usar Tinkey, nuestra herramienta de la CLI.
Los usuarios operan sobre un conjunto de claves con controladores de conjunto de claves. Un controlador de conjunto de claves limita la exposición del material de clave sensible real. También abstrae un conjunto de claves que permite a los usuarios obtener una primitiva que "une" todo el conjunto. Por ejemplo, puedes obtener una primitiva AEAD de un conjunto de claves con claves N
. Luego, la encriptación y desencriptación con la primitiva obtenida usa la clave primaria en el conjunto de claves.
Para obtener más información, consulta Diseño del conjunto de claves.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-07-25 (UTC)
[null,null,["Última actualización: 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)."]]