맨위로가기 타임라인 바로가기

Salsa20

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

Salsa20은 비트 단위 연산, 32비트 덧셈, 그리고 16개의 32비트 워드로 구성된 내부 상태를 사용하는 스트림 암호이다. add-rotate-xor 연산만을 사용하여 타이밍 공격의 가능성을 피할 수 있다. Salsa20은 4x4 행렬로 표현되는 16개의 32비트 워드로 구성된 내부 상태를 가지며, 8개의 키 워드, 2개의 스트림 위치 워드, 2개의 논스 워드, 4개의 고정 워드로 초기화된다. Salsa20의 핵심 연산은 quarter-round 함수를 반복 적용하는 것이며, 20라운드의 혼합 후 원래 배열과 더해져 64바이트 키 스트림 블록을 생성한다. Salsa20/8 및 Salsa20/12는 축소 라운드 변형이다. Salsa20의 변형인 ChaCha는 라운드당 확산을 증가시킨 암호로, Salsa20과 유사한 초기 상태를 가지지만, 쿼터 라운드 함수가 다르다. ChaCha는 BLAKE 해시 함수의 기반이 되었으며, IETF 표준에서는 96비트 논스와 32비트 블록 카운터를 사용하도록 수정되었다. XSalsa20은 더 긴 논스를 필요로 하는 애플리케이션에 적합한 Salsa20의 변형이다. Salsa20/12는 eSTREAM 프로젝트에서 3단계 설계로 선정되었으며, ChaCha20은 구글, OpenSSH, FreeBSD, OpenBSD, NetBSD, 리눅스 커널 등에서 채택되었다. ChaCha20-Poly1305는 WireGuard VPN 시스템에서 사용되며, IKE, IPsec, TLS에서도 표준화되었다.

더 읽어볼만한 페이지

  • 스트림 암호 - 비즈네르 암호
    비즈네르 암호는 키워드를 반복 사용하여 카이사르 암호를 확장한 다중알파벳 치환 암호로, 한때 해독 불가능하다고 여겨졌으나 현재는 해독되었으며 현대 암호학에 영향을 주었다.
  • 스트림 암호 - 원 타임 패드
    원 타임 패드는 1917년 개발되어 단 한 번만 사용되는 키를 통해 암호화를 제공하며, 이론적으로 완벽한 보안을 제공하지만 키 관리의 어려움과 키 재사용 시 해독 위험, 양자 암호 통신과의 연관성 연구 등의 특징을 가진 암호화 방식이다.
  • 인터넷 표준 - DNSSEC
    DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다.
  • 인터넷 표준 - IPv6
    IPv6는 IPv4 주소 고갈 문제를 해결하고자 개발된 차세대 인터넷 프로토콜로, 128비트 주소 체계를 통해 사실상 무한대에 가까운 IP 주소를 제공하며, 주소 자동 설정, 패킷 처리 효율성 향상, 보안 기능 강화 등의 특징을 갖는다.
Salsa20
일반 정보
유형스트림 암호
설계자다니엘 J. 번스타인
발표일2007년 (설계: 2005년)
기반없음
파생ChaCha
관련Rumba20
인증eSTREAM 포트폴리오
키 크기128 또는 256 비트
상태 크기512 비트
구조ARX
라운드 수20
속도Intel Core 2 Duo에서 3.91 cpb (cycles per byte)
암호 해독2008년 암호 해독은 231 키스트림 쌍을 사용하여 2251 연산으로 20라운드 중 8라운드를 깨고 256비트 비밀 키를 복구함.
Salsa 라운드 함수
Salsa의 쿼터 라운드 함수. 4개의 병렬 복사본이 1라운드를 구성함.

2. 구조

Salsa20은 비트 단위 XOR 연산(⊕), 32비트 덧셈 (mod 232, ⊞), 고정 거리 회전 연산(<<<)을 사용하는 ARX (add-rotate-xor) 구조를 기반으로 한다.

Salsa20의 내부 상태는 16개의 32비트 워드로 구성되며, 4x4 행렬로 표현된다. 초기 상태는 8 워드의 키, 2 워드의 스트림 위치, 2 워드의 nonce, 그리고 4개의 고정 워드로 구성된다. 고정 워드는 "expand 32-byte k"를 ASCII 코드로 표현한 것이며, NAMS의 한 예이다.

Salsa20의 핵심 연산은 4개의 워드 입력을 받아 4개의 워드 출력을 생성하는 1/4 라운드 함수 `QR(a, b, c, d)`이다.

```

b ⊕= (a ⊞ d) <<< 7;

c ⊕= (b ⊞ a) <<< 9;

d ⊕= (c ⊞ b) <<< 13;

a ⊕= (d ⊞ c) <<< 18;

```

홀수 라운드에서는 `QR(a, b, c, d)`가 4x4 행렬의 4개 열에 각각 적용되며, 짝수 라운드에서는 4개 행에 각각 적용된다. 연속된 두 라운드(행 라운드와 열 라운드)를 double-round라고 한다. Salsa20은 입력에 대해 20 라운드의 혼합 연산을 수행하며, 마지막에 초기 상태와 혼합된 배열을 더하여 64바이트 키 스트림 블록을 얻는다. 이 과정은 혼합 라운드 자체가 가역적이기 때문에 보안에 중요하다.[6] 8라운드 및 12라운드를 사용하는 축소 라운드 변형인 Salsa20/8 및 Salsa20/12도 존재한다.[7]

C/C++ 구현 예시는 다음과 같다.

```c

#include

#define ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))

#define QR(a, b, c, d)( \

b ^= ROTL(a + d, 7), \

c ^= ROTL(b + a, 9), \

d ^= ROTL(c + b,13), \

a ^= ROTL(d + c,18))

#define ROUNDS 20

void salsa20_block(uint32_t out[16], uint32_t const in[16])

{

int i;

uint32_t x[16];

for (i = 0; i < 16; ++i)

x[i] = in[i];

// 10 loops × 2 rounds/loop = 20 rounds

for (i = 0; i < ROUNDS; i += 2) {

// Odd round

QR(x[ 0], x[ 4], x[ 8], x[12]); // 열 1

QR(x[ 5], x[ 9], x[13], x[ 1]); // 열 2

QR(x[10], x[14], x[ 2], x[ 6]); // 열 3

QR(x[15], x[ 3], x[ 7], x[11]); // 열 4

// Even round

QR(x[ 0], x[ 1], x[ 2], x[ 3]); // 행 1

QR(x[ 5], x[ 6], x[ 7], x[ 4]); // 행 2

QR(x[10], x[11], x[ 8], x[ 9]); // 행 3

QR(x[15], x[12], x[13], x[14]); // 행 4

}

for (i = 0; i < 16; ++i)

out[i] = x[i] + in[i];

}

2. 1. Salsa20

Salsa20은 비트 단위 덧셈 ⊕ (배타적 논리합), 32비트 덧셈 mod 232 ⊞, 그리고 16개의 32비트 워드로 구성된 내부 상태에 대한 고정 거리 회전 연산 <<<을 사용한다. add-rotate-xor 연산만 사용하면 소프트웨어 구현에서 타이밍 공격의 가능성을 피할 수 있다. 내부 상태는 4×4 행렬로 배열된 16개의 32비트 워드로 구성된다.

0123
4567
891011
12131415



초기 상태는 8개의 키 워드, 2개의 스트림 위치 워드, 2개의 nonce 워드(본질적으로 추가적인 스트림 위치 비트), 그리고 4개의 고정 워드로 구성된다.

Salsa20의 초기 상태
논스논스
style="background:#ff7474"|style="background:#ff7474"|



고정 워드는 ASCII로 "expand 32-byte k"를 나타낸다(즉, 4개의 워드는 "expa", "nd 3", "2-by", "te k"이다). 이것은 nothing-up-my-sleeve number의 예이다. Salsa20의 핵심 연산은 4개의 워드 입력을 받아 4개의 워드 출력을 생성하는 quarter-round 함수 `QR(a, b, c, d)`이다.

```

b ⊕= (a ⊞ d) <<< 7;

c ⊕= (b ⊞ a) <<< 9;

d ⊕= (c ⊞ b) <<< 13;

a ⊕= (d ⊞ c) <<< 18;

```

홀수 라운드는 4×4 행렬의 4개 열 각각에 `QR(a, b, c, d)`를 적용하고, 짝수 라운드는 각 4개 행에 적용한다. 두 개의 연속적인 라운드(열 라운드와 행 라운드)를 함께 이중 라운드라고 한다.

```c

// 홀수 라운드

QR( 0, 4, 8, 12) // 열 1

QR( 5, 9, 13, 1) // 열 2

QR(10, 14, 2, 6) // 열 3

QR(15, 3, 7, 11) // 열 4

// 짝수 라운드

QR( 0, 1, 2, 3) // 행 1

QR( 5, 6, 7, 4) // 행 2

QR(10, 11, 8, 9) // 행 3

QR(15, 12, 13, 14) // 행 4

```

C/C++로 구현한 예는 다음과 같다.

```c

#include

#define ROTL(a,b) (((a) << (b)) | ((a) >> (32 - (b))))

#define QR(a, b, c, d)( \

b ^= ROTL(a + d, 7), \

c ^= ROTL(b + a, 9), \

d ^= ROTL(c + b,13), \

a ^= ROTL(d + c,18))

#define ROUNDS 20

void salsa20_block(uint32_t out[16], uint32_t const in[16])

{

int i;

uint32_t x[16];

for (i = 0; i < 16; ++i)

x[i] = in[i];

// 10 loops × 2 rounds/loop = 20 rounds

for (i = 0; i < ROUNDS; i += 2) {

// Odd round

QR(x[ 0], x[ 4], x[ 8], x[12]); // 열 1

QR(x[ 5], x[ 9], x[13], x[ 1]); // 열 2

QR(x[10], x[14], x[ 2], x[ 6]); // 열 3

QR(x[15], x[ 3], x[ 7], x[11]); // 열 4

// Even round

QR(x[ 0], x[ 1], x[ 2], x[ 3]); // 행 1

QR(x[ 5], x[ 6], x[ 7], x[ 4]); // 행 2

QR(x[10], x[11], x[ 8], x[ 9]); // 행 3

QR(x[15], x[12], x[13], x[14]); // 행 4

}

for (i = 0; i < 16; ++i)

out[i] = x[i] + in[i];

}

```

마지막 줄에서 혼합된 배열은 단어별로 원래 배열에 더해져 64바이트 키 스트림 블록을 얻는다. 이는 혼합 라운드 자체가 ''가역적''이기 때문에 중요하다. 다시 말해, 역연산을 적용하면 키를 포함하여 원래의 4×4 행렬이 생성된다. 혼합된 배열을 원래 배열에 더하면 입력을 복구하는 것이 불가능해진다. (이와 동일한 기술은 MD4부터 SHA-2까지 해시 함수에서 널리 사용된다.)

Salsa20은 입력에 대해 20 라운드의 혼합을 수행한다.[6] 하지만, 8라운드 및 12라운드를 각각 사용하는 축소 라운드 변형인 Salsa20/8 및 Salsa20/12도 도입되었다. 이러한 변형은 원래의 Salsa20을 대체하기 위한 것이 아니라 보완하기 위해 도입되었으며, Salsa20보다 eSTREAM 벤치마크에서 더 나은 성능을 보이지만[7], 보안 수준은 그에 따라 낮다.

2. 2. ChaCha

ChaCha는 2008년에 다니엘 J. 번스타인이 발표한 Salsa20의 변종으로, 라운드당 확산을 증가시켜 성능 향상을 목표로 한다.[20] Salsa20과 유사하게 128비트 상수, 256비트 키, 64비트 카운터, 64비트 논스를 사용하지만, 초기 상태에서 일부 단어 배열을 변경한다.[20]

ChaCha의 초기 상태
카운터카운터논스논스



상수는 Salsa20과 동일하게 "expand 32-byte k"이다. ChaCha는 Salsa20의 쿼터 라운드 함수 `QR(a, b, c, d)`를 다음과 같이 대체한다.[21]

:a += b; d ^= a; d <<<= 16;

:c += d; b ^= c; b <<<= 12;

:a += b; d ^= a; d <<<= 8;

:c += d; b ^= c; b <<<= 7;

Salsa20의 쿼터 라운드는 각 단어를 한 번만 업데이트하지만, ChaCha 쿼터 라운드는 각 단어를 두 번 업데이트하여 변경 사항을 더 빠르게 확산시킨다. 1비트 입력을 변경했을 때 Salsa20 쿼터 라운드는 평균 8비트 출력을 변경하는 반면, ChaCha는 평균 12.5비트 출력을 변경한다.[62]

ChaCha 쿼터 라운드는 Salsa20 쿼터 라운드와 동일한 수의 덧셈, XOR, 비트 회전을 가지지만, 두 회전이 8의 배수이기 때문에 x86을 포함한 일부 아키텍처에서 최적화가 가능하다.[63] 또한, 입력 형식이 Salsa20에서 발견된 효율적인 SSE 구현 최적화를 지원하도록 재배열되었다.[64]

Salsa20은 열과 행을 교대로 회전하지만, ChaCha는 열과 대각선을 따라 회전한다.[64]

0123
4567
891011
12131415



ChaCha의 더블 라운드는 다음과 같다.

:// 홀수 라운드

:QR(0, 4, 8, 12) // 열 1

:QR(1, 5, 9, 13) // 열 2

:QR(2, 6, 10, 14) // 열 3

:QR(3, 7, 11, 15) // 열 4

:// 짝수 라운드

:QR(0, 5, 10, 15) // 대각선 1 (주 대각선)

:QR(1, 6, 11, 12) // 대각선 2

:QR(2, 7, 8, 13) // 대각선 3

:QR(3, 4, 9, 14) // 대각선 4

ChaCha20은 더블 라운드를 10번 반복한다.[22]

IETF 표준 (, )에서는 96비트 논스와 32비트 블록 카운터를 사용하도록 수정되었다.[47] 블록 카운터가 감소했기 때문에 IETF 변형으로 안전하게 암호화할 수 있는 최대 메시지 길이는 232개의 64바이트 블록(256 GiB)이다. 이 길이가 충분하지 않은 경우, 64비트 논스를 사용하는 원래 알고리즘을 사용할 것을 제안한다.

ChaCha20의 초기 상태()
KeyKeyKeyKey
KeyKeyKeyKey
CounterNonceNonceNonce



ChaCha는 BLAKE 해시 함수의 기반이 되었다.

2. 2. 1. XChaCha

2008년, 버언스타인(Bernstein)은 192비트 논스를 사용하는 Salsa20의 변형인 XSalsa20을 제안했다.[8][9][10] XSalsa20은 Salsa20이 안전하다면 증명 가능하게 안전하지만, 더 긴 논스가 필요한 애플리케이션에 더 적합하다.

버언스타인이 발표하지는 않았지만, XSalsa20의 보안 증명은 유사한 "XChaCha" 암호로 간단하게 확장된다. XChaCha는 키와 논스의 처음 128비트(입력 단어 12~15)를 사용하여 ChaCha 입력 블록을 형성한 다음 블록 연산을 수행한다(마지막 덧셈은 생략). 그런 다음 출력 단어 0–3과 12–15(입력의 비 키 단어에 해당하는 단어)는 일반 ChaCha에 사용되는 키를 형성한다(논스의 마지막 64비트와 블록 카운터의 64비트 사용).

3. 암호 해독

2015년을 기준으로, Salsa20/12 또는 Salsa20/20에 대한 공개된 공격은 없다. 알려진 최고의 공격[2]은 12 또는 20 라운드 중 8 라운드를 파괴한다.

2005년, 폴 크롤리(Paul Crowley)는 추정 시간 복잡도가 2165인 Salsa20/5에 대한 공격을 보고했으며, 번스타인(Bernstein)의 "가장 흥미로운 Salsa20 암호 해독"에 대한 1000달러 상을 수상했다.[15] 이 공격과 모든 후속 공격은 절단 차분 암호 분석에 기반한다. 2006년, 피셔(Fischer), 마이어(Meier), 베르뱅(Berbain), 비아세(Biasse), 로브쇼(Robshaw)는 추정 시간 복잡도가 2177인 Salsa20/6에 대한 공격과, 추정 시간 복잡도가 2217인 Salsa20/7에 대한 관련 키 공격을 보고했다.[16]

2007년, 츠누(Tsunoo) 외 연구진은 2255 연산으로 256비트 비밀 키를 복구하기 위해 20라운드 중 8라운드를 파괴하는 Salsa20의 암호 해독을 발표했으며, 211.37 개의 키 스트림 쌍을 사용했다.[17] 그러나 이 공격은 무차별 대입 공격과 경쟁력이 없는 것으로 보인다.

2008년, 오마손(Aumasson), 피셔(Fischer), 카자에이(Khazaei), 마이어(Meier), 레히베르거(Rechberger)는 시간 복잡도가 2151인 Salsa20/7에 대한 암호 분석 공격을 보고했으며, 추정 시간 복잡도가 2251인 Salsa20/8에 대한 공격을 보고했다. 이 공격은 절단 차분의 확률적 탐지를 위해 확률적 중립 키 비트라는 새로운 개념을 사용한다. 이 공격은 128비트 키로 Salsa20/7을 파괴하는 데 적용할 수 있다.[2]

2012년, 오마손 외 연구진의 공격은 시(Shi) 외 연구진에 의해 Salsa20/7(128비트 키)의 경우 시간 복잡도 2109로, Salsa20/8(256비트 키)의 경우 2250으로 개선되었다.[18]

2013년, 무하(Mouha)와 프레넬(Preneel)은 Salsa20의 15라운드가 차분 암호 분석에 대해 128비트 안전하다는 증명을 발표했다.[19] 구체적으로, 2−130보다 높은 확률을 가진 차분 특성이 없으므로 차분 암호 분석은 128비트 키 소진보다 더 어렵다.

2008년에 번스타인은 동일하거나 약간 더 나은 성능을 달성하면서 라운드당 확산을 증가시키는 것을 목표로 밀접하게 관련된 ChaCha 암호 계열을 발표했다. Aumassonet 등의 논문은 또한 ChaCha를 공격하여 한 라운드 더 적은 수(복잡도 2139의 256비트 ChaCha6, 복잡도 2248의 ChaCha7, 2107 이내의 128비트 ChaCha6)를 달성했지만 공격이 128비트 ChaCha7을 깨뜨리지 못했다고 주장한다.

4. 채택 및 표준화

Salsa20/12는 eSTREAM 프로젝트에서 프로파일 1 (소프트웨어)의 3단계 설계로 선정되었으며, 2단계 종료 시점에 프로파일 1 알고리즘 중 가장 높은 가중 투표 점수를 받았다.[11] Salsa20은 이전에 eSTREAM 프로젝트에서 프로파일 1(소프트웨어)의 2단계 집중 설계 및 프로파일 2(하드웨어)의 2단계 설계로 선정되었지만,[12] eSTREAM에서 자원 제약이 매우 심한 하드웨어 환경에 적합한 후보가 아닐 수 있다고 판단하여 프로파일 2의 3단계로 진출하지 못했다.[13]

eSTREAM 위원회는 "매우 우수한 성능과 충분한 보안 여유를 결합"하기 위해 12라운드 변형인 Salsa20/12의 사용을 권장한다.[14]

구글은 버스타인의 Poly1305 메시지 인증 코드와 함께 SPDY에서 ChaCha20을 선택했는데, 이는 TLSTCP를 통해 대체하기 위한 것이었다.[27] 이 과정에서 두 알고리즘을 결합한 새로운 인증된 암호화 구조를 제안했는데, 이를 ChaCha20-Poly1305라고 한다. ChaCha20과 Poly1305는 현재 SPDY를 대체하고 HTTP/3에서 사용되는 QUIC 프로토콜에서 사용된다.[28][29]

구글이 TLS를 채택한 직후, ChaCha20 및 Poly1305 알고리즘은 OpenSSH의 새로운 `chacha20-poly1305@openssh.com` 암호화 방식에도 사용되었다.[30][31] 그 결과, OpenSSH는 컴파일 시간 옵션을 통해 OpenSSL에 대한 의존성을 피할 수 있게 되었다.[32]

ChaCha20은 또한 FreeBSD,[33] OpenBSD,[34]NetBSD[35] 운영 체제에서 손상된 RC4 대신 `arc4random` 난수 생성기로 사용되며, 커널의 CSPRNG 서브루틴에 DragonFly BSD[36]에서도 사용된다.[37][38] 버전 4.8부터 리눅스 커널은 ChaCha20 알고리즘을 사용하여 차단되지 않는 /dev/urandom 장치에 대한 데이터를 생성한다.[39][40][41] ChaCha8은 Golang에서 기본 PRNG로 사용된다.[42] Rust의 CSPRNG는 ChaCha12를 사용한다.[25]

ChaCha20은 일반적으로 CPU가 AES 가속(x86 프로세서의 AES 명령어 집합과 같은)을 지원하지 않는 시스템에서 더 널리 사용되는 고급 암호화 표준 (AES) 알고리즘보다 더 나은 성능을 제공한다. 결과적으로 ChaCha20은 주로 ARM 기반 CPU를 사용하는 모바일 장치와 관련된 특정 사용 사례에서 AES보다 선호되는 경우가 있다.[43][44] ChaCha20용 특수 하드웨어 가속기는 AES 가속기에 비해 덜 복잡하다.[45]

ChaCha20-Poly1305 (IETF 버전)는 프로토콜 버전 1부터 WireGuard VPN 시스템에서 독점적으로 사용되는 알고리즘이다.[46] ChaCha20의 구현 참고 자료는 IETF RFC 7539에 게시되었다. IETF의 구현은 64비트 논스와 64비트 블록 카운터를 96비트 논스와 32비트 블록 카운터로 변경하여 Bernstein이 발표한 알고리즘을 수정했다.[47] 알고리즘이 수정되었을 때 이름은 변경되지 않았는데, 이는 암호학적으로 중요하지 않기 때문이다. 하지만 인터페이스 변경은 개발자들에게 혼란을 야기할 수 있다. 블록 카운터가 감소했기 때문에 IETF 변형으로 안전하게 암호화할 수 있는 최대 메시지 길이는 232개의 64바이트 블록(256GiB)이다. 파일 또는 디스크 암호화와 같이 이 길이가 충분하지 않은 응용 프로그램의 경우는 64비트 논스를 사용하는 원래 알고리즘을 사용할 것을 제안한다.

IKEIPsec에서 ChaCha20의 사용은 RFC 7634에 표준화되었다. TLS에서의 사용 표준화는 RFC 7905에 게시되었다. 2018년, RFC 7539는 RFC 8439에 의해 폐지되었다. RFC 8439는 일부 오류를 병합하고 추가적인 보안 고려 사항을 추가했다.[48] Salsa20은 eStream 프로젝트에서 Profile 1(소프트웨어)의 Phase 3 디자인으로 선정되었다(Phase 2에서는 다른 어떤 알고리즘보다 높은 점수를 얻었다).[55] Profile 2(하드웨어)의 Phase 2 디자인에도 선정되었지만,[56] 여기에서는 Phase 3로 진출하지 못했다. 이는 제약이 많은 하드웨어 환경에서는 충분한 성능을 발휘할 수 없다고 판단되었기 때문이다.[57]

구글은 대칭키 암호로서 ChaCha20, 메시지 인증 부호로서 번스타인(Bernstein)에 의한 Poly1305를 조합한 것을 RC4를 대체하는 인터넷 보안에서 사용 가능한 스트림 암호로 제안하고 있다.[66] 구글 크롬 및 구글의 웹 서비스에서의 TLS/SSL 통신 (https) 에서 ChaCha20-Poly1305가 구현되어 있다.[67]

구글에 의한 TLS 채용에 이어, ChaCha20와 Poly1305의 조합은 `chacha20-poly1305@openssh.com`으로 OpenSSH에 채용되었다.[68][69] 이로 인해 OpenSSH가 OpenSSL에 의존할 필요가 없어졌다.[70]

ChaCha20은 취약성이 지적된 RC4를 대신하여 OpenBSD, NetBSD, DragonFly BSD에서의 난수 생성기 `arc4random`에 이용되고 있다.[71][72]

ChaCha20-Poly1305 그 자체가 RFC 7539, 인터넷 키 교환 (IKE) 및 IPSec에서의 이용이 RFC 7634, TLS/SSL에서의 이용이 RFC 7905로 표준화되었다.

WireGuard는 ChaCha20-Poly1305를 채용하고 있다.[73]

2018년 3월, CRYPTREC의 "전자 정부 조달을 위해 참조해야 할 암호 목록"이 개정되어 ChaCha20-Poly1305가 권장 후보 암호 목록에 추가되었다.

참조

[1] 웹사이트 Salsa 20 speed; Salsa20 software https://cr.yp.to/snu[...] 2013-05-16
[2] 웹사이트 New Features of Latin Dances https://eprint.iacr.[...] 2008-03-14
[3] 간행물 ChaCha, a variant of Salsa20 https://cr.yp.to/cha[...] 2018-06-03
[4] 웹사이트 Snuffle 2005: the Salsa20 encryption function https://cr.yp.to/snu[...] 2013-05-16
[5] 웹사이트 Salsa20: Software speed https://cr.yp.to/sal[...] 2007-05-11
[6] 웹사이트 The Salsa20 family of stream ciphers https://cr.yp.to/snu[...] 2007-12-24
[7] 문서
[8] 웹사이트 Extending the Salsa20 nonce (updated in 2011) https://cr.yp.to/snu[...] 2022-08-18
[9] 웹사이트 Extending the Salsa20 nonce (original version) https://cr.yp.to/snu[...] 2022-08-18
[10] 웹사이트 Salsa20/12 http://www.ecrypt.eu[...] 2017-08-22
[11] 웹사이트 The eSTREAM Project: End of Phase 2 http://www.ecrypt.eu[...] eSTREAM 2008-04-29
[12] 웹사이트 eSTREAM PHASE 3: End of Phase 1 http://www.ecrypt.eu[...] eSTREAM 2007-03-30
[13] 웹사이트 eSTREAM: Short Report on the End of the Second Phase http://www.ecrypt.eu[...] eSTREAM 2007-03-26
[14] 웹사이트 Salsa20/12, The eSTREAM portfolio page https://www.ecrypt.e[...]
[15] 웹사이트 Truncated differential cryptanalysis of five rounds of Salsa20 http://www.ciphergot[...] 2006-02-09
[16] conference Non-randomness in eSTREAM Candidates Salsa20 and TSC-4 2006
[17] 웹사이트 Differential Cryptanalysis of Salsa20/8 http://www.ecrypt.eu[...] 2007-01-02
[18] 서적 Information Security and Cryptology – ICISC 2012 2012
[19] 웹사이트 Towards Finding Optimal Differential Characteristics for ARX: Application to Salsa20 https://eprint.iacr.[...] 2013
[20] 웹사이트 The ChaCha family of stream ciphers https://cr.yp.to/cha[...] 2008-04-25
[21] 간행물 Faster ChaCha implementations for Intel processors https://eden.dei.uc.[...] 2009-10-07
[22] 웹사이트 ChaCha20 and Poly1305 for IETF Protocols: RFC 7539 https://datatracker.[...] 2015-05
[23] journal XChaCha: eXtended-nonce ChaCha and AEAD_XChaCha20_Poly1305 (Expired Internet-Draft) https://tools.ietf.o[...] 2020-01-10
[24] conference Too Much Crypto https://eprint.iacr.[...] 2020
[25] 웹사이트 rand_chacha: consider ChaCha12 (or possibly ChaCha8) over ChaCha20 · Issue #932 · rust-random/rand https://github.com/r[...]
[26] 웹사이트 ChaCha https://www.cryptogr[...]
[27] 웹사이트 Do the ChaCha: better mobile performance with cryptography https://blog.cloudfl[...] 2021-07-13
[28] journal RFC 9001 https://datatracker.[...] 2021-05
[29] journal draft: IETF QUIC HTTP https://datatracker.[...] 2021-02-02
[30] 웹사이트 ssh/PROTOCOL.chacha20poly1305 http://bxr.su/OpenBS[...] 2016-09-07
[31] 웹사이트 OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein https://it.slashdot.[...] Slashdot 2016-09-07
[32] 웹사이트 OpenSSH No Longer Has To Depend On OpenSSL https://it.slashdot.[...] Slashdot 2016-09-07
[33] 웹사이트 Revision 317015 https://svnweb.freeb[...] 2018-03-16
[34] 웹사이트 libc/crypt/arc4random.c http://bxr.su/OpenBS[...] 2016-09-07
[35] 웹사이트 libc/gen/arc4random.c http://bxr.su/NetBSD[...] 2016-09-07
[36] 웹사이트 kern/subr_csprng.c http://bxr.su/Dragon[...] 2015-11-04
[37] 웹사이트 ChaCha Usage & Deployment https://ianix.com/pu[...] 2016-09-07
[38] 웹사이트 arc4random(3) https://netbsd.gw.co[...] 2014-11-16
[39] 웹사이트 Replacing /dev/urandom https://lwn.net/Arti[...] 2016-09-20
[40] 웹사이트 Merge tag 'random_for_linus' of git.kernel.org/pub/scm/linux/kernel/git/tytso/random https://git.kernel.o[...] 2016-09-20
[41] 웹사이트 /dev/random Seeing Improvements For Linux 4.8 https://www.phoronix[...] Phoronix 2016-07-25
[42] 웹사이트 Secure Randomness in Go 1.22 - The Go Programming Language https://go.dev/blog/[...]
[43] 웹사이트 What's the appeal of using ChaCha20 instead of AES? https://crypto.stack[...] 2016-04-12
[44] 웹사이트 AES-NI SSL Performance Study @ Calomel.org https://calomel.org/[...]
[45] 서적 2019 32nd IEEE International System-on-Chip Conference (SOCC) https://publikatione[...] 2019-09
[46] 웹사이트 Protocol and Cryptography https://www.wireguar[...] Jason A. Donenfeld
[47] 웹사이트 ChaCha20 and Poly1305 for IETF protocols https://www.ietf.org[...]
[48] 문서 Header of RFC 7539
[49] 웹사이트 Salsa 20 speed; Salsa20 software http://cr.yp.to/snuf[...] 2013-12-30
[50] 문서 Jean-Philippe Aumasson, Simon Fischer, Shahram Khazaei, Willi Meier, and Christian Rechberger, [http://eprint.iacr.org/2007/472.pdf New Features of Latin Dances]
[51] 웹사이트 Speed of Salsa20 http://cr.yp.to/sals[...]
[52] 웹사이트 Salsa20 home page http://cr.yp.to/snuf[...]
[53] 간행물 The Salsa20 family of stream ciphers https://cr.yp.to/snu[...] 2007-12-24
[54] 문서 計算時間のほとんどはラウンド処理の繰り返しによるものなので、ラウンド数と処理速度は反比例する。つまり、ラウンド数を半分にすれば、パフォーマンスは約二倍になる。よって、ラウンド数を削減した変種は明らかに速い。
[55] 웹사이트 http://www.ecrypt.eu[...]
[56] 웹사이트 http://www.ecrypt.eu[...]
[57] 웹사이트 http://www.ecrypt.eu[...]
[58] 문서 Simon Fischer, Willi Meier, Côme Berbain, Jean-Francois Biasse, [[Matt Robshaw]], ''Non-Randomness in eSTREAM Candidates Salsa20 and TSC-4'', [[Indocrypt]] 2006
[59] 논문 Differential Cryptanalysis of Salsa20/8 http://www.ecrypt.eu[...] 2007-01-02
[60] 문서 Zhenqing Shi, Bin Zhang, Dengguo Feng, Wenling Wu (2012): „Improved Key Recovery Attacks on Reduced-Round Salsa20 and ChaCha“. Information Security and Cryptology – ICISC 2012. Springer Verlag, 2013, pp. 337-351
[61] 논문 A Proof that the ARX Cipher Salsa20 is Secure against Differential Cryptanalysis http://eprint.iacr.o[...] 2013
[62] 문서 ChaCha, a variant of Salsa20 https://cr.yp.to/cha[...] 2008-01-28
[63] 문서 Faster ChaCha implementations for Intel processors http://eden.dei.uc.p[...] 2009-10-07
[64] 문서 ChaCha, a variant of Salsa20 http://cr.yp.to/chac[...] 2008-01-28
[65] 문서 ChaCha20 and Poly1305 for IETF protocols https://datatracker.[...]
[66] 문서 draft-ietf-tls-chacha20-poly1305 The ChaCha20-Poly1305 AEAD Cipher for Transport Layer Security "//tools.ietf.org/ht[...]
[67] 뉴스 Google Swaps Out Crypto Ciphers in OpenSSL http://www.infosecur[...] InfoSecurity 2014-04-24
[68] 웹사이트 ssh/PROTOCOL.chacha20poly1305 http://bxr.su/OpenBS[...] 2013-12-02
[69] 웹사이트 OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein http://it.slashdot.o[...] Slashdot 2013-12-11
[70] 웹사이트 OpenSSH No Longer Has To Depend On OpenSSL http://it.slashdot.o[...] Slashdot 2014-04-30
[71] 웹사이트 ChaCha Usage & Deployment http://ianix.com/pub[...] 2015-01-07
[72] 웹사이트 arc4random - NetBSD Manual Pages http://netbsd.gw.com[...] 2015-01-07
[73] 웹사이트 Protocol & Cryptography - WireGuard https://www.wireguar[...] 2020-04-21

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com