Jump to content

Tiger (hash function): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
AnomieBOT (talk | contribs)
m Dating maintenance tags: {{Citation needed}}
m Cryptanalysis: cite repair;
 
(12 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{Short description|Cryptographic hash function}}
{{Infobox cryptographic hash function
{{Infobox cryptographic hash function
| name = Tiger
| name = Tiger
Line 24: Line 25:
| location=[[Cambridge, UK|Cambridge]]
| location=[[Cambridge, UK|Cambridge]]
| date=1996-02-08
| date=1996-02-08
| accessdate=2017-03-03}}</ref> is a [[cryptographic hash function]] designed by [[Ross J. Anderson|Ross Anderson]] and [[Eli Biham]] in 1995 for efficiency on [[64-bit computing|64-bit]] platforms. The size of a Tiger hash value is 192 bits. Truncated versions (known as Tiger/128 and Tiger/160) can be used for compatibility with protocols assuming a particular hash size. Unlike the [[SHA-2]] family, no distinguishing initialization values are defined; they are simply prefixes of the full Tiger/192 hash value.
| access-date=2017-03-03}}</ref> is a [[cryptographic hash function]] designed by [[Ross J. Anderson|Ross Anderson]] and [[Eli Biham]] in 1995 for efficiency on [[64-bit computing|64-bit]] platforms. The size of a Tiger hash value is 192 bits. Truncated versions (known as Tiger/128 and Tiger/160) can be used for compatibility with protocols assuming a particular hash size. Unlike the [[SHA-2]] family, no distinguishing initialization values are defined; they are simply prefixes of the full Tiger/192 hash value.


'''Tiger2'''<ref>{{cite web
'''Tiger2'''<ref>{{cite web
Line 31: Line 32:
| work=Project [[NESSIE]]
| work=Project [[NESSIE]]
| date=2005-02-25
| date=2005-02-25
| accessdate=2017-03-03}}</ref> is a variant where the message is padded by first appending a byte with the hexadecimal value of 0x80 as in [[MD4]], [[MD5]] and [[Secure Hash Algorithm|SHA]], rather than with the hexadecimal value of 0x01 as in the case of Tiger. The two variants are otherwise identical.
| access-date=2017-03-03}}</ref> is a variant where the message is padded by first appending a byte with the hexadecimal value of 0x80 as in [[MD4]], [[MD5]] and [[Secure Hash Algorithm|SHA]], rather than with the hexadecimal value of 0x01 as in the case of Tiger. The two variants are otherwise identical.


==Algorithm==
==Algorithm==
Tiger is designed using the nearly universal [[Merkle–Damgård construction|Merkle–Damgård paradigm]]. The [[one-way compression function]] operates on 64-bit words, maintaining 3 words of state and processing 8 words of data. There are 24 rounds, using a combination of operation mixing with XOR and addition/subtraction, rotates, and [[S-box]] lookups, and a fairly intricate key scheduling algorithm for deriving 24 round keys from the 8 input words.
Tiger is based on [[Merkle–Damgård construction]]. The [[one-way compression function]] operates on 64-bit words, maintaining 3 words of state and processing 8 words of data. There are 24 rounds, using a combination of operation mixing with XOR and addition/subtraction, rotates, and [[S-box]] lookups, and a fairly intricate key scheduling algorithm for deriving 24 round keys from the 8 input words.


Although fast in software, Tiger's large S-boxes (four S-boxes, each with 256 64-bit entries totaling 8 [[KiB]]) make implementations in hardware or [[microcontroller]]s difficult.{{citation needed|date=April 2020}}
Although fast in software, Tiger's large S-boxes (four S-boxes, each with 256 64-bit entries totaling 8 [[KiB]]) make implementations in hardware or [[microcontroller]]s difficult.{{citation needed|date=April 2020}}


==Usage==
==Usage==
Tiger is frequently used in [[Merkle tree|Merkle hash tree]] form, where it is referred to as TTH ([[Merkle tree#Tiger tree hash|Tiger Tree Hash]]). TTH is used by many clients on the [[Direct connect file-sharing application|Direct Connect]] and [[Gnutella]] file sharing networks, and can optionally be included in the [[BitTorrent]] metafile <ref>{{cite web
Tiger is frequently used in [[Merkle tree|Merkle hash tree]] form, where it is referred to as TTH ([[Merkle tree#Tiger tree hash|Tiger Tree Hash]]). TTH is used by many clients on the [[Direct Connect (protocol)|Direct Connect]] and [[Gnutella]] file sharing networks, and can optionally be included in the [[BitTorrent]] metafile <ref>{{cite web
| url=http://wiki.depthstrike.com/P2P:Protocol:Specifications:Optional_Hashes#TTH_Root
| url=http://wiki.depthstrike.com/P2P:Protocol:Specifications:Optional_Hashes#TTH_Root
| title=P2P:Protocol:Specifications:Optional Hashes: TTH Root
| title=P2P:Protocol:Specifications:Optional Hashes: TTH Root
Line 45: Line 46:
| last=Feit
| last=Feit
| date=2012-02-12
| date=2012-02-12
| accessdate=2017-11-18}}</ref> for better content availability.
| access-date=2017-11-18}}</ref> for better content availability.


Tiger was considered for inclusion in the [[OpenPGP]] standard, but was abandoned in favor of [[RIPEMD]]-160.<ref>{{cite web
Tiger was considered for inclusion in the [[OpenPGP]] standard, but was abandoned in favor of [[RIPEMD]]-160.<ref>{{cite web
| first=Jon
| first=Jon
| last=Callas
| last=Callas
| authorlink=Jon Callas
| author-link=Jon Callas
| title=Re: re-consideration of TIGER
| title=Re: re-consideration of TIGER
| date=2004-08-18
| date=2004-08-18
| url=https://archive.cert.uni-stuttgart.de/openpgp/2004/08/msg00005.html
| url=https://archive.cert.uni-stuttgart.de/openpgp/2004/08/msg00005.html
| archiveurl=https://web.archive.org/web/20140714145102/http://archive.cert.uni-stuttgart.de/openpgp/2004/08/msg00005.html
| archive-url=https://web.archive.org/web/20140714145102/http://archive.cert.uni-stuttgart.de/openpgp/2004/08/msg00005.html
| archivedate=2014-07-14
| archive-date=2014-07-14
| url-status=live}}</ref><ref>{{cite web
| url-status=live}}</ref><ref>{{cite web
| url=https://crypto.stackexchange.com/a/11285
| url=https://crypto.stackexchange.com/a/11285
Line 68: Line 69:
| title=Program Behavior for All Programs: OID Allocations
| title=Program Behavior for All Programs: OID Allocations
| publisher=[[GNU]]
| publisher=[[GNU]]
| accessdate=2017-11-18}}</ref> In the [[IPSEC]] subtree, HMAC-TIGER is assigned OID <code>1.3.6.1.5.5.8.1.3</code>.<ref>{{cite web
| access-date=2017-11-18}}</ref> In the [[IPSEC]] subtree, HMAC-TIGER is assigned OID <code>1.3.6.1.5.5.8.1.3</code>.<ref>{{cite web
| url=https://oidref.com/1.3.6.1.5.5.8.1.3
| url=https://oidref.com/1.3.6.1.5.5.8.1.3
| title=Reference record for OID 1.3.6.1.5.5.8.1.3 – hmacTIGER
| title=Reference record for OID 1.3.6.1.5.5.8.1.3 – hmacTIGER
| date=1998-10-18
| date=1998-10-18
| accessdate=2017-11-18}}</ref> No OID for TTH has been announced yet.
| access-date=2017-11-18}}</ref> No OID for TTH has been announced yet.


==Byte order==
==Byte order==
The specification of Tiger does not define the way its output should be printed but only defines the result to be three ordered 64-bit integers. The "testtiger" program at the author's homepage was intended to allow easy testing of the test source code, rather than to define any particular print order. The protocols [[Direct Connect (file sharing)|Direct Connect]] and [[Advanced Direct Connect|ADC]] as well as the program <code>tthsum</code> use little-endian byte order, which is also preferred by one of the authors.<ref>{{cite web
The specification of Tiger does not define the way its output should be printed but only defines the result to be three ordered 64-bit integers. The "testtiger" program at the author's homepage was intended to allow easy testing of the test source code, rather than to define any particular print order. The protocols [[Direct Connect (protocol)|Direct Connect]] and [[Advanced Direct Connect|ADC]] as well as the program <code>tthsum</code> use little-endian byte order, which is also preferred by one of the authors.<ref>{{cite web
| url=https://metacpan.org/pod/distribution/Digest-Tiger/Tiger.pm#NOTE
| url=https://metacpan.org/pod/distribution/Digest-Tiger/Tiger.pm#NOTE
| title=Digest::Tiger Module
| title=Digest::Tiger Module
| publisher=[[CPAN]]
| publisher=[[CPAN]]
| accessdate=2017-03-03}}</ref>
| access-date=2017-03-03}}</ref>


==Examples==
==Examples==
In the example below, the 192-bit (24-byte) Tiger hashes are represented as 48 [[hexadecimal]] digits in little-endian byte order. The following demonstrates a 43-byte [[ASCII]] input and the corresponding Tiger hashes:
In the example below, the 192-bit (24-byte) Tiger hashes are represented as 48 [[hexadecimal]] digits in [[little-endian]] byte order. The following demonstrates a 43-byte [[ASCII]] input and the corresponding Tiger hashes:


Tiger("The quick brown fox jumps over the lazy {{Background color|#87CEEB|d}}og") =
Tiger("The quick brown fox jumps over the lazy {{Background color|#87CEEB|d}}og") =
Line 90: Line 91:
976abff8062a2e9dcea3a1ace966ed9c19cb85558b4976d8
976abff8062a2e9dcea3a1ace966ed9c19cb85558b4976d8


Even a small change in the message will (with very high probability) result in a completely different hash, e.g. changing <tt>d</tt> to <tt>c</tt>:
Even a small change in the message will (with very high probability) result in a completely different hash, e.g. changing {{mono|d}} to {{mono|c}}:
<!-- This sentence is confusing in context. It says 'changing d to c' but then both examples are of 'c'. Perhaps a '(compare to above values)' would be helpful? -->
<!-- This sentence is confusing in context. It says 'changing d to c' but then both examples are of 'c'. Perhaps a '(compare to above values)' would be helpful? -->


Line 115: Line 116:
| last2 = Vincent
| last2 = Vincent
| title = Cryptanalysis of the Tiger Hash Function
| title = Cryptanalysis of the Tiger Hash Function
| booktitle = ASIACRYPT 2007
| book-title = ASIACRYPT 2007
| pages = 536–550
| pages = 536–550
| publisher = Springer Berlin / Heidelberg
| publisher = Springer Berlin / Heidelberg
| doi = 10.1007/978-3-540-76900-2_33}}</ref> While MD5 processes its state with 64 simple 32-bit operations per 512-bit block and SHA-1 with 80, Tiger updates its state with a total of 144 such operations per 512-bit block, additionally strengthened by large S-box look-ups.
| doi = 10.1007/978-3-540-76900-2_33| doi-access = free
}}</ref> While MD5 processes its state with 64 simple 32-bit operations per 512-bit block and SHA-1 with 80, Tiger updates its state with a total of 144 such operations per 512-bit block, additionally strengthened by large S-box look-ups.


[[John Kelsey (cryptanalyst)|John Kelsey]] and [[Stefan Lucks]] have found a collision-finding attack on 16-round Tiger with a time complexity equivalent to about 2<sup>44</sup> compression function invocations and another attack that finds pseudo-near collisions in 20-round Tiger with work less than that of 2<sup>48</sup> compression function invocations.<ref name="reduced-round">{{cite paper
[[John Kelsey (cryptanalyst)|John Kelsey]] and [[Stefan Lucks]] have found a collision-finding attack on 16-round Tiger with a time complexity equivalent to about 2<sup>44</sup> compression function invocations and another attack that finds pseudo-near collisions in 20-round Tiger with work less than that of 2<sup>48</sup> compression function invocations.<ref name="reduced-round">{{cite journal
| url=http://th.informatik.uni-mannheim.de/People/Lucks/papers/Tiger_FSE_v10.pdf
| url=http://th.informatik.uni-mannheim.de/People/Lucks/papers/Tiger_FSE_v10.pdf
| title=Collisions and Near-Collisions for Reduced-Round Tiger
| title=Collisions and Near-Collisions for Reduced-Round Tiger
| authors=John Kelsey and Stefan Lucks
|author1=John Kelsey |author2=Stefan Lucks
| work=Fast Software Encryption 13
| journal=Fast Software Encryption 13
| location=[[Graz]]
| location=[[Graz]]
| year=2006
| year=2006
| archiveurl=https://web.archive.org/web/20160304042512/http://th.informatik.uni-mannheim.de/People/Lucks/papers/Tiger_FSE_v10.pdf
| archive-url=https://web.archive.org/web/20160304042512/http://th.informatik.uni-mannheim.de/People/Lucks/papers/Tiger_FSE_v10.pdf
| archivedate=2016-03-04
| archive-date=2016-03-04
| url-status=dead}}</ref> [[Florian Mendel]] et al. have improved upon these attacks by describing a collision attack spanning 19 rounds of Tiger, and a 22-round pseudo-near-collision attack. These attacks require a work effort equivalent to about 2<sup>62</sup> and 2<sup>44</sup> evaluations of the Tiger compression function, respectively.<ref>{{cite paper
}}</ref> Florian Mendel et al. have improved upon these attacks by describing a collision attack spanning 19 rounds of Tiger, and a 22-round pseudo-near-collision attack. These attacks require a work effort equivalent to about 2<sup>62</sup> and 2<sup>44</sup> evaluations of the Tiger compression function, respectively.<ref>{{cite journal
| url=https://online.tugraz.at/tug_online/voe_main2.getvolltext?pCurrPk=20716
| url=https://online.tugraz.at/tug_online/voe_main2.getvolltext?pCurrPk=20716
| title=Update on Tiger
| title=Update on Tiger
| authors=Florian Mendel, Bart Preneel, Vincent Rijmen, Hirotaka Yoshida, and Dai Watanabe
|author=Florian Mendel |author2=Bart Preneel |author3=Vincent Rijmen |author4=Hirotaka Yoshida |author5=Dai Watanabe
| work=[[Indocrypt]] 7
| journal=Indocrypt 7
| location=[[Kolkata]]
| location=[[Kolkata]]
| format=PDF
| format=PDF

Latest revision as of 14:47, 30 September 2023

Tiger
General
DesignersRoss Anderson and Eli Biham
First published1996
Detail
Digest sizes192, 128, 160
Rounds24

In cryptography, Tiger[1] is a cryptographic hash function designed by Ross Anderson and Eli Biham in 1995 for efficiency on 64-bit platforms. The size of a Tiger hash value is 192 bits. Truncated versions (known as Tiger/128 and Tiger/160) can be used for compatibility with protocols assuming a particular hash size. Unlike the SHA-2 family, no distinguishing initialization values are defined; they are simply prefixes of the full Tiger/192 hash value.

Tiger2[2] is a variant where the message is padded by first appending a byte with the hexadecimal value of 0x80 as in MD4, MD5 and SHA, rather than with the hexadecimal value of 0x01 as in the case of Tiger. The two variants are otherwise identical.

Algorithm

[edit]

Tiger is based on Merkle–Damgård construction. The one-way compression function operates on 64-bit words, maintaining 3 words of state and processing 8 words of data. There are 24 rounds, using a combination of operation mixing with XOR and addition/subtraction, rotates, and S-box lookups, and a fairly intricate key scheduling algorithm for deriving 24 round keys from the 8 input words.

Although fast in software, Tiger's large S-boxes (four S-boxes, each with 256 64-bit entries totaling 8 KiB) make implementations in hardware or microcontrollers difficult.[citation needed]

Usage

[edit]

Tiger is frequently used in Merkle hash tree form, where it is referred to as TTH (Tiger Tree Hash). TTH is used by many clients on the Direct Connect and Gnutella file sharing networks, and can optionally be included in the BitTorrent metafile [3] for better content availability.

Tiger was considered for inclusion in the OpenPGP standard, but was abandoned in favor of RIPEMD-160.[4][5]

OID

[edit]

RFC 2440 refers to TIGER as having no OID, whereas the GNU Coding Standards list TIGER as having OID 1.3.6.1.4.1.11591.12.2.[6] In the IPSEC subtree, HMAC-TIGER is assigned OID 1.3.6.1.5.5.8.1.3.[7] No OID for TTH has been announced yet.

Byte order

[edit]

The specification of Tiger does not define the way its output should be printed but only defines the result to be three ordered 64-bit integers. The "testtiger" program at the author's homepage was intended to allow easy testing of the test source code, rather than to define any particular print order. The protocols Direct Connect and ADC as well as the program tthsum use little-endian byte order, which is also preferred by one of the authors.[8]

Examples

[edit]

In the example below, the 192-bit (24-byte) Tiger hashes are represented as 48 hexadecimal digits in little-endian byte order. The following demonstrates a 43-byte ASCII input and the corresponding Tiger hashes:

Tiger("The quick brown fox jumps over the lazy dog") =
6d12a41e72e644f017b6f0e2f7b44c6285f06dd5d2c5b075

Tiger2("The quick brown fox jumps over the lazy dog") =
976abff8062a2e9dcea3a1ace966ed9c19cb85558b4976d8

Even a small change in the message will (with very high probability) result in a completely different hash, e.g. changing 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

The hash of the zero-length string is:

Tiger("") =
3293ac630c13f0245f92bbb1766e16167a4e58492dde73f3

Tiger2("") =
4441be75f6018773c206c22745374b924aa8313fef919f41

Cryptanalysis

[edit]

Unlike MD5 or SHA-0/1, there are no known effective attacks on the full 24-round Tiger[9] except for pseudo-near collision.[10] While MD5 processes its state with 64 simple 32-bit operations per 512-bit block and SHA-1 with 80, Tiger updates its state with a total of 144 such operations per 512-bit block, additionally strengthened by large S-box look-ups.

John Kelsey and Stefan Lucks have found a collision-finding attack on 16-round Tiger with a time complexity equivalent to about 244 compression function invocations and another attack that finds pseudo-near collisions in 20-round Tiger with work less than that of 248 compression function invocations.[9] Florian Mendel et al. have improved upon these attacks by describing a collision attack spanning 19 rounds of Tiger, and a 22-round pseudo-near-collision attack. These attacks require a work effort equivalent to about 262 and 244 evaluations of the Tiger compression function, respectively.[11]

See also

[edit]

References

[edit]
  1. ^ Ross Anderson and Eli Biham (1996-02-08). "Tiger: A Fast New Hash Function". Fast Software Encryption 3. Cambridge. Retrieved 2017-03-03.
  2. ^ "Tiger2 Test Vectors". Project NESSIE. 2005-02-25. Retrieved 2017-03-03.
  3. ^ Feit, Harold (2012-02-12). "P2P:Protocol:Specifications:Optional Hashes: TTH Root". Retrieved 2017-11-18.
  4. ^ Callas, Jon (2004-08-18). "Re: re-consideration of TIGER". Archived from the original on 2014-07-14.
  5. ^ Pornin, Thomas (2013-10-25). "How do you use the Tiger hash function with GPG?".
  6. ^ "Program Behavior for All Programs: OID Allocations". GNU. Retrieved 2017-11-18.
  7. ^ "Reference record for OID 1.3.6.1.5.5.8.1.3 – hmacTIGER". 1998-10-18. Retrieved 2017-11-18.
  8. ^ "Digest::Tiger Module". CPAN. Retrieved 2017-03-03.
  9. ^ a b John Kelsey; 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.
  10. ^ 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.
  11. ^ Florian Mendel; Bart Preneel; Vincent Rijmen; Hirotaka Yoshida; Dai Watanabe (2006). "Update on Tiger" (PDF). Indocrypt 7. Kolkata.
[edit]