ChaCha20-Poly1305
ChaCha20-Poly1305ChaCha20-Poly1305는 ChaCha20 스트림 암호와 Poly1305 메시지 인증 코드를 조합한 Authenticated Encryption with Additional Data(AED) 알고리즘입니다.IETF 프로토콜에서의 사용은 RFC 8439에 [1]표준화되어 있습니다.하드웨어 액셀러레이션을 사용하지 않는 고속 소프트웨어 퍼포먼스를 갖추고 있어 일반적으로 AES-GCM보다 고속입니다.[2]
역사
구조의 두 가지 구성 요소인 Poly1305와 ChaCha20은 모두 2005년과 2008년에 다니엘 번스타인에 [3][4]의해 독립적으로 설계되었다.
2013~2014년에는 오리지널 ChaCha20 알고리즘의 변형(32비트카운터와 96비트난스 사용)과 오리지널 Poly1305의 변형(2스트링 인증)이 IETF 드래프트에[5][6] 조합되어 TLS 및 DTLS에서 [7]사용되었으며 보안 및 성능상의 이유로 Google에 의해 새롭게 지원되는 [8]암호로 선택되었습니다.구글이 TLS를 채택한 직후 ChaCha20, Poly1305 및 결합된 AED 모드가 Open에 추가되었습니다.경유 SSHchacha20-poly1305@openssh.com
ChaCha20 알고리즘의 경우 원래[9][10] 64비트카운터와 64비트 난스를 유지합니다.
2015년에 AED 알고리즘은 RFC 7539[11] 및 RFC 7905로[12] 표준화되어 TLS 1.2 및 DTLS 1.2 및 RFC 7634에서[13] 사용되며 IPsec에서 사용됩니다.같은 해, 대체 암호 [14]스위트로서 Cloudflare에 통합되었습니다.
2018년 6월에 RFC 7539가 갱신되어 RFC 8439로 [15]대체되었습니다.
ChaCha20-Poly1305는 현재 [16]QUIC에서 사용할 수 있도록 표준화 중입니다.
묘사
RFC 8439에[1] 기재되어 있는 ChaCha20-Poly1305 알고리즘은 256비트키와 96비트난스를 입력으로 사용하여 플레인텍스트를 암호화합니다.암호문 확장은 128비트(태그 크기)입니다.ChaCha20-Poly1305 구조에서는 ChaCha20을 카운터 모드로 사용하여 평문과 XOR되는 키 스트림을 도출합니다.다음으로 암호문 및 관련 데이터는 처음에 2개의 문자열을 1개로 인코딩하는 배리언트 Poly1305를 사용하여 인증됩니다.
변종
XChaCha20-Poly1305: 확장 난스 배리언트
XChaCha20-Poly1305 구조는 ChaCha20이 아닌 XChaCha20을 사용하는 ChaCha20-Poly1305 구조의 확장 192비트난스 모델입니다난스를 랜덤으로 선택할 경우 XChaCha20-Poly1305 구성을 사용하면 원래 구성보다 보안이 향상됩니다.표준화를 위한 시도의 [17]초안은 2020년 7월에 만료되었다.
Salsa20-Poly1305 및 XSalsa20-Poly1305
Salsa20-Poly1305 및 XSalsa20-Poly1305는 ChaCha20 및 XChaCha20 대신 Salsa20 및 XSalsa20을 사용하는 ChaCha20-Poly1305 알고리즘의 변형입니다.NaCl과[18] Libsodium으로[19] 구현되지만 표준화되지는 않는다.ChaCha를 사용하는 변형은 [3]Salsa보다 라운드당 확산성이 뛰어나기 때문에 실제로 선호됩니다.
사용하다
ChaCha20-Poly1305는 IPsec,[13] SSH,[9] TLS 1.2, TLS 1.3,[12] QUIC,[16] WirelessGuard,[20] S/MIME 4.0,[21] OTRv4[22] 및 기타 여러 프로토콜에서 사용됩니다.특히 OpenSSL, OpenSSH 및 libsodium에 구현되어 있습니다.
성능
ChaCha20-Poly1305는 일반적으로 CPU에 AES-NI 명령어세트 [2]확장이 없는 시스템에서 보다 일반적인 AES-GCM 알고리즘보다 뛰어난 성능을 제공합니다.따라서 ChaCha20-Poly1305는 보안 수준이 비슷하고 AES-GCM보다 선호되는 경우가 있습니다.모바일 디바이스와 관련된 특정 사용 사례에서는 주로 ARM 기반 CPU를 사용합니다.
보안.
ChaCha20-Poly1305 구조는 단일 사용자 및 다중 사용자 설정에서 [23]표준 모델과 이상적인 순열 모델에서 안전성이 입증되었습니다.단, GCM과 마찬가지로 보안은 암호화된 모든 메시지에 대해 하나의 난스를 선택하는 것에 의존합니다.AES-GCM에 비해 ChaCha20-Poly1305의 실장은 타이밍 공격에 대한 취약성이 낮습니다.
「 」를 참조해 주세요.
외부 링크
- RFC 8439: IETF 프로토콜용 ChaCha20 및 Poly1305
- RFC 7634: Internet Key Exchange Protocol(IKE) 및 IPsec에서의 ChaCha20, Poly1305 및 이들의 사용
- RFC 7905: 트랜스포트 레이어 보안(TLS)을 위한 ChaCha20-Poly1305 암호 스위트
- RFC 8103: 암호 메시지 구문(CMS)에서의 ChaCha20-Poly1305 인증 암호화 사용
레퍼런스
- ^ a b Nir, Yoav; Langley, Adam (June 2018). ChaCha20 and Poly1305 for IETF Protocols. doi:10.17487/RFC8439. RFC 8439.
- ^ a b Nir, Yoav; Langley, Adam (June 2018). "Performance Measurements of ChaCha20". ChaCha20 and Poly1305 for IETF Protocols. sec. B. doi:10.17487/RFC8439. RFC 8439.
- ^ a b Bernstein, D. J. (January 2008). ChaCha, a variant of Salsa20 (PDF). The State of the Art of Stream Ciphers. Vol. 8. pp. 3–5.
- ^ Bernstein, Daniel J. (2005), "The Poly1305-AES Message-Authentication Code", Fast Software Encryption, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 32–49, doi:10.1007/11502760_3, ISBN 978-3-540-26541-2
- ^ Langley, Adam (September 2013). ChaCha20 and Poly1305 based Cipher Suites for TLS. I-D draft-agl-tls-chacha20poly1305-00.
- ^ Nir, Yoav (27 January 2014). ChaCha20 and Poly1305 for IETF protocols. I-D draft-nir-cfrg-chacha20-poly1305-00.
- ^ Langley, Adam; Chang, Wan-Teh; Mavrogiannopoulos, Nikos; Strombergson, Joachim; Josefsson, Simon (24 January 2014). The ChaCha Stream Cipher for Transport Layer Security. I-D draft-mavrogiannopoulos-chacha-tls-01.
- ^ Bursztein, Elie (24 April 2014). "Speeding up and strengthening HTTPS connections for Chrome on Android". Google Online Security Blog. Archived from the original on 2016-09-28. Retrieved 2021-12-27.
- ^ a b Miller, Damien. "Super User's BSD Cross Reference: /OpenBSD/usr.bin/ssh/PROTOCOL.chacha20poly1305". bxr.su. Archived from the original on 2013-12-13. Retrieved 2021-12-28.
- ^ Miller, Damien (29 November 2013). "ChaCha20 and Poly1305 in OpenSSH". Archived from the original on 2013-12-13. Retrieved 2021-12-28.
- ^ Nir, Yoav; Langley, Adam (May 2015). ChaCha20 and Poly1305 for IETF Protocols. doi:10.17487/RFC7539. RFC 7539.
- ^ a b Langley, Adam; Chang, Wan-Teh; Mavrogiannopoulos, Nikos; Strombergson, Joachim; Josefsson, Simon (June 2016). ChaCha20-Poly1305 Cipher Suites for Transport Layer Security (TLS). doi:10.17487/RFC7905. RFC 7905.
- ^ a b Nir, Yoav (August 2015). ChaCha20, Poly1305, and Their Use in the Internet Key Exchange Protocol (IKE) and IPsec. doi:10.17487/RFC7634. RFC 7634.
- ^ "Do the ChaCha: better mobile performance with cryptography". The Cloudflare Blog. 2015-02-23. Retrieved 2021-12-28.
- ^ Nir, Yoav; Langley, Adam (June 2018). ChaCha20 and Poly1305 for IETF Protocols. doi:10.17487/RFC8439. RFC 8439.
- ^ a b Thomson, Martin; Turner, Sean (May 2021). Using TLS to Secure QUIC. doi:10.17487/RFC9001. RFC 9001.
- ^ Arciszewski, Scott (10 January 2020). XChaCha: eXtended-nonce ChaCha and AEAD_XChaCha20_Poly1305. I-D draft-irtf-cfrg-xchacha.
- ^ "NaCl: Networking and Cryptography library - Secret-key authenticated encryption". Archived from the original on 2009-06-30.
- ^ "libsodium - Authenticated encryption". Archived from the original on 2020-08-04.
- ^ Donenfeld, Jason A. "Protocol & Cryptography - WireGuard". www.wireguard.com. Retrieved 2021-12-28.
- ^ Housley, Russ (February 2017). Using ChaCha20-Poly1305 Authenticated Encryption in the Cryptographic Message Syntax (CMS). doi:10.17487/RFC8103. RFC 8103.
- ^ OTRv4, OTRv4, 2021-12-25, retrieved 2021-12-28
- ^ Degabriele, Jean Paul; Govinden, Jérôme; Günther, Felix; Paterson, Kenneth G. (2021-11-12), "The Security of ChaCha20-Poly1305 in the Multi-User Setting", Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security, New York, NY, USA: Association for Computing Machinery, pp. 1981–2003, doi:10.1145/3460120.3484814, ISBN 978-1-4503-8454-4, retrieved 2021-12-27