Trong nhiều thư viện mật mã, khoá thường chỉ được xác định bằng một số trình tự byte. Ví dụ: hãy xem xét các hàm OpenSSL như EVP_EncryptInit_ex
, ngoài các byte khoá, cũng cần IV để tính toán; hoặc phương thức javax.crypto Cipher.init
, phương thức này lấy cả trình tự khoá và AlgorithmParameterSpec
. Những hàm như vậy thường khó sử dụng chính xác và việc truyền sai tham số có thể gây ra hậu quả nghiêm trọng.
Tink hướng đến sự khác biệt và dự kiến một khoá sẽ luôn bao gồm cả tài liệu khoá và siêu dữ liệu (các tham số).
Ví dụ: khoá AEAD đầy đủ chỉ định chi tiết chính xác cách hoạt động của quá trình mã hoá và giải mã – khoá này chỉ định hai hàm \(\mathrm{Enc}\) và\(\mathrm{Dec}\), cũng như cách mã hoá văn bản đã mã hoá (ví dụ: vectơ khởi chạy, theo sau là quá trình mã hoá, theo sau là thẻ).
Khoá AES trong Tink không chỉ là một chuỗi byte có độ dài 128, 192 hoặc 256 bit, mà còn lưu trữ các thông số kỹ thuật thuật toán tương ứng cần thiết để tính toán khoá, ở dạng đối tượng tham số. Do đó, khoá AES-EAX đầy đủ và khoá AES-GCM đầy đủ là các đối tượng khác nhau trong Tink.