서펜트 (암호)

위키백과, 우리 모두의 백과사전.

서펜트의 선형 혼합 단계

서펜트(Serpent)는 AES(고급 암호화 표준) 콘테스트에서 최종 후보로 선정된 대칭 키 블록 암호로, 레인달(Rijndael)에 이어 2위를 차지했다.[1] 서펜트는 로스 앤더슨, 엘리 비햄라스 크누드센이 디자인했다.[2]

다른 AES 암호와 마찬가지로 서펜트의 블록 크기는 128비트이며 128, 192 또는 256비트의 키 크기를 지원한다.[3]암호는 4개의 32비트 단어 블록에서 작동하는 32라운드 대입-치환 네트워크 네트워크이다. 각 라운드는 8개의 4비트 ~ 4비트 S-박스 중 하나를 32번 병렬로 적용한다. 서펜트는 32비트 슬라이스를 사용하여 모든 작업을 병렬로 실행할 수 있도록 설계되었다. 이는 병렬성을 최대화하지만 DES에서 수행되는 광범위한 암호 분석 작업을 사용할 수도 있다.

서펜트는 보안에 대해 보수적인 접근 방식을 취하여 큰 보안 마진을 선택했다. 설계자는 알려진 유형의 공격에 대해 16라운드가 충분하다고 간주했지만 암호 분석에서 향후 발견에 대한 보험으로 32라운드를 지정했다.[4] AES 경쟁에 대한 공식 NIST 보고서는 서펜트를 MARS 및 투피시와 같이 보안 마진이 높으며 RC6 및 레인달(현재 AES)의 적절한 보안 마진과 대조적으로 분류했다.[1] 최종 투표에서 서펜트는 결선 진출자 중 가장 적은 반대 표를 얻었지만 레인달이 훨씬 더 많은 긍정적 표를 얻었기 때문에 전체 2위를 차지했다. 결정적인 요인은 레인달이 훨씬 더 효율적인 소프트웨어 구현을 허용했다는 것이다.

서펜트 암호화 알고리즘은 퍼블릭 도메인에 있으며 특허를 받지 않았다.[5] 참조 코드는 퍼블릭 도메인 소프트웨어이며 최적화된 코드는 GPL에 따라 라이선스가 부여된다.[6] 사용에 대한 제한이나 부담은 없다. 결과적으로 누구나 라이센스 비용을 지불하지 않고 소프트웨어(또는 하드웨어 구현)에 서펜트를 자유롭게 통합할 수 있다.

각주[편집]

  1. Nechvatal, J.; Barker, E.; Bassham, L.; Burr, W.; Dworkin, M.; Foti, J.; Roback, E. (May 2001). “Report on the development of the Advanced Encryption Standard (AES)”. 《Journal of Research of the National Institute of Standards and Technology》 106 (3): 511–577. doi:10.6028/jres.106.023. ISSN 1044-677X. PMC 4863838. PMID 27500035. 
  2. “Serpent Home Page”. 
  3. Ross J. Anderson (2006년 10월 23일). “Serpent: A Candidate Block Cipher for the Advanced Encryption Standard”. University of Cambridge Computer Laboratory. 2013년 1월 14일에 확인함. 
  4. “serpent.pdf” (PDF). 2022년 4월 25일에 확인함. 
  5. Serpent Holds the Key to Internet Security – Finalists in world-wide encryption competition announced (1999)
  6. SERPENT – A Candidate Block Cipher for the Advanced Encryption Standard "Serpent is now completely in the public domain, and we impose no restrictions on its use. This was announced on the 21st August at the First AES Candidate Conference. The optimised implementations in the submission package are now under the General Public License (GPL), although some comments in the code still say otherwise. You are welcome to use Serpent for any application. If you do use it, we would appreciate it if you would let us know!" (1999)

외부 링크[편집]