คีย์

ในคลังวิทยาการเข้ารหัสจำนวนมาก คีย์มักจะระบุด้วยลำดับไบต์เพียงบางส่วนเท่านั้น ตัวอย่างเช่น ฟังก์ชัน 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