金鑰

在許多加密編譯程式庫中,索引鍵通常只能識別幾個位元組序列。假設 OpenSSL 函式 (例如 EVP_EncryptInit_ex 與金鑰位元組除外) 也需要 IV 進行運算,或是 javax.crypto 方法 Cipher.init,這項作業會使用索引鍵序列和 AlgorithmParameterSpec。這類函式通常難以使用,而傳遞錯誤的參數也可能造成嚴重後果。

Tink 的目標是不同的金鑰,而且鍵必須一律包含金鑰材質和中繼資料 (參數)。

例如,完整的 AEAD 金鑰會明確指定加密與解密的運作方式,包括兩個函式 \(\mathrm{Enc}\) 和\(\mathrm{Dec}\),以及加密文字的編碼方式 (例如初始化向量、後加密,後面接著標記)。

Tink 中的 AES 金鑰不僅包含長度為 128、192 或 256 位元的位元組序列,但也會以參數物件的形式儲存計算金鑰所需的對應演算法規格。因此,完整的 AES-EAX 金鑰和完整的 AES-GCM 金鑰是 Tink 中的不同物件。