프로덕션 시스템에 사용할 AEAD 선택
위협 모델과 성능 요구 사항을 바탕으로 적합한 AEAD 방식을 선택하는 의사 결정 체계를 적용합니다.
프로덕션 시스템에 사용할 AEAD 선택은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
AES-GCM: 기본 선택
AES-GCM은 대부분의 실서비스 시스템에 적합한 기본 AEAD입니다. 거의 모든 최신 x86 및 ARM64 프로세서에서 AES-NI를 통해 하드웨어 가속을 지원하고, TLS 스택과 암호 라이브러리 전반에서 널리 지원되며, 광범위한 암호 분석과 실제 배포 경험의 혜택을 누리고 있습니다.
AES-GCM 논스 제한
AES-GCM은 96비트 논스를 사용합니다. 무작위로 생성한 논스를 사용하면 동일한 키 아래에서 약 2^32개의 메시지를 처리한 후 생일 경계에 도달하며, 이 시점부터 논스 충돌 확률을 무시하기 어려워집니다. 대량의 데이터를 처리하는 시스템에서는 카운터를 통한 논스 관리 또는 2^32개의 메시지 처리 후 키 교체가 필수입니다.
ChaCha20-Poly1305: AES-NI가 없을 때
AES-NI를 사용할 수 없거나 논스 생성의 신뢰성이 낮을 수 있을 때는 ChaCha20-Poly1305를 선택해야 합니다. 소프트웨어에서 빠르고, 설계상 상수 시간 방식이므로 타이밍 부채널에 강하며, AES 하드웨어를 지원하지 않는 환경에서 TLS 1.3이 요구하는 필수 암호 스위트입니다.
논스 안전성을 위한 AES-GCM-SIV
논스를 재사용할 수 있거나 상태 비저장 서비스나 키 래핑처럼 논스를 결정적으로 생성해야 할 때는 AES-GCM-SIV(RFC 8452)를 선택해야 합니다. 표준 AES-GCM보다 성능 비용이 약간 발생하지만 논스 오용 방지 기능을 제공합니다.
최대 처리량을 위한 AEGIS
모든 배포 대상에서 AES-NI를 사용할 수 있음이 보장되고 암호화 처리량을 극대화해야 할 때는 AEGIS-128L을 선택해야 합니다. 고대역폭 네트워크 장비, VPN 집선기, 저장 장치 암호화 시스템은 AEGIS가 AES-GCM보다 의미 있는 성능 향상을 제공할 수 있는 대표적인 대상입니다.
키 크기 선택: 128비트와 256비트
AES-128은 128비트 보안을 제공하며, 현재와 예상 가능한 모든 고전 컴퓨팅 위협에 충분한 것으로 간주됩니다. AES-256은 미래의 기술 발전에 대비해 추가적인 여유를 제공하며, 일부 규정 준수 프레임워크에서는 이를 요구합니다(예: NSA Suite B에 따른 TOP SECRET 등급). 대부분의 애플리케이션에서는 AES-128이면 충분하고 속도도 약간 더 빠릅니다.
논스 크기 고려 사항
AES-GCM은 96비트 논스를 사용하는 반면, AES-GCM-SIV도 96비트 논스를 사용합니다. XSalsa20(libsodium의 secretbox에서 사용)은 192비트 논스를 사용하므로 동일한 키 아래에서 훨씬 더 많은 메시지에 대해 무작위 논스 생성을 안전하게 수행할 수 있습니다. 논스가 클수록 대량의 데이터를 처리하는 시스템에서 실수로 재사용할 위험이 줄어듭니다.
권장 라이브러리
기본 암호 구성 요소를 직접 구현하지 말고 검증된 AEAD 라이브러리를 사용하십시오. libsodium은 간단한 AEAD API(crypto_aead_aes256gcm_encrypt, crypto_aead_chacha20poly1305_ietf_encrypt)를 제공합니다. Google Tink는 키 교체와 버전 관리를 포함해 AEAD 기본 구성 요소를 제공합니다. 각 언어의 기본 TLS 라이브러리는 전송 보안을 위해 AEAD 처리를 자동으로 수행합니다.
AES-CBC에서 마이그레이션하기
별도의 HMAC-SHA256을 EtM 순서로 사용하는 AES-CBC는 사용할 수 있지만 구형 방식입니다. AES-GCM으로 마이그레이션하면 두 개의 기본 암호 구성 요소를 하나로 대체하여 구현이 단순해지고, 잘못된 구성의 위험도 없어집니다. CBC-HMAC으로 암호화된 저장 데이터는 예정된 키 교체 중에 AES-GCM으로 다시 암호화해야 합니다.
AEAD 구현 테스트
AEAD 구현은 NIST(AES-GCM)와 RFC 8439(ChaCha20-Poly1305)의 공식 테스트 벡터를 사용하여 테스트해야 합니다. 인증 태그 검증이 실패하면 복호화가 부분 평문을 반환하는 대신 오류를 반환하는지 항상 테스트하십시오. 잘못된 오류 처리는 흔히 발생하는 구현 결함입니다.
결정 흐름도
AES-NI가 있고 논스가 고유할 때는 AES-GCM을 선택하십시오. AES-NI가 없거나 논스의 신뢰성이 낮을 때는 ChaCha20-Poly1305를 선택하십시오. 논스 재사용이 우려될 때는 AES-GCM-SIV를 선택하십시오. AES-NI가 보장되고 최대 처리량이 우선일 때는 AEGIS를 선택하십시오. 새로운 시스템에는 AEAD가 아닌 모드를 절대 선택하지 마십시오.
AEAD 선택 점검
상태 비저장 마이크로서비스가 여러 복제본에 배포되어 데이터를 암호화해야 하지만 공유 논스 카운터를 조정할 수 없습니다. 어떤 AEAD 모드가 가장 적합할까요?
수업 요약: 적합한 AEAD 선택
AES-GCM이 기본 선택입니다. ChaCha20-Poly1305는 AES-NI가 없는 환경을 지원합니다. AES-GCM-SIV는 논스를 안전하게 관리하기 어려운 환경을 처리합니다. AEGIS는 AES-NI가 보장될 때 처리량을 극대화합니다. 기본 구성 요소를 직접 조합하지 말고 libsodium이나 Tink와 같은 라이브러리를 사용하십시오. 항상 공식 테스트 벡터를 사용하여 테스트하고 인증 실패가 올바르게 처리되는지 확인하십시오.
자주 묻는 질문
“프로덕션 시스템에 사용할 AEAD 선택” 강의는 무료인가요?
네 — “프로덕션 시스템에 사용할 AEAD 선택” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“프로덕션 시스템에 사용할 AEAD 선택”에서 뭘 배우나요?
위협 모델과 성능 요구 사항을 바탕으로 적합한 AEAD 방식을 선택하는 의사 결정 체계를 적용합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“프로덕션 시스템에 사용할 AEAD 선택” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 암호화 후 MAC이 MAC 후 암호화보다 뛰어난 이유
- SIV 모드: 논스 오용에 강한 AEAD
- AEGIS: 고속 인증 암호화
- 프로덕션 시스템에 사용할 AEAD 선택