Comprendere i concetti chiave in Tink

Quando inizi a lavorare con Tink per la prima volta, ci sono alcuni concetti chiave che dovresti comprendere prima di iniziare il tuo percorso, descritti nelle sezioni seguenti.

Primitivi

Tink utilizza le primitive come componenti di base crittografici che gestiscono un algoritmo sottostante in modo che gli utenti possano eseguire le attività crittografiche in sicurezza. Una primitiva definisce i dettagli di un algoritmo crittografico e il tipo di chiave.

Primitive supportate da Tink:

  • AEAD (Crittografia autenticata con dati associati): la primitiva più comune per la crittografia dei dati, adatta alla maggior parte delle esigenze di crittografia. AEAD fornisce riservatezza in testo non crittografato e consente la verifica della sua integrità e della sua autenticità. Consulta il documento sulla crittografia autenticata con dati associati (AEAD).
  • Crittografia deterministica: una primitiva che produce sempre lo stesso testo crittografato per un testo non crittografato e una chiave specifici. Questo può essere rischioso perché un utente malintenzionato deve solo scoprire quale testo crittografato corrisponde a un determinato input di testo non crittografato. Vedi AEAD deterministici.
  • Firma digitale: una primitiva asimmetrica (vedi Crittografia delle chiavi asimmetriche) per confermare l'autenticità e l'integrità dei dati firmati. Consulta Firma digitale.
  • Crittografia ibrida: una primitiva che combina crittografia di chiavi asimmetriche e crittografia di chiavi simmetriche (vedi Crittografia a chiave asimmetrica e Crittografia a chiavi simmetriche). La crittografia ibrida combina l'efficienza della crittografia simmetrica con la comodità della crittografia a chiave pubblica. Per criptare un messaggio, viene generata una nuova chiave simmetrica che viene utilizzata per criptare i dati in testo non crittografato, mentre la chiave pubblica del destinatario viene utilizzata solo per criptare la chiave simmetrica. Il testo crittografato finale è costituito dal testo crittografato simmetrico e dalla chiave simmetrica criptata. Vedi Crittografia ibrida.
  • MAC (Message Authentication Code): una primitiva simmetrica (vedi Crittografia delle chiavi simmetriche) per confermare l'autenticità e l'integrità dei dati. Vedi MAC (Message Authentication Code).
  • Flusso di dati AEAD: una soluzione primitiva che fornisce la crittografia autenticata per i flussi di dati; utile quando i dati da criptare sono troppo grandi per essere elaborati in un solo passaggio. Vedi AEAD streaming.

Vedi Primitive supportate per lingua per informazioni sulla compatibilità.

Per ulteriori informazioni, consulta la pagina dedicata al design primitivo.

Tipi di chiavi

Un tipo di chiave implementa una primitiva specifica. La maggior parte delle primitive ha diversi tipi di chiave tra cui scegliere a seconda dei requisiti di sicurezza, runtime e spazio. Ad esempio, AES128_GCM è un AEAD veloce ed efficace per la maggior parte delle esigenze. Per saperne di più, consulta Tipi di chiavi supportati per lingua.

Set di chiavi e handle

Tink utilizza i set di chiavi per la gestione delle chiavi. Un set di chiavi è essenzialmente un insieme di chiavi che ne facilitano la rotazione. Le proprietà degne di nota di un set di chiavi sono:

  • Ogni chiave di un set di chiavi ha un ID univoco, univoco all'interno di un set di chiavi. Questo ID viene generalmente aggiunto come prefisso a ogni testo crittografato, firma o tag generato per indicare la chiave utilizzata. Per saperne di più, scopri come Tink tagga i testi crittografati.
  • Solo una chiave alla volta in un set di chiavi è principale. Una chiave primaria in un set di chiavi è attualmente "in uso".
  • Tutte le chiavi di un set di chiavi devono essere implementazioni della stessa primitiva (ad esempio AEAD), ma possono avere tipi di chiavi diversi (ad esempio una chiave AES-GCM e XCHACHA20-POLY1305).

Ogni implementazione di Tink fornisce API per creare o modificare set di chiavi. Tuttavia, ti consigliamo di utilizzare Tinkey, il nostro strumento di interfaccia a riga di comando.

Gli utenti gestiscono un set di chiavi utilizzando gli handle di set di chiavi. Un handle di set di chiavi limita l'esposizione dell'effettivo materiale della chiave sensibile. Inoltre, astrae un set di chiavi consentendo agli utenti di ottenere una primitiva che esegue il "wrapping" dell'intero set di chiavi. Ad esempio, puoi ottenere una primitiva AEAD di un set di chiavi con chiavi N. La crittografia e la decrittografia con la primitiva ottenuta utilizzano quindi la chiave primaria del set di chiavi.

Per maggiori informazioni, consulta la sezione relativa alla progettazione dei set di tasti.