Comprendere i concetti chiave in Tink

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

Primitive

Tink utilizza primitive come blocchi di costruzione crittografici che gestiscono un algoritmo sottostante in modo che gli utenti possano eseguire in sicurezza attività crittografiche. Un primitivo definisce i dettagli di un algoritmo crittografico e il tipo di chiave.

Tipi di chiavi

Un tipo di chiave implementa una primitiva specifica. La maggior parte dei tipi primitivi ha diversi tipi di chiavi 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. Scopri di più in Tipi di tasti supportati per lingua.

Serrature e maniglie per serrature

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

  • Ogni chiave in un keyset ha un ID univoco, che è univoco all'interno di un keyset. Questo ID viene in genere aggiunto come prefisso a ogni testo cifrato, firma o tag prodotto per indicare quale chiave è stata utilizzata (per maggiori informazioni, consulta la sezione su come Tink tagga i testi cifrati).
  • In un keyset, solo una chiave alla volta è principale. Una chiave primaria in un keyset è la chiave "in uso" al momento.
  • Tutte le chiavi di un keyset 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 i keyset. Tuttavia, ti consigliamo di utilizzare Tinkey, il nostro strumento CLI.

Gli utenti operano su un keyset utilizzando gli handle del keyset. Un handle del keyset limita l'esposizione del materiale della chiave sensibile effettivo. Inoltre, astrae un keyset consentendo agli utenti di ottenere una primitiva che "contiene" l'intero keyset. Ad esempio, puoi ottenere una primitiva AEAD di un keyset con N chiavi; la crittografia e la decrittografia con la primitiva ottenuta utilizzano quindi la chiave primaria nel keyset.

Per saperne di più, consulta la sezione Progettazione del keyset.