Salsa20
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Salsa_round_function.svg/220px-Salsa_round_function.svg.png)
Salsa20 및 밀접하게 관련된 차차(ChaCha)는 대니얼 J. 번스타인이 개발한 스트림 암호이다. 원본 암호인 Salsa20은 2005년에 설계되었으며 나중에 번스타인이 eSTREAM 유럽 연합 암호화 검증 프로세스에 제출했다. 차차는 2008년에 게시된 Salsa20의 수정본이다. 일부 아키텍처에서 확산을 높이고 성능을 높이는 새로운 라운드 기능을 사용한다.
두 암호 모두 ARX(add-rotate-XOR) 작업, 즉 32비트 추가, 비트별 추가(XOR) 및 로테이션 작업을 기반으로 하는 의사 난수 함수를 기반으로 구축되었다. 핵심 기능은 256비트 키, 64비트 nonce 및 64비트 카운터를 키 스트림의 512비트 블록에 매핑한다(128비트 키가 있는 Salsa 버전도 존재함). 이는 Salsa20과 차차에게 사용자가 일정한 시간에 키 스트림의 모든 위치를 효율적으로 찾을 수 있다는 특별한 이점을 제공한다. Salsa20은 최신 x86 프로세서의 소프트웨어에서 바이트당 약 4~14사이클의 속도와 합리적인 하드웨어 성능을 제공한다. 이는 특허가 없으며 번스타인은 공통 아키텍처에 최적화된 여러 공개 도메인 구현을 작성했다.
차차 변종
[편집]2008년에 번스타인은 동일하거나 약간 더 나은 성능을 달성하면서 라운드당 확산을 증가시키는 것을 목표로 밀접하게 관련된 차차(ChaCha) 암호 계열을 발표했다. Aumassonet 등의 논문은 또한 차차를 공격하여 한 라운드 더 적은 수(복잡도 2139의 256비트 ChaCha6, 복잡도 2248의 ChaCha7, 2107 이내의 128비트 ChaCha6)를 달성했지만 공격이 128비트 ChaCha7을 깨뜨리지 못했다고 주장한다.
Salsa20과 마찬가지로 차차의 초기 상태에는 128비트 상수, 256비트 키, 64비트 카운터 및 64비트 nonce가 포함된다(원래 버전에서는 RFC 7539의 차차 버전은 약간 다름), 32비트 단어의 4×4 행렬로 배열된다. 그러나 차차는 초기 상태의 일부 단어를 재배치한다.
외부 링크
[편집]- Snuffle 2005: the Salsa20 encryption function
- Salsa20 specification (PDF)
- Salsa20/8 and Salsa20/12 (PDF)
- The eSTREAM Project: Salsa20 Archived 2022년 8월 18일 - 웨이백 머신
- The ChaCha family of stream ciphers
- Salsa20 Usage & Deployment
- Implementation and Didactical Visualization of the ChaCha Cipher Family in CrypTool 2