0Pricing
Cryptology Academy · 강의

Salsa20 및 ChaCha20 설계

ChaCha20의 쿼터 라운드와 모바일 하드웨어에서의 속도를 단계별로 살펴봅니다.

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

환영합니다

ChaCha20은 현대 시스템에서 주류로 사용되는 스트림 암호로, TLS 1.3, WireGuard, Signal 등 여러 시스템에서 사용됩니다. 이제 우아한 설계를 자세히 살펴보겠습니다.

ChaCha20의 기원

Daniel J. Bernstein은 2005년에 Salsa20을 설계한 뒤 2008년에 이를 개선하여 ChaCha20을 만들었습니다. 'Cha' 접두사는 8가지 추가 확산 개선을 의미합니다. 2015년 RFC 7539와 2018년 RFC 8439에서 표준화되었습니다.

ChaCha20 상태

ChaCha20은 32비트 워드로 구성된 4×4 행렬에서 작동합니다(총 512비트). - 워드 0~3: 상수('expa', 'nd 3', '2-by', 'te k') - 워드 4~11: 256비트 키(8개 워드) - 워드 12: 32비트 블록 카운터 - 워드 13~15: 96비트 논스

쿼터 라운드

ChaCha20의 핵심 연산인 (a,b,c,d)에 대한 쿼터 라운드는 다음과 같습니다. a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 더하기-회전-XOR(ARX) 방식입니다. S-박스가 필요하지 않아 모든 하드웨어에서 빠릅니다.

20라운드

ChaCha20은 20라운드를 적용합니다. 열 라운드와 대각선 라운드를 번갈아 수행하며, 각 라운드는 4개의 쿼터 라운드로 구성됩니다. 8라운드는 ChaCha8(빠름), 12라운드는 ChaCha12(균형 잡힘)입니다. ChaCha20이 안전한 기본 선택입니다.

키스트림 생성

1. 키 + 논스 + 카운터로 상태 초기화 2. 쿼터 라운드 20회 적용 3. 초기 상태를 회전된 상태에 더함(역연산 방지) 4. 64바이트 키스트림 블록 출력 5. 다음 블록을 위해 카운터 증가

ARX의 보안상 이점

ARX(Add, Rotate, XOR) 암호는 대부분의 CPU에서 자연스럽게 상수 시간으로 동작합니다. 테이블 조회를 사용하지 않으므로 캐시 타이밍 부채널이 발생하지 않습니다. 이는 안전한 구현에 매우 중요합니다.

ChaCha20 성능

AES-NI가 없을 때 ChaCha20은 AES-CBC보다 약 3배 빠릅니다. 휴대전화(ARM Cortex-A)에서는 ChaCha20이 더 빠른 선택입니다. 최신 x86에서 AES-NI를 사용하면 AES-GCM이 더 빠릅니다. TLS 1.3은 두 방식 모두 포함합니다.

Salsa20과 ChaCha20 비교

ChaCha20은 초기 라운드에서 확산을 개선하여 Salsa20보다 차분 암호 분석에 대한 저항성을 높였습니다. 상태 초기화 방식도 다릅니다. 둘 다 안전하지만, 현재 표준은 ChaCha20입니다.

Python에서의 ChaCha20

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: 확장 논스

ChaCha20은 96비트 논스를 사용합니다. XChaCha20은 HChaCha20 함수를 사용하여 논스를 192비트로 확장합니다. 더 큰 논스를 사용하면 충돌을 걱정하지 않고 무작위로 생성할 수 있습니다. libsodium은 XChaCha20-Poly1305를 사용합니다.

빠른 확인

ChaCha20의 ARX 설계는 왜 캐시 타이밍 부채널을 제거하나요?

복습

ChaCha20은 우아하고 안전합니다. 다음으로 TLS 1.3에서 ChaCha20-Poly1305 AEAD가 어떻게 사용되는지 살펴보겠습니다.

자주 묻는 질문

“Salsa20 및 ChaCha20 설계” 강의는 무료인가요?

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

“Salsa20 및 ChaCha20 설계”에서 뭘 배우나요?

ChaCha20의 쿼터 라운드와 모바일 하드웨어에서의 속도를 단계별로 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“Salsa20 및 ChaCha20 설계” 강의는 얼마나 걸리나요?

대부분의 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(으)로 돌아가기