Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Description of the cipher  



1.1  Key schedule  





1.2  Mix function  





1.3  Permute  





1.4  A full Threefish round  





1.5  Final operations  







2 Security  





3 See also  





4 References  














Threefish






Deutsch
עברית
Русский
Українська
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Threefish
General
DesignersBruce Schneier, Niels Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, Jesse Walker
First published2008
Related toBlowfish, Twofish
Cipher detail
Key sizes256, 512 or 1024 bits
(key size is equal to block size)
Block sizes256, 512 or 1024 bits
Rounds72 (80 for 1024-bit block size)
Speed6.1 cpbonCore 2.[1]
Best public cryptanalysis
In October 2010, an attack that combines rotational cryptanalysis with the rebound attack was published. The attack mounts a known-key distinguisher against 53 of 72 rounds in Threefish-256, and 57 of 72 rounds in Threefish-512. It also affects the Skein hash function.[2]

Threefish is a symmetric-key tweakable block cipher designed as part of the Skein hash function, an entry in the NIST hash function competition. Threefish uses no S-boxes or other table lookups in order to avoid cache timing attacks;[1] its nonlinearity comes from alternating additions with exclusive ORs. In that respect, it is similar to Salsa20, TEA, and the SHA-3 candidates CubeHash and BLAKE.

Threefish and the Skein hash function were designed by Bruce Schneier, Niels Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, and Jesse Walker.

Description of the cipher[edit]

Threefish works on words of 64 bits (unsigned Little endian integers). is the number of plaintext words and also of key words. The tweak consists of two words. All additions and subtractions are defined modulo .

Key schedule[edit]

Threefish encrypts in rounds and uses different round keys. After every four rounds, and before the first, round key words are added to the data words. To calculate the round keys an additional key word is appended to the original key words . Also, an additional tweak word is appended to the tweak words .

The purpose of the seemingly arbitrary constant is to frustrate some attacks that take advantage of the relationship between and the other keywords.

The round key words are now defined like this:

Here , where is the number of the round in which the round key word is used.

Mix function[edit]

Threefish Mix Function

The mix function takes a tuple of words and returns another tuple of words . The function is defined like this:

is a fixed set of rotation constants chosen to achieve quick diffusion.

Permute[edit]

The permutation step swaps the positions of the words according to a constant pattern. Bit-level permutation is not achieved in this step, but this is not necessary since the MIX functions provides bit-level permutations in the form of bitwise rotations.[citation needed] The Permute step and rotation constants in the MIX functions are chosen in such a way that the overall effect is complete diffusion of all the bits in a data block.[citation needed]

Because this permutation is fixed and independent of the key, the time needed to compute it does not provide information about the key or plaintext. This is important because on most modern microprocessors performance optimisations can make the time taken to compute an array operation dependent on where the data is stored in memory. In ciphers where array lookup depends on either the key or plaintext (as is the case for the substitution step in AES), it can make the cipher vulnerable to timing attacks by examining the time required for encryption. The permutation is therefore deliberately designed to ensure that it should execute in the same fashion independent of the key being used or the data encrypted.[citation needed]

A full Threefish round[edit]

Threefish256 and Threefish512 apply this round times (). Threefish1024 applies it 80 times ().

Final operations[edit]

After all rounds are applied, the last round key words are added to the words and the words are converted back to a string of bytes.

Security[edit]

In October 2010, an attack that combines rotational cryptanalysis with the rebound attack was published. The attack mounts a known-key distinguisher against 53 of 72 rounds in Threefish-256, and 57 of 72 rounds in Threefish-512. It also affects the Skein hash function.[2] This is a follow-up to the earlier attack published in February, which breaks 39 and 42 rounds respectively.[3] In response to this attack, the Skein team tweaked the rotation constants used in Threefish and thereby the key schedule constants for round 3 of the NIST hash function competition.[1]

In 2009, a related key boomerang attack against a reduced round Threefish version was published. For the 32-round version, the time complexity is and the memory complexity is ; for the 33-round version, the time complexity is with a negligible memory usage. The attacks also work against the tweaked version of Threefish: for the 32-round version, the time complexity is and the memory complexity is ; for the 33-round version, the time complexity is with a negligible memory usage.[4]

See also[edit]

References[edit]

  1. ^ a b c Ferguson, Niels; Lucks, Stefan; Schneier, Bruce; Whiting, Doug; Bellare, Mihir; Kohno, Tadayoshi; Callas, Jon; Walker, Jesse (October 1, 2010), The Skein Hash Function Family (PDF), archived from the original (PDF) on 2014-08-24 The paper in which Threefish was introduced.
  • ^ a b Khovratovich, Dmitry; Nikolic, Ivica; Rechberger, Christian (2014). "Rotational Rebound Attacks on Reduced Skein". Journal of Cryptology. 27 (3): 452–479. doi:10.1007/S00145-013-9150-0.
  • ^ Khovratovich, Dmitry; Nikolic, Ivica (2010). "Rotational Cryptanalysis of ARX". In Hong, Seokhie; Iwata, Tetsu (eds.). Fast Software Encryption, 17th International Workshop, FSE 2010, Seoul, Korea, February 7–10, 2010, Revised Selected Papers. Lecture Notes in Computer Science. Vol. 6147. Springer. pp. 333–346. doi:10.1007/978-3-642-13858-4_19.
  • ^ Chen, Jiazhe; Jia, Keting (2010). "Improved Related-Key Boomerang Attacks on Round-Reduced Threefish-512". In Kwak, Jin; Deng, Robert H.; Won, Yoojae; Wang, Guilin (eds.). Information Security, Practice and Experience, 6th International Conference, ISPEC 2010, Seoul, Korea, May 12–13, 2010. Proceedings. Lecture Notes in Computer Science. Vol. 6047. Springer. pp. 1–18. doi:10.1007/978-3-642-12827-1_1.

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Threefish&oldid=1225827667"

    Categories: 
    Block ciphers
    Free ciphers
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
    All articles with unsourced statements
    Articles with unsourced statements from November 2015
     



    This page was last edited on 26 May 2024, at 23:43 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki