المفاتيح

في العديد من مكتبات التشفير، غالبًا ما يتم التعرّف على المفاتيح من خلال بعض التسلسلات بالبايت فقط. على سبيل المثال، دوال OpenSSL مثل EVP_EncryptInit_ex، التي تختلف عن وحدات البايت الرئيسية، تحتاج أيضًا إلى IV للحوسبة، أو طريقة javax.crypto Cipher.init، التي تستغرق كلاً من تسلسل مفتاح AlgorithmParameterSpec. وغالبًا ما يكون من الصعب استخدام هذه الدوال بشكل صحيح، وقد يؤدي تمرير المَعلمات غير الصحيحة إلى عواقب خطيرة.

يهدف تطبيق Tink إلى أن يكون مختلفًا، ويتوقّع أن يتألف المفتاح دائمًا من المادة الأساسية والبيانات الوصفية (المَعلمات).

على سبيل المثال، يحدِّد مفتاح AEAD الكامل آلية عمل التشفير وفك التشفير، وهو يحدّد الدالتَين \(\mathrm{Enc}\) و\(\mathrm{Dec}\)، وكيفية ترميز النص المشفّر (مثلاً، متّجه الإعداد متبوعًا بالعلامة).

إنّ مفتاح AES الذي يظهر في مفتاح Tink ليس فقط تسلسل بطول 128 أو 192 أو 256 بت، ولكنّه يخزّن أيضًا مواصفات الخوارزمية المقابلة اللازمة لحساب المفتاح في شكل كائن المعلّمات. ومن ثمّ، فإنّ مفتاح AES-EAX الكامل ومفتاح AES-GCM الكامل هوا عنصران مختلفان في Tink.