많은 암호화 라이브러리에서 키는 일부 바이트 시퀀스만으로 식별되는 경우가 많습니다. 예를 들어 키 바이트를 제외하고 계산에 IV도 필요한 EVP_EncryptInit_ex
와 같은 OpenSSL 함수 또는 키 시퀀스와 AlgorithmParameterSpec
를 모두 사용하는 javax.crypto 메서드 Cipher.init
를 고려해 보세요. 이러한 함수는 올바르게 사용하기 어렵고 잘못된 매개변수를 전달하면 심각한 결과를 초래할 수 있습니다.
Tink는 다르게 하려는 목표를 가지고 있으며 키가 항상 키 자료와 메타데이터 (매개변수)로 구성되기를 기대합니다.
예를 들어 전체 AEAD 키는 암호화 및 복호화의 작동 방식을 정확하게 지정합니다. 즉, 두 함수 \(\mathrm{Enc}\) 및\(\mathrm{Dec}\)와 암호문이 인코딩되는 방식 (예: 초기화 벡터, 암호화, 태그)을 지정합니다.
Tink의 AES 키는 길이가 128, 192 또는 256비트인 바이트 시퀀스일 뿐만 아니라 키를 계산하는 데 필요한 해당 알고리즘 사양을 parameters 객체의 형태로 저장합니다. 따라서 전체 AES-EAX 키와 전체 AES-GCM 키는 Tink에서 서로 다른 객체입니다.