두 마리 물고기
Twofish투피쉬 알고리즘 | |
일반 | |
---|---|
디자이너 | 브루스 슈나이어 |
초간출판 | 1998 |
파생된 위치 | 복어, SAFERY, 사각형 |
관련 | 삼치 |
인증 | AES 결승전 진출자 |
암호상세 | |
키 사이즈 | 128비트, 192비트 또는 256비트 |
블록 크기 | 128비트 |
구조 | 페이젤 네트워크 |
라운드 | 16 |
최고의 공개 암호 분석 | |
약 2개의51 선택된 일반 텍스트가 필요한 잘린 차동 암호화 분석.[1] 2단계를256 사용하여 256비트 키 버전 중 16개 라운드를 분할하는 불가능한 차등 공격.[2] |
암호학에서 투피쉬는 블록 크기가 128비트, 키 크기가 최대 256비트인 대칭 키 블록 암호다. 고급 암호화 표준 공모전의 5개 최종 후보 중 하나였지만 표준화 대상으로 선정되지는 않았다. 투피쉬는 이전 블록 암호인 블로피쉬와 관련이 있다.
투피쉬의 특징은 사전 계산된 키 의존형 S박스의 사용과 비교적 복잡한 키 스케줄이다. n비트 키의 절반은 실제 암호화 키로, 나머지 절반은 암호화 알고리즘(키 종속 S-박스)을 수정하는 데 사용된다. 두 마리의 물고기는 다른 디자인에서 몇 가지 요소들을 빌린다. 예를 들어, SAFERED 암호족에서 사이비-하다마드 변환[3](PHT)과 같은 말이다. 투피쉬는 DES와 같은 페이젤 구조를 가지고 있다. 두 마리의 물고기는 또한 최대 거리 분리 가능 행렬을 사용한다.
투피쉬는 1998년 도입 당시 128비트 키의 경우 Rijndael(고급 암호화 표준의 선택 알고리즘)보다 다소 느렸지만 256비트 키의 경우 다소 빨랐다. 2008년 이후 거의 모든 AMD 및 Intel 프로세서가 AES 명령 집합을 통해 Rijndael 알고리즘의 하드웨어 가속화를 포함했다; 명령 집합을 사용하는 Rijndael 구현은 이제 (소프트웨어)보다 더 빠른 주문이다. 두 마리 물고기 구현.[4]
투피쉬는 브루스 슈나이어, 존 켈시, 더그 휘팅, 데이비드 바그너, 크리스 홀, 그리고 닐스 퍼거슨에 의해 고안되었는데, 투피쉬에 대한 추가적인 암호 분석을 수행하기 위해 만난 "확장 투피쉬 팀"이다. 다른 AES 대회 참가자들로는 스테판 럭스, 코노 타다요시, 마이크 스테이 등이 있었다.
투피쉬 암호는 특허를 얻지 못했고, 참조 구현은 공공 영역에 배치되었다. 그 결과 투피쉬 알고리즘은 아무 제한 없이 누구나 자유롭게 사용할 수 있다. OpenPGP 표준(RFC 4880)에 포함된 몇 가지 암호 중 하나이다. 그러나 투피쉬는 더 오래 사용 가능했던 복어보다 덜 널리 쓰였다.
퍼포먼스
설계되는 동안 성능은 Twofish에서 항상 중요한 요소였다. 투피쉬는 암호화 속도, 메모리 사용량, 하드웨어 게이트 수, 키 설정 및 기타 파라미터의 중요도에 따라 여러 계층의 성능 트레이드오프를 허용하도록 설계되었다. 이를 통해 다양한 애플리케이션에서 구현될 수 있는 고도로 유연한 알고리즘이 가능하다.
투피쉬를 위한 하드웨어뿐만 아니라 소프트웨어에서도 여러 시간 트레이드오프를 할 수 있다. 그러한 절충의 예는 둘 이상의 속도 증가를 초래할 수 있는 둥근 서브키 또는 s-box의 사전 계산일 것이다. 그러나 이러한 것들은 그것들을 저장하는 데 필요한 더 많은 RAM의 희생으로 온다.
아래 표의 추정치는 모두 기존 0.35μm CMOS 기술을 기반으로 한다.
게이트 개수 | h블록 | 시계 블록당 | 파이프라인 레벨 | 클럭 속도 | 처리량 (Mbit/s) | 시작 시계 | 평. |
---|---|---|---|---|---|---|---|
14000 | 1 | 64 | 1 | 40 MHz | 80 | 4 | 즉시 사용할 수 있는 하위 키들 |
19000 | 1 | 32 | 1 | 40 MHz | 160 | 40 | |
23000 | 2 | 16 | 1 | 40Mhz | 320 | 20 | |
26000 | 2 | 32 | 2 | 80 MHz | 640 | 20 | |
28000 | 2 | 48 | 3 | 120 MHz | 960 | 20 | |
30000 | 2 | 64 | 4 | 150 MHz | 1200 | 20 | |
80000 | 2 | 16 | 1 | 80 MHz | 640 | 300 | S-box RAM |
암호해석
1999년 닐스 퍼거슨 감독은256 2단계를 이용해 256비트 키 버전 중 16개 라운드를 돌파하는 불가능한 차등 공격을 발표했다.[2]
2000년[update] 현재 투피쉬 블록 암호의 가장 잘 발표된 암호 분석은 완전한 16라운드 버전의 잘린 차등 암호 분석이다. 이 논문은 잘린 미분들의 확률은 블록당−57.3 2개이며 잘린 미분들의 좋은 쌍을 찾으려면 대략 2개의51 선택된 일반 텍스트(32페타바이트의 데이터)가 필요할 것이라고 주장한다.[6]
브루스 슈나이어는 2005년 블로그 기사에서 이 논문이 완전한 암호화된 공격을 하지는 않았지만 가설상의 차이점만을 제시했다고 응답했다. "그러나 이론적인 관점에서 보더라도 투피쉬는 원격으로 부서지지도 않았다. 2000년 출간된 이후 이런 결과들에 대한 연장은 없었다고 말했다.[7]
참고 항목
참조
- ^ Ship Moriai; Yiqun Lisa Yin (2000). "Cryptanalysis of Twofish (II)" (PDF). Retrieved 2013-01-14.
{{cite journal}}
: Cite 저널은 필요로 한다.journal=
(도움말) - ^ a b Niels Ferguson (1999-10-05). "Impossible differentials in Twofish" (PDF). Retrieved 2013-01-14.
{{cite journal}}
: Cite 저널은 필요로 한다.journal=
(도움말) - ^ "Team Men In Black Presents: TwoFish" (PDF). Archived from the original (PDF) on 26 September 2017.
- ^ Bruce Schneier; Doug Whiting (2000-04-07). "A Performance Comparison of the Five AES Finalists" (PDF/PostScript). Retrieved 2013-01-14.
{{cite journal}}
: Cite 저널은 필요로 한다.journal=
(도움말) - ^ Schneier, Bruce (15 June 1998). "Twofish: A 128-Bit Block Cipher" (PDF). counterpane: 68.
- ^ Shiho Moriai; Yiqun Lisa Yin (2000). "Cryptanalysis of Twofish (II)" (PDF). Retrieved 2013-01-14.
{{cite journal}}
: Cite 저널은 필요로 한다.journal=
(도움말) - ^ Schneier, Bruce (2005-11-23). "Twofish Cryptanalysis Rumors". Schneier on Security blog. Retrieved 2013-01-14.
기사들
- Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (1998-06-15). "The Twofish Encryption Algorithm" (PDF/PostScript). Retrieved 2013-01-14.
{{cite journal}}
: Cite 저널은 필요로 한다.journal=
(도움말) - Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson (1999-03-22). The Twofish Encryption Algorithm: A 128-Bit Block Cipher. New York City: John Wiley & Sons. ISBN 0-471-35381-7.
외부 링크
- 전체 사양, 무료 소스 코드 및 브루스 슈나이어의 기타 Twofish 리소스를 포함하는 Twofish 웹 페이지
- 256비트 암호 – TWICE 참조 구현 및 파생 코드
- 브루스 슈나이어의 두 마리 피쉬를 사용한 제품
- 더 나은 알고리즘: Rijndael 또는 TwoFish? by sci.crypt.
- 표준 암호화 알고리즘 이름 지정: 두 마리 물고기