Cryptology Academy · Aula

Google Tink: Criptografia Segura de Alto Nível

Use a API do Tink baseada em conjuntos de chaves para realizar operações criptográficas comuns sem conhecimento especializado em criptografia.

Aula 3 de 413 etapas

Google Tink: Criptografia Segura de Alto Nível é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

Visão geral e motivação do Tink

Tink é uma biblioteca criptográfica de código aberto desenvolvida pela equipe de criptografia do Google, projetada para oferecer criptografia segura e fácil de usar. A principal motivação é evitar os padrões comuns de uso incorreto da criptografia que ocorrem até mesmo entre desenvolvedores experientes que usam bibliotecas de nível mais baixo. A API do Tink é projetada para que a operação correta seja o caminho de menor resistência, dificultando a criação acidental de configurações inseguras.

Abstração baseada em conjuntos de chaves

O Tink organiza as chaves em conjuntos de chaves, em vez de expor objetos de chave individuais. As aplicações trabalham com identificadores de conjuntos de chaves, não com bytes brutos de chaves. Essa abstração evita a exposição acidental de chaves, permite a rotação contínua de chaves e possibilita armazená-las em Sistemas de Gerenciamento de Chaves remotos sem que a aplicação jamais veja diretamente o material das chaves. O conceito de conjunto de chaves é central para o design seguro do Tink.

Interface AEAD

A interface AEAD (Criptografia autenticada com dados associados) do Tink fornece operações de criptografia e descriptografia. AeadFactory.getPrimitive(keyset) retorna um objeto Aead; chamar aead.encrypt(plaintext, associatedData) retorna um texto cifrado. O Tink seleciona automaticamente o algoritmo de criptografia com base no conjunto de chaves (por exemplo, AES-256-GCM) e gera um valor único aleatório. A interface oculta todos os detalhes do algoritmo, o gerenciamento do valor único e a codificação do formato.

Interface MAC

A interface MAC do Tink fornece operações de computação e verificação para códigos de autenticação de mensagens. MacFactory.getPrimitive(keyset) retorna um objeto Mac. mac.computeMac(data) retorna a etiqueta de autenticação; mac.verifyMac(tag, data) verifica-a e lança uma exceção de segurança se a verificação falhar. O algoritmo padrão é HMAC-SHA256. A interface evita erros comuns, como comparar códigos MAC usando igualdade comum de strings em vez de uma comparação em tempo constante.

Interface de assinatura digital

O Tink fornece interfaces separadas, PublicKeySign e PublicKeyVerify, para assinaturas digitais. Os objetos de assinatura e verificação são derivados de identificadores diferentes de conjuntos de chaves, privados e públicos, respectivamente, impedindo o uso acidental de uma chave privada para verificação ou vice-versa. As implementações Ed25519 e ECDSA P-256 do Tink são as opções padrão, e há ECDSA determinístico disponível para evitar vulnerabilidades relacionadas à aleatoriedade.

Interface de criptografia híbrida

As interfaces HybridEncrypt e HybridDecrypt do Tink implementam ECIES (Esquema Integrado de Criptografia de Curvas Elípticas). A criptografia híbrida combina a troca assimétrica de chaves com a criptografia simétrica: o remetente gera uma chave efêmera, realiza ECDH com a chave pública do destinatário, deriva uma chave simétrica e criptografa usando AEAD. Isso permite criptografar mensagens grandes usando chaves assimétricas sem o custo adicional da criptografia puramente assimétrica.

Processo de rotação do conjunto de chaves

A rotação de chaves no Tink é segura e compatível com versões anteriores. Para fazer a rotação: gere uma nova chave e adicione-a ao conjunto de chaves, marque a nova chave como primária, para que as futuras criptografias a utilizem, e mantenha as chaves antigas no conjunto para descriptografar os textos cifrados existentes. Os textos cifrados antigos continuam sendo descriptografados porque as chaves não primárias permanecem disponíveis para descriptografia. Quando todos os textos cifrados antigos tiverem sido criptografados novamente ou expirado, exclua as chaves antigas do conjunto.

Serialização do conjunto de chaves

Os conjuntos de chaves do Tink são serializados como JSON ou no formato binário de buffers de protocolo. O formato JSON é legível por humanos e útil para depuração. O formato binário é mais compacto para produção. Os conjuntos de chaves serializados que contêm chaves privadas devem ser criptografados antes do armazenamento. O Tink oferece suporte ao armazenamento de conjuntos de chaves criptografados usando a criptografia AEAD simétrica padrão ou delegando o armazenamento a um KMS.

Integração com KMS para criptografia de conjuntos de chaves

O Tink integra-se aos principais provedores de KMS: AWS KMS, Google Cloud KMS e HashiCorp Vault. Em vez de criptografar conjuntos de chaves com uma chave AEAD local, o Tink encapsula a chave de criptografia do conjunto de chaves usando o KMS. A criptografia efetiva do conjunto de chaves usa uma chave de criptografia de dados (DEK) gerada localmente, e a DEK é criptografada pela chave de criptografia de chaves (KEK) do KMS. Isso segue o padrão de criptografia em envelope usado pelos provedores de nuvem.

AEAD para arquivos grandes

A AEAD padrão exige o carregamento da mensagem inteira na memória para criptografia e descriptografia. A interface AEAD de fluxo do Tink criptografa arquivos grandes em segmentos, permitindo criptografia e descriptografia em fluxo sem armazenar em buffer todo o texto em claro. Cada segmento é autenticado de forma independente, e a ordem e a integridade dos segmentos são verificadas durante a descriptografia. Isso é essencial para criptografar cópias de segurança, vídeos e outros arquivos grandes.

Suporte a linguagens e ecossistema

O Tink está disponível para Java, Python, Go e C++, com APIs idiomáticas para cada linguagem. A interoperabilidade entre linguagens é garantida: um arquivo criptografado com o Tink em Python pode ser descriptografado com o Tink em Java. Isso torna o Tink adequado para sistemas com vários serviços em linguagens diferentes que precisam trocar dados criptografados. O Tink também se integra a buffers de protocolo para oferecer uma configuração de conjuntos de chaves com segurança de tipos.

Rotação do conjunto de chaves do Tink

Durante a rotação de chaves do Tink, o que acontece com os textos cifrados usando a chave antiga não primária?

Recapitulação do Google Tink

Recapitulação do Tink: a abstração baseada em conjuntos de chaves impede a exposição de chaves brutas, a interface AEAD oculta o gerenciamento de valores únicos e a seleção de algoritmos, a interface MAC usa internamente a verificação em tempo constante, as interfaces de assinatura digital e criptografia híbrida evitam o uso incorreto da interface, a rotação de chaves é compatível com versões anteriores, pois as chaves antigas descriptografam os dados até serem removidas, a integração com KMS segue o padrão de criptografia em envelope, a AEAD de fluxo lida com arquivos grandes e a interoperabilidade entre linguagens é garantida.

Grátis para começar

Aprenda Cryptology Academy com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
67
Aulas
261

Perguntas Frequentes

A aula “Google Tink: Criptografia Segura de Alto Nível” é grátis?

Sim — o texto completo de “Google Tink: Criptografia Segura de Alto Nível” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “Google Tink: Criptografia Segura de Alto Nível”?

Use a API do Tink baseada em conjuntos de chaves para realizar operações criptográficas comuns sem conhecimento especializado em criptografia. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Google Tink: Criptografia Segura de Alto Nível”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. libsodium: Uma Biblioteca Criptográfica Resistente a Uso Indevido
  2. API do OpenSSL: Estruturas Principais e Armadilhas
  3. Google Tink: Criptografia Segura de Alto Nível
  4. Auditoria e Seleção de Dependências Criptográficas
← Voltar para Cryptology Academy