0Pricing
Cryptology Academy · 강의

GCM과 인증 암호화

변조를 방지하도록 암호화에 인증 태그를 추가합니다.

GCM과 인증 암호화은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

AES-GCM은 인증된 암호화의 사실상 표준입니다. 한 번의 연산으로 기밀성 AND 무결성을 제공하므로 별도의 HMAC 단계 없이 변조를 방지합니다.

암호화만 사용할 때의 문제

암호화는 기밀성을 제공하지만 무결성은 제공하지 않습니다(NOT). AES-CBC 암호문을 가로챈 공격자는 키를 몰라도 비트를 반전시켜 복호화된 평문을 변경할 수 있습니다.

AEAD: 연관 데이터가 포함된 인증된 암호화

AEAD 방식은 암호문 + 인증 태그를 출력합니다. 태그는 암호문 AND 선택적으로 암호화하지 않은 연관 데이터(AAD)를 모두 인증합니다. 조금이라도 변경되면 태그가 무효화됩니다.

GCM 구조

AES-GCM은 다음을 사용합니다. 1. 암호화를 위한 AES-CTR 2. 인증을 위한 GHASH GHASH는 GF(2^128)에서의 곱셈을 사용하여 암호문 + AAD에 대한 다항식 MAC을 계산합니다.

GHASH 개요

GHASH(H, A, C) = 하위 키 H = AES(K, 0^128)을 사용하여 AAD + 암호문을 해시한 값입니다. GF(2^128)에서 다항식을 H에 대입해 계산합니다. 그 결과를 암호화된 카운터와 XOR하여 태그를 만듭니다.

AES-GCM 입력과 출력

입력: 128/192/256비트 키, 96비트 논스, 평문, 선택적 AAD 출력: 암호문(평문과 길이가 같음), 128비트 인증 태그 태그는 일반적으로 16바이트입니다. 12바이트 미만으로 자르는 것은 권장되지 않습니다.

GCM의 논스 요구 사항

GCM에서는 동일한 키로 암호화할 때마다 고유한 논스를 사용해야 합니다. 96비트 무작위 논스가 표준입니다. 2^32개의 메시지를 처리하면 충돌 확률이 1%를 초과하므로, 그 시점에는 키를 교체해야 합니다.

GCM 논스 재사용의 치명적 결과

GCM에서 (키, 논스)을 재사용하면 공격자가 GHASH 하위 키 H를 복구하여 유효한 태그가 포함된 어떤 암호문이든 위조할 수 있습니다. 이로 인해 기밀성과 무결성이 모두 완전히 무너집니다.

연관 데이터(AAD) 사용 사례

AAD는 인증은 원하지만 암호화하지는 않을 메타데이터입니다. - HTTP 헤더: 응답 라우팅 공격을 방지하도록 인증합니다 - 데이터베이스 레코드 ID: 암호문이 올바른 행에서 복호화되도록 보장합니다 - 프로토콜 버전: 다운그레이드 공격을 방지합니다

AES-GCM Python 전체 예제

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(256) nonce = os.urandom(12) aad = b'user_id=12345' aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b'secret', aad) pt = aesgcm.decrypt(nonce, ct, aad) # raises if tampered

대안: ChaCha20-Poly1305

ChaCha20-Poly1305는 또 하나의 주요 AEAD 방식입니다. AES-NI를 지원하지 않는 장치(ARM/모바일)에서 TLS 1.3에 사용됩니다. AES-GCM과 비슷한 보안성을 제공하면서 하드웨어 가속이 없는 소프트웨어 환경에서는 더 빠릅니다.

빠른 확인

AES-GCM의 인증 태그는 무엇을 방어합니까?

복습

AES-GCM은 인증된 암호화를 위한 올바른 기본 선택입니다. 다음에는 스트림 암호를 살펴보며, 깨진 RC4부터 현대적인 ChaCha20까지 학습하겠습니다.

자주 묻는 질문

“GCM과 인증 암호화” 강의는 무료인가요?

네 — “GCM과 인증 암호화” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“GCM과 인증 암호화”에서 뭘 배우나요?

변조를 방지하도록 암호화에 인증 태그를 추가합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“GCM과 인증 암호화” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 블록 암호의 기초와 패딩
  2. ECB와 CBC: 패턴 및 IV
  3. CTR 모드와 스트림 암호 동작
  4. GCM과 인증 암호화
← Cryptology Academy(으)로 돌아가기