Schneider B.Twofish.A 128-bit block cipher.1998
.pdf* *+ * * +$ * *
2 * + * + #$ #$* #7 2 + +#@ 4/A
$
+ 2 2+ #$ < * 2 #2 + 2 + 7 * *+ #$
0 * #$
|
#$ + * |
0 ' @0 |
'%%A 2 +# |
+ @9 4"A ' @ /%A#$ 2 + * ' + : #@R 7F.-A * *#$ ' 2 * $ #$ 2 @9 4 & 4%A& $2 +#$ @, A
* + + #$ H ' @ 4!A ' @ 4 A@& 4- 4. AH #
* # #$ |
+ H + |
||
9 , |
@, 4!A |
$ # |
|
|
+ - @8 4!A |
9 + @0 B4.A #@9 A ' #$
81 @81 /4A 2 *7 $ #$ *# + *
. .0 213 4
#$ 2 < + * 81 E !# #!# #$ E /# #-!# #$ @ 94-A 3 #$ * ** H 2 H+ ? * I ' E
-# #!# #$ ? "%- + 9 E + /# # "# #$ ? ! #< * * #< I /# #-!# #$ "-# #-# #$ ? "/= * 2 #+ * #$ #$ *< 2 < 2 2 $* I #$ Æ#2 <
2 + $# * @9 4%A >
* ? * # < #$ =/# #/# > #$ =/# # "# >
. ., 213 4
#$ |
' |
|
+ L |
J3 J @J3 J4/A |
2 |
|
3 31 |
= |
31 @9 4/ |
A> :' 0 |
2 # |
+ + * * *+ #2 + #$* * * * # * 01& 0 & +2
#$ #$
2 7 |
|
@& 45A |
|
3 @ |
4 |
4 A |
|
31 ) # 7 |
# |
+ * * ##$ @ 4% R4. &4/ A 9 #? 2#$ 2 #* + *
: /# #/# #$ * + * !# #!# #$ ) 2 !# #!# #$ * $2 #/# #/# #$? *# @ ;4/A
< ? < < ' ? ) ( <
/ B 2 ( ? ' ' 1 +5 )$ ? ' |
' ) @ ' |
$8 ( |
|
"
. ./ 1 213 4
#$ $ + #: + # #$ * $ #$
7 ##$ : * #$H + , *#
#$ * + 0 '1 :: @ ,4 A 9 @ 4!A* *= # 2 #+ 9 @; 4-A># #$ + * ##$ + * *9 *#' @994!A
& # #$ ** #3 + $* ) @ : 4 A# #$ 9 #+ + #$7 2 * # * + * # * 2 #$ + *#+ * * + *$2 < #*
2 7 = # 7 ## > ** #$ : +* # #$ +# + + #+ B 2 #$ *$ * 2 # B 2 + #@994% 0(4% 0('4. , A */# #/# #$ /# # "# #$ B 2
) 2 ##$ *$ * #+ #$ + * # #$ + +#= $*> , + <
$ " % & "
*E * ** 7 +$ *+
+ 2
* ? 2 C D@, 4% A
* 2 *
, ++ + ? 2 +# 2 #+ # #$* ' = +# 2 > 2 $ * #* * + * ' @ 4% A# @ 4%A # @, 4% A 2 * * #+# 7 @ A 2 + #
2 2 #@ ' 4/A : * +? +: * B' :' 31 * * #+ ? # * 0 1+ + ++ #* * 0 % # # += * *+> 9 @9 A :
@4.A
* * 2 # * + +
/ 2 # 1
. * (0 8 + I
0 @ ? ? , E $ $? * )$ 3 ) " (
""
+
* 2 : .E * *+ * * * 2+* + *+* + 2 * + :E2 + *
*
( , / 2 & .* =
* + >7 +# #$ # < + * + + *
6 ) , 213 4
2 3 . *2 # #$ # 2 + * 0 2* + &' *$ ' 2 * *$# * < Æ + * + #2 * G ? *#$ #
* + * +* * + * ++ * *2 * : #+ * 1 + *
* * +
*$* Æ 2 2 * * < * + ?* *
* C G D # 2 + *? * * #
* Æ + * *
* 2 * * +
:+ + * ** # + $##$+ 9 3 ) 2Æ ? * ** * #* * *
+ *2 #$ + ? 2 I ' #* # ? # I ' # * * #* ) 2* ,* 2 *+ $
- " '
+ * + *
|
+ |
|
|
* |
|
|
+ Æ |
*+(# * $ + + #
# $ $ ?? ( C ? ( ) )$ $( ) $( ( F ' )$ $( ) $( D 1$< %5 / $ $ ( ( ( $ $( $ $( Æ$ $ " )-"$ $ $ '
? ' ( $ $ |
2- $? $G $ ) ( " |
)-"$ $ 1J<<+3 2 B +5 ) ( " " $ ? )-"$ $ |
|
$ $) ( ? ( |
|
# "$ "$ $ ) -.$' < |
, E |
"
- " % & +
+ * * + |
+ |
+ # #$ |
* 2 2# |
|
|
+ 7 #$ 7 * + 7 #+
* #$C D + 2 #7 #+ 2 2 *
+ +
* #$ 2 + #$ 7 #$ : + + $# * 7 #$
" * '(*$ 3(*$ #* + 2+ * *#2 + # +1 $ * '(*$
5 "%- 3(*$ - + $
B 2 44 / + # * * + 2 #( + * *2 =" " > *#2 * * * #E #$
" " + 22 + + + +( * * *
'(*$ K 5 "%- 3(*$ K -I "$ " $
". . + 4 " "
* + " " + * !# * = ! %>* *+ * * * # 2 : + 2$# *# #$+ : 2 + " " #2 =$ * # # > +** 2 * + /# * + " " 2 * #= * 2 2 2 8 =" >> 2 2 * #* 2 * +* #$ * " "
" " * ** !# * ( ( ( ( + 6 + & @& 4-A
'(*$="> K *$ ( @"= > "= > K A
3(*$="> K *$ " ( @ K "= > A
"!
". . 213 4
#$ +
+ * |
< |
+ + "/# |
|
= > |
K |
" @" @" @ A A A |
= > |
K |
" @" @" @ A A A |
= > |
K |
" @" @" @ A A A |
= > |
K |
" @" @" @ A A A |
2 + *0 *$ ?
+ #$ ? ,K 5 = > K " @ =" @ A>A
* #$ , 2+ *" " 2 # 7 #
: * * * ' 7 + =" " > $ $ 7 , + + ** *
"/# 2 $* 2/# * #* $*+ "/# #$ - + * + " *
+, 2 $2B #$, B+ * + " " * 2
". . 54 : 2 ,
8 2 $ * " " +#+ + * * 2 + * $2 ++ # #$ :"/# + *$2 + #$- + * : * 2 = & >+ < : :* $2 2 * + < + #+ 2 + +
! '(*$ + 2 #< $ + + # * + = > $< #& * +$2 $* !"%-# * I"/# 4"# 2 2 $2*$* * 2 + * * *$* * + "/# #$ '(*$ 2/ "%- * * 2+ 2 '(*$ 2$ 2 #" * + + + #$ 2 2 = 2 > 2+ $* K "/+ 2 " # #$
'(*$ K / "%- 2 + = " > 2 '(*$ K " "%- 2+ #$ = > + ! "
= "%- #$ 2 + "/#& * 2 2" #$ * *
% + 3(*$ + 2 < 1 2 2 * B
"%
+ #$ 2 3(*$ # =// "%->* + + #$
2 "/# #$3(*$ 2 = 55 "%->*$* * 2 * +< & 2 +< * + * 3(*$ + + ++ '(*$
+ * + * $+ 2 < 2 -$ + #$ 2 +K = > * 2) 2+ 2 + #$ 2 * * #$ * + $
+ * #$ |
+ * |
#$ 2 |
= # |
+ $ $* ) Q >#$ + $ 2
* +
* + 2 + 2 +* + # #$ B + #$* * + #$ 2 2 +# + 2 #$ + *+ 2 + ##* + * #$ ' + #$ # += > + #$$ 2 + # 2 #$* $ /# * "@ A 2 '(*$ 3(*$ 2 ## + * + #$ * = > K "@ A :* # 2 * + *2 7? +# + 2
#$ +*
: + # # * * + * * < 7 2 & ' #$* & ' * 2 * + 7
|
|
|
|
|
|
=( ='(*$ K "%->> |
|
|
||||
< |
&$ ; |
|
K / |
K 5 |
K " |
K ! |
K - |
K / |
K "5 |
K "" |
K "! |
|
"/ |
/ "%- |
|
% ! |
|
5 4 |
|
! |
/ 5 |
" 5 |
|
|
|
4" |
"! "%- |
|
% " |
|
5 4 |
|
! |
/ 5 |
" " |
-% |
"5 / |
"% 5 |
"%- |
"" "%- |
|
% |
|
5 4 |
|
! |
/ 5 |
" " |
-. |
"" 5 |
|
|
|
|
|
|
|
|
|
|
! '(*$ 2 |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=( =3(*$ K = "%-> >> |
|
|
|
|
|
|
||||||||||
|
|
< |
&$ ; |
K |
|
%- - |
|
-! . |
." .4 |
/5 /. |
// 4% |
4-5 |
5! |
|
|
|||||||||||||
|
|
"/ |
= 55 "%-> |
|
|
4 |
|
5 |
|
" |
|
! " |
|
|
/ 5 |
|
" ! |
|
|
|
|
|
|
|||||
|
|
4" |
= 5! "%-> |
|
|
4 |
|
5 |
|
" |
|
! " |
|
|
/ " |
|
" " |
|
|
. 5 |
|
|
||||||
|
|
"%- |
= 5/ "%-> |
|
|
4 ! |
|
5 |
|
" |
|
! " |
|
|
/ |
|
" % |
|
|
. ! |
|
|
||||||
|
|
|
|
|
|
|
|
|
% 3(*$ 2 |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
=( =V $ K >> |
|
|
|
|
|
|
||||||||||
< |
|
|
&$ ; |
|
K 5 |
K |
K " |
K |
K ! |
K % |
K - |
K . |
K / |
K 4 |
K 5 |
|||||||||||||
"/ |
|
|
/ |
|
|
! |
|
! |
|
" ! |
|
! |
|
-5 |
|
/ " |
|
|
! |
|
. 5 |
|
|
|
|
|||
4" |
|
|
5 |
|
|
! |
|
! |
|
" ! |
|
! 5 |
|
-5 |
|
/ ! |
|
5 4 |
/ |
|
-/ |
|
4 / |
|
" ! |
|||
"%- |
|
5 |
|
|
! |
|
! |
|
" ! |
|
! 5 |
|
-5 |
|
/ ! |
|
5 4 |
. |
|
-/ |
|
" 5 |
|
" 5 |
||||
* |
|
|
|
|
|
! |
|
! |
|
" ! |
|
! 5 |
|
-5 |
|
/ |
|
5 4 |
. |
|
-. |
|
4 4 |
|
" " |
- * + $ 2
+ & = ' >7 #$ + *#
* # 2 2 + & $ 7+ 7 , +& * 7 + + #$ 3 #? + #$ ? & ? +7 ? K$* "/# - +* #$ " ++ #$ "7 ? + "5 ,+ 2 C D + # 2 ? 2 ? U :+ *"5 # *? + & 2 2 + + # #$ * ? $ - + + * + #$ "/#2 *
"-
+ 2 7 ? 2
. + +* 7 + 2 * ? $#( = K > " * ? # 2 2 :+ B 7* 2 2 $# *
/ + * *7 : + ?+ 2 7 ** C* D#'(*$ * 2"5 2 = 5 " ! /> ? * *$* * * + ? 7 + "5 2 :* Æ? 2 + #+ + 7 U 2 $* Æ#+ * 2 $ 7 G + & ? * < 7
|
|
|
|
|
|
|
|
=( = K >> |
|
||||
|
|
< |
&$ ; |
|
K |
K " |
K |
K ! |
K % |
|
|||
|
"/ |
% |
|
5 5 |
. 4/ |
% 4% |
" /4 |
5 55 |
|
||||
|
4" |
! |
|
5 5 |
. 4/ |
% 4 |
"-4 |
|
|
||||
|
"%- |
% |
|
5 5 |
. 4/ |
% 4 |
"! 5" |
5 "4 |
|
||||
|
|
|
|
. 7 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=( =*$ V ? 7 K >> |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
< |
|
|
&$ ; |
|
K |
K " |
K |
K ! |
K ! |
K - |
K . |
||
"/ |
|
. |
|
|
|
|
5 4 |
% 4 |
- |
.- |
" 4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4" |
|
. |
|
|
|
|
5 4 |
% 4 |
. |
. / |
" 4 |
"4 5 |
|
"%- |
|
. |
|
|
|
|
5 4 |
% 4 |
. |
. . |
" / |
"4 |
/ C& D#'(*$
2 * * #* /# *+ + *$* '(*$ * + + " * * #+ '(*$ 2 * + # #$ * 2 #+ + # #$ $ + * G #+$ * *+ + + * #? * <* + + * ##$ 2 * + *
-
+ + * + #$ * #!# #! &' *$ 2 8 =" > *$ * 7 * *&'* + * + 2 :#+
|
& " &' |
* $ |
&' *$ |
+ + 2 * + 2 ++
&' *$ $ Æ#
".
: * 2 * #*$ + # * ? 2 #2 + + * &' *$# 2 * ) 2* &' * 2 $
+ * * * * #&' *$ * * * # * + + "%- "# Æ*$ 7 + * ) 2 + * C * D Æ#? @' A * * * #+ 6 &' *$? 2 * #$ + +? * *$ #*$
) 2 + +
+ #&' *$ + 2 +# + 2 ++ +2 &'() F"+ + () :* + C D + + () &' + + +* "%! "%% ++
7 + + () #&' *$ +7 + #+ :+2 7 + + * *$ * + * "#+ + * $ "# + #< &' *$ Æ + #+ 7 + **$ *$ 2+ + G + G + * $
2 +#2 ** + #< * + 8 =" >+ + K = > #1 2 G$2 I+ K K :2 2 = * 2 >* * # + +Æ + *2 .%P + !# #! * 2 8 =" >&' + *$
* $ 2 * 2 * + + + C * D * $< 2 * $ * + #* * + + 2 < + 2 #+ + 2 &'
*$ 2 * 2 # * = > K F F F F
* %9 = #$ * 2 + !> ** F * F * + = >%9 * F * # * + 3 0 + * = >+
* * + * : + &' * #$ $ * 5"5 &' 7 + #+ * 2 #+ 2-"- 2 + #7 + "# '7 #? + * 7& ?
* &' ** %9*$ *$* < * * * ) ** + +# + 2 # 7&' *$ #) ** 7 + + 7 : + . + 5"5 # 77 ) ** 7 I * 5 7 ) ** + 2 #) ** / ** +# + 2 () * F " + 5 4 +5"5 # 7 : #7 7 ) ** 7 + #5 5555 /I +# + ) ** +7 5 55 "%=5 55 %> +
* *
) ** |
* + |
* |
, |
|
& 9 |
/ |
.L 5"5 |
|
4 |
" L 5"5 |
! |
5 |
!"L 5"5 |
% |
* &' |
* &' * |
*$ = * > + *$ |
* + * * |
+ = * > + *$ |
* * * * ) ** |
# |
7 *$ # |
7 ? 7 2 |
2 + * * * ) ** |
2 / |
+ + * * |
# |
* |
|
"/ |
: + 2 *$ * * * * ** *
: 2 7 +2 &' #6 + /# #/ &' *$ 2 8 =" > !# #+ 2 9# # * + #< + +* #: +2 &' 2 + * # 6 + /# #/ &' * 2 8 =" > + !# #! * 2 8 =" > 2 #+ * 2 * Æ
+ *$ *$ 0 #= % .> 2 8 =" > ? * * * * *$ 9 +/# #/ &' *$ 2 8 =" >
+ * &' * #$ 2 8 ="> ++ +
-
() ++ 2 + #( * (6 + * 3 = 7 2 > 3+ + = " ! /> 2 + "##( *+ * 2 +C * D + 223 * #? + * * ++ 2 +
: + ! # #$ !# #! &' *$ () 2 / # #$ /# #/ &' *$ 2 8 =" > 2* 2 * *
"4
- % & .
2* () 2* + * ( * (6 + * *
2( * + + * + #:+ * * 2 #$ # + * + 1 * #+ 2 * <
- $ , # (+
* +* + *# I * Æ+ , #= &'! @0 24 A &'% @0 24"A 0:( &'#-5 @'9(4-A ) @ : 4 A> * * #* + 3 ? = ' ; @ ' 4%A> , * * *@ A *$
- - / 0 1 +
9 ++ /# #/ #$ &' *$ ##8 ="># * +&' *$ * " 8 ="> = > , #$ 2 2 + /# #/ *+ #++ 2 #* $ + ()*
+ + * *
-2 0 " '
* B * * + 2 7 #+ &' * #$ * ++ = > * () + * 7 "#
? + + () 2 2#? F " * +#+ ** $+ + *2: * + () 2 #< 7 #"%! "%% 2 # 7
,
|
+ . / + |
|
+ |
|
|
+ () * 2 7 #$* *7 + 55555 /5 555555/5+ G* + 2
-3 ( '
, + "#+1 ++ # 2 ** + * + 9"# ? + + # *
+#+ #$ &' *$ #+ * * #*$* ? /# #/# *&' *$ + + *
+ + ? 2 * # + + * + + * $ 0E
@4% A
* + #+ + "#+ +0* < + * ( *
(6 = ( * ( #+ * # > *(6 = 2 * #> 3 * #* * < 2 #+ $ * #
* + * *#= .P ( *> +$ * # ** #* 7 #? +:+ * 2 C 2 D* < #+ 7 #: * * ? + * 2 #$ ? * * 1 * + <* 2 ** # #2 * +1 2
2
: 2 # #* * $ B + * + 2 + +$ * *
2 +() &' *$2 &' 7 +7 : +#+ ()
&' *$ "#2 ++ + "# + 7+ 2 #) 2+ ? # 2 2 F " " ? #$ *+ 2 77 +
5