कुंजियां

कई क्रिप्टोग्राफ़िक लाइब्रेरी में, कुंजियों की पहचान अक्सर कुछ बाइट क्रम से की जाती है. उदाहरण के लिए, EVP_EncryptInit_ex जैसे OpenSSL फ़ंक्शन, जिन्हें की-बाइट के अलावा IV की भी ज़रूरत होती है, उन्हें कंप्यूटेशन के लिए IV की ज़रूरत होती है. इसके अलावा, javax.crypto मैथड Cipher.init, जिसमें की और AlgorithmParameterSpec दोनों शामिल होते हैं. आम तौर पर, ऐसे फ़ंक्शन सही तरीके से इस्तेमाल नहीं किए जाते. साथ ही, गलत पैरामीटर पास करने से गंभीर नतीजे मिल सकते हैं.

टिंक का लक्ष्य अलग होना चाहिए. साथ ही, कुंजी के लिए हमेशा कुंजी का कॉन्टेंट और मेटाडेटा (पैरामीटर) दोनों शामिल होने चाहिए.

उदाहरण के लिए, एक पूरी YYD कुंजी, सटीक तरीके से बताती है कि एन्क्रिप्शन और डिक्रिप्शन के काम करने का तरीका क्या है - यह दो फ़ंक्शन \(\mathrm{Enc}\) और \(\mathrm{Dec}\)की जानकारी देता है. साथ ही, यह भी बताता है कि साइफ़रटेक्स्ट को कोड में कैसे बदला गया है (उदाहरण के लिए, इनीशियलाइज़ेशन वेक्टर, इसके बाद एन्क्रिप्ट (सुरक्षित) करने का तरीका, और टैग के बाद).

टिंक में AES कुंजी, न सिर्फ़ 128, 192 या 256 बिट की लंबाई वाला बाइट सीक्वेंस है, बल्कि कुंजी के कंप्यूट करने के लिए ज़रूरी एल्गोरिदम स्पेसिफ़िकेशन को भी पैरामीटर ऑब्जेक्ट के तौर पर सेव करती है. इसलिए, एक पूरी AES-EAX कुंजी और एक पूरी AES-GCM कुंजी, टिंक में अलग-अलग होती है.