¡¶ÐÅÏ¢°²È«µ¼ÂÛ¡·¿Î³Ì×ÊÁÏ - ͼÎÄ ÏÂÔØ±¾ÎÄ

ÃÜÂëѧ»¹ÎªÐÅÏ¢°²È«Öгý±£ÃÜÐÔÍâµÄÆäËûһЩÎÊÌâÌṩÁ˽â¾ö·½°¸¡£ ¢ÙÍêÕûÐÔ·þÎñ½â¾ö·½°¸

Êý¾ÝÍêÕûÐÔ¼ìÑéͨ³£Í¨¹ýÃÜÂëѧÖеĵ¥ÏòÉ¢Áк¯Êý(hashº¯Êý)À´ÊµÏÖ¡£µ¥ÏòÉ¢Áк¯ÊýÄܹ»½«ÈÎÒⳤ¶ÈµÄÊäÈëת»¯ÎªÒ»¸ö¹Ì¶¨´óСµÄÏûÏ¢ÕªÒª£¬¼ÇΪ£ºh:{0,1}*¡ú{0,1}n, m|¡úh(m)

ÉÏʽ±íÃ÷£¬µ¥ÏòÉ¢Áк¯Êýh½«ÈÎÒⳤ¶ÈµÄ±ÈÌØ´®{0,1}*Ó³Éä³É³¤¶ÈΪnµÄ±ÈÌØ´®{0,1}n¡£µ¥ÏòÉ¢Áк¯Êý¾ßÓдíÎó¼ì²âµÄÄÜÁ¦£¬¼´¸Ä±äÊäÈëÊý¾ÝµÄÈκÎһλ»òÕß¶à룬¶¼»áµ¼ÖÂÏûÏ¢ÕªÒªµÄ¸Ä±ä¡£¸ù¾ÝÏûÏ¢mºÍÏûÏ¢ÕªÒªh(m)µÄ¶ÔÓ¦¹ØÏµ£¬½ÓÊÕÕß¿ÉÒÔÅжÏÏûÏ¢ÔÚ´«Êä¹ý³ÌÖÐÊÇ·ñ±»´Û¸Ä¹ý¡£

µ¥ÏòÉ¢Áк¯ÊýµÄÄ¿µÄ¾ÍÊÇÒª²úÉúÏûÏ¢µÄ¡°Ö¸ÎÆ¡±£¬ÓÃÓÚÈÏÖ¤ºÍÊý×ÖÇ©Ãû¡£Òò´Ë£¬µ¥ÏòÉ¢Áк¯Êý±ØÐë¾ß±¸µ¥ÏòÐÔ²¢ÇÒÄܹ»±ÜÃâ³åÍ»¡£Õâ¾ÍÒâζ×Å£º

? ¶ÔÓÚÈκθø¶¨µÄÏûÏ¢ÕªÒªy£¬ÕÒµ½Âú×ãh(m) = yµÄÏûÏ¢mÔÚ¼ÆËãÉÏÊDz»¿ÉÐеġ£ ? ¶ÔÓÚÈκθø¶¨µÄÏûÏ¢m1£¬ÕÒµ½Âú×ãh(m1) = h(m2)ÇÒm1¡Ùm2µÄÏûÏ¢m2ÔÚ¼ÆËãÉÏÊDz»¿ÉÐеġ£ ? ÕÒµ½ÈκÎÂú×ãh(m1)=h(m2)ÇÒm1¡Ùm2µÄÏûÏ¢¶Ô(m1,m2)ÔÚ¼ÆËãÉÏÊDz»¿ÉÐеġ£ ÃÀ¹ú¹ú¼Ò±ê×¼¼¼ÊõÑо¿ËùNISTºÍһЩ¹ú¼Ê×éÖ¯²»¶ÏµØÖƶ¨ºÍ°ä²¼µ¥ÏòÉ¢Áк¯Êý±ê×¼¡£1991ÄêÃÀ¹úÂéÊ¡Àí¹¤¼ÆËã»ú¿ÆÑ§ÊµÑéÊÒºÍRSAÊý¾Ý°²È«¹«Ë¾µÄRonald L. Rivest½ÌÊÚ¿ª·¢³öMD5 (Message Digest Algorithm 5)Ëã·¨¡£MD5¾­ÓÉMD2, MD3ºÍMD4·¢Õ¹¶øÀ´£¬¶ÔÊäÈë°´512±ÈÌØ½øÐзÖ×飬²¢ÒÔ·Ö×éΪµ¥Î»½øÐд¦Àí£¬Êä³öΪ128λµÄÊý¾ÝÕªÒª¡£1993ÄêÃÀ¹úNIST¹«²¼ÁËFIPS PUB 180£¬Í¨³£³ÆÖ®ÎªSHA-0 (Secure Hash Algorithm)¡£1995ÄêÃÀ¹úNIST¶ÔSHA-0½øÐÐÁ˸Ľø£¬¹«²¼ÁËFIPS PUB 180-1£¬³ÆÖ®ÎªSHA-1¡£SHA-1¶ÔÊäÈë°´512±ÈÌØ½øÐзÖ×飬²¢ÒÔ·Ö×éΪµ¥Î»½øÐд¦Àí£¬Êä³öΪ160±ÈÌØµÄÊý¾ÝÕªÒª¡£ÎªÁËÔö¼Óµ¥ÏòÉ¢Áк¯ÊýµÄ°²È«ÐÔ²¢Óë¼ÓÃܱê×¼AESÅäÌ×£¬2002ÄêÃÀ¹úNIST¹«²¼ÁËSHAµÄÐÞ¶©°æFIPS PUB 180-2£¬³ÆÖ®ÎªSHA-2¡£SHA-2°üº¬Èô¸Éµ¥ÏòÉ¢Áк¯Êý£¬ÆäÊä³öµÄÊý¾ÝÕªÒª³¤¶È·Ö±ðΪ256¡¢384ºÍ512±ÈÌØ£¬·Ö±ð³ÆÖ®ÎªSHA-256, SHA-384ºÍSHA-512¡£

Àý3-4 µ¥ÏòÉ¢Áк¯ÊýʾÀý¡£

hash(?abc?£¬?MD5?)=900150983cd24fb0d6963f7d28e17f72

hash(?abc?£¬?SHA-1?)=a9993e364706816aba3e25717850c26c9cd0d89d hash(?abc?£¬?SHA-256?)=

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

hash('abc','SHA-384')=cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072bale7cc2358baeca134c825a7

hash ('abc', 'SHA-512') =

ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f?

¢ÚÈÏÖ¤ÐÔ·þÎñ½â¾ö·½°¸

ΪÁËÈÏÖ¤ÏûÏ¢µÄÍêÕûÐÔ£¬ÐèÒª¶ÔÏûÏ¢Éú³ÉijÖÖÐÎʽµÄ¼ø±ð·û£¬Í¨¹ý·ÖÎö¼ø±ð·û£¬¿ÉÒÔµÃ֪ԭʼÏûÏ¢ÊÇ·ñÍêÕû¡£ÔÚÃÜÂëѧÖУ¬ÏûÏ¢¼ÓÃÜ¡¢µ¥ÏòÉ¢Áк¯ÊýºÍÏûÏ¢ÈÏÖ¤Âë(Message Authentication Code, MAC)¶¼ÊÇÏûÏ¢ÈÏÖ¤µÄÖØÒªÊֶΡ£ÏûÏ¢¼ÓÃÜÊǽ«ÐèÒªÈÏÖ¤µÄÏûÏ¢¼ÓÃÜ£¬ÒÔ¼ÓÃܵĽá¹û×÷Ϊ¼ø±ð·û¡£µ¥ÏòÉ¢Áк¯ÊýÊǽ«ÐèÒªÈÏÖ¤µÄÏûϢͨ¹ýÒ»¸ö¹«¹²º¯ÊýÓ³ÉäΪ¶¨³¤µÄÏûÏ¢ÕªÒª£¬ÒÔÏûÏ¢ÕªÒª×÷Ϊ¼ø±ð·û¡£ÏûÏ¢ÈÏÖ¤ÂëÊǽ«ÐèÒªÈÏÖ¤µÄÏûϢͨ¹ýÒ»¸ö¹«¹²º¯Êý²úÉúÒ»¸ö½á¹û£¬ÒÔ²úÉúµÄ½á¹ûºÍÃÜÔ¿×÷Ϊ¼ø±ð·û¡£

ÀûÓÃÏûÏ¢ÈÏÖ¤Âë¶ÔÏûÏ¢½øÐÐÈÏÖ¤µÄ¹ý³ÌÊÇÕâÑùµÄ£º·¢ËÍÕßAliceÀûÓÃMACº¯ÊýfºÍÃÜÔ¿k°ÑÐèÒªÈÏÖ¤µÄÏûÏ¢m±ä»»³Én±ÈÌØµÄÏûÏ¢ÈÏÖ¤Âëf(k, m)£¬½«ÏûÏ¢ÈÏÖ¤Âëf(k, m)×÷Ϊ¼ø±ð·û¸½¼ÓÔÚÏûÏ¢mÖ®ºó£¬

·¢ËÍÏûÏ¢ÐòÁÐ{m||f(k,m)}¸ø½ÓÊÕÕßBob(Èçͼ3-4Ëùʾ)¡£½ÓÊÕÕßBobÊÕµ½Alice·¢Ë͵ÄÏûÏ¢ÐòÁÐ{m||f(k,m)}ºó£¬°´ÕÕÓë·¢ËÍÕßAliceÏàͬµÄ·½·¨¶Ô½ÓÊÕµÄÊý¾Ým½øÐмÆË㣬µÃµ½n±ÈÌØµÄÏûÏ¢ÈÏÖ¤Âëf'(k, m)£¬È»ºó±È½Ïf'(k,m)}ºÍf(k,m)ÊÇ·ñÒ»Ö¡£Èç¹ûÒ»Ö£¬ÔòÏûÏ¢ÈÏÖ¤³É¹¦£»·ñÔò£¬ÏûÏ¢ÈÏ֤ʧ°Ü¡£ÔÚ¸ÃÈÏÖ¤¹ý³ÌÖУ¬¼´Ê¹¹¥»÷ÕßEve´Û¸ÄÁËÏûÏ¢m£¬ÔÚ²»ÖªµÀÃÜÔ¿kµÄÇé¿öÏ£¬EveÒ²²»¿ÉÄܼÆËã³öÕýÈ·µÄÏûÏ¢ÈÏÖ¤Âëf(k,m)¡£½ÓÊÕÕßBobͨ¹ý±È½Ïf'(k,m)ºÍf(k,m)ÊÇ·ñÒ»Ö£¬¿ÉÒÔÅжÏÏûÏ¢mÔÚ´«Êä¹ý³ÌÖÐÊÇ·ñ±»´Û¸Ä¡£

ʵÏÖÏûÏ¢ÈÏÖ¤Âë¿ÉÒÔÓжàÖÖ·½·¨¡£»ùÓÚµ¥ÏòÉ¢Áк¯ÊýµÄÏûÏ¢ÈÏÖ¤ÂëËã·¨HMAC (Hash-based Message Authentication Code)ºÍ»ùÓÚ·Ö×éÃÜÂëµÄÏûÏ¢ÈÏÖ¤ÂëËã·¨CMAC(Cipher-based Message Authentication Code)ÊÇĿǰ¹ã·ºÊ¹ÓõÄÁ½ÖÖÏûÏ¢ÈÏÖ¤ÂëËã·¨¡£HMACËã·¨Ïñµ¥ÏòÉ¢Áк¯ÊýËã·¨Ò»ÑùÊä³öÒ»¸ö¹Ì¶¨´óСµÄÏûÏ¢±ê¼Ç£¬µ«ÊÇ£¬Óëµ¥ÏòÉ¢Áк¯ÊýËã·¨²»Í¬µÄÊÇ£¬HMACËã·¨ÐèҪʹÓÃÃÜÔ¿À´×èÖ¹ÈκζÔÏûÏ¢±ê¼ÇµÄαÔ죬¼ÇΪ£ºh:{0,1}*¡ú{0,1}n, m|¡úh(k,m)

CMACËã·¨ÒÔ·Ö×é¼ÓÃÜΪ»ù´¡£¬½«ÍêÕûÐÔУÑéÏûÏ¢m½øÐзÖ×éµÃµ½m={m1||m2||¡­||mn}£¬ÀûÓÃÍêÕûÐÔУÑéÃÜÔ¿kºÍ³õʼÏòÁ¿IV¶ÔÏûÏ¢m½øÐеݽø·Ö×é¼ÓÃÜ£¬×îºóÊä³öÏûÏ¢ÈÏÖ¤ÂëMAC(Èçͼ3-5Ëùʾ)¡£

¹«Ô¿Ëã·¨ÊÇʵÏÖÈÏÖ¤µÄÁíÒ»ÖÖ·½·¨£¬ÔÚµÚ5Õ»áÏêϸ½éÉÜ¡£ÓëHMACËã·¨ºÍCMACËã·¨²»Í¬µÄÊÇ£¬»ùÓÚ¹«Ô¿µÄÈÏÖ¤Ëã·¨²»ÐèҪͨÐÅË«·½ÔÚͨÐÅ֮ǰ¹²Ïí˽ÓÐÐÅÏ¢¡£²ÉÓÃʲôÑùµÄÈÏÖ¤Ë㷨ȡ¾öÓÚÈÏ֤ϵͳµÄ¹¹Ôì¡£ÔÚ´«ÊäÐŵÀ°²È«µÄÇé¿öÏ£¬Ê¹ÓÃHMACËã·¨ºÍCMACËã·¨¿ÉÒÔÌá¸ßͨÐŵÄЧÂÊ£¬½ÚʡͨÐŵÄ×ÊÔ´¡£»ùÓÚ¹«Ô¿µÄÈÏÖ¤Ë㷨ͨ³£ÓÃÓÚͨÐÅË«·½µÄ³õʼÈÏÖ¤¡£

¢Û²»¿É·ñÈÏÐÔ·þÎñ½â¾ö·½°¸

²»¿É·ñÈÏÐÔͨ³£ÊÇͨ¹ý¹«Ô¿ÃÜÂëѧÖеÄÊý×ÖÇ©ÃûË㷨ʵÏֵġ£Ò»·½Ã棬Êý×ÖÇ©ÃûÒÀÀµÓÚÇ©ÃûÈ˵Ä˽Կ¡£ÁíÒ»·½Ã棬ÈκÎÈ˶¼¿ÉÒÔÀûÓÃÇ©ÃûÈ˵Ĺ«Ô¿ºÍÒÀÀµÓÚÇ©ÃûÈ˹«Ô¿µÄ¹«¿ªÑéÖ¤Ëã·¨VerifyÑé֤ǩÃûµÄÓÐЧÐÔ(Èçͼ3-6Ëùʾ)¡£

ÔÚͼ3-6µÄÃèÊöÖУ¬AliceÓÃ×Ô¼ºµÄ˽ԿkdºÍÇ©ÃûËã·¨Sign¶ÔÏûÏ¢mÇ©Ãû£¬µÃµ½Ç©Ãû£ºs:=Sign(kd, m)¡£²¢°ÑÏûÏ¢mºÍÇ©Ãûs´«Ë͸øBob¡£Bob½ÓÊÕµ½ÏûÏ¢mºÍÇ©Ãûsºó£¬ÓÃAliceµÄ¹«Ô¿keºÍÑéÖ¤Ëã·¨Verify¼ìÑ飺Verify(ke,s,m)=ok£¬ÊÇ·ñ³ÉÁ¢À´Ñé֤ǩÃûÊÇ·ñÓÐЧ¡£Í¨³££¬Ç©Ãû²»ÊÇÕë¶ÔÏûÏ¢m±¾Éí£¬¶øÊÇÏÈÓõ¥ÏòÉ¢Áк¯ÊýÇó³öÏûÏ¢mµÄÕªÒª£¬È»ºó¶ÔÏûÏ¢ÕªÒª½øÐÐÇ©Ãû¡£¹¥»÷ÕßEve¿ÉÒԽػñÇ©ÃûÏûÏ¢{m||s}£¬µ«ÊÇ£¬EveûÓÐÇ©ÃûÕßAliceµÄ˽Կ£¬²»ÄÜαÔìÓÐЧµÄÇ©Ãû¡£ 3.1.4 ÃÜÂëÌåÖÆ°²È«ÐÔ

¹¥»÷ÃÜÂëÌåÖÆ¾ÍÊÇΪÁË´ÓÃÜÎÄÖлָ´Ã÷ÎÄ»òÕ߻ָ´ÃÜÔ¿¡£ºâÁ¿ÃÜÂëÌåÖÆ°²È«ÐԵķ½·¨ÓÐÈýÖÖ¡£ µÚÒ»ÖÖ·½·¨ÊǼÆË㰲ȫÐÔ(computational security)£¬ÓÖ³ÆÊµ¼Ê±£ÃÜÐÔ(practical secrecy) ¡£Èç¹ûÒ»ÖÖÃÜÂëϵͳ×îÓÐЧµÄ¹¥»÷Ëã·¨ÖÁÉÙÊÇÖ¸Êýʱ¼äµÄ£¬Ôò³ÆÕâ¸öÃÜÂëÌåÖÆÊǼÆË㰲ȫµÄ¡£ÔÚʵ¼ÊÖУ¬ÈËÃǾ­³£Í¨¹ýÇÃÜÔ¿ËÑË÷¹¥»÷À´Ñо¿¼ÆËãÉϵݲȫÐÔ¡£È»¶ø»¹Ã»ÓÐÒ»¸öÒÑÖªµÄʵ¼ÊÃÜÂëϵͳÄܱ»Ö¤Ã÷ÊǼÆËãÉϰ²È«µÄ¡£ÔÚʵ¼ÊÖУ¬ÈËÃÇ˵һ¸öÃÜÂëϵͳÊǼÆËãÉϰ²È«µÄ£¬Òâ˼ÊÇÀûÓÃÒÑÓеÄ×îºÃµÄ·½·¨ÆÆÒë¸ÃϵͳËùÐèÒªµÄŬÁ¦³¬¹ýÁ˹¥»÷ÕߵįÆÒëÄÜÁ¦(Èçʱ¼ä¡¢¿Õ¼äºÍ×ʽðµÈ×ÊÔ´)¡£

µÚ¶þÖÖ·½·¨ÊÇ¿ÉÖ¤Ã÷°²È«ÐÔ(provable security)¡£Èç¹ûÃÜÂëÌåÖÆµÄ°²È«ÐÔ¿ÉÒÔ¹é½áΪij¸öNP (Nondeterministic Polynomial time)ÍêÈ«ÎÊÌ⣬Ôò³ÆÆäÊÇ¿ÉÖ¤Ã÷°²È«µÄ¡£ÀýÈ磬RSAÃÜÂë¿ÉÒÔ¹é½áΪ´óÕûÊý·Ö½âÎÊÌ⣬ECCÃÜÂë¿ÉÒÔ¹é½áΪÍÖÔ²ÇúÏßÀëÉ¢¶ÔÊýÇó½âÎÊÌâ¡£¼ÆËã»ú¿ÉÒÔÔÚ¶àÏîʽʱ¼ä¸´ÔÓ¶ÈÄÚ½â¾öµÄÎÊÌâ³ÆÎªPÀàÎÊÌ⣬ÔÚ¶àÏîʽʱ¼ä¸´ÔÓ¶ÈÄÚ²»¿ÉÒÔ½â¾öµÄÎÊÌâ³ÆÎªNPÀàÎÊÌ⣬NPÀàÎÊÌâÖÐ×îÀ§ÄѵÄÎÊÌâ³ÆÎªNPÍêÈ«ÎÊÌ⣬¼ò³ÆNPC (NP-Complete)ÎÊÌâ¡£ShannonÔøÖ¸³ö£¬Éè¼ÆÒ»¸ö°²È«µÄÃÜÂë±¾ÖÊÉÏÊÇҪѰÕÒÒ»¸öÄѽâµÄÎÊÌâ¡£

µÚÈýÖÖ·½·¨ÊÇÎÞÌõ¼þ°²È«ÐÔ(unconditional security)»òÕßÍêÉÆ±£ÃÜÐÔ(perfect secrecy)¡£¼ÙÉè´æÔÚÒ»¸ö¾ßÓÐÎÞÏÞ¼ÆËãÄÜÁ¦µÄ¹¥»÷Õߣ¬Èç¹ûÃÜÂëÌåÖÆÎÞ·¨±»ÕâÑùµÄ¹¥»÷Õß¹¥ÆÆ£¬Ôò³ÆÆäΪÎÞÌõ¼þ°²È«µÄ¡£ShannonÖ¤Ã÷ÁËÒ»´ÎÒ»ÃÜϵͳ¾ßÓÐÎÞÌõ¼þ°²È«ÐÔ£¬¼´´ÓÃÜÎÄÖеò»µ½¹ØÓÚÃ÷ÎÄ»òÕßÃÜÔ¿µÄÈκÎÐÅÏ¢¡£ 3.1.5 ÃÜÂë·ÖÎö

ÃÜÂë·ÖÎöÊÇÒ»ÃÅÑо¿ÔÚ²»ÖªµÀÃÜÔ¿µÄÇé¿öÏ£¬Í¨¹ýÃÜÎÄ»ñµÃÃ÷ÎÄÐÅÏ¢»òÃÜÔ¿ÐÅÏ¢µÄѧÎÊ¡£ÃÜÂë·ÖÎöÒ²³ÆÎª¶ÔÃÜÂëÌåÖÆµÄ¹¥»÷¡£¹¥»÷ÕßEveÖ÷ҪʹÓÃÈýÖÖÊֶζÔÃÜÂëÌåÖÆ½øÐй¥»÷¡£

(1)Çî¾Ù¹¥»÷

Çî¾Ù¹¥»÷ÓÖ³ÆÎªÂùÁ¦¹¥»÷£¬ÊÇÖ¸¹¥»÷ÕßÒ»´Î³¢ÊÔËùÓпÉÄܵÄÃÜÔ¿¶ÔËù½Ø»ñµÄÃÜÎĽøÐнâÃÜ£¬Ö±ÖÁµÃµ½ÕýÈ·µÄÃ÷ÎÄ¡£1997Äê6ÔÂ18ÈÕ£¬ÃÀ¹ú¿ÆÂÞÀ­¶àÖÝRocket Verser¹¤×÷С×éÐû²¼£¬Í¨¹ýÍøÂçÀûÓÃÊýÍǫ̀¼ÆËã»úÀúʱ4¸ö¶àÔÂÒÔÇî¾Ù¹¥»÷·½Ê½¹¥ÆÆÁËDES¡£

(2)ͳ¼Æ·ÖÎö¹¥»÷

ͳ¼Æ·ÖÎö¹¥»÷ÊÇÖ¸¹¥»÷Õßͨ¹ý·ÖÎöÃÜÎĺÍÃ÷ÎĵÄͳ¼Æ¹æÂÉÀ´¹¥»÷ÃÜÂëϵͳ¡£Í³¼Æ·ÖÎö¹¥»÷ÔÚÀúÊ·ÉÏÎªÆÆÒëÃÜÂë×ö³ö¹ý¼«´óµÄ¹±Ïס£Ðí¶à¹ÅµäÃÜÂë¶¼¿ÉÒÔͨ¹ý·ÖÎöÃÜÎÄ×ÖĸºÍ×Öĸ×éµÄƵÂʼ°ÆäËûͳ¼Æ²ÎÊý¶øÆÆÒë¡£ÀýÈ磬ÔÚÓ¢ÓïÀ×ÖĸEÊÇÓ¢ÎÄÎı¾ÖÐ×î³£ÓõÄ×Öĸ£¬×Öĸ×éºÏTHÊÇÓ¢ÎÄÎı¾ÖÐ×î³£ÓõÄ×Öĸ×éºÏ¡£ÔÚ¼òµ¥µÄÌæ»»ÃÜÂëÖУ¬Ã¿¸ö×ÖĸֻÊǼòµ¥µØ±»Ìæ»»³ÉÁíÒ»¸ö×Öĸ£¬ÄÇôÔÚÃÜÎÄÖгöÏÖÆµÂÊ×î¸ßµÄ×Öĸ¾Í×îÓпÉÄÜÊÇE£¬³öÏÖÆµÂÊ×î¸ßµÄ×Öĸ×éºÏ¾Í×îÓпÉÄÜÊÇTH¡£µÖ¿¹Í³¼Æ·ÖÎö¹¥»÷µÄ·½Ê½ÊÇÔÚÃÜÎÄÖÐÏû³ýÃ÷ÎĵÄͳ¼ÆÌØÐÔ¡£

(3)Êýѧ·ÖÎö¹¥»÷

Êýѧ·ÖÎö¹¥»÷ÊÇÖ¸¹¥»÷ÕßÕë¶Ô¼ÓÃÜËã·¨µÄÊýÑ§ÌØÕ÷ºÍÃÜÂëÑ§ÌØÐÔ£¬Í¨¹ýÊýѧÇó½âµÄ·½·¨À´ÆÆÒëÃÜÂë¡£°´ÕÕ´ÓÃÜÎÄÍÆµ¼Ã÷Îĵķ½Ê½£¬Êýѧ·ÖÎö¹¥»÷°üÀ¨£ºÎ¨ÃÜÎĹ¥»÷¡¢ÒÑÖªÃ÷ÎĹ¥»÷¡¢Ñ¡ÔñÃ÷ÎĹ¥»÷¡¢×ÔÊÊӦѡÔñÃ÷ÎĹ¥»÷¡¢Ñ¡ÔñÃÜÎĹ¥»÷ºÍ×ÔÊÊӦѡÔñÃÜÎĹ¥»÷(Èç±í3-3Ëùʾ)¡£

3.2 ¼ÓÃÜ·½·¨¼°¼¼Êõ

¼ÓÃÜ·½·¨¾ÍÊÇʹÓÃËã·¨ºÍÃÜÔ¿¼ÓÃÜÐÅÏ¢µÄ·½·¨¡£¼ÓÃÜÌåÖÆ¾ÍÊÇͨ¹ý²ÉÓÃÊʵ±µÄ¼ÓÃÜ·½·¨Ê¹µÃͨÐÅË«·½ÄÜÔÚ²»°²È«µÄÐŵÀÉϽøÐÐÐÅÏ¢µÄÃØÃܽ»»»¡£Ò»ÖÖ¼ÓÃÜÌåÖÆÓÉʹÓÃÊʵ±µÄÃÜÔ¿°ÑÃ÷ÎÄת±ä³ÉÃÜÎĵķ½·¨ºÍËüµÄ·´¹ý³Ì×é³É¡£ÃÜÔ¿ÊÇÍê³Éת»»µÄ»ù±¾ÒòËØ¡£ 3.2.1 »ùÓÚ¹²ÏíÃÜÔ¿µÄ¼ÓÃÜ·½·¨¼°¼¼Êõ

»ùÓÚ¹²ÏíÃÜÔ¿µÄ¼ÓÃÜ·½·¨ÓÖ³ÆÎª¶Ô³ÆÃÜÔ¿¼ÓÃÜ·½·¨¡£¶Ô³ÆÃÜÂëѧµÄ»ù±¾Ë¼Ïë¾ÍÊǹ²ÏíÃÜÔ¿¡£Óû§AliceºÍBobÏ໥ͨÐÅ£¬²ÉÓÃË«·½¹²ÏíµÄÃÜÔ¿ºÍ¶Ô³ÆÃÜÔ¿¼ÓÃÜ·½·¨±£»¤ÏûÏ¢£¬¹¥»÷ÕßEve¼´Ê¹½Ø»ñÃÜÎÄ£¬Ò²»áÒòΪûÓÐÊʵ±µÄÃÜÔ¿¶ø²»Äܵõ½ÈκιØÓÚͨÐÅÄÚÈݵÄÓÐЧÐÅÏ¢¡£Í¨³£Ê¹ÓÃÁ÷ÃÜÂë(stream cipher)ºÍ·Ö×éÃÜÂë(block cipher)ʵÏÖ¶Ô³ÆÃÜÔ¿¼ÓÃÜ¡£

(1)Á÷ÃÜÂë

ÉèKΪÃÜÔ¿µÄ¼¯ºÏ£¬MΪÃ÷Îĵļ¯ºÏ¡£Ò»¸öÁ÷ÃÜÂ룺E*:M*¡ÁK*¡úC*, E*(k, m):=c:= c1c2c3...

ÀûÓÃÃÜÔ¿Á÷k:= k1 k2 k3...K*(ki¡ÊK}°ÑÃ÷ÎÄÐòÁÐm:= m1 m2 m3...M*(×Ö·ûmi¡ÊM)¼ÓÃÜΪÃÜÎÄÐòÁÐc= c1c2c3...C*(ÃÜÎÄci¡ÊC)¡£Òò´Ë£¬´æÔÚ¼ÓÃÜÓ³É䣺Ek:M¡úC¡£Ê¹µÃ¶ÔÈÎÒâµÄÃÜÔ¿k£¬ÓÐci:=Eki(mi):= E(ki, mi), i=1, 2,...¡£

Á÷ÃÜÂëÓÖ³ÆÐòÁÐÃÜÂ룬ÊǶԳÆÃÜÂëѧÖеÄÖØÒªÌåÖÆÖ®Ò»£¬ËüµÄÆðÔ´¿ÉÒÔ×·Ëݵ½20ÊÀ¼Í20Äê´úµÄVernamÃÜÂë¡£VernamÃÜÂë¼òµ¥ÇÒÒ×ÓÚʵÏÖ£¬Æä¹Ø¼üÊÇÉú³ÉËæ»úµÄÃÜÔ¿ÐòÁС£ÉèM:=K:=C:={0,1}£¬²¢ÇÒE:{0,1}¡Á{0,1}¡ú{0,1}, (m, k) |¡úm¨’kÊÇÏûÏ¢±ÈÌØºÍÃÜÔ¿±ÈÌØµÄ¼òµ¥Òì»òÔËË㡣ΪÁ˼ÓÃÜÏûÏ¢m:= m1 m2 m3..., mi¡Ê{0,1}ÐèÒªÒ»¸öÃÜÔ¿Á÷k:= k1 k2 k3...£¬ki¡Ê{0,1}¡£

¼ÓÃܺ¯Êý¶¨ÒåÈçÏ£ºE*(k,m):= c:= c1c2c3...£¬ÆäÖÐci:=mi¨’ki ½âÃܺ¯Êý¶¨ÒåÈçÏ£ºD*(k, c):= m:= m1 m2 m3...£¬ÆäÖÐmi:=ci¨’ki Àý3-5 Á÷ÃÜÂëÓ¦ÓÃʾÀý¡£

Á÷ÃÜÂëÊÇÒ»ÖÖ·½±ã¿ì½ÝµÄ¼ÓÃÜ·½·¨£¬ÔÚÏÖʵÖеõ½Á˹㷺µÄÓ¦Óá£RC4ÃÜÂëÊÇĿǰÆÕ±éʹÓõÄÁ÷ÃÜÂëÖ®Ò»£¬ÊÇÃÀ¹úÂéÊ¡Àí¹¤Ñ§ÔºµÄRon RivestÓÚ1987ÄêÉè¼ÆµÄÃÜÔ¿³¤¶È¿É±äµÄÁ÷ÃÜÂëËã·¨¡£RC4ÃÜÂë²»½öÒѾ­Ó¦ÓÃÓÚMicrosoft WindowsºÍLotus NotesµÈÓ¦ÓóÌÐòÖУ¬¶øÇÒÓ¦ÓÃÓÚ°²È«Ì×½Ó×Ö²ãSSL(Secure Sockets Layer)±£»¤ÒòÌØÍøµÄÐÅÏ¢Á÷£¬»¹Ó¦ÓÃÔÚÎÞÏß¾ÖÓòÍøÍ¨ÐÅЭÒéWEP( Wired Equivalent Privacy)ÒÔ¼°·äÎÑÊý×ÖÊý¾Ý°ü¹æ·¶ÖС£ÔÚÊý×Ö·äÎÑGSM (Global System for Mobile Communications)ÒÆ¶¯Í¨ÐÅϵͳÖУ¬ASÃÜÂë±»ÓÃÓÚ¼ÓÃܴӵ绰µ½»ùÕ¾µÄÐÅÏ¢¡£

(2)·Ö×éÃÜÂë

·Ö×éÃÜÂëÂú×ãM=C={0, l}n£¬n³ÆÎªÃÜÂëµÄ·Ö×鳤¶È¡£ÕâÊÇÒ»¸ö¶þÔª·Ö×éÃÜÂëµÄ¸ÅÄһ°ãµØ£¬ÂëÔª²»ÏÞÓÚ¶þÔª£¬ÇÒMºÍCµÄ³¤¶È²»Ò»¶¨ÏàµÈ¡£¶ÔÓÚÃÜÔ¿k£¬¼ÓÃܺ¯ÊýEÊÇ{0,1}nÉϵÄÒ»¸öÖû»£¬ÏûÏ¢¿Õ¼äÓÉ·Ö×鳤¶ÈΪnµÄ2n¸öÃ÷ÎÄÏûÏ¢¹¹³É¡£·Ö×éÃÜÂëµÄ¼ÓÃÜÔ­ÀíÊÇ£º½«Ã÷Îİ´ÕÕijһ¹æ¶¨µÄn±ÈÌØ³¤¶È·Ö×飬×îºóÒ»×鳤¶È²»¹»Ê±ÒªÓù涨µÄÖµÌî³ä£¬Ê¹Æä³ÉΪÍêÕûµÄÒ»×飬ȻºóʹÓÃÏàͬµÄÃÜÔ¿¶Ôÿһ·Ö×é·Ö±ð½øÐмÓÃÜ¡£µäÐ͵ķÖ×é¼ÓÃÜ·½·¨ÓÐDES¡¢ÈýÖØDES, AESºÍIDEAµÈ¡£

¢ÙÊý¾Ý¼ÓÃܱê×¼DES

1973ÄêÃÀ¹ú¹ú¼Ò±ê×¼¾Ö(National Bureau of Standards, NBS)¹«¿ªÕ÷¼¯ÓÃÓÚ±£»¤ÉÌÓÃÐÅÏ¢µÄÃÜÂëËã·¨£¬²¢ÓÚ1975Ä깫²¼ÁËÊý¾Ý¼ÓÃܱê×¼(Data Encryption Standard, DES)¡£ËæºóÈËÃÇÂ½ÐøÉè¼ÆÁËÐí¶à³ÉÊìµÄ·Ö×éÃÜÂëËã·¨£¬ÈçIDEA¡¢AFER¡¢Skipjack¡¢RCS¡¢Blowfish¡¢RijndaelµÈ¡£·Ö×éÃÜÂëµÄºËÐÄÎÊÌâ¾ÍÊÇÉè¼Æ×ã¹»¸´ÔÓµÄËã·¨£¬ÒÔʵÏÖShannonÌá³öµÄ»ìÂÒºÍÀ©É¢×¼Ôò¡£DESÊÇ×îÖøÃûµÄ¡¢Ê¹ÓÃ×î¹ã·ºµÄ¶Ô³ÆÃÜÔ¿·Ö×é¼ÓÃÜËã·¨¡£1977Äê1ÔÂ15ÈÕÃÀ¹úÁª°îÐÅÏ¢´¦Àí±ê×¼°æ46(FIPS PUB 46)Öиø³öÁËDESµÄÍêÕûÃèÊö¡£DESËã·¨Ê׿ªÏÈÀý³ÉΪµÚÒ»´ú¹«¿ªµÄ¡¢Íêȫ˵Ã÷ʵÏÖϸ½ÚµÄÉÌÒµ¼¶ÃÜÂëËã·¨£¬²¢±»ÊÀ½ç¹«ÈÏ¡£

DES´¦Àín=64±ÈÌØµÄÃ÷ÎÄ·Ö×é²¢²úÉú64±ÈÌØµÄÃÜÎÄ·Ö×é(Èçͼ3-7Ëùʾ)¡£ÃÜÔ¿µÄÓÐЧ³ß´çΪ56±ÈÌØ£¬¸ü׼ȷµØËµ£¬ÊäÈëÃÜÔ¿64±ÈÌØ£¬ÆäÖÐ8¸ö±ÈÌØ(8,16,...,64)¿ÉÓÃ×öУÑéλ¡£