คีย์

ในไลบรารีการเข้ารหัสลับหลายๆ แห่ง คีย์มักมีการระบุด้วยลําดับขั้นของไบต์ ลองดูตัวอย่างฟังก์ชัน OpenSSL เช่น EVP_EncryptInit_ex ซึ่งนอกเหนือจากไบต์คีย์ก็ต้องมี IV สําหรับการคํานวณด้วย หรือจะใช้เมธอด javax.crypto Cipher.init ซึ่งใช้ทั้งลําดับคีย์และ AlgorithmParameterSpec ฟังก์ชันดังกล่าวมักใช้งานยากอย่างถูกต้อง และการส่งผ่านพารามิเตอร์ที่ไม่ถูกต้องอาจทําให้เกิดผลร้ายแรง

Tink มีเป้าหมายที่แตกต่างกันไปและคาดหวังว่าคีย์จะประกอบด้วยทั้งเนื้อหาคีย์และข้อมูลเมตา (พารามิเตอร์) เสมอ

เช่น คีย์ AEAD แบบเต็มที่ระบุรายละเอียดที่แน่นอนเกี่ยวกับการทํางานของการเข้ารหัสและการถอดรหัส ซึ่งจะระบุฟังก์ชันทั้ง 2 อย่าง \(\mathrm{Enc}\) และ\(\mathrm{Dec}\)รวมทั้งวิธีเข้ารหัสลับข้อความ (เช่น เวกเตอร์การเริ่มต้น ตามด้วยการเข้ารหัส ตามด้วยแท็ก)

คีย์ AES ใน Tink ไม่เพียงแต่เป็นไบต์ลําดับความยาวตั้งแต่ 128, 192 หรือ 256 บิต แต่ยังจัดเก็บข้อมูลจําเพาะของอัลกอริทึมที่เกี่ยวข้องซึ่งจําเป็นต่อการคํานวณคีย์ในรูปแบบของออบเจ็กต์ parameters ด้วย ดังนั้นคีย์ AES-EAX แบบเต็มและคีย์ AES-GCM แบบเต็มจะเป็นออบเจ็กต์ที่แตกต่างกันใน Tink