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.