Imagine the following situation:
- you have a tweakable block cipher
- you have a plain text block
- you have a cipher text block
- you have the key which was used to encrypt the plain text block
I have these questions to it:
- Is there a way to determine the tweak which was used? (a method which is significantly faster than brute forcing)
- Is a tweakable cipher considered more secure if there is no fast method to do that?
- Is any tweakable block cipher explicitly protected against that?
My concrete case is the following: I wrote an implementation of threefish in python. To check if I did sth wrong, I looked for test vectors in the internet. Every vector worked, except one. The difference between this vector and a previous example on the same page was only the tweak (to show that changing the tweak leads to another cipher block). So I wanted to know if there might be a fast way to calculate the tweak they actually used. Though this is very specific to threefish, I was curious if this might be a general design goal of tweakable ciphers.