Google Tink: crittografia sicura ad alto livello
Utilizzi l'API di Tink basata su keyset per eseguire operazioni crittografiche comuni senza possedere competenze specialistiche di crittografia.
Google Tink: crittografia sicura ad alto livello è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Panoramica e motivazioni di Tink
Tink è una libreria crittografica open source sviluppata dal team di crittografia di Google, progettata per offrire una crittografia sicura e facile da utilizzare. L'obiettivo principale è prevenire i comuni utilizzi impropri della crittografia che si verificano anche quando sviluppatori esperti utilizzano librerie di livello inferiore. L'API di Tink è progettata affinché l'operazione corretta sia la più semplice da eseguire, rendendo difficile creare accidentalmente configurazioni non sicure.
Astrazione basata sui keyset
Tink organizza le chiavi in keyset invece di esporre singoli oggetti chiave. Le applicazioni lavorano con handle dei keyset, non con byte grezzi delle chiavi. Questa astrazione impedisce l'esposizione accidentale delle chiavi, abilita la rotazione trasparente delle chiavi e consente di memorizzare le chiavi in sistemi remoti di gestione delle chiavi senza che l'applicazione visualizzi direttamente il materiale delle chiavi. Il concetto di keyset è centrale nel design sicuro di Tink.
Interfaccia AEAD
L'interfaccia AEAD (Authenticated Encryption with Associated Data) di Tink fornisce operazioni di cifratura e decifratura. AeadFactory.getPrimitive(keyset) restituisce un oggetto Aead; la chiamata aead.encrypt(plaintext, associatedData) restituisce il testo cifrato. Tink seleziona automaticamente l'algoritmo di cifratura in base al keyset, per esempio AES-256-GCM, e genera un nonce casuale. L'interfaccia nasconde tutti i dettagli dell'algoritmo, la gestione del nonce e la codifica del formato.
Interfaccia MAC
L'interfaccia MAC di Tink fornisce operazioni di calcolo e verifica per i codici di autenticazione dei messaggi. MacFactory.getPrimitive(keyset) restituisce un oggetto Mac. mac.computeMac(data) restituisce il tag di autenticazione; mac.verifyMac(tag, data) lo verifica e genera un'eccezione di sicurezza se la verifica non riesce. L'algoritmo predefinito è HMAC-SHA256. L'interfaccia previene errori comuni, come confrontare i MAC con la normale uguaglianza tra stringhe invece di usare un confronto a tempo costante.
Interfaccia per le firme digitali
Tink fornisce interfacce separate PublicKeySign e PublicKeyVerify per le firme digitali. Gli oggetti per la firma e la verifica derivano da handle di keyset diversi, rispettivamente privato e pubblico, impedendo di usare accidentalmente una chiave privata per la verifica o viceversa. Le implementazioni Ed25519 ed ECDSA P-256 di Tink sono quelle predefinite; è disponibile anche ECDSA deterministico per evitare vulnerabilità dovute alla casualità.
Interfaccia per la cifratura ibrida
Le interfacce HybridEncrypt e HybridDecrypt di Tink implementano ECIES (Elliptic Curve Integrated Encryption Scheme). La cifratura ibrida combina lo scambio di chiavi asimmetrico con la cifratura simmetrica: il mittente genera una chiave effimera, esegue ECDH con la chiave pubblica del destinatario, deriva una chiave simmetrica e cifra con AEAD. In questo modo è possibile cifrare messaggi di grandi dimensioni usando chiavi asimmetriche, senza l'overhead della cifratura puramente asimmetrica.
Processo di rotazione del keyset
La rotazione delle chiavi in Tink è sicura e compatibile con le versioni precedenti. Per eseguirla, generate una nuova chiave e aggiungetela al keyset, impostate la nuova chiave come primary, in modo che venga usata per le cifrature future, e mantenete le chiavi precedenti nel keyset per decifrare i testi cifrati esistenti. I vecchi testi cifrati continuano a essere decifrabili perché le chiavi non primary restano disponibili per la decifratura. Quando tutti i vecchi testi cifrati sono stati ricifrati o sono scaduti, eliminate le vecchie chiavi dal keyset.
Serializzazione del keyset
I keyset di Tink vengono serializzati in formato JSON o nel formato binario Protocol Buffer. Il formato JSON è leggibile e utile per il debugging. Il formato binario è più compatto per l'uso in produzione. I keyset serializzati che contengono chiavi private devono essere cifrati prima dell'archiviazione. Tink supporta l'archiviazione di keyset cifrati usando la cifratura simmetrica AEAD standard oppure delegando l'archiviazione a un KMS.
Integrazione con KMS per la cifratura del keyset
Tink si integra con i principali provider KMS: AWS KMS, Google Cloud KMS e HashiCorp Vault. Invece di cifrare i keyset con una chiave AEAD locale, Tink protegge la chiave di cifratura del keyset usando il KMS. La cifratura effettiva del keyset usa una Data Encryption Key (DEK) generata localmente, mentre la DEK viene cifrata dalla Key Encryption Key (KEK) del KMS. Questo segue il modello di cifratura envelope usato dai provider cloud.
AEAD a flusso per file di grandi dimensioni
L'AEAD standard richiede di caricare l'intero messaggio in memoria per cifrarlo e decifrarlo. L'interfaccia Streaming AEAD di Tink cifra i file di grandi dimensioni in segmenti, consentendo la cifratura e la decifratura a flusso senza memorizzare temporaneamente l'intero testo in chiaro. Ogni segmento viene autenticato in modo indipendente e, durante la decifratura, vengono verificati l'ordine e la completezza dei segmenti. Questo è essenziale per cifrare backup, video e altri file di grandi dimensioni.
Supporto dei linguaggi ed ecosistema
Tink è disponibile per Java, Python, Go e C++, con API idiomatiche per ciascun linguaggio. L'interoperabilità tra linguaggi è garantita: un file cifrato con Tink in Python può essere decifrato con Tink in Java. Questo rende Tink adatto ai sistemi con più servizi scritti in linguaggi diversi che devono scambiarsi dati cifrati. Tink si integra inoltre con i buffer di protocollo per configurare i keyset in modo sicuro dal punto di vista dei tipi.
Rotazione dei keyset Tink
Durante la rotazione delle chiavi Tink, che cosa accade ai testi cifrati con la chiave precedente, non primary?
Riepilogo di Google Tink
Riepilogo di Tink: l'astrazione basata sui keyset impedisce l'esposizione diretta delle chiavi, l'interfaccia AEAD nasconde la gestione dei nonce e la selezione dell'algoritmo, l'interfaccia MAC usa internamente una verifica a tempo costante, le interfacce per le firme digitali e la cifratura ibrida impediscono l'uso improprio, la rotazione delle chiavi è compatibile con le versioni precedenti (le vecchie chiavi consentono la decifratura finché non vengono rimosse), l'integrazione con KMS segue il modello di cifratura envelope, lo Streaming AEAD gestisce i file di grandi dimensioni e l'interoperabilità tra linguaggi è garantita.
Domande Frequenti
La lezione «Google Tink: crittografia sicura ad alto livello» è gratuita?
Sì — il testo completo di «Google Tink: crittografia sicura ad alto livello» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Google Tink: crittografia sicura ad alto livello»?
Utilizzi l'API di Tink basata su keyset per eseguire operazioni crittografiche comuni senza possedere competenze specialistiche di crittografia. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Google Tink: crittografia sicura ad alto livello»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- libsodium: libreria crittografica resistente agli usi impropri
- API di OpenSSL: strutture fondamentali e insidie
- Google Tink: crittografia sicura ad alto livello
- Verifica e selezione delle dipendenze crittografiche