호랑이 (해시 함수)
Tiger (hash function)일반 | |
---|---|
디자이너 | 로스 앤더슨과 일라이 비엄 |
초간출판 | 1996 |
디테일 | |
다이제스트 크기 | 192, 128, 160 |
라운드 | 24 |
암호학에서 타이거는[1] 로스 앤더슨과 일라이 비햄이 1995년 64비트 플랫폼의 효율성을 위해 고안한 암호해시함수다. Tiger 해시 값의 크기는 192비트 입니다. 잘라낸 버전(Tiger/128 및 Tiger/160으로 알려져 있음)은 특정 해시 크기를 가정한 프로토콜과의 호환성을 위해 사용될 수 있다. SHA-2 패밀리와 달리 구별되는 초기화 값은 정의되지 않으며, 단순히 완전한 Tiger/192 해시 값의 접두사일 뿐이다.
Tiger2는[2] Tiger의 경우처럼 16진수 값이 0x01인 것이 아니라 MD4, MD5, SHA처럼 16진수 값이 0x80인 바이트를 먼저 추가하여 메시지가 패딩되는 변종이다. 그 두 변형은 그렇지 않으면 동일하다.
알고리즘.
타이거는 Merkle-Damghrd 건설에 기반을 두고 있다. 단방향 압축 기능은 64비트 단어로 작동하며 3단어의 상태를 유지하고 8단어의 데이터를 처리한다. XOR와 덧셈/굴절, 회전 및 S-box 조회를 혼합한 작동 조합을 사용하는 24라운드가 있으며, 8개의 입력 단어에서 24라운드 키를 도출하기 위한 상당히 복잡한 키 스케줄링 알고리즘이 있다.
소프트웨어의 속도는 빠르지만, Tiger의 대형 S-box (4개의 S-box, 각각 256개의 64비트 항목이 총 8KiB)는 하드웨어나 마이크로컨트롤러에서 구현을 어렵게 한다.[citation needed]
사용법
Tiger는 Merkle 해시 트리 형태에서 자주 사용되는데, 여기서 TTH(Tiger Tree Hash)라고 한다. TTH는 Direct Connect와 Gnutella 파일 공유 네트워크의 많은 클라이언트에서 사용되며, 보다 나은 콘텐츠 가용성을 위해 선택적으로 BitTorrent 메타파일에 포함될 수 있다.
Tiger는 OpenPGP 표준에 포함되는 것으로 고려되었지만 RIPEMD-160에 유리하게 폐기되었다.[4][5]
OID
RFC2440은 OID가 없는 TIGER를 말하는 반면, GNU 코딩 표준은 TIGER를 OID로 표기한다. 1.3.6.1.4.1.11591.12.2
.[6] IPSEC 하위 트리에서 HMAC-TIGER에 OID가 할당됨 1.3.6.1.5.5.8.1.3
TTH에 대한 OID는 아직 발표되지 않았다.[7]
바이트 순서
Tiger의 사양은 출력물을 출력하는 방법을 정의하는 것이 아니라 그 결과를 3개의 순서 64비트 정수로만 정의한다. 저자의 홈페이지에 있는 "테스트타이거" 프로그램은 특정 인쇄 순서를 정의하기보다는 테스트 소스 코드를 쉽게 테스트할 수 있도록 하기 위한 것이었다. 프로그램뿐만 아니라 Direct Connect 및 ADC 프로토콜 tthsum
저자 중 한 명이 선호하는 리틀 엔디안 바이트 순서를 사용한다.[8]
예
아래 예에서 192비트(24바이트) 호랑이 해시는 리틀 엔디안 바이트 순서로 16진수 48자리 숫자로 표현된다. 다음은 43바이트 ASCII 입력과 그에 상응하는 타이거 해시를 보여준다.
Tiger("The quick brown fox jumps over the lazy dog") = 6d12a41e72e644f017b6f0e2f7b44c6285f06dd5d2c5b075 Tiger2("The quick brown fox jumps over the lazy dog") = 976abff8062a2e9dcea3a1ace966ed9c19cb85558b4976d8
메시지의 작은 변화라도 (매우 높은 확률로) 완전히 다른 해시(예: 변화)를 초래할 것이다. d to c:
Tiger("The quick brown fox jumps over the lazy cog") = a8f04b0f7201a0d728101c9d26525b31764a3493fcd8458f Tiger2("The quick brown fox jumps over the lazy cog") = 09c11330283a27efb51930aa7dc1ec624ff738a8d9bdd3df
제로 길이 문자열의 해시는 다음과 같다.
Tiger(""") = 3293ac630c13f0245fbbb1766e167a4e58492dde73f3 Tiger2(""") = 4441be75f6018773c6c227c224b924aa8313f919f41
암호해석
MD5나 SHA-0/1과 달리 사이비-근접 충돌 이외에는 24라운드 타이거[9] 전원에 대해 알려진 유효 공격은 없다.[10] MD5는 512비트 블록당 64개의 간단한 32비트 운영으로, SHA-1은 80개의 SHA-1로 상태를 처리하는 반면, Tiger는 512비트 블록당 총 144개의 운영으로 상태를 업데이트하고, 대형 S-box 검색에 의해 추가로 강화되었다.
존 켈시와 스테판 럭스는 약 2개의44 압축함수 호출에 해당하는 시간 복잡성을 가진 16개의 Tiger에 대한 충돌 탐색 공격과 2개의48 압축함수 호출보다 적은 작업을 가진 20개의 Tiger에서 유사 근접 충돌을 찾아내는 또 다른 공격을 발견했다.[9] 플로리안 멘델 외 19번의 타이거 라운드에 걸친 충돌 공격과 22번의 사이비-근접 충돌 공격을 묘사함으로써 이러한 공격에 대해 개선되었다. 이러한 공격에는 타이거 압축 함수에 대한 약62 2와 2의44 평가와 동등한 작업 노력이 필요하다.[11]
참고 항목
- 해시함수 보안 요약
- 암호해시함수의 비교
- 해시함수 목록
- 뱀 - 동일한 저자에 의한 블록 암호
참조
- ^ Ross Anderson and Eli Biham (1996-02-08). "Tiger: A Fast New Hash Function". Fast Software Encryption 3. Cambridge. Retrieved 2017-03-03.
- ^ "Tiger2 Test Vectors". Project NESSIE. 2005-02-25. Retrieved 2017-03-03.
- ^ Feit, Harold (2012-02-12). "P2P:Protocol:Specifications:Optional Hashes: TTH Root". Retrieved 2017-11-18.
- ^ Callas, Jon (2004-08-18). "Re: re-consideration of TIGER". Archived from the original on 2014-07-14.
- ^ Pornin, Thomas (2013-10-25). "How do you use the Tiger hash function with GPG?".
- ^ "Program Behavior for All Programs: OID Allocations". GNU. Retrieved 2017-11-18.
- ^ "Reference record for OID 1.3.6.1.5.5.8.1.3 – hmacTIGER". 1998-10-18. Retrieved 2017-11-18.
- ^ "Digest::Tiger Module". CPAN. Retrieved 2017-03-03.
- ^ a b John Kelsey and Stefan Lucks (2006). "Collisions and Near-Collisions for Reduced-Round Tiger" (PDF). Fast Software Encryption 13. Graz. Archived from the original (PDF) on 2016-03-04.
{{cite journal}}
: CS1 maint: 작성자 매개변수 사용(링크) - ^ Mendel, Florian; Vincent, Rijmen. "Cryptanalysis of the Tiger Hash Function". ASIACRYPT 2007. Springer Berlin / Heidelberg. pp. 536–550. doi:10.1007/978-3-540-76900-2_33.
- ^ Florian Mendel, Bart Preneel, Vincent Rijmen, Hirotaka Yoshida, and Dai Watanabe (2006). "Update on Tiger" (PDF). Indocrypt 7. Kolkata.
{{cite journal}}
: CS1 maint: 작성자 매개변수 사용(링크)