LinuxÒÁµéÔ°ÂÛ̳'s Archiver

Roc.Ken ·¢±íÓÚ 2005-11-19 12:41

¡¾ÍƼö¡¿RSAËã·¨

RSAËã·¨
      ¡¡¡¡ËüÊǵÚÒ»¸ö¼ÈÄÜÓÃÓÚÊý¾Ý¼ÓÃÜÒ²ÄÜÓÃÓÚÊý×ÖÇ©ÃûµÄËã·¨¡£ËüÒ×ÓÚÀí½âºÍ²Ù
×÷£¬Ò²ºÜÁ÷ÐС£Ëã·¨µÄÃû×ÖÒÔ·¢Ã÷ÕßµÄÃû×ÖÃüÃû£ºRon Rivest, Adi Shamir ºÍLeonard
Adleman¡£µ«RSAµÄ°²È«ÐÔһֱδÄܵõ½ÀíÂÛÉϵÄÖ¤Ã÷¡£Ëü¾­ÀúÁ˸÷ÖÖ¹¥»÷£¬ÖÁ½ñδ±»Íê
È«¹¥ÆÆ¡£

      Ò»¡¢RSAËã·¨ :

      Ê×ÏÈ, ÕÒ³öÈý¸öÊý, p, q, r,
      ÆäÖÐ p, q ÊÇÁ½¸öÏàÒìµÄÖÊÊý, r ÊÇÓë (p-1)(q-1) »¥ÖʵÄÊý......
      p, q, r ÕâÈý¸öÊý±ãÊÇ private key

      ½ÓÖø, ÕÒ³ö m, ʹµÃ rm == 1 mod (p-1)(q-1).....
      Õâ¸ö m Ò»¶¨´æÔÚ, ÒòΪ r Óë (p-1)(q-1) »¥ÖÊ, ÓÃշתÏà³ý·¨¾Í¿ÉÒԵõ½ÁË
.....
      ÔÙÀ´, ¼ÆËã n = pq.......
      m, n ÕâÁ½¸öÊý±ãÊÇ public key

      ±àÂë¹ý³ÌÊÇ, Èô×ÊÁÏΪ a, ½«Æä¿´³ÉÊÇÒ»¸ö´óÕûÊý, ¼ÙÉè a < n....
      Èç¹û a >= n µÄ»°, ¾Í½« a ±í³É s ½øÎ» (s <= n, ͨ³£È¡ s = 2^t),
      ÔòÿһλÊý¾ùÐ¡ì¶ n, È»áá·Ö¶Î±àÂë......
      ½ÓÏÂÀ´, ¼ÆËã b == a^m mod n, (0 <= b < n),
      b ¾ÍÊDZàÂëááµÄ×ÊÁÏ......

      ½âÂëµÄ¹ý³ÌÊÇ, ¼ÆËã c == b^r mod pq (0 <= c < pq),
      ì¶ÊǺõ, ½âÂëÍê±Ï...... µÈ»á»áÖ¤Ã÷ c ºÍ a ÆäʵÊÇÏàµÈµÄ?:)

      Èç¹ûµÚÈýÕß½øÐÐÇÔÌýʱ, Ëû»áµÃµ½¼¸¸öÊý: m, n(=pq), b......
      ËûÈç¹ûÒª½âÂëµÄ»°, ±ØÐëÏë°ì·¨µÃµ½ r......
      ËùÒÔ, Ëû±ØÐëÏÈ¶Ô n ×÷ÖÊÒòÊý·Ö½â.........
      Òª·ÀÖ¹Ëû·Ö½â, ×îÓÐЧµÄ·½·¨ÊÇÕÒÁ½¸ö·Ç³£µÄ´óÖÊÊý p, q,
      Ê¹µÚÈýÕß×÷ÒòÊý·Ö½âʱ·¢ÉúÀ§ÄÑ.........


      <¶¨Àí>
      Èô p, q ÊÇÏàÒìÖÊÊý, rm == 1 mod (p-1)(q-1),
      a ÊÇÈÎÒâÒ»¸öÕýÕûÊý, b == a^m mod pq, c == b^r mod pq,
      Ôò c == a mod pq

      Ö¤Ã÷µÄ¹ý³Ì, »áÓõ½·ÑÂíС¶¨Àí, ÐðÊöÈçÏÂ:
      m ÊÇÈÎÒ»ÖÊÊý, n ÊÇÈÎÒ»ÕûÊý, Ôò n^m == n mod m
      (»»ÁíÒ»¾ä»°Ëµ, Èç¹û n ºÍ m »¥ÖÊ, Ôò n^(m-1) == 1 mod m)
      ÔËÓÃһЩ»ù±¾µÄȺÂÛµÄ֪ʶ, ¾Í¿ÉÒÔºÜÈÝÒ×µØÖ¤³ö·ÑÂíС¶¨ÀíµÄ........

      <Ö¤Ã÷>
      ÒòΪ rm == 1 mod (p-1)(q-1), ËùÒÔ rm = k(p-1)(q-1) + 1, ÆäÖÐ k ÊÇÕûÊý
      ÒòΪÔÚ modulo ÖÐÊÇ preserve ³Ë·¨µÄ
      (x == y mod z?and?u == v mod z?=>?xu == yv mod z),
      ËùÒÔ, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq

      1. Èç¹û a ²»ÊÇ p µÄ±¶Êý, Ò²²»ÊÇ q µÄ±¶Êýʱ,
      ? Ôò a^(p-1) == 1 mod p (·ÑÂíС¶¨Àí)?=>?a^(k(p-1)(q-1)) == 1 mod p
      ???a^(q-1) == 1 mod q (·ÑÂíС¶¨Àí)?=>?a^(k(p-1)(q-1)) == 1 mod q
      ? ËùÒÔ p, q ¾ùÄÜÕû³ý a^(k(p-1)(q-1)) - 1?=>?pq | a^(k(p-1)(q-1)) -
1
      ? ¼´ a^(k(p-1)(q-1)) == 1 mod pq
      ? =>?c == a^(k(p-1)(q-1)+1) == a mod pq

      2. Èç¹û a ÊÇ p µÄ±¶Êý, µ«²»ÊÇ q µÄ±¶Êýʱ,
      ? Ôò a^(q-1) == 1 mod q (·ÑÂíС¶¨Àí)
      ? =>?a^(k(p-1)(q-1)) == 1 mod q
      ? =>?c == a^(k(p-1)(q-1)+1) == a mod q
      ? =>?q | c - a
      ? Òò p | a
      ? =>?c == a^(k(p-1)(q-1)+1) == 0 mod p
      ? =>?p | c - a
      ? ËùÒÔ, pq | c - a?=>?c == a mod pq

      3. Èç¹û a ÊÇ q µÄ±¶Êý, µ«²»ÊÇ p µÄ±¶Êýʱ, Ö¤Ã÷ͬÉÏ

      4. Èç¹û a ͬʱÊÇ p ºÍ q µÄ±¶Êýʱ,
      ? Ôò pq | a
      ? =>?c == a^(k(p-1)(q-1)+1) == 0 mod pq
      ? =>?pq | c - a
      ? =>?c == a mod pq
      ????????????????????Q.E.D.


      Õâ¸ö¶¨Àí˵Ã÷ a ¾­¹ý±àÂëΪ b ÔÙ¾­¹ý½âÂëΪ c ʱ, a == c mod n?(n =
pq)....
      µ«ÎÒÃÇÔÚ×ö±àÂë½âÂëʱ, ÏÞÖÆ 0 <= a < n, 0 <= c < n,
      ËùÒÔÕâ¾ÍÊÇ˵ a µÈì¶ c, ËùÒÔÕâ¸ö¹ý³ÌȷʵÄÜ×öµ½±àÂë½âÂëµÄ¹¦ÄÜ.....

      ¶þ¡¢RSA µÄ°²È«ÐÔ

      RSAµÄ°²È«ÐÔÒÀÀµÓÚ´óÊý·Ö½â£¬µ«ÊÇ·ñµÈͬÓÚ´óÊý·Ö½âһֱδÄܵõ½ÀíÂÛÉϵÄÖ¤
Ã÷£¬ÒòΪûÓÐÖ¤Ã÷ÆÆ½â RSA¾ÍÒ»¶¨ÐèÒª×÷´óÊý·Ö½â¡£¼ÙÉè´æÔÚÒ»ÖÖÎÞÐë·Ö½â´óÊýµÄËã
·¨£¬ÄÇËü¿Ï¶¨¿ÉÒÔÐ޸ijÉΪ´óÊý·Ö½âËã·¨¡£Ä¿Ç°£¬ RSA µÄһЩ±äÖÖËã·¨Òѱ»Ö¤Ã÷µÈ¼Û
ÓÚ´óÊý·Ö½â¡£²»¹ÜÔõÑù£¬·Ö½ânÊÇ×îÏÔÈ»µÄ¹¥»÷·½·¨¡£ÏÖÔÚ£¬ÈËÃÇÒÑÄÜ·Ö½â¶à¸öÊ®½øÖÆ
λµÄ´óËØÊý¡£Òò´Ë£¬Ä£Êýn ±ØÐëÑ¡´óһЩ£¬Òò¾ßÌåÊÊÓÃÇé¿ö¶ø¶¨¡£

      Èý¡¢RSAµÄËÙ¶È

      ÓÉÓÚ½øÐеͼÊÇ´óÊý¼ÆË㣬ʹµÃRSA×î¿ìµÄÇé¿öÒ²±ÈDESÂýÉϱ¶£¬ÎÞÂÛÊÇÈí¼þ»¹ÊÇ
Ó²¼þʵÏÖ¡£ËÙ¶ÈÒ»Ö±ÊÇRSAµÄȱÏÝ¡£Ò»°ãÀ´ËµÖ»ÓÃÓÚÉÙÁ¿Êý¾Ý¼ÓÃÜ¡£

      ËÄ¡¢RSAµÄÑ¡ÔñÃÜÎĹ¥»÷

      RSAÔÚÑ¡ÔñÃÜÎĹ¥»÷ÃæÇ°ºÜ´àÈõ¡£Ò»°ã¹¥»÷ÕßÊǽ«Ä³Ò»ÐÅÏ¢×÷Ò»ÏÂαװ(
Blind)£¬ÈÃÓµÓÐ˽ԿµÄʵÌåÇ©Êð¡£È»ºó£¬¾­¹ý¼ÆËã¾Í¿ÉµÃµ½ËüËùÏëÒªµÄÐÅÏ¢¡£Êµ¼Ê
ÉÏ£¬¹¥»÷ÀûÓõͼÊÇͬһ¸öÈõµã£¬¼´´æÔÚÕâÑùÒ»¸öÊÂʵ£º³ËÃݱ£ÁôÁËÊäÈëµÄ³Ë·¨½á¹¹£º

      ( XM )^d = X^d *M^d mod n

      ?Ç°ÃæÒѾ­Ìáµ½£¬Õâ¸ö¹ÌÓеÄÎÊÌâÀ´×ÔÓÚ¹«Ô¿ÃÜÂëϵͳµÄ×îÓÐÓõÄÌØÕ÷--ÿ¸öÈË
¶¼ÄÜʹÓù«Ô¿¡£µ«´ÓËã·¨ÉÏÎÞ·¨½â¾öÕâÒ»ÎÊÌ⣬Ö÷Òª´ëÊ©ÓÐÁ½Ìõ£ºÒ»ÌõÊDzÉÓúõĹ«Ô¿
ЭÒ飬±£Ö¤¹¤×÷¹ý³ÌÖÐʵÌå²»¶ÔÆäËûʵÌåÈÎÒâ²úÉúµÄÐÅÏ¢½âÃÜ£¬²»¶Ô×Ô¼ºÒ»ÎÞËùÖªµÄÐÅ
ϢǩÃû£»ÁíÒ»ÌõÊǾö²»¶ÔİÉúÈËËÍÀ´µÄËæ»úÎĵµÇ©Ãû£¬Ç©ÃûʱÊ×ÏÈʹÓÃOne-Way
HashFunction ¶ÔÎĵµ×÷HASH´¦Àí£¬»òͬʱʹÓò»Í¬µÄÇ©ÃûËã·¨¡£ÔÚÖÐÌáµ½Á˼¸ÖÖ²»Í¬
ÀàÐ͵Ĺ¥»÷·½·¨¡£

      Îå¡¢RSAµÄ¹«¹²Ä£Êý¹¥»÷

      Èôϵͳ****ÓÐÒ»¸öÄ£Êý£¬Ö»ÊDz»Í¬µÄÈËÓµÓв»Í¬µÄeºÍd£¬ÏµÍ³½«ÊÇΣÏյġ£×îÆÕ
±éµÄÇé¿öÊÇͬһÐÅÏ¢Óò»Í¬µÄ¹«Ô¿¼ÓÃÜ£¬ÕâЩ¹«Ô¿¹²Ä£¶øÇÒ»¥ÖÊ£¬ÄÇÄ©¸ÃÐÅÏ¢ÎÞÐè˽Կ
¾Í¿ÉµÃµ½»Ö¸´¡£ÉèPΪÐÅÏ¢Ã÷ÎÄ£¬Á½¸ö¼ÓÃÜÃÜԿΪe1ºÍe2£¬¹«¹²Ä£ÊýÊÇn£¬Ôò£º

      C1 = P^e1 mod n

      C2 = P^e2 mod n

      ÃÜÂë·ÖÎöÕßÖªµÀn¡¢e1¡¢e2¡¢C1ºÍC2£¬¾ÍÄܵõ½P¡£

      ÒòΪe1ºÍe2»¥ÖÊ£¬¹ÊÓÃEuclideanËã·¨ÄÜÕÒµ½rºÍs£¬Âú×㣺

      r * e1 + s * e2 = 1

      ¼ÙÉèrΪ¸ºÊý£¬ÐèÔÙÓÃEuclideanËã·¨¼ÆËãC1^(-1)£¬Ôò

      ( C1^(-1) )^(-r) * C2^s = P mod n

      ?ÁíÍ⣬»¹ÓÐÆäËü¼¸ÖÖÀûÓù«¹²Ä£Êý¹¥»÷µÄ·½·¨¡£×ÜÖ®£¬Èç¹ûÖªµÀ¸ø¶¨Ä£ÊýµÄÒ»
¶ÔeºÍd£¬Ò»ÊÇÓÐÀûÓÚ¹¥»÷Õß·Ö½âÄ£Êý£¬Ò»ÊÇÓÐÀûÓÚ¹¥»÷Õß¼ÆËã³öÆäËü³É¶ÔµÄe¡¯ºÍd¡¯£¬
¶øÎÞÐè·Ö½âÄ£Êý¡£½â¾ö°ì·¨Ö»ÓÐÒ»¸ö£¬ÄǾÍÊDz»Òª¹²ÏíÄ£Êýn¡£

      ? RSAµÄСָÊý¹¥»÷¡£ ÓÐÒ»ÖÖÌá¸ß RSAËٶȵĽ¨ÒéÊÇʹ¹«Ô¿eÈ¡½ÏСµÄÖµ£¬ÕâÑù
»áʹ¼ÓÃܱäµÃÒ×ÓÚʵÏÖ£¬ËÙ¶ÈÓÐ
      ËùÌá¸ß¡£µ«ÕâÑù×÷ÊDz»°²È«µÄ£¬¶Ô¸¶°ì·¨¾ÍÊÇeºÍd¶¼È¡½Ï´óµÄÖµ¡£

      ? RSAËã·¨ÊǵÚÒ»¸öÄÜͬʱÓÃÓÚ¼ÓÃܺÍÊý×ÖÇ©ÃûµÄËã·¨£¬Ò²Ò×ÓÚÀí½âºÍ²Ù×÷¡£
RSAÊDZ»Ñо¿µÃ×î¹ã·ºµÄ¹«Ô¿Ëã·¨£¬´ÓÌá³öµ½ÏÖÔÚÒѽü¶þÊ®Ä꣬¾­ÀúÁ˸÷ÖÖ¹¥»÷µÄ¿¼
Ñ飬Öð½¥ÎªÈËÃǽÓÊÜ£¬ÆÕ±éÈÏΪÊÇĿǰ×îÓÅÐãµÄ¹«Ô¿·½°¸Ö®Ò»¡£RSAµÄ°²È«ÐÔÒÀÀµÓÚ´ó
ÊýµÄÒò×ӷֽ⣬µ«²¢Ã»ÓдÓÀíÂÛÉÏÖ¤Ã÷ÆÆÒëRSAµÄÄѶÈÓë´óÊý·Ö½âÄѶȵȼۡ£¼´RSAµÄÖØ
´óȱÏÝÊÇÎÞ·¨´ÓÀíÂÛÉϰÑÎÕËüµÄ±£ÃÜÐÔÄÜÈçºÎ£¬¶øÇÒÃÜÂëѧ½ç¶àÊýÈËÊ¿ÇãÏòÓÚÒò×Ó·Ö½â
²»ÊÇNPCÎÊÌâ¡£ RSAµÄȱµãÖ÷ÒªÓУºA)²úÉúÃÜÔ¿ºÜÂé·³£¬Êܵ½ËØÊý²úÉú¼¼ÊõµÄÏÞÖÆ£¬Òò
¶øÄÑÒÔ×öµ½Ò»´ÎÒ»ÃÜ¡£B)·Ö×鳤¶ÈÌ«´ó£¬Îª±£Ö¤°²È«ÐÔ£¬n ÖÁÉÙÒ²Òª 600 bits ÒÔÉÏ£¬
ʹÔËËã´ú¼ÛºÜ¸ß£¬ÓÈÆäÊÇËٶȽÏÂý£¬½Ï¶Ô³ÆÃÜÂëËã·¨Âý¼¸¸öÊýÁ¿¼¶£»ÇÒËæ×Å´óÊý·Ö½â¼¼
ÊõµÄ·¢Õ¹£¬Õâ¸ö³¤¶È»¹ÔÚÔö¼Ó£¬²»ÀûÓÚÊý¾Ý¸ñʽµÄ±ê×¼»¯¡£Ä¿Ç°£¬SET( Secure
Electronic Transaction )ЭÒéÖÐÒªÇóCA²ÉÓñÈÌØ³¤µÄÃÜÔ¿£¬ÆäËûʵÌåʹÓñÈÌØµÄÃÜ
Ô¿¡£

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.