0Pricing
Cryptology Academy · 강의

TLS 1.3의 ChaCha20-Poly1305 AEAD

최신 TLS에서 ChaCha20이 AEAD 암호로 사용되는 모습을 확인합니다.

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

환영합니다

ChaCha20-Poly1305는 ChaCha20 스트림 암호와 Poly1305 MAC을 결합하여 TLS 1.3, WireGuard 및 모바일 애플리케이션에서 사용되는 안전한 AEAD 암호 스위트를 만듭니다.

Poly1305 MAC 개요

Poly1305는 Bernstein이 설계한 일회용 MAC입니다. 소수 2^130-5를 법으로 하는 다항식 평가를 사용하여 메시지를 인증합니다. 일회용이라는 것은 사용할 때마다 새로운 32바이트 키가 필요하다는 뜻입니다.

Poly1305 보안성

Poly1305는 키를 절대 재사용하지 않으면 128비트 보안성을 제공합니다. MAC 키는 ChaCha20 키 스트림에서 각 메시지마다 새로 파생됩니다. 이 조합은 증명 가능한 보안성을 갖습니다.

ChaCha20-Poly1305 구성

1. ChaCha20 블록 0에서 64바이트 키 스트림을 생성합니다 2. 처음 32바이트를 Poly1305 키로 사용합니다 3. 나머지 32바이트는 버립니다 4. ChaCha20 블록 1, 2, 3, ...으로 평문을 암호화합니다 5. AAD + 암호문에 대해 Poly1305 MAC을 계산합니다

RFC 8439 구조

출력 형식: 암호문 || 태그(16바이트) MAC 입력: AAD || pad1 || 암호문 || pad2 || len(AAD) || len(암호문) 패딩: 16바이트 경계에 맞도록 0으로 채웁니다. 길이는 리틀 엔디언 64비트 정수로 인코딩합니다.

TLS 1.3 암호 스위트

TLS 1.3의 필수 암호 스위트: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 AES 하드웨어 가속이 없는 클라이언트에서는 CHACHA20_POLY1305를 선호합니다.

WireGuard는 ChaCha20-Poly1305를 사용합니다

WireGuard는 모든 터널 암호화에 ChaCha20Poly1305만 사용합니다. 암호 협상은 없습니다. 충분히 분석된 하나의 알고리즘만 사용합니다. 이러한 단순성은 공격 표면을 크게 줄입니다.

libsodium의 시크릿박스

libsodium의 crypto_secretbox_easy()는 XSalsa20-Poly1305(확장 논스 변형)를 사용합니다: ciphertext = crypto_secretbox_easy(message, nonce, key) 고수준 API이므로 매개변수를 선택하지 않아도 올바르게 작동합니다.

모바일 환경에서의 성능

Android와 iOS 기기에는 AES-NI가 없는 경우가 많습니다. Google의 2014년 분석에 따르면 ARM에서 ChaCha20-Poly1305가 AES-GCM보다 3배 빨랐습니다. 이것이 Google이 Android와 Chrome에서 ChaCha20-Poly1305를 필수로 지정한 이유입니다.

Python에서 구현하기

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) aad = b'header_data' cipher = ChaCha20Poly1305(key) ct = cipher.encrypt(nonce, b'plaintext', aad) pt = cipher.decrypt(nonce, ct, aad)

비교: AES-GCM과 ChaCha20-Poly1305

AES-GCM: AES-NI가 있으면 더 빠르지만, 96비트 논스를 사용하며 논스를 재사용하면 GCM 태그를 위조할 수 있습니다. ChaCha20-Poly1305: 하드웨어 지원이 없을 때 더 빠르고, 96비트 논스를 사용하며, Poly1305 키가 메시지마다 새로 생성됩니다. 둘 다 매우 우수합니다. 서버에서는 AES-GCM을, 모바일 환경에서는 ChaCha20-Poly1305를 사용하세요.

빠른 확인

ChaCha20-Poly1305에서 Poly1305 키는 어떻게 생성하나요?

복습

ChaCha20-Poly1305는 모바일 환경에 최적화된 AEAD 선택지입니다. 다음으로 비보안 채널을 통해 두 당사자가 공유 비밀을 설정하는 방법인 디피-헬먼 키 교환을 살펴보겠습니다.

자주 묻는 질문

“TLS 1.3의 ChaCha20-Poly1305 AEAD” 강의는 무료인가요?

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

“TLS 1.3의 ChaCha20-Poly1305 AEAD”에서 뭘 배우나요?

최신 TLS에서 ChaCha20이 AEAD 암호로 사용되는 모습을 확인합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“TLS 1.3의 ChaCha20-Poly1305 AEAD” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

  1. 스트림 암호 개념과 PRNG
  2. RC4: 설계, 취약점 및 WEP 공격
  3. Salsa20 및 ChaCha20 설계
  4. TLS 1.3의 ChaCha20-Poly1305 AEAD
← Cryptology Academy(으)로 돌아가기