확정적 AEAD는 암호화를 확정적 속성으로 제공합니다. 동일한 데이터를 암호화하면 항상 동일한 암호문이 생성됩니다. 이러한 유형의 암호화는 키 래핑 또는 암호화된 데이터를 검색하는 일부 체계에 유용합니다 (자세한 내용은 RFC 5297, 섹션 1.3 참고). 공격자는 확정적 속성으로 인해 이 프리미티브를 구현하면 보안성을 잃을 수 있습니다. 공격자가 해당 메시지의 다른 인스턴스를 식별하기 위해 특정 메시지의 암호문만 찾으면 되기 때문입니다.
확정적 AEAD에는 다음과 같은 속성이 있습니다.
- 보안: 일반 텍스트의 길이와 반복되는 일반 텍스트의 동등성 외에는 알려진 것이 없습니다.
- 진위성: 암호문의 기초가 되는 암호화된 일반 텍스트를 감지되지 않고 변경할 수 없습니다.
- 대칭: 동일한 키로 일반 텍스트를 암호화하고 암호문을 복호화합니다.
- 확정적: 기본 키가 변경되지 않는 한 동일한 매개변수로 일반 텍스트를 두 번 암호화하면 동일한 암호문이 생성됩니다.
관련 데이터
확정적 AEAD를 사용하여 암호문을 특정 관련 데이터에 연결할 수도 있습니다. user-id
및 encrypted-medical-history
필드가 있는 데이터베이스가 있다고 가정해 보겠습니다. 이 시나리오에서는 encrypted-medical-history
를 암호화할 때 user-id
를 관련 데이터로 사용할 수 있습니다. 이렇게 하면 공격자가 의료 기록을 한 사용자에서 다른 사용자로 이동하는 것을 방지할 수 있습니다.
키 유형 선택
모든 사용 사례에는 AES256_SIV 키 유형을 사용하는 것이 좋습니다.
보안 보장
- 인증 강도가 80비트 이상이어야 합니다.
- 일반 텍스트와 관련 데이터는 길이가 임의적일 수 있습니다 (0..232바이트 범위 내).
- 128비트 보안 수준은 키 복구 공격에 대응하며 최대 232개의 키를 사용하는 다중 사용자 공격에도 적용됩니다. 즉, 공격자가 232개의 키로 암호화된 동일한 메시지의 암호문 232개를 획득할 경우 단일 키를 얻기 위해 2128개의 계산을 해야 합니다.
- 238개의 메시지를 안전하게 암호화하는 기능(각 메시지의 길이가 1MB 미만)
사용 사례
데이터를 결정론적으로 암호화하고 싶음 및 암호문을 컨텍스트에 결합하고 싶음을 참조하세요.