°ø°³Å° ¾ÏÈ£

 

  1.DES¾Ïȣȭ ½Ã½ºÅÛ°ú RSA°ø°³ ¾Ïȣȭ ½Ã½ºÅÛÀÇ Â÷ÀÌÁ¡

    DES¾Ïȣȭ ½Ã½ºÅÛ

     DES´Â ¼Û½ÅÀÚ¿Í ¼ö½ÅÀÚ¸¸ÀÌ ¾Ë°í ÀÖ´Â µ¿ÀÏÇÑ ´ëĪ۸¦ ÀÌ¿ëÇÏ¿© ¸Þ½ÃÁö¸¦ ¾ÏȣȭÇϰí

     º¹È£È­Çϰí ÀÖ´Ù.

     <¹®Á¦Á¡>

       ¨ç ŰÀÇ »çÀüºÐ¹è ¹®Á¦

          - ´Üü¿Í ±â¾÷°°Àº Æó¼âÀûÀÎ »ç¿ëÀÚµéÀº ¿ëÀÌÇϳª ÀÎÅͳݰ°Àº °³¹æÇü ½Ã½ºÅÛ¿¡¼­´Â

             µ¿ÀÏÇÑ ´ëĪ۸¦ °íÀ¯ÇÏ´Â °ÍÀÌ À§Ç輺ÀÌ ÀÕ´Ù.

       ¨è ¿©·¯ »ç¿ëÀÚ¿Í »ç¿ëÇÏ·Á¸é ¸¹Àº ¼öÀÇ(n*(n-1)/2)ÀÇ ´ëĪ۰¡ ÇÊ¿äÇÏ°Ô µÇ°í ´ëĪŰÀÇ

           »ý¼º°ú ºÐ¹è´Â ½Ã½ºÅÛÀÇ È¿¿ï¼ºÀ» ÀúÇϽÃ۰í, ¸¹Àº ¼öÀÇ ´ëĪŰÀÇ À¯Áö, °ü¸®°¡ ¾î·Æ´Ù.

     RSA°ø°³ ¾ÏÈ£½Ã½ºÅÛ   anigray05_next.gif Go to the Experiment

        ¨ç ¼­·Î ¿¬°ü¼ºÀÌ ÀÖ´Â »óÀÌÇÑ µÎ °³ÀÇ Å°¸¦ °¢°¢ ¾Ïȣȭ¿Í º¹È£È­¿¡ ÀÌ¿ë

        ¨è ¼Û½ÅÀÚ´Â ¸Þ½ÃÁö mÀ» °ø°³Å°·Î ¾ÏȣȭÇÏ¿© ¼ö½ÅÀÚ¿¡°Ô º¸³»¸é ¼ö½ÅÀÚ´Â Àڱ⸸ÀÌ ¾Ë°í

            ÀÖ´Â °³ÀÎŰ·Î º¹È£È­ ÇÔ

        ¨é ¸ðµç »ç¿ëÀÚ´Â Àڱ⸸ÀÇ ÇѽÖÀÇ °ø°³Å°¿Í °³ÀÎ۸¦ °¡Áö¸ç °ø°³Å°´Â Àڱ⿡°Ô ¸Þ½ÃÁö¸¦

            º¸³»·Á´Â »ç¶÷¿¡°Ô ¸ðµÎ Á¦°øÇØ ÁÖ°í, °³ÀÎŰ´Â ÀڽŸ¸ÀÌ ¾Ë°í ÀÖ¾î¾ß ÇÔ

        ¨ê °ø°³Å° ¾ÏÈ£ ½Ã½ºÅÛÀº ŰÀÇ »çÀüºÐ¹è¹®Á¦¸¦ ÇØ°áÇϰí, µðÁöÅÐ ¼­¸í°ú °°Àº »õ·Î¿î °³³äÀ»

            ÃâÇö½ÃÅ´

 

  2. °ø°³Å° ¾ÏÈ£ ½Ã½ºÅÛÀº ÀϹæÇâ ÇÔ¼ö¸¦ ÀÌ¿ë

        ¨ç ÀϹæÇâ ÇÔ¼ö

            x°¡ ÁÖ¾îÁö¸é y=f(x)ÀÇ °è»êÀÌ ¿ëÀÌÇÑ ¹Ý¸é, y°¡ ÁÖ¾îÁ³À» ¶§ x¸¦ ±¸Çϱâ À§ÇÑ f(x)ÀÇ ¿ª

            ÇÔ¼ö¸¦ ±¸ÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÑ ÇÔ¼ö f(x)¸¦ ¸»ÇÑ´Ù.

         ex) µÎ °³ÀÇ ¸Å¿ì Å« ¼Ò¼öÀÇ °ö

               p¿Í q°¡ ¸Å¿ì Å« ¼Ò¼öÀ̸é n=p*qÀÇ °è»êÀº ¿ëÀÌÇÑ ¹Ý¸é, ÇÕ¼º¼öÀÎ n¿¡¼­ p¿Í q¸¦ ±¸

               Çϴ °ÍÀÌ ¾ÆÁÖ ¾î·Á¿î ÀÛ¾÷ÀÌ´Ù. - RSA°ø°³ ¾ÏÈ£ ½Ã½ºÅÛ 

        ¨è °ø°³Å° ¾ÏÈ£ ½Ã½ºÅÛÀº ÀÌ ÀϹæÇâ ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù. Áï °ø°³Å°·Î ¾ÏȣȭÇÏ´Â °ÍÀº f(x)´Â

            ¿ëÀÌÇϰí, ¼ö½ÅÀÚ¸¸ÀÌ ¾Ë°í ÀÖ´Â ºñ¹ÐŰ´Â f(x)ÀÇ ¿ªÇÔ¼ö¸¦ ±¸ÇÏ´Â ºñ¹ÐÅë·ÎÀÇ ¿ªÇÒÀ»

            ÇÑ´Ù.

         - ºñ¹ÐÅë·Î ÀϹæÇâ ÇÔ¼ö

 

  3. RSA°ø°³ ¾ÏÈ£ ½Ã½ºÅÛÀ» ±¸ÇöÇϱâ À§ÇÑ ¼öÇÐÀû ¾Ë°í¸®Áò

   ÃÖ´ë°ø¾à¼ö

     ¨ç a,b ¡ô z(½Ç¼ö)¿¡ ´ëÇØ a = (b * q) + rÀÌ´Ù.

         ¸¸¾à, r=0 À̸é b¸¦ aÀÇ ¾à¼ö ¶Ç´Â Àμö¶ó ÇÑ´Ù. b|a·Î Ç¥½Ã

     ¨è a,b,c ¡ô z¿¡ ´ëÇØ c|a, c|b À̸é c´Â a¿Í bÀÇ °ø¾à¼ö

     ¨é °ø¾à¼ö Áß °¡Àå Å«¼ö¸¦ ÃÖ´ë °ø¾à¼ö(Greatest Common Divisor)¶ó Çϰí, gcd(a,b)·Î Ç¥½Ã

     ¨ê ÀÓÀÇÀÇ Á¤¼ö p¡Ã2¿¡ ´ëÇÑ ¾à¼ö°¡ 1°ú p¹Û¿¡ ¾ø´Ù¸é p¸¦ ¼Ò¼ö(Prime)¶ó Çϰí,  ±×·¸Áö ¾ÊÀ»

         °æ¿ì ÇÕ¼º¼ö(Composite)¶ó ÇÔ

     [Á¤ ¸®]

       ¨ç a|b, b|cÀ̸é a|cÀÌ´Ù.

       ¨è a|b, a|cÀ̸é a|(bx*cy)ÀÌ´Ù.

       ¨é p°¡ ¼Ò¼öÀ̰í p|(a*b)À̸é p|a ¶Ç´Â p|bÀÌ´Ù.

  À¯Å¬¸®µå ¾Ë°í¸®Áò(Euclidean algorithm)     anigray05_next.gif Go to the Experiment

    - ÃÖ´ë °ø¾à¼ö¸¦ ±¸ÇÏ´Â °¡Àå È¿¿ïÀûÀÎ ¹æ¹ý

       a¡ÃbÀÇ °ü°è¿¡ ÀÖ´Â ¾çÀÇÁ¤¼ö gcd(a,b)¸¦ ±¸ÇÏ´Â ¾Ë°í¸®Áò(java·Î ±¸Çö)

  

       s = a;                                    ex) a=252, b=198À̸é gcd(252,198)=?

       t = b;                                          a=252=(198*1) + 54

       while(t>0) {                                 198=(54*3) + 36

             r = s % t;                               54=(36*1)+18

             s = t;                                     36=(18*2)+0

             t = r;                             

            }                                                ¡Å gcd(252,198) = 18ÀÌ´Ù.

 

  È®ÀåµÈ À¯Å¬¸®µå ¾Ë°í¸®Áò

   À§¿¡¼­ gcd(252,198)=18¿¡¼­ 18À» °¡Áö°í 252¿Í 198À» ã¾Æ³¾ ¼ö ÀÖ´Ù.

      18 = 54 - 1*36 = 54 - (198 - (3 *54)) = 4 * 54 - 198 = 4 ( 252 - 198 ) - 198

          = 4 * 252 - 5 * 198

   252¿Í 198À» ã¾Æ³¾¼ö ÀÖ´Ù.

     - ÀÌ ¾Ë°í¸®ÁòÀº RSA¾ÏÈ£ ½Ã½ºÅÛ¿¡¼­

        (°ø°³Å°*ºñ¹ÐŰ) mod ((p -1) * (q - 1)) = 1 ¿¡¼­ °ø°³Å°¸¦ ±¸ÇØ ³¾ ¶§ »ç¿ëµÇ´Â ¾Ë°í¸®Áò

        ÀÌ´Ù.

  RSA¿¡¼­ ¾²ÀÌ´Â Àü¹ÝÀûÀÎ Modulus¿¬»ê(mod)

    ¨ç ¾çÀÇ Á¤¼ö n¿¡ ´ëÇÏ¿© µÎ Á¤¼ö a,bÀÇ Â÷ a-b°¡ nÀÇ ¹è¼ö ÀÏ ¶§,

        Áï n|((a-b)À̸é a¿Í b´Â Modulus n¿¡ ÇÕµ¿À̶ó Çϰí a¡Õb (mod n)À¸·Î ³ªÅ¸³¿

        ¶ÇÇÑ, Á¤¼ö a¸¦ nÀ¸·Î ³ª´©¾úÀ» ¶§ÀÇ ³ª¸ÓÁö´Â a mod n = r·Î Ç¥ÇöÇÑ´Ù.

        ±×·¯¹Ç·Î a mod n = rÀ̸é a¡Õb (mod n)ÀÌ ¸¸Á·µÈ´Ù.

        À̶§ rÀ» Modulus n¿¡ ´ëÇÑ aÀÇ À׿©ÇÏ ÇÑ´Ù.

    ¨è ÀÓÀÇ Á¤¼ö a´Â {0,1,2,3,¡¦,n-1} ÁßÀÇ ¾î´À ÇÑ Á¤¼ö¿Í Modulus n¿¡ ´ëÇÏ¿© ÇÕµ¿ÀÌ´Ù.

    ¨é Modulus¿¡¼­ÀÇ °ö¼À»óÀÇ ¿ª¿ø(È®ÀåµÈ À¯Å¬¸®µå ¾Ë°í¸®ÁòÀ¸·Î ±¸ÇÑ´Ù.)

        a/b (mod n)°ú °°Àº ³ª´°¼ÀÀÇ °æ¿ì x * b ¡Õ 1 (mod n)ÀÎ x¸¦ ãÀ» ¼ö¸¸ ÀÖ´Ù¸é x = 1/b

        À̱⠶§¹®¿¡ a * x mod nÀÇ °ö¼ÀÀÌ °¡´ÉÇÏ´Ù.

        À̶§ x¸¦ bÀÇ °ö¼À»óÀÇ ¿ª¿øÀ̶ó°í ÇÑ´Ù.

      ex) 4/3 mod 5¿¡¼­ x * 3 ¡Õ 1 (mod 5)ÀÎ x°¡ 2À̱⠶§¹®¿¡ 4/3 mod 5 = 4 * 2 ¡Õ 3 (mod 5)

            ÀÌ´Ù.  ÇÏÁö¸¸, 0ÀÌ ¾Æ´Ñ ¸ðµç Á¤¼ö bÀÇ °ö¼À»óÀÇ ¿ªÈÍÀÌ Á¸ÀçÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. n°ú b°¡

            ¼­·Î ¼ÒÀÇ °ü°è¿¡  ÀÖÀ» °æ¿ì¿¡¸¸ bÀÇ °ö¼À»óÀÇ ¿ª¿øÀÌ Á¸ÀçÇÑ´Ù.

      ex) x * 5 mod 23 = 1¿¡¼­ 5ÀÇ °ö¼À»óÀÇ ¿ª¿ø x´Â gcd(23,5)=1À» ±¸ÇÏ´Â °úÁ¤À» ÅëÇÑ

            "È®ÀåµÈ À¯Å¬¸®µå ¾Ë°í¸®Áò"À» ÅëÇØ ±¸ÇÑ´Ù.

            23 = (5 * 4) + 3, 5 = (3 * 1) + 2, 3 = (2 * 1) + 1, 2 = (1 * 2) + 0

            1 = 3 - 2 = 3 - (5 - 3) = 2(23 - (5 * 4)) - 5 = 2 * 23 - 9 * 5

            µû¶ó¼­ x = -9 = 23 - 9 = 14ÀÌ´Ù.

  ¿ÀÀÏ·¯ Á¤¸®

     nÀÌ ¼Ò¼öÀ̸é PI(n) = n -1ÀÌ µÈ´Ù.

     ¸¸¾à, nÀÌ µÎ ¼Ò¼ö p¿Í qÀÇ °öÀ̸é

        PI(n) = p * q - [(p - 1) + (q - 1) + 1] = (p - 1)(q - 1)

       ¡Å a ^ PI(n) mod n = 1

   Fermat Á¤¸®

     p°¡ ¼Ò¼öÀ̰í, a¿Í p°¡ ¼­·Î ¼ÒÀ̸é

       a ^ (p - 1) mod p = 1      

 

   4. ÀÌÁ¦±îÁöÀÇ ÀÌ·ÐÀ» ¹ÙÅÁÀ¸·Î RSA°ø°³ ¾ÏÈ£ ½Ã½ºÅÛÀÇ Å°°ªÀÇ ±¸Çö

       - RSA°ø°³Å° ¾ÏÈ£¿¡ »ç¿ëµÉ °ø°³Å° {N,E}¿Í °³ÀÎŰ{N,D}¸¦ »ý¼ºÇϱâ À§Çؼ­´Â ¸ÕÀú ¸ðµç

         »ç¿ëÀÚµéÀº °¢°¢ ´ÙÀ½ÀÇ ÀÛ¾÷À» ¼öÇà

       ¨ç µÎ °³ÀÇ Å« ¼Ò¼ö p¿Í q¸¦ ¼±Á¤ÇÑ ´ÙÀ½¿¡ Modulus N = p * q¿Í PI(N)À» °è»êÇÑ´Ù.

       ¨è °ø°³Å° E´Â PI(N) = (p - 1)(q - 1)°ú ¼­·Î ¼ÒÀÇ °ü°è°¡ µÇ°Ô ÀÓÀÇ·Î ¼±Á¤

       ¨é E * D mon PI(N) = 1ÀÇ °ü°è¿¡ ÀÖ´Â °³ÀÎŰ D¸¦ "È®ÀåµÈ À¯Å¬¸®µå ¾Ë°í¸®Áò"À¸·Î ±¸ÇÑ´Ù.

       ¨ê {E,N}À» °ø°³Å°·Î °ø°³Çϰí, {D,N}À» °³ÀÎŰ·Î ÀÚ½ÅÀÌ ¾ÈÀüÇÏ°Ô º¸°üÇÑ´Ù.

       - RSA¾Ïȣȭ (¾Ïȣȭ ÇÏ·Á´Â ¼ö´Â M)

          E(M) = M ^ E mod N = C

       - RSAº¹È£È­

          D(C) = C ^ D mod N = ((M ^ E) ^ D) mod N = M

       ex) n = p * q = 47 * 71 = 3337 °ø°³Å° e´Â (p - 1)(q - 1) = 46 * 70 = 3220°ú ¼­·Î ¼ÒÀÇ

             °ü°è¿¡ ÀÖ´Â ÀÓÀÇÀÇ Á¤¼ö 79·Î ¼±Á¤ÇÑ´Ù. µû¶ó¼­, °³ÀÎŰ´Â "È®ÀåµÈ À¯Å¬¸®µå ¾Ë°í¸®Áò"

             À» ÀÌ¿ëÇÏ¿©  d = 1019°¡ µÈ´Ù. Æò¹® m = 688dÀº ¾ÏÈ£¹® c = 688 ^ 79 mod 3337 = 1570

             À¸·Î ¾ÏȣȭµÈ´Ù.

             °³ÀÎŰ d = 1019¸¦ »ç¿ëÇÏ¿© ´Ù½Ã ¾ÏÈ£¹® c = 1570Àº Æò¹® m = 1570 ^ 1019 mod 3337·Î

             º¹È£È­°¡ µÈ´Ù.

 

  5. Java·Î ±¸Çö½Ã ¶Ç ´Ù¸¥ ¹®Á¦Á¡  anigray05_next.gif Go to the Experiment

  M ^ E mod NÀÇ °è»ê

    - ÀÌ °è»êÀº M°ú E°¡ ¾ÆÁÖ Å« ¼öÀ̸é ÇÁ·Î±×·¥ ¾ð¾î·Î ½ÇÁ¦·Î ±¸ÇöÇϴµ¥´Â ¹®Á¦°¡ »ý±â°Ô

       µÈ´Ù.

      ¡ñ float or doubleÇüÀº ¾ÏȣȭÇÑ ¼ö¸¦ »êÃâÇÒ ¶§¿¡ Á¦ÇÑµÈ ÀÚ¸®¼ö¸¦ ÃʰúÇÏ°ÔµÇ¸é ¹Ý¿Ã¸²

          ÈÄ Áö¼öÀÇ ÇüÅ·Πǥ½ÃÇÏÁö ¶§¹®¿¡ longÇüÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.

    - °è»ê ½Ã°£ÀûÀ¸·Î ºñÈ¿À²ÀûÀÌ´Ù.("¹Ýº¹ Á¦°ö-°ö¼À"¾Ë°í¸®ÁòÀ» »ç¿ë)

 

  ¹Ýº¹ Á¦°ö-°ö¼À ¾Ë°í¸®Áò

     ¨ç ¿µÀÌ ¾Æ´Ñ e¿¡ ´ëÇØ¼­ ÀÌ °ÍÀ» ÀÌ¿ëÇÏ·Á¸é ¸ÕÀú e¸¦ kºñÆ®ÀÇ 2Áø¼öÀÇ ÇüÅ·Πº¯ÇüÇÑ´Ù.

     ¨è eiÀÇ °ªÀÌ 0À̸é Á¦°ö, 1À̸é Á¦°ö-°ö¼ÀÀÇ ¿¬»êÀ» ¼öÇàÇÑ´Ù.

     ¨é ½ÇÁ¦Àû Java·Î ±¸Çö( ei´Â i¹øÂ° ºñÆ®ÀÇ °ªÀÌ´Ù.)

            z = 1;

            for(int i=k-1;i>=0;i++)

            {

                    z = z ^ 2 mod n;

                    if(ei == 1)

                          z = (z * m) mod n;

             }

             return z;

 

  È®·ãÀû ¼Ò¼ö ÆÇÁ¤¹ý(Miller-Rabin ¾Ë°í¸®Áò) - miller_rabin(n,k)

     n - 1 = (2 ^ s) * r¿¡¼­ s¿Í rÀ» ±¸Çس½´Ù.       

            boolean flag = true;

            for(int i= 1;i >= k;i++)

            {

                      a = (long)(Math.random() * (n - 2));

                      y = a ^ r % n;

                      if(y != 1 && y !=n-1)

                      {

                                j = 1;

                                while(j<=s-1 && y != n-1)

                                {

                                         y = y ^ 2 % n;

                                         if(y==1)

                                               flag = false;

                                         j++;

                                 }

                                 if(y!=n-1)

                                         flag = false;

                        }

            }

            return flag;