Anahtarlar

Birçok kriptografik kitaplıkta anahtarlar genellikle yalnızca bazı bayt dizileriyle tanımlanır. Örneğin, EVP_EncryptInit_ex gibi OpenSSL işlevlerini düşünün. Bu işlevler, anahtar baytlarının yanı sıra hesaplama için IV'ye de ihtiyaç duyar. Ya da hem anahtar dizisi hem de AlgorithmParameterSpec alan javax.crypto yöntemi Cipher.init'i düşünün. Bu tür işlevlerin doğru şekilde kullanılması genellikle zordur ve yanlış parametrelerin iletilmesinin ciddi sonuçları olabilir.

Tink farklı olmayı hedefler ve bir anahtarın her zaman hem anahtar materyalinden hem de meta verilerden (parametreler) oluşmasını bekler.

Örneğin, tam AEAD anahtarı, şifreleme ve şifre çözmenin nasıl çalıştığını tam ayrıntılarıyla belirtir.Bu anahtar, \(\mathrm{Enc}\) ve\(\mathrm{Dec}\)işlevlerini ve şifre metninin nasıl kodlandığını (ör. başlatma vektörü, şifreleme ve etiket) belirtir.

Tink'teki AES anahtarı yalnızca 128, 192 veya 256 bit uzunluğunda bir bayt dizisi değil, aynı zamanda anahtarı hesaplamak için gereken ilgili algoritma özelliklerini parametreler nesnesi biçiminde de depolar. Bu nedenle, tam AES-EAX anahtarı ve tam AES-GCM anahtarı Tink'te farklı nesnelerdir.