Khoá

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 khóa, cũng cần IV để tính toán; hoặc phương thức javax.crypto Cipher.init, lấy cả chuỗi chính và AlgorithmParameterSpec. Những hàm như vậy thường khó sử dụng đúng cách và việc truyền sai tham số có thể gây ra hậu quả nghiêm trọng.

Mục đích của Tink là khác biệt và mong đợi một khoá sẽ luôn bao gồm cả tài liệu chính và siêu dữ liệu (các thông số).

Ví dụ: một khoá AEAD đầy đủ sẽ chỉ định chi tiết chính xác cách hoạt động của phương thức 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á bản mã (ví dụ: vectơ khởi đầu, theo sau là mã hoá).

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 tương ứng cần thiết để tính toán khoá, dưới dạng đối tượng parameters. Do đó, khoá AES-EAX đầy đủ và khoá AES-GCM đầy đủ là các đối tượng khác nhau trong Tink.