Kunci

Di banyak library kriptografi, kunci sering kali hanya diidentifikasi oleh beberapa urutan byte. Misalnya, fungsi OpenSSL seperti EVP_EncryptInit_ex, yang berbeda dari byte kunci, juga memerlukan IV untuk komputasi; atau metode javax.crypto Cipher.init, yang menggunakan urutan kunci dan AlgorithmParameterSpec. Fungsi tersebut sering kali sulit digunakan dengan benar dan meneruskan parameter yang salah dapat menimbulkan konsekuensi yang serius.

Tink bertujuan untuk menjadi berbeda, dan mengharapkan kunci untuk selalu terdiri dari materi kunci dan metadata (parameter).

Kunci AESD lengkap, misalnya, menentukan secara detail cara kerja enkripsi dan dekripsi - kunci ini menunjukkan dua fungsi \(\mathrm{Enc}\) dan \(\mathrm{Dec}\), serta cara ciphertext dienkode (misalnya, vektor inisialisasi, diikuti dengan enkripsi, diikuti dengan tag).

Kunci AES di Tink tidak hanya urutan byte dengan panjang 128, 192, atau 256 bit, tetapi juga menyimpan spesifikasi algoritme yang sesuai yang diperlukan untuk menghitung kunci, dalam bentuk objek parameters. Oleh karena itu, kunci AES-EAX lengkap dan kunci AES-GCM lengkap adalah objek yang berbeda di Tink.