인증된 암호 방식

인증된 암호 방식(Authenticated encryption, AE)과 관련 데이터로 인증된 암호 방식(authenticated encryption with associated data, AEAD)은 데이터의 기밀성, 무결성및 가용성을 보장하는 암호화 형식이다. 이러한 속성들은 사용하기 쉬운 단일 프로그래밍 인터페이스로 제공된다.

AE에 대한 필요성은 별도의 기밀 유지 블록 암호 운용 방식과 인증 블록 암호 운용 방식을 안전하게 결합하는 것이 어렵고 오류가 발생하기 쉽다는 시각으로부터 나타났다."people had been doing rather poorly when they tried to glue together a traditional (privacy-only) encryption scheme and a message authentication code (MAC)", in: "it is very easy to accidentally combine secure encryption schemes with secure MACs and still get insecure authenticated encryption schemes", in:  이는 잘못된 구현 또는 (SSL / TLS를 포함한) 인증 결함을 이용한 많은 제품 프로토콜 공격 및 응용 프로그램 공격으로 확인되었다.

2000년경, 해당 개념에 대한 많은 발전이 있었다. 2000년에는 Charanjit Jutla의 IACBC와 IAPM 모드들 발표에 의해 큰 관심이 모였다. 여섯가지 다른 인증된 암호 방식들 (OCB 2.0, Key Wrap, CCM, EAX, Encrypt-then-MAC (EtM), and GCM)은 ISO/IEC 19772:2009.에서 표준화되었고 더 많은 것들이 NIST의 요청으로 개발되었다. 스펀지 함수(Sponge function)는 중첩된 모드에서 인증된 암호화를 제공하는데 사용될 수 있다.

AE 모드 구현을 위한 일반적인 프로그래밍 인터페이스는 다음과 같은 함수를 제공한다.

 암호화
 입력: 평문, 암호화 키, 그리고 암호화하진 않지만 인증으로 보호받을 평문의 헤더 (선택적)
 출력: 암호문 과 인증 태그 (메시지 인증 코드)
 복호화
 입력: 암호문, 핵심, 인증 태그, 헤더 (선택적)
 출력: 평문 또는 인증 태그가 제공된 암호문 또는 헤더와 매칭되지 않는 경우 에러

헤더 부분은 기밀성이 불필요하지만 진정성(authenticity)이 요구되는 네트워킹 또는 저장소 메타 데이터에 대한 진정성 및 무결성(integrity) 보호를 제공하기 위한 것이다.

 관련 데이터로 인증된 암호 방식 (Authenticated Encryption with Associated Data) 
이것은 AE의 변형으로, 암호화 될 데이터는 인증 및 무결성을 모두 필요로 한다. AEAD는 관련 데이터(Associated Data,AD)를 암호문 및 표시될 컨텍스트에 결합하므로, 유효한 암호문을 다른 컨텍스트로 잘라내어 붙여넣기 하려는 시도(Cut-and-Paste Attack)를 방지한다.

이것은 네트워크 패킷과 같은 것에서 요구되며, 헤더는 데이터 무결성과 기밀성을 요구하는 대신 데이터 무결성과 가시성을 요구한다(패킷 크기 등). 또한 진정성도 필요하다.

 같이 보기 
 블록 암호 운용 방식
 CCM mode
 CWC mode
 OCB mode
 EAX mode
 GCM
 SGCM
 Signcryption

 각주 

분류:메시지 인증 코드
분류:대칭 키 암호