AEAD와 AES-GCM
GCM · Galois Counter Mode · AES-GCM
는 내용을 암호화하면서 암호문과 추가 인증 데이터의 변경도 검증하는 방식이다. 은 Counter 기반 암호화와 인증 연산을 결합하며 동일 키의 재사용을 피해야 한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 평문 내용의 기밀성과 데이터 무결성을 함께 제공한다.
- 암호화하지 않는 헤더도 로 인증에 연결한다.
- 태그 실패 때 평문을 사용하지 않는 처리 경계를 만든다.
02어떤 순서로 동작하나
- 경로
은 Counter 블록을 암호화해 만든 키스트림과 평문을 XOR하여 암호문을 만든다. 같은 키에서 가 재사용되면 핵심 가정이 깨진다.
- 경로
인증에는 Additional Authenticated Data와 암호문·길이 정보가 들어간다. 는 암호화하지 않아도 변조 검증에 포함된다.
- 인증 키
의 H는 블록암호로 0 블록을 암호화해 얻는다. 인증 태그는 결과와 초기 Counter 관련 암호화 값을 결합해 만든다.
- 96비트 IV
96비트 IV의 경우 초기 Counter J0는 IV 뒤에 0^31과 1을 붙이는 형태다. 다른 IV 길이는 별도의 도출 과정을 거친다.
- 검증 순서
수신자는 태그 검증이 성공한 평문만 후속 처리에 사용해야 한다. 복호화 API가 바이트를 내놓았다는 사실과 인증 성공을 구분한다.
03먼저 알아둘 용어와 구성요소
- 같은 키 아래에서 필요한 유일성 조건을 만족해야 하는 입력값.
- 암호화하지 않지만 인증 태그 계산에 포함되는 추가 데이터.
- 에서 암호문·와 길이를 인증하는 유한체 기반 계산.
- 수신자가 내용과 문맥의 일치를 확인하는 인증 출력.
- 암호화한 내용과 추가 데이터를 함께 인증하는 암호화 방식.
- Counter 블록의 암호화 출력으로 평문과 암호문을 변환하는 경로.
04예제로 따라가기
- CBC 조건: -CBC에 PKCS#7 패딩을 적용하면 블록 크기는 16바이트다. 평문 17바이트에는 15바이트를 덧붙여 32바이트를 만든다.
- 패딩 값: 추가하는 각 바이트 값은 15, 즉 0x0F다. 추가 길이와 각 바이트 값이 같다는 규칙으로 패딩을 해석한다.
- CBC 포장: 교육용 포맷이 IV 16바이트와 암호문 32바이트를 붙인다면 48바이트다. 이 계산에는 별도 MAC·헤더가 없다.
- 포장: 다른 교육용 포맷이 12바이트·암호문 17바이트·태그 16바이트를 붙이면 45바이트다. 은 이 평문에 블록 패딩을 붙이지 않는다.
- 비교 조건: 포맷·태그 길이·헤더 정책이 달라지면 총 길이도 달라진다. 45와 48이라는 예를 모든 프로토콜의 고정 오버헤드로 일반화하지 않는다.
05혼동하기 쉬운 점과 확인 기준
- 키· 문맥: 키 세대·방향· 구성·재시작 후 Counter 초기화를 확인한다. 같은 값 재사용을 피하는 설계는 수명보다 넓은 범위가 필요할 수 있다.
- 일치: 송수신자가 헤더·길이·문자 인코딩을 같은 바이트로 구성했는지 본다. 눈에 같은 문자열도 바이트가 다르면 태그가 다르다.
- 오류 응답: CBC의 패딩·MAC 오류가 외부 응답이나 시간으로 세밀하게 구분되지 않도록 검증 경로를 설계한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
NIST SP 800-38D: GCM 입력·출력과 처리 도해
7절의 암호화·복호화 도해에서 처리와 인증의 역할을 나누고 8절의 IV 조건을 연결한다.
- P·A·IV·C·T 입력과 출력의 대응
- 와 암호문이 인증 계산에 들어가는 경로
- 동일 키의 IV 재사용을 금지해야 하는 이유
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.