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).