1. ½ÃÀÛÇϸç
RSA ¾Ë°í¸®ÁòÀº ¿äÁò ÀüÀÚ ¼¸í¿¡ ¸¹ÀÌ ¾²ÀÌ´Â ¾Ë°í¸®ÁòÀÌ´Ù. ÀÌ ¾Ë°í¸®ÁòÀº °ø¿ëŰ/ºñ¹Ð۸¦ °¡Áö´Â, ºñ´ëĪ Ű ¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ ´ëÇ¥ÁÖÀÚ°ÝÀÎ ¾Ë°í¸®ÁòÀÌ´Ù. ÀÌ RSA ´Â ¾Ë°í¸®ÁòÀÌ °£´ÜÇÑ ¹Ý¸é, ¸î°¡Áö ¼ö½ÄÀÌ ³ª¿À±â ¶§¹®¿¡ ½±°Ô ¼³¸íÇϱⰡ ½±Áö ¾Ê´Ù. ÇÊÀÚµµ ÀÌ ±Û¿¡¼ µÇµµ·ÏÀÌ¸é ¼ö½ÄÀ» ¾È¾²·Á ÇßÁö¸¸, ¾î¿ ¼ö ¾øÀÌ ¼ö¸¹Àº ¼ö½ÄÀ» ¾²°Ô µÇ¾ú´Ù. ÀÌ ¼ö½ÄÀ» ¿ÏÀüÈ÷ ÀÌÇØÇÏÁö ¸øÇÏ´õ¶óµµ, ÀÏ´Ü RSA ¾Ë°í¸®ÁòÀÌ ¹«¾ùÀÌ´Ù ¶ó´Â °ÍÀ» ¾Ë¾Ò´Ù¸é ÀÌ °ÀǸ¦ µéÀº º¸¶÷ÀÌ ÀÖÀ» °ÍÀÌ´Ù.2. Á¤¼ö·ÐÀÇ ±âÃÊ
RSA ¾Ë°í¸®ÁòÀ» ÀÌÇØÇϱâ À§Çؼ´Â Á¤¼ö·ÐÀ» ¹Ýµå½Ã ¾Ë¾Æ¾ß ÇÑ´Ù. º¹ÀâÇÏ°Ô º¸ÀÏÁö ¸ð¸£Áö¸¸, Çϳª Çϳª ÇØ ³ª°¡¸é, °áÄÚ ¾î·Á¿î ÀÏÀÌ ¾Æ´ÔÀ» ¾Ë °ÍÀÌ´Ù.2.1 ¹è¼ö
A | B : A ÀÇ ¹è¼ö°¡ B¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù.2.2 mod
a-b°¡ MÀÇ ¹è¼öÀ϶§, Áï M | a - b À϶§, Áï a - b = mk À϶§ a´Â ¹ý m ¿¡ °üÇØ¼ b ¿Í ÇÕµ¿À̶ó°í Çϰí, ±âÈ£·Î2.3 ¸ðµâ ¿¬»êÀÇ ¼ºÁú
2.4 ¿ÀÀÏ·¯ ÆÄÀÌ ÇÔ¼ö
2.5 ¿ÀÀÏ·¯ÀÇ Á¤¸®
ÀÓÀÇÀÇ ¾çÀÇ Á¤¼ö a¿Í m¿¡ ´ëÇÏ¿©, a¿Í m ÀÌ ¼·Î ¼ÒÀÏ °æ¿ì ´ÙÀ½ÀÇ ½ÄÀÌ ¼º¸³ÇÑ´Ù.3. RSA
3.1 ¹è°æ Áö½Ä
RSA ÀÇ ÀÔ·ÂÀº, ºí·Ï ´ÜÀ§·Î ³ª´©¾î Áø´Ù. ºí·° »çÀÌÁî´Â3.2 ¾Ë°í¸®Áò ÀÛ¼º ¼ø¼
3.3 ¾ÏÈ£È/º¹È£È °úÁ¤
¾ÏÈ£È :3.3.1 ¾Ë°í¸®Áò Áõ¸í
¿©±â¿¡¼´Â ÀÌ ¾Ë°í¸®ÁòÀ» ¼öÇÐÀûÀ¸·Î Áõ¸íÇÑ´Ù. »ç½Ç, ÀÌ ºÎºÐÀº Àü¹®ÀûÀÎ ºÎºÐÀ̹ǷΠRSA ÀÇ °³³ä¸¸À» Àâ°í ½ÍÀº µ¶ÀÚµéÀº ±×³É 4ÀåÀ¸·Î ³Ñ¾î°¡µµ ÁÁ´Ù.
¸ÕÀú M°ú nÀÌ ¼·Î ¼ÒÀÎ °æ¿ì¸¦
»ý°¢ÇØ º¸ÀÚ. ÀÌ °æ¿ì ¿ÀÀÏ·¯ÀÇ Á¤¸®¿¡ ÀÇÇÏ¿©
µÎ¹øÂ°·Î, M°ú nÀÌ ¼·Î ¼Ò°¡ ¾Æ´Ñ °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ(´Ü, M < n).
n = pq À̹ǷÎ, MÀº pÀÇ ¹è¼ö ¾Æ´Ï¸é qÀÇ ¹è¼ö°¡ µÈ´Ù. ÀϹݼºÀ» ÀÒÁö ¾Ê°í,
MÀ» pÀÇ ¹è¼ö¶ó°í °¡Á¤ÇØ º¸ÀÚ. Áï M = cp °¡ µÈ´Ù(¿©±â¼ c´Â qÀÇ ¹è¼ö°¡
Àý´ë·Î ¾Æ´Ï´Ù). ±×·¡¼ GCD(M, q) = 1ÀÌ´Ù.
ÀÌ ½ÄÀÇ ¾çº¯¿¡
±×·¯¹Ç·Î
ÀÌÁ¦ Áõ¸íÀÌ ³¡³µ´Ù. ¿©±â¼ Àá±ñ, ÇѰ¡Áö »ý°¢À» ÇØº¸ÀÚ. ¾Ïȣȸ¦ ÇÒ¶§´Â
M ÀÇ e ½ÂÀ» Çϰí , º¹È£È ÇÒ¶§´Â C ÀÇ d ½ÂÀ» Çß´Ù. ±×·¯³ª, À§ÀÇ °è»ê
°úÁ¤À» Àß º¸¸é e ¿Í d°¡ ¹Ù²î¾îµµ µÈ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. Áï,
¾ÏÈ£È ÇÒ¶§ MÀÇ d ½ÂÀ» Çϰí, º¹È£È ÇÒ´ë CÀÇ e ½ÂÀ» ÇØµµ
¿ø·¡ÀÇ ¸Þ½ÃÁö M ÀÌ ³ª¿À°Ô µÇ´Â °ÍÀÌ´Ù.
3.4 RSA ¾Ë°í¸®ÁòÀ» À§ÇØ ÇÊ¿äÇÑ °è»êµé 3.4.1 Áö¼ö °è»ê ±×·¯¹Ç·Î, ´ÙÀ½°ú °°Àº ½ÄÀÌ ¼º¸³ÇÑ´Ù.
3.4.2 Å« ¼Ò¼ö ã±â 3.4.3 ¼·Î ¼ÒÀÎ ¼ö ±¸Çϱâ 3.4.4 ¿ª¿ø ã±â
¾Æ±î ¿ÀÀÏ·¯ Á¤¸®¿¡¼ GCD(a,m) = 1À϶§(a¿Í mÀÌ ¼·Î ¼ÒÀ϶§)
3.5 RSA ¾Ë°í¸®Áò ±ú±â 5. ½ÇÁ¦ ¿¹Á¦ 5. Âü°í ¹®Çå
Áï,
int FastExp(int a, int y, int m)
{
int x = 1;
while(y) {
if(y % 2 == 1)
x = (x * a) % m;
a = (a * a) % m;
y >>= 1;
}
return x;
}
ÀÌ»ê ¼öÇÐ(½ÅÇö½Ä ¿Ü)