많은 암호화 라이브러리에서 키는 일부 바이트 시퀀스로만 식별되는 경우가 많습니다. 예를 들어 EVP_EncryptInit_ex와 같은 OpenSSL 함수는 키 바이트를 제외하고 계산을 위한 IV도 필요합니다. 또는 키 시퀀스와 AlgorithmParameterSpec를 모두 사용하는 javax.crypto 메서드 Cipher.init입니다. 이러한 함수는 올바르게 사용하기 어렵고 잘못된 매개변수를 전달하면 심각한 결과를 초래할 수 있습니다.

Tink는 목표가 다르고 키가 항상 키 자료와 메타데이터 (매개변수)로 모두 구성되기를 기대합니다.

예를 들어 전체 AEAD 키는 암호화와 복호화의 작동 방식을 정확하게 지정합니다. 두 가지 함수인 \(\mathrm{Enc}\) 와\(\mathrm{Dec}\), 암호화 텍스트가 인코딩되는 방식 (예: 초기화 벡터, 암호화 다음에 태그)이 지정됩니다.

Tink의 AES 키는 길이가 128, 192 또는 256비트인 바이트 시퀀스일 뿐만 아니라, 키를 계산하는 데 필요한 해당 알고리즘 사양도 parameters 객체의 형태로 저장합니다. 따라서 전체 AES-EAX 키와 전체 AES-GCM 키는 Tink의 서로 다른 객체입니다.