Entenda os principais conceitos no Tink
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Quando você começa a trabalhar com a Tink pela primeira vez, há alguns conceitos importantes
que você precisa entender antes de começar sua jornada. Eles são descritos nas
seções a seguir.
Primitivos
A Tink usa primitivos como elementos básicos criptográficos que gerenciam um
algoritmo subjacente para que os usuários possam executar tarefas criptográficas com segurança. Um primitivo define os detalhes de um algoritmo criptográfico e o tipo de chave.
Primitivos compatíveis com o Tink:
- Criptografia autenticada com dados associados (AEAD, na sigla em inglês): o primitivo mais comum
para a criptografia de dados. Ideal para a maioria das necessidades de criptografia. A AEAD
fornece confidencialidade de texto simples e permite a verificação de integridade
e autenticidade. Consulte Criptografia autenticada com dados associados
(AEAD, na sigla em inglês).
- Criptografia determinista:um primitivo que sempre produz o mesmo
texto criptografado para um determinado texto simples e chave. Isso pode ser arriscado, porque um
invasor só precisa descobrir qual texto criptografado corresponde a uma determinada
entrada de texto simples para identificá-lo. Consulte AEAD
determinista.
- Assinatura digital: um primitivo assimétrica (consulte Criptografia de chave assimétrica)
para confirmar a autenticidade e a integridade dos dados assinados. Consulte
Assinatura digital.
- Criptografia híbrida: um primitivo que combina criptografia de chave assimétrica
e criptografia de chave simétrica. Consulte Criptografia de chave assimétrica e Criptografia de
chave simétrica. A criptografia híbrida combina a eficiência da criptografia simétrica com a conveniência da criptografia de chave pública. Para criptografar uma mensagem, uma nova chave simétrica é gerada e usada para criptografar os dados de texto simples, enquanto a chave pública do destinatário é usada para criptografar apenas a chave simétrica. O texto criptografado final consiste no texto
simétrico e na chave simétrica criptografada. Consulte Criptografia
híbrida.
- Código de autenticação de mensagens (MAC): um primitivo simétrico (consulte Criptografia
de chave simétrica) para confirmar a autenticidade e a integridade dos
dados. Consulte Código de autenticação de mensagem (MAC).
- AEAD de streaming: um primitivo que fornece criptografia autenticada para
o streaming de dados. Útil quando os dados a serem criptografados são muito grandes para serem
processados em uma única etapa. Consulte AEAD de streaming.
Consulte primitivos compatíveis por linguagem para
informações de compatibilidade.
Para mais informações, consulte Design primitivo (link em inglês).
Tipos de chave
Um tipo de chave implementa um primitivo específico. A maioria dos primitivos tem vários tipos de chave para escolher, dependendo dos requisitos de segurança, ambiente de execução e espaço. Por exemplo, o AES128_GCM é um AEAD rápido e
eficaz para a maioria das necessidades. Saiba mais em Tipos de chaves compatíveis por
idioma.
Conjuntos de chaves e alças
O Tink usa conjuntos de chaves para gerenciar chaves. Um conjunto de chaves é basicamente
um conjunto de chaves que facilita a rotação. Estas são algumas propriedades importantes de um conjunto de chaves:
- Cada chave em um conjunto tem um ID exclusivo, que é exclusivo dentro de um conjunto. Esse
ID geralmente é adicionado como um prefixo a cada texto criptografado, assinatura ou
tag produzido para indicar qual chave foi usada. Consulte como a Tink adiciona
tags em textos para mais informações.
- Apenas uma chave por vez em um conjunto de chaves é primária. Uma chave primária em um conjunto
é a chave "em uso" no momento.
- Todas as chaves em um conjunto de chaves precisam ser implementações do mesmo primitivo (como AEAD), mas podem ter tipos de chave diferentes (por exemplo, uma chave AES-GCM
e XCHACHA20-POLY1305).
Cada implementação do Tink fornece APIs para criar ou editar conjuntos de chaves. No entanto,
recomendamos o uso do Tinkey, nossa ferramenta de CLI.
Os usuários operam em um conjunto de chaves usando alças de conjunto de chaves. Um gerenciador de conjunto de chaves limita a
exposição do material real da chave sensível. Ele também abstrai um conjunto
de chaves, permitindo que os usuários tenham um primitivo que "encapsula" todo o conjunto. Por
exemplo, é possível conseguir um primitivo AEAD de um conjunto de chaves com chaves N
. A criptografia e
descriptografia com o primitivo recebido usa a chave primária no conjunto de chaves.
Para mais informações, consulte design de conjunto de chaves (link em inglês).
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-07-25 UTC.
[null,null,["Última atualização 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)."]]