개념 사전 · 개념

AEAD와 AES-GCM

GCM · Galois Counter Mode · AES-GCM

는 내용을 암호화하면서 암호문과 추가 인증 데이터의 변경도 검증하는 방식이다. 은 Counter 기반 암호화와 인증 연산을 결합하며 동일 키의 재사용을 피해야 한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 평문 내용의 기밀성과 데이터 무결성을 함께 제공한다.
  • 암호화하지 않는 헤더도 로 인증에 연결한다.
  • 태그 실패 때 평문을 사용하지 않는 처리 경계를 만든다.

02어떤 순서로 동작하나

  1. 경로

    은 Counter 블록을 암호화해 만든 키스트림과 평문을 XOR하여 암호문을 만든다. 같은 키에서 가 재사용되면 핵심 가정이 깨진다.

  2. 경로

    인증에는 Additional Authenticated Data와 암호문·길이 정보가 들어간다. 는 암호화하지 않아도 변조 검증에 포함된다.

  3. 인증 키

    의 H는 블록암호로 0 블록을 암호화해 얻는다. 인증 태그는 결과와 초기 Counter 관련 암호화 값을 결합해 만든다.

  4. 96비트 IV

    96비트 IV의 경우 초기 Counter J0는 IV 뒤에 0^31과 1을 붙이는 형태다. 다른 IV 길이는 별도의 도출 과정을 거친다.

  5. 검증 순서

    수신자는 태그 검증이 성공한 평문만 후속 처리에 사용해야 한다. 복호화 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상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

READ · OBSERVE · CONNECT

함께 보는 학습 자료

아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.

도해

NIST SP 800-38D: GCM 입력·출력과 처리 도해

7절의 암호화·복호화 도해에서 처리와 인증의 역할을 나누고 8절의 IV 조건을 연결한다.

읽으면서 확인할 것
  • P·A·IV·C·T 입력과 출력의 대응
  • 와 암호문이 인증 계산에 들어가는 경로
  • 동일 키의 IV 재사용을 금지해야 하는 이유

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.