| ²é¿´: 615 | »Ø¸´: 1 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
[תÌù]Twofish¼ÓÃÜËã·¨Ïê½â
|
||
|
CONTENT: Õ⼸Ìì·ÖÎöÒ»Èí¼þ£¬·¢ÏÖÆäÐòÁкÅÓõ½ÁËTwofish ¼ÓÃÜËã·¨£¬ÉÏÍøÕÒÁ˺ܾà ¶¼Ã»ÓÐÕÒµ½ÏàÓ¦µÄÖÐÎÄ×ÊÁÏ£¬ÓÚÊǾö¶¨µÈÎÒÑо¿Ã÷°×Ö®ºóдһƪÎĵµ£¬ÒԱ㠸ø½ñºóÐèҪʹÓÃTwofish µÄÈËÒԲο¼£¬ÏÂÃæ½øÈëÕýÌâ¡£ Ê×ÏȽéÉÜÒ»ÏÂTwofish µÄÀúÊ·£¬Èç¹ûÄúÖ»ÏëÁ˽âÈçºÎÔËÓôËËã·¨£¬ÇëÖ± ½ÓÌøµ½ÏÂÒ»¶Î¡£ÔÚ1972µ½1974ÄêÖУ¬National Bureau of Standards (ÏÖÔÚ ¸üÃûΪNational Institute of Standards and Tecnology£¬ËõдΪNIST)Ê× ´Î¹«¿ªÕ÷ÇóÒ»ÖÖ±ê×¼µÄÊý¾Ý¼ÓÃÜËã·¨£¬½á¹û²úÉúÁË DES ( Data Encryption Standard) ¼ÓÃÜËã·¨¡£µ«DES µÄÃÜÔ¿³¤¶È¶ÔÓÚÏÖÔÚ¼ÆËã»úµÄÔËÐÐËÙ¶ÈÀ´Ëµ£¬ ÔÚijЩ¸ß»úÃܵij¡ºÏÏÔµÃÓе㲻×㣬ÒѾ²»ÔÙ°²È«¡£ËùÒÔ1999ÄêNIST¾ö¶¨²É ÓÃÒ»ÖÖ¸ü¸ß±ê×¼µÄ¼ÓÃÜËã·¨AES (Advanced Encryption Standard)À´´úÌæÔ À´µÄDES¡£Ê×ÏÈÕâÖÖ¼ÓÃÜËã·¨±ØÐëÊÇ¿é¼ÓÃÜ (block cipher)£¬ÒòΪ¿é¼ÓÃÜ¿É ÒÔ±»ÓÃÀ´¶ÔÊý¾ÝÁ÷½øÐмÓÃÜ£¬Ò²¿ÉÒÔ±»ÓÃÀ´ÖÆÔìһЩרÓõÄÊý¾Ý¼ÓÃÜÉ豸¡£ Æä´Î£¬ÕâÖÖ¼ÓÃÜËã·¨±ØÐëʹÓøü³¤µÄÃÜÔ¿£¬¸ü´óµÄ¼ÓÃܿ飬¸ü¸ßµÄ¼ÓÃÜËÙ¶È£¬ ¸ü¸ßµÄÁé»îÐÔ¡£Twofish ÔòÊÇcounterpane ¹«Ë¾ÏòNISTÌá½»µÄÒ»ÖÖÂú×ãAES ÒªÇóµÄ¼ÓÃÜËã·¨¡£Twofish ²ÉÓÃ128λÊý¾Ý¿é(128 bits block)£¬128- 192- 256-bit ¿É±ä³¤¶ÈÃÜÔ¿¡£Twofish Ëã·¨ÊǽøÈëNISTµÚ¶þÂÖ 5ÖÖ¼ÓÃÜËã·¨ÖÐµÄ Ò»ÖÖ¡£ÏÂÃæ·Ö²½Ïêϸ½²½âÈçºÎʹÓÃTwofish ¼ÓÃÜËã·¨¡£ ÏÖÔÚÍøÉÏÄÜÕÒµ½µÄ´ó²¿·ÖTwofish µÄÔ´³ÌÐò¶¼ÊÇÍâ¹úÈËдµÄ£¬»¹¿ÉÒÔÕÒ µ½ÓÐһЩ Twofish SDK¡£µ«ËüÃÇÆÕ±é´úÂëÅÓ´ó£¬Ê¹ÓÃÆðÀ´¶¼²»Ì«·½±ã£¬²»Èç ¸ù¾Ý×Ô¼ºµÄÐèÒª£¬×Ô¼ºÐ´Ò»¸ö´úÂë¡£ÎÒдÁËÒ»¸ö¿ÉÒÔÓÃTwofish ½øÐмÓÃܽâ ÃܵĴúÂ룬²Å²»¹ý 400ÐУ¬ËùÒÔÔÚ¿´ÏÂÃæµÄÎÄÕÂ֮ǰ£¬ÄãÊ×ÏÈÒª¶Ô×Ô¼ºÓÐÐÅ ÐÄ£¬ÒòΪÆäÖÐÓõ½ÁËһЩÊýѧ֪ʶ¡£ÄãÒ²¿ÉÒԲο¼Twofish µÄ¹Ù·½Îĵµ£º http://www.counterpane.com/twofish.html ÆäÖÐ paper-twofish-paper.pdf ÓÐ 68Ò³£¬È«Ó¢ÎÄ£¬»¹²»Èç¿´ÎÒÕâÆªÎÄÕÂÀ´ µÄ¿ì£¬ºÇºÇ£¬²»¹ýÄã¿ÉÒÔ°ÑËüÓë±¾ÎÄ»¥Ïà²ÎÕÕ×Å¿´¡£ Twofish ¼ÓÃÜËã·¨µÄÁ÷³ÌͼÈçÏ£º ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ P (128 bits) ©¦ ©¸©Ð©¤©¤©¤©Ð©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©Ð©¤©¤©¤©Ð©¼ ©¦ ©¦ ©¦ ©¦ ¡Ñ¡ûK0 ¡Ñ¡ûK1 <- input whitening -> K2¡ú¡Ñ K3¡ú¡Ñ ©¦ ©¦ ©¦ ©¦ ©¦ ©¦©°©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©´ ©¦ ©¦ ©¦ ©¦©ªF ©ª ©¦ ©¦ ©¦ ©¦©ª©°©¨©¨©¨©¨©¨©¨©¨©¨©¨©´ ©ª ©¦ <<1©¦ ©¦ ©¦©ª©ªg ©ª K(2r+8)©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©°©¤©´©ª ©¦©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©°S-box0->©¦ ©¦©ª©°©¨©¨©¨©´ ©¦©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©ÀS-box1->©¦M ©¦©ª©ª PHT ©ª ¡ý©ª ¡ý ©¦ ©À©¤©¤©¤©à©à©à¡ú©¦ ©¦D ©À©à©à¡ú¡Ñ©Ð©à¡ú¡Ñ©à¡ú¡Ñ ©¦ ©¦ ©¦©ª©ª ©ÀS-box2->©¦S ©¦©ª©ª ¡ü©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©¸S-box3->©¦ ©¦©ª©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©¸©¤©¼©ª©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©¸©¨©¨©¨©¨©¨©¨©¨©¨©¨©¼©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©°©¨©¨©¨©¨©¨©¨©¨©¨©¨©´©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ªg ©ª©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©°©¤©´©ª©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©°S-box0->©¦ ©¦©ª©ª ©¦©¦©ª ©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©ÀS-box1->©¦M ©¦©ª©ª ©¦©¦©ª ©ª ©¦ ¡ý ©¦ <<8©À©à©à¡ú©¦ ©¦D ©À©à©à©¤©Ø¡Ñ©à¡ú¡Ñ©à©¤©à©¤©¤¡ú¡Ñ ©¦ ©¦©ª©ª ©ÀS-box2->©¦S ©¦©ª©ª ©ª ¡ü©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©¸S-box3->©¦ ©¦©ª©¸©¨©¨©¨©¼ ©¦©ª ©¦ ©¦ ©¦ ©¦©ª©ª ©¸©¤©¼©ª ©¦©ª ©¦ ©¦ ©¦ ©¦©ª©¸©¨©¨©¨©¨©¨©¨©¨©¨©¨©¼ K(2r+9)©ª ©¦ ©¦ ©¦ ©¦©¸©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¨©¼ ©¦>>1 ©¦ ©¦ ©¦ ©¦ ©¦ ©¦ ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©°©¤©¤©¤©¤©¤©¤©¤©¤©¼ ©¦ ©¦ ¨v ¨u ©¦ ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ¨w ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼ ¨w ¨w ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼ ¨w ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ ... ... 15 more rounds ... ... ©¦ ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©°©¤©¤©¤©¤©¤©¤©¤©¤©¼ ©¦ ©¦ ¨v ¨u ©¦ ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ¨w ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼ ¨w ¨w ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼ ¨w ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ ¡ý ¡ý ¡ý ¡ý ¡Ñ¡ûK4 ¡Ñ¡ûK5 <- output whitening -> K6¡ú¡Ñ ¡úK7¡Ñ ¡ý ¡ý ¡ý ¡ý ©°©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©´ ©¦ C (128 bits) ©¦ ©¸©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¼ ÔõôÑù£¿¿´ÍêÖ®ºóÓеãÔÎÁ˰ɣ¿ÀïÃæÓкܶàÓ¢ÎĵÄÊõÓÎÒ²»ÖªµÀ¶ÔÓ¦ µÄÖÐÎÄÔõô˵£¬ËùÒÔË÷ÐÔÏÂÃæµÄÊõÓï¾ÍÖ±½Ó¶¼ÓÃÓ¢ÎĵĺÃÁË¡£ÔÚ½²½âÿһ²½ ¾ßÌåÈçºÎ¼ÆËã֮ǰÎÒÃÇÏÈ×öһЩ׼±¸¹¤×÷£¬ËµÃ÷Ò»ÏÂÆäÖÐ×Öĸ¸÷´ú±íʲô¡£ ÆäÖпªÊ¼´¦ P(plain text)±íʾÐèÒª½øÐмÓÃÜµÄ 128-bitÊý¾Ý£¬Ò²¼´16×Ö½Ú¡£ È»ºó½«Õâ16×Ö½Ú·ÖΪ 4×飬ÿ×é32-bit£¬¼´ 4×Ö½Ú¡£ÔÚÑ»·Ö®Ç°Ê×ÏȶÔÕâ 4 ×éÊý¾Ý·Ö±ðÓÃK0 K1 K2 K3½øÐÐÒì»ò²Ù×÷£¬³ÆÖ®Îªinput whitening£¬È»ºó¶Ô Òì»òºóµÄÊý¾Ý·Ö×é½øÐмÆËã¡£¼ÆËãºó½« 1-3 2-4×éµÄÊý¾Ý¶Ô»»£¬Èç´ËÑ»·15 ´Î£¬ÔÙ 1-3 2-4¶Ô»»Ò»´Î¡£¶ÔÕâ 4×éÊý¾Ý·Ö±ðÓà K4 K5 K6 K7Òì»ò²Ù×÷£¬³Æ ֮Ϊ output whitening¡£×îºó½«Õâ 4×éÊý¾Ý×éºÏ³É 16×Ö½ÚµÄÊý¾Ý£¬Ò²¾ÍÊÇ ×îºóµÄÃÜÎÄ C(cipher text)£¬³¤¶È¸ú¼ÓÃÜǰµÄ PͬÑùÊÇ128-bit¡£ÏÂÃæÏêϸ ˵Ã÷ÿһ¼ÆËã²½Öè¡£ 1.¼ÆËãǰµÄ×¼±¸¹¤×÷ ¼ÓÃÜǰµÄplain textÊÇ128 bits£¬Ò²¾ÍÊÇ16 bytes¡£¼ÙÉèÕâ16 bytes·Ö ±ðÊÇp0, ... ,p15¡£ÓÃlittle-endian conversion (Èç¹ûÄã²»Ã÷°×£¬¿ÉÒԲΠ¿´ÎÒµÄblogÖеĵÄһƪÏà¹ØÎÄÕÂ)£¬½«p0, ... ,p15·ÖΪ 4×飺 P(i) = ¡Æp(4i+j)2^(8j)£¬ÆäÖÐi,j = 0, ... ,3 2.Input whitening R(0,i) = P(i) xor K(i)£¬ÆäÖÐi = 0, ... ,3 ÕâÀïµÄK(i)ÊǸú¾ÝÃÜÔ¿Ëã³öÀ´µÄ32-bitÊý¾Ý£¬¼ÆËã·½·¨ºóÃæ½éÉÜ¡£ 3.16´ÎÑ»· ÔÚ16´ÎÑ»·µÄÿһ´ÎÖУ¬ 4×éÊý¾ÝµÄǰÁ½×éÓ뵱ǰѻ·´ÎÊýͨ¹ý F½øÐÐ ¼ÆË㣬¼ÆËã³ö 2×éÊý¾Ý¡£µÚ 3×éÊý¾ÝÓë¼ÆËã³öµÄµÚ 1×éÊý¾ÝÒì»ò£¬È»ºóÏòÓÒ Ñ»·Òƶ¯Ò»Î»¡£µÚ 4×éÊý¾ÝÏò×óÑ»·Òƶ¯Ò»Î»£¬È»ºóÒì»ò¼ÆËã³öµÄµÚ 2×éÊý ¾Ý¡£È»ºó½« 1-3 2-4×éÊý¾Ý¶Ô»»£¬×÷ΪÏÂÒ»ÂÖ¼ÆËãµÄÊý¾Ý¡£³ÌÐò±íʾÈçÏ£º (F(r,0), F(r,1)) = F(R(r,0), R(r,1), r) R(r+1,0) = ROR(R(r,2) xor F(r,0), 1) R(r+1,1) = ROL(R(r,3), 1) xor F(r,1) R(r+1,2) = R(r,0) R(r+1,3) = R(r,1) 4.Output whitening C(i) = R(16,(i+2) mod 4) xor K(i+4)£¬ÆäÖÐi = 0, ... ,3 ÕâÀïµÄK(i+4)ͬÑùÊǸù¾ÝÃÜÔ¿¼ÆËã³öÀ´µÄ32-bitÊý¾Ý£¬Ä¿Ç°ÎªÖ¹×ܹ²ÓÐ K(i) i = 0, ... ,7 5.¼ÆËãºó×é³ÉÃÜÎÄ c(i) = [C(i/4) / 2^(8(i mod 4))] mod 2^8£¬ÆäÖÐi = 0, ... ,15 ÕâÑù£¬128-bitµÄC¾Í¼ÆËã³öÀ´ÁË¡£ Ç°ÃæµÄK(i)ºÍº¯Êý F»¹Ã»ÓÐ˵Ã÷£¬ÏÂÃæÏȽéÉܺ¯Êý F¡£ 1. The Function F (F0, F1) = F(R0, R1, r) ÆäÖвÎÊýR0, R1ÊÇ32-bit Êý¾Ý£¬r±íʾµ±Ç°Ñ»·µÄ´ÎÊý£¬T0£¬T1ÊǼÆËã ³öµÄ½á¹û£¬Í¬Ñù¶¼ÊÇ32-bit µÄÊý¾Ý¡£ T0 = g(R0) T1 = g(ROL(R1, 8)) F0 = (T0 + T1 + K(2r+8)) mod 2^32 F1 = (T0 + 2T1 + K(2r+9)) mod 2^32 ÆäÖкóÁ½²½¼ÆËã±»³ÆÎª PHT(Pseudo-Hadamard Transforms)¡£ ÕâÀïK(i) i = 8, ... 39£¬¼ÓÉÏÇ°ÃæµÄi = 0, ... ,7£¬ËùÒÔ×ܹ²ÓÐ40¸öK K(i) i = 0, ... ,39 ÎÒÃÇÈÔÈ»ÏȲ»½²ÈçºÎ¼ÆËãK£¬¶øÏȽéÉܺ¯Êý g¡£ 2. The Function g Z = g(X) º¯Êý gÊÇTwofish Ëã·¨µÄºËÐÄ£¬Ò²ÊDZȽÏÄÑÀí½âµÄÒ»²¿·Ö¡£ÆäÖвÎÊý X Óë¼ÆËã½á¹û Z¶¼ÊÇ32-bitµÄÊý¾Ý¡£ x(i) = [X/2^(8i)] mod 2^8£¬ÆäÖÐi = 0, ... ,3 y(i) = s(i)(x(i)) £¬ÆäÖÐi = 0, ... ,3 ©° ©´ ©° ©´ ©° ©´ ©¦z0©¦ ©¦ ©¦ ©¦y0©¦ ©¦z1©¦= ©¦MDS©¦¡¤©¦y1©¦ ©¦z2©¦ ©¦ ©¦ ©¦y2©¦ ©¦z3©¦ ©¦ ©¦ ©¦y3©¦ ©¸ ©¼ ©¸ ©¼ ©¸ ©¼ Z = ¡Æz(i)2^(8i)£¬ÆäÖÐi = 0, ... ,3 Ê×ÏȽ«32-bitµÄ²ÎÊý X·ÖΪ 4¸ö×Ö½Úx0, ... ,x4£¬È»ºóÿһ¸öx(i) ·Ö ±ð½øÈë×Ô¼ºµÄS-box£¬ÆäÖÐÿһ¸öS-box ¶¼ÊÇ8-bitÊäÈ룬 8-bitÊä³ö¡£ÕâÑù ¼ÆËã³öÀ´µÄ y(i)ÈÔÈ»ÊÇ 8-bit£¬×é³ÉÒ»¸ö4 * 1µÄÁÐÏòÁ¿£¬Õâ¸öÏòÁ¿Ó붨Òå ÔÚGF(2^8)ÉϵÄ4*4 MDS¾ØÕóÏà³Ë£¬µÃµ½ 4*1µÄÁÐÏòÁ¿¡£×îºó½«Õâ¸öÁÐÏòÁ¿ÖÐ µÄËĸöÔªËØ×é³É32-bitÊý¾Ý Z¡£ÆäÖÐ MDS¾ØÕóΪ£º ©° ©´ ©¦01 EF 5B 5B©¦ MDS = ©¦5B EF EF 01©¦ ©¦EF 5B 01 EF©¦ ©¦EF 01 EF 5B©¦ ©¸ ©¼ ΪÁËÊý¾ÝµÄ¼ÆË㣬»¹±ØÐëÃ÷È·¶¨ÒåGF£¬¶ÔÓÚMDS ¾ØÕó£¬GFµÄ¶¨ÒåÈçÏ£º GF(2^8) ¡Ô GF(2)(x)/v(x)£¬ÆäÖÐv(x) = x^8 + x^6 + x^5 + x^3 + 1 ÓÖ²»Ì«Ã÷°×Á˰ɣ¿ÉÏÃæ²»Ì«ÈÝÒ×Àí½âµÄµØ·½ÓÐÁ½´¦£¬Ò»¸öÊÇ S-boxes£¬Ò»¸ö ÊÇÔÚÓÐÏÞÓòGFÉÏÈçºÎ½øÐмÆËã¡£¶ÔÓÚǰһ¸öÎÊÌ⣬ÎÒÃǽ«»áÔÚÏÂÃæ½øÐнéÉÜ£¬ ¶ÔÓÚºóÒ»¸öÎÊÌ⣬ÎÒ½«»áרÃÅдһƪÔÚÓÐÏÞÓòÉϽøÐмÆËãµÄÎÄÕ£¬Èç¹ûÄã¸Ð ÐËȤ¿ÉÒÔÈ¥ÎÒµÄblog¡£ ÎÒÃÇÔÙ×ܽáһϰɣ¬Ä¿Ç°»¹ÓÐÄÄЩÎÊÌâûÓнâ¾ö£º K(i)£¬i = 0, ... ,39 s(i)()£¬i = 0, ... ,3 ÒÔÉÏÕâÁ½×éÊý¾Ý¶¼ÊÇͨ¹ýÃÜÔ¿¼ÆËã³öÀ´µÄ (key-dependent)£¬ËùÒÔÏÂÃæÎÒÃÇ ¸Ã½éÉÜÒ»ÏÂÃÜÔ¿ÁË¡£ 3. The Key Schedual ÔÚÕâÒ»²¿·Ö£¬ÎÒÃÇÐèÒª²úÉú40 ¸öÓëÃÜÔ¿Ïà¹ØµÄK(i)£¬ºÍ4¸öÓëÃÜÔ¿Ïà¹Ø µÄ£¬ÔÚº¯Êý gÖÐʹÓõ½µÄ S-box£¬Ò²¾ÍÊÇs(i)()¡£ ÔÚTwofish Ëã·¨ÖУ¬¹æ¶¨ÃÜÔ¿µÄ³¤¶È N = 128, N = 192, N = 256ÈýÖÖ¡£ Ò²¾ÍÊÇ˵ÃÜÔ¿µÄ³¤¶È¿ÉÒÔÔÚ128-bit ~ 256-bitÖ®¼ä±ä»¯¡£ ÎÒÃÇ¼Ç k = N / 64 (Ôòk = 2, 3, 4)£¬ÄÇôÃÜÔ¿ MÒ²¾ÍÓÉ 8k¸ö×Ö½Ú×é ³É¡£ÎÒÃǼÇÕâ 8k¸ö×Ö½ÚΪ£º m0, ... ,m(8k-1) Ê×ÏȽ«Õâ 8k ¸ö×Ö½Úת»»³É 2k ¸ö 32-bit µÄÊý¾Ý£º M(i) = ¡Æm(4i+j)2^(8j)£¬ÆäÖÐj = 0, ... ,3£¬i = 0, ... ,2k-1 È»ºóÓÉÕâ 2k ¸ö32-bit Êý¾Ý¹¹³ÉÁ½¸ö kάµÄÏòÁ¿£º Me = (M0, M2, ... ,M(2k-2)) Mo = (M1, M3, ... ,M(2k-1)) ÏÂÃæÔÙÀûÓÃm(i)²úÉúÒ»¸ö kάµÄÏòÁ¿£º ©° ©´ ©° ©´ ©° ©´ ©¦s(i,0)©¦ ©¦ ©¦ ©¦m(8i) ©¦ ©¦s(i,1)©¦= ©¦R©¦¡¤©¦m(8i+1)©¦ ©¦s(i,2)©¦ ©¦S©¦ ©¦ ......©¦ ©¦s(i,3)©¦ ©¦ ©¦ ©¦m(8i+7)©¦ ©¸ ©¼ ©¸ ©¼ ©¸ ©¼ ÆäÖÐRSÊǶ¨ÒåÔÚGF(2^8)µÄ 4*8½×¾ØÕ󡣼ǣº S(i) = ¡Æs(i,j)2^(8j)£¬ÆäÖÐj = 0, ... ,3£¬i = 0, ... ,k-1 ÕâÑù¾ÍÓвúÉúÁËÒ»¸ö kάÏòÁ¿£º S = (S(k-1), S(k-2), ... ,S0) ×¢Ò⣬ÕâÀï SÊÇÓÉS(i)·´Ðò×é³ÉµÄ¡£¶ÔÓÚRS¾ØÕó£¬ÎÒÃÇͬÑùÐèÒªÃ÷È·¶¨ÒåÓÐ ÏÞÓòGF(2^8)¡£ÔÚÕâÀ GF(2^8) ¡Ô GF(2)[x]/w(x)£¬ÆäÖÐw(x) = x^8 + x^6 + x^3 + x^2 + 1 ©° ©´ ©¦01 A4 55 87 5A 58 DB 9E©¦ RS = ©¦A4 56 82 F3 1E C6 68 E5©¦ ©¦02 A1 FC C1 47 AE 3D 19©¦ ©¦A4 55 87 5A 58 DB 9E 03©¦ ©¸ ©¼ ÕâÀﶨÒåµÄMe Mo S¹¹³ÉÁË key schedualµÄ»ù´¡¡£ [ Last edited by sdlj8051 on 2006-10-6 at 12:45 ] |
» ²ÂÄãϲ»¶
Çóµ÷¼ÁÒ»Ö¾Ô¸Î人Àí¹¤´óѧ²ÄÁϹ¤³Ì£¨085601£©
ÒѾÓÐ7È˻ظ´
Ò»Ö¾Ô¸C9²ÄÁÏÓ뻯¹¤×¨Òµ×Ü·Ö300Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
321Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
307Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
293Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
085602 289·ÖÇóµ÷¼Á
ÒѾÓÐ3È˻ظ´
Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ²ÄÁÏÓ뻯¹¤ 264·Ö¸÷¿Æ¹ýAÇø¹ú¼ÒÏß
ÒѾÓÐ3È˻ظ´
277·ÖÇóµ÷¼Á£¬¿çµ÷²ÄÁÏ
ÒѾÓÐ3È˻ظ´
²ÄÁÏ292µ÷¼Á
ÒѾÓÐ6È˻ظ´
²ÄÁÏÓ뻯¹¤¿¼Ñе÷¼Á
ÒѾÓÐ6È˻ظ´
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
|
3.1 Additional Key Lengths ÕâÀï½éÉÜÒ»ÏÂÃÜÔ¿³¤¶ÈµÄÎÊÌâ¡£ÃÜÔ¿³¤¶È±ØÐëÊÇСÓÚ256 bitsµÄ£¬Èç¹û ÃÜÔ¿³¤¶È²»×ãÉÏÃæ¸ø¶¡µÄ N£¬ÄÇôÔÚÃÜÔ¿ºóÃæ²¹Á㣬ֱµ½×î½Ó½üµÄ NΪֹ¡£ ÀýÈçÃÜÔ¿³¤¶ÈÊÇ80-bit£¬ÔòÔÚm0, ... ,m9ºóÃæ¼ÓÉÏ£º m(i) = 0£¬i = 10, ... ,15 ÕâÑù¾Í¹¹³ÉÁËÒ»¸ö128-bitµÄÃÜÔ¿¡£ 3.2 The Function h ÄãÒ»¶¨¾õµÃÆæ¹Ö£¬ÔõôͻȻÓгöÀ´¸ö hº¯Êý£¬ÉÏÃæÃ÷Ã÷ûÓÐÓöµ½°¡£¿£¡ ºÇºÇ£¬ÉÏÃæÊÇûÓÐÓöµ½£¬²»¹ýÏÂÃæ¾Í¿ìÓõ½ÁË£¬¶øÇÒÕâ¸öº¯ÊýºÜÖØÒª¡£ Z = h(X, L) ÆäÖÐX, ZÊÇ32-bitµÄÊý¾Ý£¬L = L(L0, ... ,L(k-1))ÊÇÒ»¸ö kάµÄÏòÁ¿¡£ Ê×ÏÈÎÒÃÇ»¹Êǽ«X, L·Ö³É×Ö½Ú£º l(i,j) = [L(i)/2^(8j)] mod 2^8 i = 0, ... ,k-1 x(j) = [X/2^(8j)] mod 2^8 j = 0, ... ,3 ÎÒÃǼǣº y(k,j) = x(j) j = 0, ... ,3 Èç¹û£ºk == 4 y(3,0) = q1[y(4,0)] xor l(3,0) y(3,1) = q0[y(4,1)] xor l(3,1) y(3,2) = q0[y(4,2)] xor l(3,2) y(3,3) = q1[y(4,3)] xor l(3,3) Èç¹û£ºk >= 3 y(2,0) = q1[y(3,0)] xor l(2,0) y(2,1) = q1[y(3,1)] xor l(2,1) y(2,2) = q0[y(3,2)] xor l(2,2) y(2,3) = q0[y(3,3)] xor l(3,3) ¶ÔÓÚËùÓÐÇé¿ö£º y0 = q1[q0[q0[y(2,0)] xor l(1,0)] xor l(0,0)] y1 = q0[q0[q1[y(2,1)] xor l(1,1)] xor l(0,1)] y2 = q1[q1[q0[y(2,2)] xor l(1,2)] xor l(0,2)] y3 = q0[q1[q1[y(2,3)] xor l(1,3)] xor l(0,3)] Ò²¾ÍÊÇ˵£¬Èç¹ûk==4£¬ÄÇôÉÏÃæ 3ÖÖÇé¿ö¶¼Òª×ö£»Èç¹ûk==3£¬ÄÇôֻ×öºóÁ½ ÖÖÇé¿ö£»Èç¹ûk==2£¬ÔòÖ»¼ÆËã×îºóÕâÖÖÇé¿ö¡£ ©° ©´ ©° ©´ ©° ©´ ©¦z0©¦ ©¦ ©¦ ©¦y0©¦ ©¦z1©¦= ©¦MDS©¦¡¤©¦y1©¦ ©¦z2©¦ ©¦ ©¦ ©¦y2©¦ ©¦z3©¦ ©¦ ©¦ ©¦y3©¦ ©¸ ©¼ ©¸ ©¼ ©¸ ©¼ Z = ¡Æz(i)2^(8i)£¬ÆäÖÐi = 0, ... ,3 ×îºóµÄ¾ØÕó³Ë·¨Í¬ÑùÓöµ½ MDS¾ØÕó£¬GF(2^8)µÄ¶¨Òå¸úÇ°ÃæÒ»Ñù¡£ h º¯Êý½²ÍêÁË£¬µ«ÆäÖÐÓÖ¶à³öÀ´¸öq0 q1£¬ËüÃÇͬÑùÊÇS-boxes£¬¹ýÒ»»áÎÒÃÇ ÔÙ½²ÈçºÎ¼ÆËãq0 q1£¬ÏÂÃæ¿ªÊ¼½éÉÜÈçºÎ¼ÆËãS-boxesÓëK(i)¡£ 3.3 The Key-dependent S-boxes ÎÒÃÇÓÃÏÂÃæµÄÓ³ÉäÀ´¶¨Òå gÖÐʹÓõ½µÄ 4¸öS-boxes£º g(X) = h(X, S) ÆäÖÐS ÊÇÉÏÃæ¼ÆËã³öÀ´µÄ kάÏòÁ¿¡£ ÕâÑùg ÖгöÏÖµÄs(i)()¾Í¿ÉÒÔÓÃh(X, S)À´½â¾öÁË¡£ 3.4 The Expanded Key Words K(i) ÏÂÃæ½éÉÜÈçºÎ¼ÆËãK(i)£º p = 2^24 + 2^16 + 2^8 + 2^0 A(i) = h(2ip, Me) B(i) = ROL(h((2i+1)p, Mo), 8) K(2i) = (A(i) + B(i)) mod 2^32 K(2i+1) = ROL((A(i) + 2B(i)) mod 2^32, 9) ÕâÀï i = 0, ... ,19 3.5 The Permutations q0 and q1 q0 q1ÊÇÓÐ256¸öÔªËØµÄÊý×飬Êý×éÖеÄÔªËØÊÇ 8-bitµÄ¡£ËüÃǵĹ¹³É·½ ·¨ÈçÏ£º a0, b0 = [x/16], x mod 16 a1 = a0 xor b0 b1 = a0 xor ROR(b0, 1) xor 8a0 mod 16 a2, b2 = t0[a1], t1[b1] a3 = a2 xor b2 b3 = a2 xor ROR(b2, 1) xor 8a2 mod 16 a4, b4 = t2[a3], t3[b3] y = 16b4 + a4 ÕâÀïa(i) b(i)¶¼ÊÇ4-bitµÄ£¬ÆäÖеÄRORÔËËãÒ²ÊÇ4-bitµÄ¡£ÕâÑùÀûÓÃÉÏÃæµÄ ¹«Ê½£¬¾Í½«Ò»¸ö16-bitµÄx Ó³Éäµ½Ò»¸ö16-bitµÄ y£¬ÎÒÃǰѵ±x = i µÄʱºò yµÄÖµ¶¨ÒåΪq£¬ÕâÑùµ±x = 0, ... 255ʱ£¬Ò²¾ÍÇó³öÁËqÖеÄ256¸öÔª ËØ¡£¶ÔÓÚq0 q1£¬ÉÏÊö¹«Ê½ÖеÄt0 t1 t2 t3·Ö±ð¶¨ÒåÈçÏ£º ¶ÔÓÚq0£º t0 = [8 1 7 D 6 F 3 2 0 B 5 9 E C A 4] t1 = [E C B 8 1 2 3 5 F 4 A 6 7 0 9 D] t2 = [B A 5 E 6 D 9 0 C 8 F 3 2 4 7 1] t3 = [D 7 F 4 1 2 6 E 9 B 3 0 8 5 C A] ¶ÔÓÚq1£º t0 = [2 8 B D F 7 6 E 3 1 9 4 0 A C 5] t1 = [1 E 2 B 4 C 3 7 6 D A 5 F 9 0 8] t2 = [4 C 7 5 1 6 9 A 0 E D 8 2 B 3 F] t3 = [B 9 5 1 C 3 D E 6 4 7 F 2 0 8 A] ÕâÑù£¬Twofish Ëã·¨µÄÈ«²¿¼ÆËã¹ý³ÌÎҾͽ²ÍêÁË£¬ÆäÖÐ˵µÄ²»¹»ÏêϸµÄµØ·½ ´ó¼Ò¿ÉÒԲο´¹Ù·½µÄÎĵµ£¬»òÕßÍøÉÏÏÂÔØµÄÔ´³ÌÐò¡£ÕâÆªÎÄÕÂÖÐÓм¸´¦Ã»ÓÐ Ïêϸ˵Ã÷£º 1.ÈçºÎ¸ù¾Ý¶¨Òåg(X) = h(X, S)Çó³öÏàÓ¦µÄS-boxes 2.ÈçºÎÔÚÓÐÏÞÓòGF(2^8)ÉϽøÐоØÕóÔËËã ÆäʵÉÏÃæÕâÁ½¸öÎÊÌâ¶¼ÊǹØÓÚÓÐÏÞÓò(finite field)µÄ£¬Èç¹ûÖ±½Ó°´ÕÕ ¶¨ÒåÈ¥¼ÆË㣬ÔËËã¹ý³ÌÊ®·Ö¸´ÔÓ¡£µ« MDSÓë RS ¾ØÕó¶¼Óи÷×ÔµÄÌØµã£¬ËùÒÔ ÔÚд³ÌÐòµÄʱºò¿ÉÒÔ½«ÔËË㻯¼ò¡£ |
2Â¥2006-08-23 15:46:57













»Ø¸´´ËÂ¥