¾ÏÈ£È ÇÁ·Î±×·¡¹Ö(Cryptography Programming)
±Çµµ±Õ
´ëÀü ±¤¿ª½Ã À¯¼º±¸ °¡Á¤µ¿ 34
µ¥ÀÌÄÞ ¿¬±¸¼Ò ÀüÀÚÁöºÒ ÇÁ·ÎÅäÄÝ ¿¬±¸ÆÀ
E-mail : dgguen@madang.dacom.co.kr
URL :
http://madang.dacom.co.kr/dgguen/
- Abstract:
- ÀÎÅͳݻ󿡼ÀÇ º¸¾ÈÀ» È®º¸ÇÏ´Â ±æ°¡¿îµ¥ Á¤º¸¸¦ ¾ÏÈ£ÈÇØ¼ º¸¾ÈÀ» È®º¸ÇÏ´Â ¹æ¹ýÀÌ Á¡
Á¡ Áß¿äÇÑ ¿ä¼Ò·Î ºÎ°¢µÇ°í ÀÖ´Ù. WWWº¸¾È(WWW Security)ÇÁ·ÎÅäÄÝ, ÀüÀÚ¿ìÆíº¸¾È (PGP,
PEM, S/MIME), ³×Æ®¿÷·¹À̾¾È(Ipsec, SSL, GSSAPI)µî ¾Ïȣȸ¦ ÀÀ¿ëÇÑ º¸¾ÈÀÀ¿ë½Ã½º ÆÀµé
ÀÌ ¸¹ÀÌ µîÀåÇϰí ÀÖ´Ù. ÀÌ·± ¸ðµç ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀ¿¡´Â ±âº»ÀûÀÎ ¾ÏÈ£È ÇÁ·Î±×·¡ ¹Ö±â¹ýÀÌ
°øÅëÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù. ÀÌ·± ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀÀ» ¸¸µé±âÀ§ÇÑ °øÅëÀûÀÎ ±â¼úÀÎ ¾ÏÈ£ÈÇÁ·Î±×
·¡¹ÖÀ» ¼³¸íÇÑ´Ù.
- Keywords:
- Cryptography, programming, RSA, DES, Signature
¸ñÂ÷
- 1. ¼·Ð- ¹æÈº®À¸·Î ÇØ°áÇÒ¼ö ¾ø´Â ¼û¹Ù²ÀÁú
- 1.1 Internet Attack
- 1.2 ¹æÁö¹ý
- 1.3 ¾ÏÈ£È ½Ã½ºÆÀ
- 2. ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀ
- 2.1 Transport Layer Security : IPSec, SSL, GSSAPI, PCT
- 2.2 Secure-Mail
- 2.3 Secure-Shell(SSH)
- 2.4 WWW Security
- 2.5 Secure-Phone
- 2.6 Desktop-Security Tool
- 3. ¾ÏÈ£È °³³ä
- 3.1 Symmetric Cryptography
- 3.2 Asymmetric Cryptography
- 3.3 Message Diegest
- 3.4 Digital Signature
- 3.5 ¾ÏÈ£È ¾Ë°í¸®Áò°ú ŰÀÌ ±æÀÌ
- 4. ¾ÏÈ£È ¶óÀ̺귯¸®
- 4.1 RSAEURO/RSAREF
- 4.2 Microsoft CryptAPI
- 4.3 SSLeay
- 4.4 PGP
- 4.5 JAVA Crypto
- 5. ¾ÏÈ£È ÇÁ·Î±×·¡¹Ö - RSAEURO/RSAREFÁß½ÉÀ¸·Î
- 5.1 Symmetric Cryptography Programming
- 5.2 Asymmetric Cryptography Programming
- 5.3 Message Digest Programming
- 5.4 Digital Signature Programming
- 5.5 High Level API
- 5.6 ¾ÏÈ£È ÇÁ·ÎÅäÄÝ
- 5.7 ±âŸ °í·ÁÇÒ Á¡
- 6. °á·Ð
1. ¼·Ð- ¹æÈº®À¸·Î ÇØ°áÇÒ¼ö ¾ø´Â ¼û¹Ù²ÀÁú
ÄÄÇ»ÅÍ º¸¾ÈÀº µÎ°¡Áö ¹æÇâ¿¡¼ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ½Ã½ºÆÀº¸¾È°ú ÀÚ·áÀÇ º¸¾ÈÀÌ´Ù. ±×·¯³ª ½ÇÁ¦·Î
ÄÄÇ»ÅÍ º¸¾ÈÀ» »ý°¢ÇÒ¶§ ±à±¹ÀûÀ¸·Î´Â ÀÚ·áÀÇ º¸¾ÈÀ» ¸ñÀûÀ¸·Î ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. Áï ½Ã½ºÆÀº¸¾È
¿ª½Ã ½Ã½ºÆÀÀÚü, Áï µð½ºÅ©, ¿ÀÆÛ·¹ÀÌÆÃ½Ã½ºÆÀµîÀÇ ÆÄ±«¸¦ ¹æÁöÇÏ´Â ÀϺ¸´Ù ´Â ½ÇÁ¦·Î ±× ½Ã½ºÆÀ
³»ºÎ¿¡ ÀÖ´Â Á¤º¸ ȤÀº ÀÚ·á°¡ ´©¼³µÇÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ ÁÖµÈ ¸ñÀû ÀÌ µÇ°í ÀÖ´Ù. ¿À´Ã³¯¿¡´Â
¹é¾÷±â¼úÀÇ ¹ß´Þ, ÄÄÇ»ÅÍ Çϵå¿þ¾îµîÀÇ ¹ß´Þ·Î ½Ã½ºÆÀÀÚüº¸´Ù´Â ±× ¼Ó¿¡ µé¾îÀÖ´Â Á¤º¸°¡ ´õ ºñ
½Î±â ¶§¹®ÀÏ °ÍÀÌ´Ù.
ÀÏ¿¹·Î 96³â 9¿ù¿¡ ¹àÇôÁø ¹Ì±¹CIAÀÇ À¯·´¿¬ÇÕÁ¤ºÎ ÄÄÇ»ÅͽýºÆÀ ÇØÅ·»ç°ÇÀº Àü¼¼°èÀû À¸·Î ³í
¶õÀÌ µÇ´Â ÄÄÇ»Åͺ¸¾ÈÀÇ Á߿伺À» ´Ù½Ã Çѹø Àϱú¿öÁÖ´Â »ç°ÇÀ̶ó ÇϰڴÙ. ¹Ì±¹Àº À¯·´Á¤ºÎÀÇ
ÄÄÇ»Å͸¦ ÇØÅ·ÇØ¼ ¾òÀº Á¤º¸¸¦ ¹ÙÅÁÀ¸·Î À¯·´°úÀÇ Åë»óÇù»ó¿¡¼ À¯¸®ÇÑ À§Ä¡ ¸¦ È®º¸ÇßÀ¸¸ç ÃÖ
±ÙÀÇ Åë»óÇù»ó¿¡¼ ¸¹Àº °ÍÀ» ¾ò¾ú´Ù°í ÇÑ´Ù.
±¹³»¿¡´Â º¸¾ÈÇÏ¸é ¹æÈº®(Firewall)À» ÃÖ´ëÀÇ ÇØ°áÃ¥À̶ó°í »ý°¢ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ±×·¯ ³ª ¹æ
Ⱥ®(firewall)Àº °¡Àå Ãʺ¸ÀûÀÎ º¸¾È ÇØ°áÃ¥À̶ó°í ¸»ÇÒ¼ö ÀÖ°Ú´Ù. ¹æÈº®Àº ¸¶Ä¡ °Ç¹° ÁÖÀ§¿¡ ´ã
ÀåÀ» ½×´Â °Í°ú °°´Ù. ±×·¯³ª ¹®ÀÌ ¾ø´Â °Ç¹°Àº ÀÖÀ»¼ö ¾øÀ¸¹Ç·Î ¹®À» ¸¸µé¾î¾ß Çϸç, ÀÌ ¹®ÀÌ ¹Ù
·Î º¸¾ÈÀÇ ÇãÁ¡ÀÌ µÉ¼ö ÀÖ´Ù. ´ãÀ» ½×´Â´Ù°í »ç¶÷ÀÌ ¿Ô´Ù °¬´Ù ÇÏÁö ¾Ê´Â °ÍÀº ¾Æ´ÏµíÀÌ ¹æÈº®
ÀÌ ÀÖ´Ù°íÇØ¼ Á¤º¸°¡ ³×Æ®¿÷À» Ÿ°í ÇØ´ç ÄÄÇ»ÅÍ¿Í Åë½ÅÇÏÁö ¾Ê´Â°Í Àº ¾Æ´Ï¹Ç·Î ¹æÈº®Àº °¡Àå
Ãʺ¸ÀûÀÎ º¸¾È½Ã½ºÆÀÀ̶ó°í ÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¹æÈº®½ÄÀÇ º¸ ¾ÈÀ» ÇØ°áÇÏ·ÁÇÑ´Ù¸é, °¡Àå ÁÁÀº
¹æ¹ýÀº ¹Ù·Î ÇØ´ç ÄÄÇ»ÅÍÀÇ ·£Ä«µå/¸ðµç Åë½ÅÆ÷Æ®¸¦ Á¦°Å ÇÏ°í ³×Æ®¿÷À¸·ÎºÎÅÍ ºÐ¸®½ÃÄÑ È¥ÀÚµÎ
´Â ¹æ¹ýÀÌ´Ù. ÀÌ·± ¹æÈº®ÀÌ ÇØ°áÇÏÁö ¸øÇÏ´Â ¼û¹Ù ²ÀÁúÀ» ¹Ù·Î ¾ÏÈ£È ±â¼ú·Î º¸¿Ï ÇØ°áÇØ¾ß
ÇÑ´Ù.
1.1 Internet Attack
ÀÎÅͳݻóÀÇ º¸¾ÈħÅõ´Â ¾Õ¿¡¼ À̾߱âÇÑ ´ë·Î µÎ°¡Áö·Î º¼¼ö ÀÖ´Ù. Çϳª´Â ½Ã½ºÆÀ³»
ºÎ¿¡ ºÒ¹ýÀûÀÎ »ç¿ë±Ç(°èÁ¤)À» ȹµæÇØ ½Ã½ºÆÀÀ» ºÒ¹ýÀûÀ¸·Î »ç¿ëÇÏ¸é¼ Á¤º¸¸¦ ¾ò´Â ¹æ ¹ýÀ̰í,
µÎ¹øÂ°´Â ³×Æ®¿÷»ó¿¡ Àü¼ÛµÇ´Â Á¤º¸¸¦ °¡·Îä´Â ¹æ¹ý(sniffing)À¸·Î Á¤º¸¸¦ ȹµæ ÇÏ´Â ¹æ¹ýÀÌ ÀÖ
À»¼ö ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ÇØÄ¿´Â ÀÌ µÎ°¡Áö ¹æ¹ýÀ» ¼·Î º¹ÇÕÀûÀ¸·Î ÀÌ ¿ëÇØ Á¤º¸¸¦ ¾ò¾î³»´Â ¹æ
½ÄÀ» ÃëÇÑ´Ù. Áï ³×Æ®¿÷»ó¿¡¼ ¿À°¡´Â µ¥ÀÌŸ¸¦ °¡·Îä¼ Ư Á¤ ÄÄÇ»ÅÍÀÇ »ç¿ëÀÚ¿Í ÆÐ½º¿öµå¸¦
ÃëµæÇÑ ÈÄ ÇØ´ç ÄÄÇ»ÅÍ¿¡ ·Î±äÇØ¼ ¼öÆÛÀ¯Àú ±ÇÇÑÀ» ¾Ë¾Æ³»¸é ´õ ¸¹Àº Á¤º¸¸¦ ¾ò¾î³¾¼ö°¡ ÀÖÀ¸¹Ç
·Î ´õ ¸¹Àº Á¤º¸¸¦ ¾ò¾î³½´Ù. ƯÈ÷ ÈÄÀÚ ÀÇ °æ¿ì Áï ³×Æ®¿÷ ½º´ÏÇÎ(sniffing)Àº ¹æÈº®À¸·Î´Â Àü
Çô º¸È£ÇÏÁö ¸øÇÑ´Ù. ³×Æ®¿÷À» Ÿ°í Àü¼ÛµÇ´Â Á¤º¸´Â ÁÖ·Î ÀüÀÚ¸ÞÀÏ, ÅÚ³Ý(telnet), ÆÄÀÏÀü¼Û
(FTP), WWW°Ë»öµîÀÇ Á¤º¸ Àε¥ ÀÌ °¡¿îµ¥ ÅÚ³Ý, ÆÄÀÏÀü¼ÛµîÀº »ç¿ëÀÚ°èÁ¤°ú ÆÐ½º¿öµå°¡ ³ëÃâ
µÉ¼ö ÀÖ´Â ÇüÅ·ΠÀü¼ÛÀÌ µÇ¹Ç·Î ½Ã½ºÆÀÀÇ »ç¿ë±ÇÀ» ȹµæ ´çÇÒ¼ö ÀÖ´Â °¡´É¼ºÀÌ ´õ¿í Ä¿Áø´Ù.
96³â 9¿ù¿¡ ±¹³»¿¡¼ ÀÏ¾î³ ÀÎÅÍ³Ý ÇØÅ·(sniffing)À» ÀÌ¿ëÇÑ È¨¹ðÅ·µµ¿ë»ç°ÇÀº ÀÌ·± ¿¹ÀÇ »ç°Ç
À̶ó°í ÇÒ¼ö ÀÖ´Ù. ¾ö¹ÐÇÑ Àǹ̿¡¼ ±× »ç°ÇÀº ½º´ÏÇÎÀ̶ó°í ÇÒ¼ö ¾ø±ä ÇÏÁö ¸¸ ½º´ÏÇΰú ¸Å¿ì
À¯»çÇÑ ¹æ¹ýÀ̶ó°í ÇÒ¼ö ÀÖ´Ù.
1.2 ¹æÁö¹ý
ÀÌ·± ³×Æ®¿÷ÇØÅ·À» ¹æÁöÇÏ´Â °¡Àå ÁÁÀº ¹æ¹ýÀº ¾Õ¿¡¼ À̾߱â ÇÑ ´ë·Î ³×Æ®¿÷À» ÀüÇô
¾²Áö ¾Ê´Â °ÍÀÌ´Ù. ÀüÀÚ¸ÞÀϵµ »ç¿ëÇÏÁö ¾Ê°í, ³×Æ®¿÷À» ÀüÇô ¿¬°áÇÏÁö¾Ê°í ÄÄÇ»Å͸¦
Äֿܼ¡¼ È¥ÀÚ¸¸ ¾²´Â °ÍÀÌ´Ù. °¡Àå ¾ÈÀüÇÑ ¹æ¹ýÀ̱äÇÏÁö¸¸ Çö½ÇÀûÀÌÁø ¸øÇÑ ¹æ¹ýÀ̶ó
ÇϰڴÙ. ´ÙÀ½ ´ë¾ÈÀº ¹æÈº®À» ¼³Ä¡ÇÏ¿© ÀÏÁ¤ÇÑ ¹ýÄ¢À» µû¶ó Á¦¾àÀ» °¡ÇÑ º¸¾È½Ã½ºÆÀ
À» »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ»¼ö ÀÖÁö¸¸ ¿©ÀüÈ÷ ³×Æ®¿÷»óÀÇ Á¤º¸ÀÇ º¸È£¿Í ½Ã½ºÆÀº¸È£¿¡¼
´Â ¸¸Á·½º·¯¿î ÇØ°áÃ¥À̶ó°í º¸±ä ¾î·Æ´Ù.
°¡Àå ¾ÈÀüÇÑ ¹æ½ÄÀº ¸ðµç Á¤º¸¸¦ ¾ÏÈ£ÈÇÏ´Â ¹æ¹ýÀÌ´Ù. ±×°Íµµ »ó´çÈ÷ °·ÂÇÑ ¾ÏÈ£
ȱâ¼ú°ú »ó´çÈ÷ ±ä ŰÀÌ(Key)·Î ¾Ïȣȸ¦ ÇØ¼ ÀúÀåÇϰųª Àü¼ÛÇÏ´Â ¹æ¹ýÀÌ´Ù. ÀÌ·¸
°Ô ÇØ µÑ °æ¿î¿¡´Â ´©±º°¡°¡ ³» ÄÄÇ»ÅÍ ÆÄÀÏÀ̳ª Àü¼ÛµÇ´Â Á¤º¸¸¦ ÈÉÃĺ¸°Å³ª ÃëµæÇÒ
±î¸¦ µÎ·Á¿ö ÇÒ Çʿ䰡 ¾ø´Ù. ŰÀÌ(Key) ¾øÀÌ´Â ¾î¶µç ÇØ´ç Á¤º¸¸¦ ÇØµ¶ÇÒ¼ö°¡ ¾øÀ»
Å״ϱî. ±×·¯³ª ¾ÏÈ£È ¹æ½Ä¿¡µµ ±× ±¸Çö¹æ½Ä¿¡µû¶ó ¿©·¯°¡Áö ÇãÁ¡ÀÌ ¹ß»ýÇϱ⵵ ÇÏÁö
¸¸, ÇöÀç·Î´Â ÀϹÝÀûÀÎ °íµµÀÇ º¸¾È½Ã½ºÆÀÀ» À§ÇÑ °¡Àå ÀûÀýÇÑ ÇØ°áÃ¥À¸·Î ¾Ë·ÁÁ® ÀÖ
°í ÀÌ¿ëµÇ°í ÀÖ´Ù. ƯÈ÷ Á¤º¸¸¦ ³×Æ®¿÷, ±×°Íµµ °³¹æµÈ TCP/IP¿Í °°Àº ¾ÈÀüÇÏÁö ¸øÇÑ
³×Æ®¿÷À» ÅëÇØ Àü¼ÛÇÏ´Â ÀüÀÚ¿ìÆíÀ̳ª Åڳݰú °°Àº ÀÀ¿ë½Ã½ºÆÀ¿¡´Â ¾ÏÈ£ÈÀ̿ܿ¡´Â ´Ù
¸¥ ´ë¾ÈÀÌ ¾ø´Ù°í ÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÃÖ±Ù ¾Ë·ÁÁø Åڳݰú °°Àº ½Ã½ºÆÀ¿¡ ÀÀ¿ëµÇ´Â S/KeyȤÀº One Time Password¿Í °°Àº ¹æ
½ÄÀº ¾Ïȣȹæ½ÄÀ̶ó°í ÇÒ¼ö´Â ¾ø°í ´Ù¸¸ ÆÐ½º¿öµå¸¦ Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö°¡ »óÈ£ ¾à¼Ó
¿¡ ÀÇÇØ ÀÚÁÖ º¯°æÇÏ´Â ¹æ½ÄÀ» ¸»ÇÑ´Ù. ÀÌ´Â ´Ù¸¸ ÆÐ½º¿öµå¸¦ ¸Å¹ø º¯°æÇÔÀ¸·Î½á ÆÐ½º
¿öµå¸¦ ½º´ÏÇÎÇØ¼ ÃëµæÇß´ÙÇÏ´õ¶óµµ ´ÙÀ½¿¡´Â ´Ù¸¥ ÆÐ½º¿öµå°¡ À¯È¿ÇϹǷΠ°ú°ÅÀÇ ÆÐ
½º¿öµå·Î´Â ½Ã½ºÆÀ¿¡ ·Î±äÇÒ¼ö ¾ø±â¶§¹®¿¡ ½Ã½ºÆÀÀ» º¸È£ÇÒ¼ö ÀÖ´Â ½Ã½ºÆÀÀÌ´Ù. ±×·¯
³ª À̰ÍÀº ´Ù¸¸ ÆÐ½º¿öµå¸¦ ÀÚÁÖ ¹Ù²Ù´Â ¹æ¹ýÀ̱⶧¹®¿¡ ÆÐ½º¿öµåÀÌ¿ÜÀÇ ´Ù¸¥ Á¤º¸ÀÇ
º¸È£¿¡´Â µµ¿òÀÌ µÇÁö ¾Ê´Â´Ù. One Time PasswordµîÀº ÀϹÝÀûÀ¸·Î ³×Æ®¿÷ÀÀ¿ë½Ã½ºÆÀº¸
´Ù´Â ·ÎÄ®½Ã½ºÆÀ¿¡ ·Î±äÇÏ´Â ¹æ¹ý¿¡¼ ICÄ«µå¿Í ÀÀ¿ëÇØ¼ ¸¹ÀÌ »ç¿ëÇÏ´Â ¹æ¹ýÀ¸·Î ³×
Æ®¿÷»óÀÇ ½º´ÏÇο¡´Â ÀûÇÕÇÏÁö ¾Ê´Â ¹æ¹ýÀ̶ó°í ÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î ¼³¸íÇÏ¸é ´©±º°¡°¡ ÀÎÅͳݻ󿡼 S/Key¸¦ ÀÌ¿ëÇØ PCÅë½Å¿¡ µé¾î¿Ô´Ù°í Ä¡
ÀÚ. ±×¸®°í ±×°ÍÀº ´©±º°¡°¡ ½º´ÏÇÎÇØ¼ Á¤º¸¸¦ ÈÉÃ帰í ÀÖ´Ù°í °¡Á¤Çϸé, PCÅë½Å¿¡
¼ ´Ù½Ã ÀÌ»ç¶÷Àº ƯÁ¤ÀºÇàÀÇ È¨¹ðÅ·À¸·Î µé¾î°¡¼ °èÁÂÀÌ並 ÇÏ°í ºñ¹Ð¹øÈ£¸¦ ÀÔ·Â
ÇÑ´Ù°í Çϸé ÀÌ »ç¶÷ÀÇ PCÅë½Å¿ë ÆÐ½º¿öµå´Â º¸È£µÇ°ÚÁö¸¸ ±× À̿ܿ¡ PCÅë½ÅÀ» »ç¿ë
ÇÑ ³»¿ëÀ̳ª Ȩ¹ðÅ·¿¡ µé¾î°¡¼ ÀÔÃâ·ÂÇÑ ¸ðµç ³»¿ëÀº ´Ù ³ëÃâÀÌ µÇ°í ¸»°Ô µÈ´Ù.
1.3 ¾ÏÈ£È ½Ã½ºÆÀ
³×Æ®¿÷»ó¿¡¼ ÁÖ°í¹Þ´Â Á¤º¸ ȤÀº ÄÄÇ»ÅÍ¿¡ ÀúÀåµÈ Á¤º¸¸¦ º¸È£ÇÏ´Â ¾ÏȣȽýº
ÆÀ¿¡¼ Áß½ÉÀûÀ¸·Î °í·ÁÇÏ´Â ÁÖµÈ °üÁ¡Àº ´ÙÀ½ ¼¼°¡ÁöÀÌ´Ù.
- ±â¹Ð¼º(Confidentiality)
- ÅëÇÕ¼º(Integrity)
- ºÎÀιæÁö(Non-Repudiation)
±â¹Ð¼ºÀº ÀÚ·áÀÇ ³»¿ëÀ» ¿øÄ¡¾Ê´Â Á¦ 3ÀÚ¿¡°Ô ³ëÃâµÇÁö ¾Êµµ·Ï ¹æÁöÇÏ´Â °ÍÀ»
¸»ÇÑ´Ù. À̸¦ À§Çؼ´Â ÀÚ·áÀÇ ³»¿ëÀ» ¾ÏÈ£ÈÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
ÅëÇÕ¼ºÀº ÀÚ·áÀÇ ³»¿ëÀ» ³ëÃâµÇÁö´Â ¾Ê´Â´ÙÇÏ´õ¶óµµ Á¦ 3ÀÚ°¡ ÀÚ·áÀÇ ³»¿ëÀ» ¼ö
Á¤Çϰųª ÷°¡Çϰųª ¼ø¼¸¦ ¹Ù²Ù°Å³ªÇÏ´Â °ÍÀ» ¹æÁöÇϱâÀ§ÇÑ ±â¼úÀÌ´Ù. ÀÌ·± °Í
À» ¹æÁöÇϱâÀ§Çؼ ÁÖ·Î ¸Þ¼¼ÁöÀÇ Ã¼Å©¼¶ ȤÀº ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®(Message Digest)
¸¦ ±¸ÇØ µÒÀ¸·Î½á ¸Þ½ÃÁöÀÇ ¼öÁ¤¿©ºÎ¸¦ ³ªÁß¿¡ È®ÀÎÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù.
ºÎÀιæÁö(Non-Repudiation) ȤÀº ¼Û½ÅÀÚ ½ÅºÐÈ®Àιæ¹ýÀº ¸Þ½ÃÁö´Â µðÁöÅ» ÇüÅ·Î
¸¸µé¾îÁ® ÀÖÀ¸¹Ç·Î ½±°Ô À§Á¶ÇÒ¼ö ÀÖÀ¸¸ç À§Á¶µÈ µðÁöÅ» Á¤º¸¸¦ È®ÀÎ ÇÒ ±æÀÌ ¾ø
´Ù. ±×·¯³ª ÀüÀÚ¼¸íÀ» »ç¿ëÇϸé, ¼ö½ÅÀÚÀÇ ÀÔÀå¿¡¼´Â ¸Þ½ÃÁöÀÇ ¼Û½ÅÀÚÀÇ ½ÅºÐÀ»
È®ÀÎÇÒ¼ö ÀÖÀ¸¸ç ¼Û½ÅÀÚ´Â ÀÚ½ÅÀÌ ÀüÀÚ¼¸íÀ» ÇØ¼ º¸³½ ³»¿ëÀ» ºÎÀÎÇÒ¼ö ¾ø°Ô
µÈ´Ù.
¿ì¸®´Â ¾ÕÀ¸·Î ÀÌ·± ¾ÏÈ£È/¸Þ½ÃÁöÅëÇÕ¼ºÃ¼Å©/ÀüÀÚ¼¸íµîÀÇ ±âº»ÀûÀÎ ±â´ÉÀ» µÚ
¿¡ ½ÇÁ¦·Î ÇÁ·Î±×·¡¹ÖÇÏ¸é¼ Çϳª Çϳª È®ÀÎ ÇØ ³ª°¥ °ÍÀÌ´Ù.
2. ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀ
¾Ïȣȱâ¼úÀº ¸ðµç Á¤º¸Åë½Å ºÐ¾ß¿¡ Àû¿ëÇÒ¼ö ÀÖ´Ù. µðÁöÅ» Á¤º¸¸¦ ´Ù·ç´Â ¸ðµç ÀÀ¿ëºÐ¾ß
¿¡¼ º¸¾ÈÀÌ ÇÊ¿äÇÑ ºÐ¾ß¿¡´Â ¸ðµÎ Àû¿ëÇÒ ¼ö ÀְԵȴÙ. ÇöÀç ÄÄÇ»ÅÍÀÀ¿ë½Ã½ºÆÀµé°¡¿îµ¥
¾Ïȣȱâ¼úÀÌ Àû±ØÀûÀ¸·Î ÀÀ¿ëµÇ´Â ºÐ¾ß¸¦ ³ª¿ÇØ º¸¾Ò´Ù.
2.1 Transport Layer Security : IPSec, SSL, GSSAPI, PCT
TCP/IP³×Æ®¿÷ ÇÁ·ÎÅäÄÝÀÌ ÀüÀûÀ¸·Î º¸¾È¿¡ ´ëÇÑ ´ëÃ¥ÀÌ ¾ø´Â ÇÁ·ÎÅäÄÝÀ̾ú´Ù. ±×·¡¼ ¸¹Àº
º¸¾ÈÀÀ¿ë½Ã½ºÆÀµéÀÌ µîÀåÇÏ¿´´Ù. ±×·¯³ª °¢°¢ÀÇ ÀÀ¿ë½Ã½ºÆÀÀÌ º¸¾ÈÇÁ·ÎÅäÄÝÀ» Àû¿ëÇÏ´Ù°¡
º¸´Ï±î Â÷¶ó¸® IP·¹À̾¼ º¸¾ÈÀÌ º¸ÀåµÇ¸é Áï Secure ChannelÀÌ º¸ÀåµÇ¸é ÀÀ¿ë½Ã½ºÆÀÀº
º¸¾È¹®Á¦¸¦ ½±°Ô ÇØ°áÇÒ ¼ö ÀÖÁö ¾ÊÀ»±îÇÏ´Â ¹ß»ó¿¡¼ Transport Layer¿¡¼ÀÇ Security°¡ ¸¹
ÀÌ ³íÀǵǰí ÀÖ´Ù.
ÀÌ ºÐ¾ßÀÇ ´ëÇ¥ÀûÀÎ ÇÁ·ÎÅäÄݷμ´Â IPSecÀÌ´Ù. IP·¹À̾ÀÇ ÆÐŶÀ» ¾ÏÈ£ÈÇØ¼ Àü´ÞÇÏ
´Â ¾ÆÀ̵ð¾î·Î¼ ÆÐŶÀ» ¾ÏÈ£ÈÇϱâÀ§ÇÑ ESP(Encapsulated Security Payload)ÇÁ·ÎÅäÄݰú ÆÐŶÀÇ
ÀÎÁõÀ» À§ÇÑ AH(Authentication Header)ÇÁ·ÎÅäÄÝÀÌ Áß½ÉÀÌ´Ù. ´ëºÎºÐÀÇ ºñ´ëĪÇü¾Ïȣȸ¦ ÀÌ
¿ëÇÑ ÇÁ·ÎÅäÄÝÀÌ ±×·¸µíÀÌ IPSec¿ª½Ã ۱³È¯ ȤÀº ۰ü¸®°¡ °ñÄ¡°Å¸®ÀÌ´Ù. IPSecÀ» À§ÇÑ
۱³È¯ÇÁ·ÎÅäÄݷδ ISAKMP/Oakley, SKIP, PhoturisµîÀÌ Á¦¾ÈµÇ°í ¶Ç ±¸ÇöµÇ¾î ÀÖ´Ù.
IPSecÀº NRL¿¡¼ IPv6¸¦ ±¸ÇöÇÏ¸é¼ IPSecÀ» ±¸ÇöÇß°í, IPv4¿¡¼µµ ±¸ÇöÇß´Ù.
ISAKMP/Oakley´Â ½Ã½ºÄڽýºÆÀ(Cisco System)¿¡¼ ±¸ÇöÇÏ¿´À¸¸ç
http://www.cisco.com/public/library/isakmp.html °ú http://web.mit.edu/network/isakmp ¿¡¼ ±¸
ÇÒ¼ö
ÀÖ´Ù. SKIPÀº INCOG¿Í SUN¿¡¼ ±¸ÇöÇØ¼ http://skip.incog.com/ ¿¡¼ ±¸ÇÒ¼ö ÀÖ´Ù.
IPSecÀº ÇâÈÄ IPv6ȤÀº IPng¿¡ ³»ÀåµÇ¾î ÇâÈÄ ÀϹÝÀûÀ¸·Î »ç¿ëÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù. IPSec°ú
°ü·ÃµÈ ÀϹÝÀûÀÎ Á¤º¸´Â http://www.cs.arizona.edu/xkernel/www/ipsec/ipsec.html ¿¡¼ ±¸ÇÒ¼ö
ÀÖ
´Ù.
SSL(Secure Socket Layer)Àº º¸¾È¹®Á¦¿¡ ´ëÇØ Á»´õ ÀϹݷÐÀûÀÎ Á¢±ÙÀ» ½ÃµµÇßÀ¸¸ç ³Ý½ºÄÉÀÌ
ÇÁ ³×ºñ°ÔÀÌÅÍ¿¡ Àû¿ëµÇ¸é¼ ¼º°øÀûÀ¸·Î º¸±ÞµÈ ÇÁ·ÎÅäÄÝÀÌ´Ù. IPSecÀº IP datagramÁï °¢
°¢ÀÇ ÆÐŶÀ» ¾ÏÈ£ÈÇϴµ¥ ÁýÁßÇß´Ù¸é SSLÀº ¼¼¼Ç, ȤÀº ä³ÎÀ» ¾ÏÈ£ÈÇÏ´Â ¹æ¹ýÀ» ¼±ÅÃ
Çß´Ù. ±×·¯¹Ç·Î IPSecÀº ±¸ÇöÇÏ±ä ¾î·ÆÁö¸¸ IP¸¦ »ç¿ëÇÏ´Â ´ëºÎºÐÀÇ ÀÀ¿ë½Ã½ºÆÀ¿¡ Àû¿ëÇÒ
¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é IP broadcasting°°Àº ºÐ¾ß¿¡µµ Àû¿ëÇÒ¼ö ÀÖÁö¸¸ SSLÀº ¿¬°áµÈ ¼¼¼Ç¸¸À»
Áö¿øÇÑ´Ù. ±×·¯³ª ´ëºÎºÐÀÇ ³×Æ®¿÷ ÀÀ¿ë½Ã½ºÆÀµé¿¡°Ô Àß Àû¿ëÇÒ¼ö ÀÖ¾ú´Ù. ÇöÀç SSLÀ»
ÀÌ¿ëÇÑ SSL WWW Bowser(Netscape, Microsot Explore), SSL telnet, SSL ftp, SSL Newsµî ´Ù
¾çÇÑ
ÀÀ¿ë½Ã½ºÆÀµéÀÌ µîÀåÇϰí ÀÖ´Ù. Netscape»ç´Â SSLref¶óÀ̺귯¸®¸¦ °ø°³ÇßÀ¸³ª ¹Ì±¹¿Ü¿¡¼
´Â ¾Æ½±°Ôµµ »ç¿ëÇÒ¼ö ¾ø´Ù. ´Ù¸¸ È£ÁÖÀÇ Eric Young ÀÌ ¸¸µç SSLeay°¡ ÀÖ´Ù. SSL¿¡ °üÇÑ
Á¤º¸´Â http://home.netscape.com/newsref/std/SSL.html ¿¡¼ ¾òÀ»¼ö ÀÖ´Ù.
À̿ܿ¡µµ GSSAPI(rfc-1508, rfc-1509 )´Â Generic Security Service Application Programming
InterfaceÀÇ ¾à¾î·Î¼ ¾ÏÈ£È ½Ã½ºÆÀÀ» ¸¸µé±âÀ§ÇÑ ÀÀ¿ë½Ã½ºÆÀÀÇ ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆÐÀ̽º¸¦
Ç¥ÁØÈÇØ¼ Á¤ÀÇÇÏÀÚ´Â ¾ÆÀ̵ð¾î¿¡¼ Ãâ¹ßÇßÀ¸³ª ÇöÀç ±¸ÇöµÈ »ç·Ê°¡ ¸¹Áö ¾Ê´Ù. GSSAPI
°ü·ÃÁ¤º¸´Â http://www.dstc.qut.edu.au/~barton/work/project.html ¿¡ ÀÖ´Ù.
¶ÇÇÑ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â PCT(Private Communication Technology) ÇÁ·ÎÅäÄÝÀ» Á¦¾ÈÇß°í ÃÖ±Ù
PCT 1.0Àº SSL 2.0, 3.0°ú ȣȯÀ»
À¯ÁöÇÑ´Ù. °ü·ÃÁ¤º¸´Â http://www.microsoft.com/intdev/security/faq4.htm¿¡ ÀÖ´Ù.
2.2 ÀüÀÚ¿ìÆí º¸¾È
ÇöÀç ÀÎÅͳÝÀ» »ç¿ëÇÏ´Â »ç¿ëÀÚ°¡ °¡Àå ¸¹ÀÌ »ç¿ëÇÏ´Â µµ±¸°¡¿îµ¥ Çϳª´Â ¹Ù·Î ÀüÀÚ¿ìÆíÀÌ
´Ù. ¸¹Àº »ç¶÷µéÀÌ ÀüÀÚ¿ìÆíÀ» ÅëÇØ °³ÀÎÀûÀ̰ųª »ç¾÷°ú °ü·ÃµÈ ÀϵéÀ» Çϰí ÀÖ´Ù. Á¤º¸
Ȱ¡ °¡¼ÓµÉ¼ö·Ï ÀüÀÚ¿ìÆíÀÇ Á߿伺Àº Á¡Á¡ °Á¶µÉ °ÍÀÌ´Ù. ¶Ç »ç¿ë·®µµ ´Ã¾î°¥ °ÍÀÌ¸ç ´Ù
·ç´Â ³»¿ëµµ Á¡Â÷ °æÁ¦ÀûÀΰųª Á¤Ä¡/¿Ü±³ÀûÀÎ Áß¿äÇÑ ³»¿ëµéÀÌ µÉ °ÍÀÌ´Ù. ÀÌ·± °üÁ¡¿¡¼
º¸¾È ÀüÀÚ¿ìÆí½Ã½ºÆÀÀº ¸Å¿ì Áß¿äÇÏ°Ô »ý°¢µÇ¾îÁ® ¿Ô°í, ÀÏÂïºÎÅÍ ¸î¸î ½Ã½ºÆÀµéÀÌ °³¹ßµÇ
¾î ¿Ô´Ù. ´ëÇ¥ÀûÀÎ º¸¾È ÀüÀÚ¿ìÆí½Ã½ºÆÀÀÌ ¹Ù·Î PGP(Pretty Good
Privacy)( http://www.ifi.uio.no/~staalesc/PGP/)´Ù. PGP´Â Áü¸Ó¸Ç(Zimmermann) À» Áß½ÉÀ¸·Î ÇÑ
ÀÎÅͳݻóÀÇ ÀÚ¿øÀÚµéÀÌ ¸¸µç Á¦Ç°ÀÌ´Ù. PGPÀÇ °¡Àå Å« Ư¡Àº ´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀ¸
·Î DES¸¦ »ç¿ëÇÏÁö ¾Ê°í IDEA¸¦ »ç¿ëÇÑ´Ù´Â °Í°ú, RSA Public KeyÀÎÁõ±¸Á¶°¡ PEMµî ±¹
Á¦Ç¥Áذú´Â ´Þ¸® »çÀ̹ö½ºÆÐÀ̽ºÀÇ ¹®È¿Í ¹ÐÁ¢ÇÏ°Ô ºñ½ÁÇÑ Trust of WebÀ̶ó´Â ±¸Á¶¸¦ °¡
Áö°í ÀÖ´Â Á¡µéÀÌ´Ù. IETF¿¡¼ ÀÎÅÍ³Ý º¸¾È ¸ÞÀÏÇ¥ÁØÀ¸·Î Á¦Á¤ÇÑ ÇÁ·ÎÅäÄÝÀº
PEM(Privacy Enhanced Mail, RFC1421 - 1424)ÀÌ´Ù. PEMÀº CA(Certificate Authority)µîÀ» ¿ä±¸
ÇÏ
¸ç ±× »ç¾çÀÌ ¹æ´ëÇÏ°í º¹ÀâÇØ Çö½ÇÀûÀ¸·Î »ç¿ëµÇÁö ¸øÇÏ°í ¸î°¡Áö ÇüÅ·Π´Ü¼øÈ µÇ¾î°¬
´Ù. ±× °¡¿îµ¥ ´ëÇ¥ÀûÀÎ °ÍÀÌ ¹Ù·Î RIPEM(Riordan's Internet Privacy Enhanced Mail)ÀÌ´Ù.
RIPEMÀº PEMÀÇ º¹ÀâÇÑ »ç¾çÀ» ´Ü¼øÈÇßÀ¸¸ç ±¸Çö»ç·Êµµ ¸¹ÀÌ ³ª¿Í »ó´çÈ÷ º¸±ÞµÇ±âµµ
Çß´Ù(http://www.cs.indiana.edu/ripem/ripem-faq). ±×·¯´Ù°¡ PEM, RIPEMÀÇ º¹À⼺À» ´Ü¼øÇϰÔ
¸¸µé±âÀ§ÇØ ¸ÞÀÏ»ç¾çº¸´Ù´Â ¹®¼ÀÇ ¾ç½Ä(MIME)¸¸À» Á¤ÀÇÇÑ MOSS( )°¡ Á¦¾ÈµÇ¾úÀ¸³ª
MOSS»ç¾çÀº ³Ê¹« À¯µ¿ÀûÀÌ¾î¼ ÀÌ »ç¾ç¸¸À¸·Î´Â ȣȯ¼ºÀ» À¯ÁöÇϱⰡ ½±Áö¾ÊÀ» Á¤µµ ¿´
´Ù. ÃÖ±Ù¿¡´Â ¹Ì±¹ RSA»ç°¡ S/MIMEÀ̶ó´Â MOSS¿Í ºñ½ÁÇÏÁö¸¸ »óÈ£ ȣȯ¼º¿¡ ÃÐÁ¡À» ¸Â
Ãá »ç¾çÀ» Á¦¾ÈÇß°í »ó´ç¼ö ±¸ÇöµÇ¾î ÀüÀÚ¿ìÆí º¸¾ÈÀ¸·Î ÃÖ±Ù ¸¹ÀÌ º¸±ÞµÇ°í ÀÖ´Ù. ´ÙÀ½
ÀοëÀº S/MIMEÀÇ FAQ°¡¿îµ¥ ÇÑ Ç׸ñÀ» ¹ø¿ªÇÑ °ÍÀÌ´Ù. PGP, PEM, MOSS, S/MIMEµîÀ»
°£·«È÷ ºñ±³ÇÑ Ç׸ñÀÌ´Ù.
* S/MIME°ú PGP, PEM, MOSS¿Í ´Ù¸¥Á¡Àº ¹«¾úÀΰ¡?
ÀÌµé ¸ðµÎ´Â ÀüÀÚ¿ìÆíÀÇ º¸¾È ±â¹ýÀÇ ÀÏÁ¾ÀÌ´Ù. ¸ðµÎ´Ù authentication°ú privacy¸¦ º¸ÀåÇÑ´Ù.
PGP, PEM, MOSS´Â °¢°¢ÀÌ ¼·Î ¸Å¿ì »óÀÌÇÏ´Ù. ±×·¯¹Ç·Î À̵éÀ» S/MIME°ú °¢°¢ ºñ±³ÇØ¾ß ÇÒ
°Í°°´Ù.
PGP´Â »ç¾ç(specification)ÀÌ¸é¼ ÀÀ¿ëÇÁ·Î±×·¥(application)À̶ó°í ºÁ¾ß ÇÒ °Í °°´Ù. PGP´Â »ç¿ë
ÀÚµéÀÌ ¼·Î ۸¦ ±³È¯ÇÏ°í ¼·Î ÀÎÁõ(trust)À» È®¸³Çϴ ü°èÀÌ´Ù. ÀÌ·± "web of trust"±¸Á¶´Â ºñ
°ø
½ÄÀûÀ̱⶧¹®¿¡ ÀÛÀº ±×·ì¿¡´Â Àû¿ëÇϱ⠽±´Ù. ±×·¯³ª ¸¹Àº ¼öÀÇ »ç¶÷µéÀÌ Æ÷ÇÔµÈ ±×·ì¿¡¼´Â
°ü¸®ÇϱⰡ ½±Áö ¾Ê°ÔµÈ´Ù. ±×·¯³ª S/MIMEÀº PGPº¸´Ù´Â ÀûÀÀ¼ºÀÌ ÁÁ°í Á»´õ º¸¾È¼ºÀÌ ÁÁ´Ù.
S/MIMEÀº ÀÛÀº ±×·ìÀÇ »ç¿ëÀڵ鰣ÀÇ ½Å·Ú ±¸Á¶¸¦ ½±°Ô ±¸ÃàÇÒ ¼ö ÀÖÀ»»Ó ¾Æ´Ï¶ó Å« ±×·ìÀ» ±¸
¼ºÇϴµ¥µµ ½±°Ô ÀûÀÀÇÏ´Â ±¸Á¶¸¦ °¡Áö°í ÀÖ´Ù. S/MIMEÀº ¸¹Àº ÀüÀÚ¿ìÆí ÀÀ¿ëÇÁ·Î±×·¥¿¡ Á¢
¸ñµÉ¼ö ÀÖ°í ±×·¸°Ô Çϴ°ÍÀÌ ½±´Ù.
PEMÀº IETF RFC 1421-1424±îÁö Á¤ÀǵǾî ÀÖ´Ù. PEMÀº ÃʱâÀÇ ÀüÀÚ¸ÞÀÏ º¸¾È Ç¥ÁØÀÌ´Ù.
PEMÀº ÁÖ·Î ¸Þ½ÃÁö Æ÷¸ä°ú ÀÎÁõ±¸Á¶¸¦ Á¤ÀÇÇÑ °ÍÀÌ´Ù. PEM¸Þ½ÃÁö´Â 7bitÅØ½ºÆ® ¸Þ½ÃÁö¸¦ ±â
¹ÝÀ¸·Î µÇ¾îÀִµ¥ ¹ÝÇØ S/MIMEÀº MIME¹ÙÀ̳ª¸® attachment·Î µ¿ÀÛÇϵµ·Ï ¼³°èµÇ¾ú´Ù. ÀÎÁõ
±¸Á¶¸¦ ±¸¼ºÇÏ´Â °Íµµ flexibleÇÏ°Ô µÇ¾îÀÖ°í, ÀÛÀº ¿öÅ·±×·ìµéÀÇ ±¸Á¶¸¦ ¸¸µå´Âµ¥ ¸Å¿ì ½±°ÔµÇ
¾î ÀÖÀ¸¸é¼µµ ÀÎÁõ±×·ìÀÇ ±Ô¸ð¿¡ ÀûÇÕÇÑ ´ë¾ÈÀ» °¡Áö°í ÀÖ´Ù.
MOSS´Â PEMÀÇ Á¦¾àÀ» ±Øº¹ÇϱâÀ§ÇØ ¸¸µé¾îÁø °ÍÀ¸·Î¼ MIME¸Þ½ÃÁö·Î¸¸ Ç¥ÇöÇÏ°í ³ª¸ÓÁö
»ç¾çÀº ÀÚÀ¯·Ó°Ô »ç¿ëÇϵµ·Ï ÇÑ °ÍÀÌ´Ù. ±×·¯³ª MOSS´Â ¸¹Àº ±¸Çö optionÀ» °¡Áö°í ÀÖ¾î¼ µÎ
»ç¶÷ÀÇ MOSS¸ÞÀÏ ÇÁ·Î±×·¥À» ±¸ÇöÇÏ´Â »ç¶÷ÀÌ »óÈ£ ȣȯµÇ´Â ÇÁ·Î±×·¥À» ¸¸µé±â°¡ ¸Å¿ì ¾î·Æ
°Ô µÇ¾îÀÖ´Ù. MOSS´Â »ç¾ç(Specification)À̶ó±â º¸´Ù´Â ¾î¶² ±¸Á¶(Framework)Á¤µµ¸¦ Á¤ÀÇÇß´Ù
°í
º¸´Â°ÍÀÌ ´õ ÁÁ°Ú´Ù. ±×·¯³ª S/MIMEÀº »óȣȣ¿Ï¼º¿¡ ¿ªÁ¡À» µÎ°í ÀüÀÚ¿ìÆí¿¡ ÃÐÁ¡À» µÎ°í ¸¸
µé¾îÁø °ÍÀÌ´Ù.
2.3 Secure-Shell(SSH)
¾Õ¿¡¼ À̾߱â ÇßµíÀÌ ÅÚ³Ý È¤Àº rloginµîÀº ½º´ÏÇαâ¹ý¿¡ ÀÇÇØ ¸Å¿ì Ãë¾àÇÑ ÀÀ¿ë½Ã½ºÆÀÀÌ
´Ù. ÀÌ·± Á¡À» º¸¿ÏÇϱâÀ§ÇØ S/Keyµîµµ Á¦¾ÈµÇ¾úÁö¸¸ ÀüÀûÀÎ ´ë¾ÈÀº µÉ¼ö°¡ ¾ø´Ù. ±×·¯³ª
SSH, Secure-Telnet, SSLtelnetµî°ú °°ÀÌ ÅÚ³Ý Àüü ¼¼¼ÇÀ» ¾ÏÈ£ÈÇØ¼ »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄݵéÀÌ
Á¦¾ÈµÇ¾ú°í ½ÇÁ¦ »ç¿ëÇÑ´Ù. À̰¡¿îµ¥ SSH´Â ÇɶõµåÀÇ DataFellows
(http://www.datafellows.com/) ¿¡¼ »ó¿ëÈÇØ¼ »ó´çÇÑ º¸±ÞÀÌ ÀÌ·ç¾îÁø Á¦Ç°ÀÌ´Ù. À̵é
Secure-ShellÀº ·Î±ä¸í°ú ÆÐ½º¿öµå¸¸À» º¸È£ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó(Authentication) ·Î±äÇÑÈÄ »ç¿ë
ÇÏ´Â ¸ðµç ¼¼¼ÇÀ» º¸È£ÇÏ´Â ¿ªÇÒ(Confidentiality)À» ÇϹǷΠÅڳݻ󿡼ÀÇ º¸¾È¿¡ ¿Ïº®ÇÑ ´ë¾È
À̶ó°í ÇÒ¼ö ÀÖ´Ù.
2.4 WWW Security
WWW SecurityºÐ¾ß´Â IETFÀÇ Security AreaÀÇ WTS(Web Transaction Security)¿öÅ·±×·ì¿¡¼
Ç¥
ÁØÀ» ³íÀÇ Çϰí ÀÖ´Ù. ±×µ¿¾È EITÀÇ S-HTTP¿Í NetscapeÀÇ SSL±×¸®°í W3CÄÁ¼Ò½Ã¿òÀÇ
SEAµîÀÇ ÇÁ·ÎÅäÄÝÀÌ Á¦¾ÈµÇ°í ³íÀǵǰí ÀÖÀ¸³ª ÇöÀç S-HTTP¸¸ÀÌ working draft»óÅÂÀÌ´Ù.
WWW SecurityºÐ¾ß¿¡¼´Â ¹«¾ùº¸´Ùµµ ºê¶ó¿ìÁ®¸¦ ¸¸µå´Â ȸ»çµé(Netscape.Microsoftµî)ÀÌ ¼±
ÅÃÇÏ´Â º¸¾È ÇÁ·ÎÅäÄÝ¿¡ÀÇÇØ Ç¥ÁØÀÌ ÁÂÁö¿ìÁöµÈ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÇöÀç Netscape»ç´Â SSL
À» Microsoft»ç¿ª½Ã SSL°ú PCT¸¦ Áö¿øÇϰí ÀÖ´Ù. SSLÀº ÇöÀç ¹öÁ¯ÀÌ 3.0 »ç¾ç±îÁö ¹ßÇ¥µÇ
¾î ÀÖÀ¸¸ç, PCT´Â ÇöÀç ¹öÁ¯ÀÌ 1.0 »ç¾çÀÌ ¹ßÇ¥µÇ¾î ÀÖ´Ù. ±×·¯³ª IETF¿¡¼´Â S-HTTP¸¦
³íÀÇÇϰí ÀÖ´Â Áß´Ù. ÀÌ ºÐ¾ß¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â
http://madang.dacom.co.kr/dgguen/seminar/wwwpay.htmlÀ» Âü°íÇϱ⠹ٶõ´Ù.
2.5 Secure-Phone
¾ÏÈ£ÈµÈ À½¼ºÅë½Å ½Ã½ºÆÀÀº µÑ·Î ±¸ºÐÇÒ¼ö ÀÖ´Ù. ÀüÅëÀûÀÎ ÀüȽýºÆÀ¿¡¼ º¸¾ÈÀ» °¡¹ÌÇÑ
ÀüȽýºÆÀÀÌ ÀÖÀ»¼ö ÀÖ°í, ÄÄÇ»ÅÍ³×Æ®¿÷»ó¿¡¼ÀÇ À½¼ºÅë½Å¿¡ º¸¾ÈÀ» °¡¹ÌÇÑ ½Ã½ºÆÀÀÌ ÀÖ
À»¼ö ÀÖ´Ù. ÀüÀڷδ Bell-Northern ¿¬±¸¼Ò¿¡¼ ¸¸µç Secure-ISDNÀüȱâ ÇÁ·ÎÅäŸÀÔÀÌ 1987
³â¿¡ ¹ßÇ¥µÈÀûÀÌ ÀÖ°í, ¹Ì±¹ÀÇ NSA°¡ ¼³°èÇÑ STU-III¶ó´Â ¾ÏÈ£ÈÀüȱⰡ 1994³â¿¡ IEEE
Àú³Î¿¡ ¹ßÇ¥µÇ¾ú¾ú°í AT&T¿Í GE°¡ ¾à 30--40¸¸´ë »ý»êÇØ ¹Ì±¹¹æ¼º°ü·Ã±â°ü¿¡¼ »ç¿ëÇÑ
´Ù°í ÇÑ´Ù (Applied Cryptography Second Edition P566).
ÄÄÇ»ÅÍ ³×Æ®¿÷»ó¿¡¼ÀÇ À½¼ºÅë½ÅÀº ÀϹÝÀûÀ¸·Î Internet PhoneµîÀÌ ¾Ë·ÁÁ® ÀÖÀ¸³ª ¾Ïȣȱâ
¼úÀ» µµÀÔÇÑ °ÍÀº ¾Æ´Ï´Ù. ºñ½ÁÇÏ°Ô ÀÎÅͳݻ󿡼 À½¼ºÅë½ÅÀ» °¡´ÉÇϰÔÇÏ´Â ¼ÒÇÁÆ®¿þ¾îÀÌ
¸é¼ ¾Ïȣȱâ¼úÀ» Àû¿ëÇØ º¸¾ÈÈÇÑ °ÍÀ¸·Î´Â Speak Freely¿Í Netfone(UNIX),
Nautilus(http://www.lila.com/nautilus), PGPFone(http://web.mit.edu/network/pgpfone)µîÀÌ ÀÖ´Ù.
2.6 Desktop-Security Tool
ÀϹÝÀûÀ¸·Î ÀÚ½ÅÀÌ »ç¿ëÇÏ´Â °³Àοë ÄÄÇ»ÅÍÀÇ ÆÄÀϵéÀ» ¾ÏÈ£ÈÇØ¼ ÀúÀåÇÏ´Â ¾Ïȣȵµ±¸µé
À» ¸»ÇÑ´Ù. À̰÷¿¡¼´Â ÁÖ·Î ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®Áò¸¸À» »ç¿ëÇϸç ÁÖ·Î À©µµ¿ìÁîÀÇ ÆÄÀÏ
°ü¸®ÀÚ¿Í ¿¬µ¿Çؼ µ¹¾Æ°¡µµ·Ï ¸¸µç´Ù. ´ëÇ¥ÀûÀÎ Á¦Ç°À¸·Î´Â RSA»çÀÇ RSA Secure
PC(http://www.rsa.com/PRODUCTS/end_user.html)¿Í ÇɶõµåÀÇ DataFellows»çÀÇ F-Secure
Desktop
(http://www.datafellows.com/f-secure/desktop/)µî ¿©·¯ Á¾·ù°¡ ÀÖ´Ù.
3. ¾ÏÈ£È °³³ä
ÀÚ ÀÌÁ¦´Â ¾Õ¿¡¼ ÀåȲÇÏ°í ±æ°Ô À̾߱âÇÑ º¸¾È½Ã½ºÆÀÀ» ¸¸µé±âÀ§ÇÑ ±âº»±â¼ú Áï ¾Ïȣȶõ
°ú¿¬ ¹«¾ùÀΰ¡¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. ¿©±â¼´Â ¾Ïȣȱâ¼ú ¾Ë°í¸®ÁòÀÇ Á¾·ù¿Í ±â´ÉµîÀÇ ±âº»
ÀûÀÎ »çÇ×À» ¾Ë¾Æº¸°í ´ÙÀ½ºÎÅÍ´Â ÇØ´ç ¾Ïȣȸ¦ ½ÇÁ¦·Î ÇÁ·Î±×·¡¹ÖÇÒ¼ö ÀÖ´Â µµ±¸µé°ú ÇÁ
·Î±×·¡¹Ö ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.
3.1 ´ëĪÇü ¾ÏÈ£¾Ë°í¸®Áò(Symmetric Cryptography)
´ëĪÇü¾ÏÈ£ ¾Ë°í¸®ÁòÀº ´ÙÀ½ ±×¸²Ã³·³ ¾ÏÈ£ÈÇÒ¶§ »ç¿ëÇÑ Å°(key)¸¦ ¾ÏÈ£ÈµÈ ÀڷḦ º¹È£
ÈÇÒ¶§ °°Àº Ű(key)¸¦ »ç¿ëÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù. Áï
Ek( M ) = C
Dk( C ) = M
¿©±â¼ µ¿ÀÏÇÑ kŰÀ̸¦ »ç¿ëÇØ ¾ÏÈ£È¿Í º¹È£È¸¦ ÇÏ´Â ¾ÏÈ£È ¹æ½ÄÀ» ¸»ÇÑ´Ù.
´ëĪÇü ¾ÏÈ£È ¹æ½ÄÀº Å©°Ô µÎ°¡Áö·Î ³ª´©¾î º¼¼ö ÀÖ´Ù. Çϳª´Â ºí·° ¾ÏÈ£È(Block Ciper)
¿Í ½ºÆ®¸² ¾ÏÈ£È(Stream Ciper)·Î ±¸ºÐµÈ´Ù.
ºí·°¾ÏÈ£È¾Ë°í¸®ÁòÀº ¾ÏÈ£ÈÇÒ¶§ ÀڷḦ °íÁ¤µÈ ÀÏÁ¤·®ÀÇ ºí·°´ÜÀ§·Î ¾ÏÈ£ÈÇϱ⶧¹®¿¡
Àüü ¾ÏÈ£ÈÀÚ·áÀÇ Å©±â°¡ ÇØ´ç ºí·°ÀÇ ¹è¼ö°¡ µÇ¾î¾ßÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù. ºí·° ¾ÏÈ£È ¾Ë
°í¸®ÁòÀ¸·Î´Â
- DES(Data Encryption Standard)
- IDEA(International Data Encryption Algorithm)
- RC2
- RC5
- Blowfish
- SKIPJACK
µîÀÌ ÀÖ´Ù.
½ºÆ®¸²¾ÏÈ£È ¾Ë°í¸®ÁòÀº ÀڷḦ ¾ÏÈ£ÈÇÒ¶§ ºí·°´ÜÀ§·Î ÇÏÁö ¾Ê´Â ¹æ¹ýÀ» ¸»ÇÑ´Ù. Áï ¾Ï
È£ÈÇÏ´Â ÀÚ·áÀÇ ±¸¼º°ú Å©±â°¡ ´Ù¾çÇÏ°í ¿¹ÃøÇÒ¼ö ¾ø´Â ȯ°æÀ϶§ ÀûÇÕÇÑ ¾ÏÈ£È ¹æ¹ýÀÌ´Ù.
½ºÆ®¸² ¾ÏÈ£È ¾Ë°í¸®ÁòÀ¸·Î´Â
µîÀÌ ÀÖ´Ù.
´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ ¿ª»ç´Â ¿À·¡µÇ¾ú°í ´Ù¾çÇÑ ¾Ë°í¸®ÁòÀÌ °³¹ßµÇ¾î ÀÖ´Ù. ±×·¯³ª
ºí·° ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ ´ÜÁ¡Àº ³×Æ®¿÷ ȯ°æ¿¡¼´Â »ç¿ëÇϱⰡ ¾î·Æ´Ù´Â »ç½ÇÀÌ´Ù. Áï ÀÚ·á
(M)¸¦ ƯÁ¤ºñ¹ÐŰ(K)·Î ¾ÏÈ£ÈÇØ¼ ¾ÏÈ£ÈµÈ ÀÚ·á(E)¸¦ ³×Æ®¿÷À» ÅëÇØ ´Ù¸¥ °÷¿¡ Àü´ÞÇß´Ù
°í Ä¡ÀÚ ¾ÏÈ£ÈµÈ ÀÚ·á (E)´Â ¾ÏȣȰ¡ µÇ¾ú±â¶§¹®¿¡ ¾ÈÀüÇÏ°Ô Àü´ÞÇÒ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯
³ª ¾ÏÈ£ÈµÈ ÀÚ·á(E)¸¦ ¹ÞÀº Ãø¿¡¼ À̸¦ Ç®±âÀ§Çؼ´Â ºñ¹ÐŰ(K)°¡ ÀÖ¾î¾ß ÇÒ °ÍÀÌ´Ù. ±×
·¯³ª ÀÌ ºñ¹ÐŰ(K)¸¦ ¾î¶»°Ô ¾ÈÀüÇÏ°Ô Àü´ÞÇÒ ¼ö Àִ°¡ÇÏ´Â ¼÷Á¦°¡ »ý±ä´Ù. ÀÌ·± ¹®Á¦´Â
´ëĪÇü ¾ÏÈ£È ±â¹ýÀÇ ´ÜÁ¡ÀÌ µÈ´Ù.
3.2 ºñ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®Áò(Asymmetric Cryptography)
ºñ´ëĪÇü ¾Ïȣȱâ¹ýÀº ÀڷḦ ¾ÏÈ£ÈÇÒ¶§ »ç¿ëÇϴ ŰÀÌ¿Í º¹È£ÈÇÒ¶§ »ç¿ëÇϴ ŰÀ̰¡ ¼·Î ´Ù
¸¥ ¾Ïȣȱâ¹ýÀ»
¸»ÇÑ´Ù. Áï ŰÀ̰¡ ½ÖÀ¸·Î Á¸ÀçÇØ ÇÑÂÊÀ¸·Î ¾Ïȣȸ¦ ÇÏ¸é ´Ù¸¥ ŰÀ̷θ¸ º¹È£È°¡ °¡´ÉÇÏ°Ô µÈ
´Ù. ÀϹÝÀûÀ¸·Î ºñ´ë
ĪÇü ¾ÏȣȽýºÆÀÀ» ÀÌ¿ëÇÒ¶§ µÎ°³ÀÇ Å°ÀÌ °¡¿îµ¥ Çϳª´Â ÀϹݿ¡°Ô °ø°³Çϰí ÇϳªÀÇ Å°ÀÌ´Â ÀÚ
½Å¸¸ÀÌ ¾ÈÀüÇÏ°Ô º¸
°üÇÑ´Ù. À̶§ ÀϹݿ¡°Ô °ø°³µÈ ŰÀ̸¦ °¡Áö°í ÆÛºí¸¯Å°ÀÌ(Public Key)¶ó°íÇϰí, ÀÚ½ÅÀÌ °¡Áö°í ÀÖ
´Â ŰÀ̸¦ °³ÀÎŰ
(Private Key)¶ó°í ºÎ¸¥´Ù.
¸¸ÀÏ ¿ÜºÎÀÇ ¾î¶² ´Ù¸¥ »ç¶÷ÀÌ ¾î¶² ÀÚ·á(M)¸¦ ³×Æ®¿÷À» ÅëÇØ ¾ÈÀüÇÏ°Ô Àü´ÞÇϱâ À§ÇØ ºñ´ëĪ
Çü ¾ÏÈ£È ¾Ë°í¸®Áò
À» »ç¿ëÇÑ´Ù°í ÇÒ¶§ ±×´Â ³ªÀÇ ÆÛºí¸¯Å°ÀÌ(Public Key)¸¦ ÀÌ¿ëÇØ ÀڷḦ ¾ÏÈ£ÈÇØ ¾ÏÈ£ÈµÈ ÀÚ·á
(C )¸¦ ³ª¿¡°Ô º¸³½´Ù.
³×Æ®¿÷»óÀÇ ´©±¸µµ ³ªÀÇ °³ÀÎŰ(Private Key)¾øÀÌ´Â ¾ÏÈ£ÈµÈ ÀڷḦ ÇØµ¶ÇÒ¼ö ¾øÀ¸¹Ç·Î ¾ÈÀüÇÏ
°Ô Àü´ÞµÈ´Ù. Àü´ÞµÈ
¾ÏÈ£ÈµÈ ÀÚ·á´Â ³ª¸¸ÀÌ °¡Áø °³ÀÎŰ(Private Key)¸¦ ÀÌ¿ëÇØ º¹È£È°¡ °¡´ÉÇϹǷΠ³ª¸¸ÀÌ ±× ¾Ï
È£ÈµÈ ÀڷḦ ÇØµ¶
ÇØ¼ ¿ø·¡ÀÇ ÀÚ·á(M)À» ¾òÀ»¼ö ÀÖ´Ù. À̰ÍÀÌ ÀϹÝÀûÀÎ ºñ´ëĪÇü ¾Ïȣȱâ¹ýÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ
´Ù. ±×·¡¼ ºñ´ëĪÇü
¾Ïȣȱâ¹ýÀ» ÆÛºí¸¯Å°ÀÌ(Public Key) ¾Ïȣȹæ½ÄÀ̶ó°í Çϱ⵵ ÇÑ´Ù.
ºñ´ëĪÇü, ÆÛºí¸¯Å°ÀÌ ¾Ïȣȹæ½ÄÀº ¿ª»çµµ ª°í °¡´ÉÇÑ ¾Ë°í¸®Áòµµ Àû´Ù. ¶Ç ´ëĪÇü ¾ÏȣȾË
°í¸®Áòº¸´Ù 󸮼Ó
µµ°¡ ¸Å¿ì ´À¸®±â¶§¹®¿¡ Åë»óÀûÀ¸·Î ¸¹Àº ÀڷḦ ¾ÏÈ£ÈÇϴµ¥´Â ÀûÇÕÇÏÁö ¾ÊÀº ¹æ¹ýÀ̶ó´Â ´ÜÁ¡
µµ ÀÖ´Ù.
ºñ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®ÁòÀ¸·Î´Â
- Diffie-Hellman Key Echange Mechanism
- RSA
- ElGamal
- LUC
µîÀÌ ÀÖ´Ù.
ÀÌµé ¾Ë°í¸®Áò °¡¿îµ¥ Diffie-Hellman¹æ½Ä°ú RSA¾Ë°í¸®ÁòÀÌ °ÅÀÇ Ç¥ÁØÃ³·³ ¸¹ÀÌ »ç¿ëµÇ¾îÁö°í
ÀÖ°í Æ¯È÷ RSA°¡
ÁÖ·Î »ç¿ëµÇ´Â ºñ´ëĪÇü ¾ÏÈ£È ±â¹ýÀÌ´Ù.
3.3 Message Diegest
¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®ÁòÀº ÀÚ·áÀÇ ³»¿ëÀÇ Ã¼Å©¼¶À» ±¸ÇϵíÀÌ ÀڷḦ ÇØ½¬Ã³¸®¸¦ ÇÑÈÄ °¢ ÀÚ
·á¿¡ ´ëÀÀµÇ´Â ÀÏÁ¤
±æÀÌÀÇ ÇØ½¬¸¦ ±¸ÇÏ´Â ¾Ë°í¸®ÁòÀÌ´Ù. ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®´Â ÇØ´ç ÀÚ·á¿Í ÀÏ´ëÀÏ·Î ¸ÅÇÎÀÌ µÇ±â¶§
¹®¿¡ ÀÚ·áÀÇ ³»¿ë
À» Áõ¸íÇÒ¼ö ÀÖ´Â ÄÚµå·Î¼ Ȱ¿ëµÈ´Ù. Áï ¾î¶² ÀÚ·á(M)À» ÇØ½¬ÇÔ¼ö¸¦ ÅëÇØ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦
±¸Çϸé ÇØ´ç ¸Þ½Ã
Áö´ÙÀÌÁ¦½ºÆ®¸¦ ÀÌ¿ëÇØ ÀÚ·áÀÇ ¼öÁ¤/¼ø¼º¯°æ/»èÁ¦/÷°¡µî ÀÚ·áÀÇ ÅëÇÕ¼ºÀ» üũÇÒ¼ö ÀÖ´Ù.
ƯÈ÷ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ´Â ÇØ½¬ÇÔ¼ö´Â ´Ü¹æÇâÇØ½¬(One way Hash)ÇÔ¼ö·Î¼ »ý¼ºµÈ ¸Þ½Ã
Áö´ÙÀÌÁ¦½ºÆ®·ÎºÎÅÍ ¿ø
·¡ÀÇ ¸Þ½ÃÁö¸¦ Ãß·ÐÇÒ¼ö ¾ø´Â ÇØ½¬¸¦ »ç¿ëÇϱ⶧¹®¿¡ ¾ÈÀüÇÏ´Ù°í ÇÒ¼ö ÀÖ´Ù.
¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¿ë ¾Ë°í¸®ÁòÀ¸·Î´Â
- MD2
- MD5
- SHA(Secure Hash Algorithm) ¶Ç´Â SHS(Secure Hash Standard)
µîÀÌ ¾Ë·ÁÁ® ÀÖ´Ù.
3.4 Digital Signature
ÀüÀÚ¼¸í(Digital Signature)Àº ƯÁ¤ÇÑ ¾ÏÈ£È ¾Ë°í¸®ÁòÀº ¾Æ´Ï´Ù. ´Ù¸¸ À§¿¡¼ ¾ð±ÞÇÑ ¾Ïȣȱâ
¹ýµéÀ» ÀÀ¿ëÇÑ °Í °¡
¿îµ¥ ÇϳªÀÌ´Ù. ´Ù¸¸ ÀüÀÚ¼¸íÀÌ ÀϹÝÀûÀÎ º¸¾ÈÀÀ¿ë½Ã½ºÆÀÀÇ ±âº»ÀûÀÎ ¿ä¼Ò·Î °£ÁֵDZ⶧¹®¿¡ ÀÌ
°÷¿¡¼ ¾ð±ÞÇÏ·Á
ÇÑ´Ù.
ÀüÀÚ¼¸íÀ» À̾߱âÇÒ¶§ ÄÄÇ»ÅÍ ¿·¿¡ ÀüÀÚÆæ°ú ÆÐµå°¡ ÀÖ¾î¼ ¾î¶² ÀÚ·á¿¡ ¼¸íÀ» ÇÏ·Á¸é ÀÌ Ææ
À» ÀÌ¿ëÇØ ÆÐµå¿¡
»çÀÎÀ» ÇÏ¸é ±× ¼¸íÀÇ À̹ÌÁö°¡ µðÁöÅ»ÇüÅ·Π¹®¼¿Í ÇÔ²² º¸°üµÇ´Â °ÍÀ» »ó»óÇÏ´Â »ç¶÷µéÀÌ ÀÖ
¾ú´Ù. ¶Ç ±×·± ºñ
»ó½ÄÀûÀÎ ½Ã½ºÆÀÀ» ±¸ÇöÇÑ »ç·Êµµ ÀÖ´Ù. ±×·¯³ª ±× ¼¸íÀ̹ÌÁö´Â µðÁöÅ»ÇüÅÂÀÇ ÀÚ·áÀ̱⠶§¹®¿¡
100% ¶È°°ÀÌ º¹Á¦
°¡ °¡´ÉÇÏ´Ù´Â »ç½ÇÀ» ÀØÁö ¸»¾Æ¾ßÇϸç Á¾ÀÌ¿¡ ¼¸íÇÑ °Íº¸´Ù ´õ À§ÇèÇÑ ¹æ½ÄÀÌ´Ù.
ÀüÀÚ¼¸íÀº ¾Õ¿¡¼ ¾ð±ÞÇÑ ±×·± °ÍÀÌ ¾Æ´Ï´Ù. ÄÄÇ»Åͻ󿡼 µðÁöÅ» ÇüÅ·ΠÀÌ·ç¾îÁö´Â ÀüÀÚ¼
¸íÀÇ ±âº»ÀûÀÎ ¾ÆÀÌ
µð¾î´Â ÀÚ·áÀÇ ³»¿ëÀÇ ¼öÁ¤/º´°æÀ» Áõ¸íÇÒ¼ö ÀÖ´Â ¹æ¹ý(¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®µî)°ú ¸Þ½ÃÁöÀÇ »ý¼ºÀÚ
¸¦ È®ÀÎÇÒ¼ö ÀÖ´Â ¹æ
¹ý(ºñ´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ °³ÀÎ۸¦ ÀÌ¿ëÇØ ¾ÏÈ£ÈÇϴµî)À» ¼¯¾î¼ ¼¸íÀÇ È¿°ú¸¦ ³»´Â Àü
ÀÚÀûÀÎ ¹æ¹ýÀÌ´Ù.

ÀüÀÚ¼¸íÀÇ È帧
ÀüÀÚ¼¸íÀÇ ±âº»ÀûÀÎ È帧Àº ´ÙÀ½°ú °°´Ù.
¼Û½ÅÀÚÃø
- ÀڷḦ »ý¼ºÇÑ´Ù.
- ÀÚ·áÀÇ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÑ´Ù
- ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ÀÚ½ÅÀÇ °³ÀÎŰ(Private key)·Î ¾ÏÈ£ÈÇØ ÀÚ·á¿¡ µ¡ºÙÀδÙ.
¼ö½ÅÀÚÃø
- ¼ö½ÅÇÑ ÀÚ·áÀÇ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÑ´Ù.
- ¼ö½ÅÇÑ ÀÚ·á¿¡ µ¡ºÙ¿©¿Â ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ¼Û½ÅÀÚÀÇ ÆÛºí¸¯Å°À̷ΠǬ
´Ù.
- ÀÚ·á·ÎºÎÅÍ ±¸ÇÑ ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¿Í µ¡ºÙ¿©¿Â ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ºñ±³ÇÑ´Ù.
- ºñ±³ÇÑ ´ÙÀÌÁ¦½ºÆ®°¡ °°À¸¸é ¸Þ½ÃÁö°¡ ¼Û½ÅÀÚ°¡ º¸³½°Í°ú ÀÚ·áÀÇ ³»¿ëÀÌ ¼öÁ¤µÇÁö
¾ÊÀº °ÍÀÌ Áõ¸íµÈ
´Ù.
3.5 ¾ÏÈ£È ¾Ë°í¸®Áò°ú ŰÀ̱æÀÌ
¾ÏÈ£¾Ë°í¸®ÁòÀÇ ¾ÈÀüµµ¸¦ üũÇÏ´Â ÀÌ·ÐÀº ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î ¸¹ÀÌ ¾Ë·Á
Áø ¾Ë°í¸®ÁòµéÀº
¼öÇÐÀûÀ¸·Î´Â ¾ÈÀüµµ°¡ È®º¸µÈ ¾Ë°í¸®ÁòÀÌ´Ù. ±×·¯³ª ±×·± ¾Ë°í¸®Áòµµ »ç¿ëÇϴ ŰÀÇ ±æÀÌ¿¡µû
¶ó ¿À´Ã³¯ »ç¿ëÇϱâ
¿¡ ÀûÇÕÇѰ¡ À§ÇèÇѰ¡¸¦ È®ÀÎÇÑ´Ù.
ŰÀÇ ±æÀ̸¦ °¡Áö°í ¾Ë°í¸®ÁòÀÇ ¾ÈÀüµµ¸¦ À̾߱âÇÏ´Â °ÍÀº Brute-force attack¿¡ ´ëºñÇÑ ³íÀÇÀÌ
´Ù. Brute-force attackÀº
°¡´ÉÇÑ ¸ðµç ۸¦ °¡Áö°í ÀڷḦ º¹È£ÈÇØ º¸´Â ¹æ¹ýÀÌ´Ù. ÄÄÇ»ÆÃÆÄ¿ö°¡ ³ôÁö¸øÇß´ø 1970³â´ë
/80³â´ë¿¡¼´Â ÀÌ ¹®
Á¦°¡ Å« ¹®Á¦°¡ µÇÁö ¸øÇß´Ù. ±×·¯³ª 90³â´ë·Î µé¾î¿Í¼ ÄÄÇ»ÆÃÆÄ¿ö°¡ Áõ°¡µÈ ¿À´Ã³¯¿¡´Â À¢¸¸ÇÑ
±æÀÌÀÇ Å°¿¡ ´ëÇØ
¼´Â ªÀº ½Ã°£³»¿¡ ¸ðµç °¡´ÉÇÑ Å°À̸¦ ´Ù Å×½ºÆ®ÇØ º¼¼ö ÀÖ´Â Á¤µµ·Î ŰÀÇ ±æÀ̰¡ Áß¿äÇÑ ¿ä¼Ò
°¡ µÇ¾ú´Ù. ¿¹¸¦
µé¸é ŰÀÇ ±æÀ̰¡ 8bit¶ó¸é 28 °³ Áï 256°³ÀÇ °¡´ÉÇÑ Å°°¡ ÀÖÀ»¼ö ÀÖ´Ù. 256°³ÀÇ °¡´ÉÇÑ 8bitÂ¥¸®
ŰÀ̸¸À» Å×½ºÆ®ÇÏ
¸é ±× °¡¿îµ¥ Çϳª´Â ¿ÇÀº ۰¡ ÀÖÀ» °ÍÀÌ´Ù. ¸¸ÀÏ Å°À̰¡ 64bit±æÀÌÀ̸é 264 °³ÀÇ °¡´ÉÇÑ Å°À̰¡
ÀÖÀ»¼ö ÀÖ´Ù. À̶§
´Â ¸¸ÀÏ 1ÃÊ¿¡ ¹é¸¸°³ÀÇ Å°À̸¦ üũÇÒ¼ö ÀÖ´Â ¼öÆÛÄÄÇ»ÅͰ¡ ÀÖ´Ù¸é Æò±Õ 2285³â°£ °è»êÇØ¾ß ¿Ç
Àº ۸¦ ãÀ»¼ö ÀÖ
À» °ÍÀÌ´Ù. ¸¸ÀÏ Å°ÀÌÀÇ ±æÀ̰¡ 128bitÀ̶ó¸é 1025 ³âÀÌ °É¸± °ÍÀÌ´Ù. ¿ìÁÖÀÇ ³ªÀ̰¡°¡ 1010 ³âÀÌ
¶ó°í Çϴϱî ÀÌ ±â°£
Àº Á¤¸» ±ä ±â°£À̶ó°í ÇÒ¼ö ÀÖ°Ú´Ù.
±×·¸´Ù¸é ´ëÇ¥ÀûÀÎ ¾ÏÈ£È ¾Ë°í¸®ÁòÀÎ DES¸¦ °¡Áö°í À̾߱âÇØ º¸ÀÚ. DES´Â 8byteÀÇ Å°À̸¦ »ç
¿ëÇÏÁö¸¸ 64bitÀüü
¸¦ ŰÀÌ·Î »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó 8bit´Â üũ¼¶¿ëÀ¸·Î »ç¿ëÇϰí 56bit¸¸À» ŰÀÌ·Î »ç¿ëÇÑ´Ù. Áï
DESÀÇ Å°ÀÌÀÇ ±æÀÌ
´Â 56bitÀÌ´Ù. 1993³â 1994³â¿¡ Michael Wiener(Aplied Cryptography Second Edition P153)´Â 1
¹é¸¸ ´Þ·¯Â¥¸® DESÀü¿ë
¹ÝµµÃ¼¸¦ ¸¸µé¸é Æò±Õ 3.5½Ã°£À̸é DES۸¦ ãÀ»¼ö ÀÖ´Ù´Â ¹ßÇ¥¸¦ ÇÑ ÀûÀÌ ÀÖ´Ù.
ºñ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ Å°ÀÌ ±æÀÌ´Â ¾Õ¿¡¼ ¸»ÇÑ ´ëĪÇü ¾Ïȣȱâ¼úÀÇ Å°ÀÇ ±æÀÌ¿Í Á» ´Ù
¸£´Ù. ºñ´ëĪÇü ¾Ï
È£È ¾Ë°í¸®ÁòÀº Å« ¼Ú¼ö°è»êµî¿¡ ÀÇÁ¸Çϱ⶧¹®¿¡ ´ëĪÇü ¾Ïȣȱâ¼ú°ú´Â ´Ù¸¥ ÄÄÇ»ÆÃ ÆÄ¿ö¸¦ ¿ä
±¸Çϸç ÀϹÝÀûÀ¸·Î
RSA¾Ë°í¸®ÁòÀÇ °æ¿ì 512bit RSAŰÀÌ´Â »ó¾÷ÀûÀ¸·Î »ç¿ëÇÏ´Â ¾Ïȣȱâ¼ú¿¡´Â ÀûÇÕÇÏÁö ¾Ê´Â °Í
À¸·Î ¾Ë·ÁÁ® ÀÖ°í ÃÖ
¼ÒÇÑ 768bitÀÌ»ó ±æÀÌÀÇ Å°À̸¦ »ç¿ëÇÒ °ÍÀ» ±ÇÇϰí ÀÖ´Ù.
Bluce Schneier(Aplied Cryptography Second Edition, P162, P 167)°¡ Á¦¾ÈÇϴ ŰÀÇ ±æÀÌ´Â ´Ù
À½°ú °°´Ù.
* ºñ´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ ±ÇÀå ۱æÀÌ
| ³âµµ |
°³ÀÎÀû ¿ëµµ»ç¿ë | ±â¾÷ÀÇ »ç¿ë |
Á¤ºÎ/±º |
| 1995³â | 768
| 1280 | 1536 |
| 2000³â | 1024
| 1280 | 1536 |
| 2005³â | 1280
| 1536 | 2048 |
| 2010³â | 1280
| 1536 | 2048 |
| 2015³â | 1536
| 2048 | 2048 |
* ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ ±ÇÀå ۱æÀÌ
| »ç¿ë ¿ëµµ | À¯È¿±â°£ | ÃÖ¼ÒÇÑÀÇ Å°±æÀÌ
|
| ±º Á¤º¸ | ºÐ/½Ã°£ | 56-64bit
|
| Á¦Ç°¾È³»/´º½º/ȸ»çÇÕº¡µî | ÀÏ/ÁÖ
| 64bit |
| Àå±âÀûÀÎ ±â¾÷ÀÇ °è¾àµî | ³â
| 64bit |
| ¹«¿ª ±â¹Ð | 10³â | 112bit
|
| ÇÙÆøÅº ºñ¹Ð | 40³âÀÌ»ó |
128bit |
| øº¸¿øÀÇ ½ÅºÐºñ¹Ð¹øÈ£ | 50³âÀÌ»ó
| 128bit |
| °³ÀÎÀûÀÎ ºñ¹Ð | 50³âÀÌ»ó |
128bit |
| Á¤ºÎ ´ë»ç°ü ¾÷¹« | 65³âÀÌ»ó
| Àû¾îµµ 128bitÀÌ»ó |
| Á¤ºÎ ºñ¹Ð | 100³â |
Àû¾îµµ 128bitÀÌ»ó
|
¹Ì±¹Á¤ºÎ´Â ¾Ïȣȱâ¼úÀ» ¹«±âÀÇ ÀÏÁ¾À¸·Î °£ÁÖÇϱ⶧¹®¿¡ ¿ÜºÎ·ÎÀÇ ¼öÃâÀ» ±ÝÁöÇϰí ÀÖ´Ù. ÀÌ
Á¦ÇÑÀº
ITAR(International Traffic in Arms Regulations)¹ýÀ¸·ÎºÎÅÍ Á¦ÇÑÀ» ¹Þ´Â´Ù. ÀÌ Á¦ÇÑÀº 1940³â
´ë ³ªÅä(NATO)ÀÇ
CoCom(Coordinating Committee for Multilateral Export Control)À¸·ÎºÎÅÍ ÆÄ»ýµÈ Á¦ÇÑÀÌ´Ù. ¹Ì
±¹³»¿¡¼µµ ÀÌ Á¦ÇÑÀÌ Çå¹ý
ÀÇ À§¹è¿©ºÎ¸¦ °¡¸®´Â ÀÛ¾÷µµ ÁøÇàÁßÀÌ¸ç ¿©·¯°¡Áö ³íÀïÀÌ ÀÖ±äÇÏÁö¸¸ ¾ÆÁ÷ ITARÁ¦ÇÑÀ¸·Î ¹Ì±¹
¿¡¼ ¸¸µé¾îÁö´Â ¸ð
µç ¾ÏÈ£È ±â¼ú/Àåºñ/¼ÒÇÁÆ®¿þ¾î´Â ¾àÇÑ ¾ÏÈ£È ±â¼úÀÎ 40bit±æÀÌÀÌÇÏÀÇ Å°/512bitÀÌÇÏÀÇ RSAŰ
À̸¦ °¡Áø ¾ÏÈ£ÈÀå
ºñ/¼ÒÇÁÆ®¿þ¾î¸¸À» ¼öÃâÇÒ¼ö ÀÖ°Ô µÇ¾î ÀÖ´Ù. ÀÌ ±ÔÁ¤Àº ¾ÏÈ£È ¹æ½ÄÀÌ bulk encryptionÀÌ³Ä ¾Æ
´Ï³Ä¿¡ µû¶ó ¾à°£ÀÇ
¿¹¿Ü´Â ÀÖ±äÇÏÁö¸¸ ¹Ì±¹Á¤ºÎÀÇ ±î´Ù·Î¿î ½É»ç¶§¹®¿¡ ¼öÃâÇã¿ëÀÌ ¸Å¿ì ¾î·Á¿ì¸ç ½Ã½ºÆÀÀÇ Àüü ¼Ò
½ºÄÚµå¿Í ÇÔ²² ¼ö
ÃâÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÑ »óÅÂÀÌ´Ù.
¾ÏÈ£È ±â¼úÀÇ ¼öÀÔ°ú °ü·ÃµÈ ÀǰßÀ¸·Î º»ÀÎÀÌ WSP(Web Security and Payment)¸ÞÀϸµ¸®½ºÆ®
¿¡ º¸³½ ªÀº ¸ÞÀÏÀ» ÇÏ
³ª ¼Ò°³ÇÑ´Ù.
X-Sender: dgguen@164.124.5.1
Date: Wed, 02 Oct 1996 10:45:12 +0900
To: wsp@cre.co.kr
From: Douglas Guen
Subject: ¹Ì±¹ÀÇ ¾ÏÈ£È ¼öÃâ °ü·Ã º¯°æ¿¡ ´ëÇØ
±Çµµ±ÕÀÔ´Ï´Ù.
¿À´Ã ·ÎÀÌÅͰø±Þ±â»ç·Î ÇѰܷ¹¿¡ ÀÛÀº ±â»ç·Î ¹Ì±¹ÀÇ "¾ÏȣȼöÃâÇã¿ë"À̶ó´Â
±â»ç°¡ ³ª¿Í¼ ³»¿ëÀ» ã¾Æ º»°ÍÀÔ´Ï´Ù.
¿ä¾àÇϸé,
64bit۱æÀÌÀÇ ¾ÏÈ£È ¼öÃâÇã¿ë
´ë½Å key escrowÁ¤Ã¥À» ¼ö¿ëÇØ¾ßÇÔ.
(Áï Á¦ 3ÀÚ°¡ Ç®¼ö ÀÖ´Â ¾ÏÈ£±â¼ú¸¸À» Çã¿ëÇÑ´Ù´Â ±âÁ¸ÀÇ Á¤Ã¥°í¼ö)
º° »õ·Î¿î À̾߱â´Â ¾Æ´ÑµíÇÕ´Ï´Ù.
¾Ïȣȱâ¼úÀÇ ¼öÃâÀ̶óÇÒ¶§ ¿©ÀüÈ÷ ´øÁ®¾ßÇÒ check point´Â
1. ¾Ë°í¸®ÁòÀÇ ¼³°è°¡ ¾ÈÀüÇÑÁö Áõ¸íÇÒ¼ö Àִ°¡?
(DES¿Í °°ÀÌ trapdoorÀÇ Á¸Àç¿¡ ´ëÇÑ ÀǽÉÀÌ Àִ°¡?)
2. ¼ÒÇÁÆ®¿þ¾î/Çϵå¿þ¾îÀÇ Full Source¸¦ ÀÔ¼öÇÒ ¼ö Àִ°¡?
3. Key ±æÀÌ Á¦¾î°¡ °¡´ÉÇѰ¡?
µîµîÀÔ´Ï´Ù.
¿©ÀüÈ÷ ÀÌ·± °üÁ¡¿¡¼´Â ¹Ì±¹¿¡¼ ¼öÃâµÇ´Â ¾Ïȣȱâ¼ú/Àåºñ/¼ÒÇÁÆ®¿þ¾î´Â 0Á¡
À̶ó ÇÒ¼ö ÀÖ°ÚÁö¿ä?
4. ¾ÏÈ£È ¶óÀ̺귯¸®
Áö±Ý±îÁö ¼·ÐÀÌ ³Ê¹« ±æ¾ú´Ù. ¾ÏÈ£È ±â¼úÀü¹Ý¿¡ ´ëÇÑ ¼Ò°³°¡ ³Ê¹« ÀåȲÇßÁö¸¸ ÀÌ·± ¹è°æ¿¡¼
¾ÏÈ£È ÇÁ·Î±×·¡
¹ÖÀÌ Àǹ̸¦ °¡Áú°Í °°¾Æ¼ ºñ±³Àû »ó¼¼È÷ ¼³¸íÀ» ÇÏ¿´´Ù. ÁÁ´Ù ¾ÏÈ£È ¹æ½ÄÀº ´ëĪÇü/ºñ´ëĪÇü
ÀÌ ÀÖ°í, ÇØ½ÃÇÔ¼ö,
ÀüÀÚ¼¸íµîÀÌ ÀÖ´Ù´Â °ÍÀº Àß ¾Ë¾Ò´Ù. ±×¸®°í ±×°ÍÀ» ÀÌ¿ëÇØ º¸¾È ÀÀ¿ë½Ã½ºÆÀ, Secure TelnetµîÀ»
¸¸µé¼ö ÀÖ´Ù´Â °Íµµ
¾Ë¾Ò´Ù. ±×·±µ¥ ¹®Á¦´Â ±×·¸´Ù¸é ±×·± ¾ÏÈ£ÀÌ·ÐÀ» ½ÇÁ¦ÀûÀÎ ÇÁ·Î±×·¡¹ÖÀ¸·Î ¿¬°áÇÏ·Á¸é ÀÌ·Ð/¾Ë
°í¸®ÁòÀ» ÇÁ·Î±×·¥È
ÇÏ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ´Ù. ±×·¯³ª ÀÌ ÀÛ¾÷Àº ±×¸® ½±Áö¾Ê´Ù. ¾Ë°í¸®ÁòÀÌ ÀÖ´ÙÇÏ´õ¶óµµ ±×°ÍÀ» ±¸ÇöÇÏ
´Â ÀÛ¾÷Àº ÀϹÝÀû
ÀÎ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â °Í°ú´Â ´Þ¸® ¸Å¿ì ±î´Ù·Ó°í º¹ÀâÇÑ ÀÏÀÌ µÈ´Ù. ÀÌ ÀÚ¸®¿¡¼´Â ¾î¶² ¼öÇÐ
ÀûÀÎ ¾Ë°í¸®ÁòÀ» ±¸
ÇöÇÏ´Â °Í¿¡ ÁýÁßÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±×·± ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÑ ¶óÀ̺귯¸®°¡ ÀÖ´Ù°í ÇÒ¶§ ±× ¶óÀ̺ê
·¯¸®¸¦ ÀÌ¿ëÇØ ÀÀ
¿ë½Ã½ºÆÀÀ» ¸¸µå´Â °÷¿¡ ÁýÁßÇÏ·Á°í ÇÑ´Ù. ±×·¯ÀÚ¸é »ç¿ëÇÒ ¶óÀ̺귯¸®°¡ ÀÖ¾î¾ßÇϴµ¥ ±×°ÍÀº
´ÙÀ½°ú °°´Ù.
4.1 RSAEURO/RSAREF
RSAEURO/RSAREF´Â °ÅÀÇ µ¿ÀÏÇÑ »ç¿ëÀÚ ÀÎÅÍÆÐÀ̽º¸¦ °¡Áö°í ÀÖ´Â ¾ÏÈ£È ¶óÀ̺귯¸®ÀÌ´Ù.
±âº»ÀûÀ¸·Î RSAREF
´Â ¹Ì±¹ÀÇ RSA»ç°¡ ÆÛºí¸¯µµ¸ÞÀÎÀ¸·Î RSA¾Ë°í¸®Áò, DES, MD5µîÀÇ ¾Ë°í¸®ÁòÀ» CÄÚµå·Î ±¸Çö
ÇØ¼ °ø°³ÇÑ ¶óÀ̺ê
·¯¸®ÀÌ´Ù. ¹öÁ¯Àº ÇöÀç 94³âµµ¿¡ ¹ßÇ¥µÈ 2.0À¸·Î¼ ÀϹÝÀûÀÎ ¾ÏÈ£È ¾Ë°í¸®ÁòÀº »ç¿ëÇÒ¼ö ÀÖ°Ô
µÇ¾î ÀÖ´Ù. RSA
»ç´Â RSAREF 2.0ÀÌÈÄ Áö¼ÓÀûÀÎ ¹ßÀüÀ» Áß´ÜÇϰí BSAFEµî »õ·Î¿î ¾ÏÈ£È °³¹ßµµ±¸¸¦ °³¹ßÇØ
ÀÌ ÂÊÀ¸·Î ÁýÁßÀ» ÇÏ
°í ÀÖÀ¸¸ç RSAREF´Â ¹ßÀüÀ» ÇÏÁö ¸øÇϰí ÀÖ´Â »óÅÂÀÌ´Ù. RSAREFÀÇ API(Application
Programming Interface)´Â ¸Å¿ì
¸í·áÇÏ°í °£´ÜÇØ¼ ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀÀ» °³¹ßÇϴµ¥ ½±°Ô Àû¿ëÇÒ¼ö ÀÖµµ·Ï µÇ¾îÀÖ´Ù. ±×·¯³ª ºÒ
ÇàÇϰԵµ RSAREF
³ª BSAFEµîÀº ¹Ì±¹³»ÀÇ RSA»ç°¡ °³¹ßÇÑ ¾ÏȣȰ³¹ßµµ±¸·Î¼ ¹Ì±¹¹Û¿¡¼ÀÇ »ç¿ëÀº ÀüÀûÀ¸·Î ºÒ
°¡´ÉÇÑ »óÅÂÀÌ´Ù.
RSAEURO´Â 95³âºÎÅÍ °³¹ßµÈ ¾ÏÈ£È °³¹ßµµ±¸·Î¼ ÇöÀç 1.03, 1.05¹öÁ¯µîÀÌ ³ª¿À°í ÀÖ´Ù.
RSAEUROÀÇ Æ¯Â¡Àº
RSAREF¿Í °ÅÀÇ ¿Ïº®ÇÏ°Ô È£È¯¼ºÀ» À¯ÁöÇÏ¸é¼ ±âŸ ¿©·¯°¡Áö ±â´ÉµéÀ» Ãß°¡ÇÑ ¾ÏȣȰ³¹ß µµ
±¸ÀÌ´Ù. ´Ù¸¸
RSAEURO´Â À¯·´, ¿µ±¹¿¡¼ °³¹ßµÈ ¾ÏȣȶóÀ̺귯¸®À̱⶧¹®¿¡ ¹Ì±¹ÀÇ ¼öÃâ±ÝÁö¹ý¿¡ Àû¿ëÀ»
¹ÞÁö ¾Ê°í ¹Ì±¹¹Û¿¡
¼ »ç¿ëÀÌ °¡´ÉÇÏ´Ù´Â Á¡ÀÌ ÀÖ´Ù. ±×·¯³ª RSAEURO´Â ¹Ì±¹¹Û¿¡¼´Â »ç¿ëÀÌ °¡´ÉÇÏÁö¸¸ »ó¿ëÀÌ
¸ç, ¹Ì±¹³»¿¡¼ »ç
¿ëÇÏ·Á¸é ¹Ì±¹ RSA»çÀÇ ¶óÀ̼¾½º¸¦ ¾ò¾î¾ßÇÑ´Ù. ÀÌ ¹®Á¦´Â ¸ðµç RSA°ü·Ã ¾ÏȣȶóÀ̺귯¸®¿¡
°øÅëÀûÀ¸·Î Àû¿ëµÇ
´Â ¹®Á¦À̱⵵ ÇÏ´Ù.
RSAEURO/RSAREF´Â ¸Å¿ì ½±°í ¸íÄèÇÑ API¸¦ °¡Áö°í Àֱ⶧¹®¿¡ ¾Æ·¡ÀÇ ÇÁ·Î±×·¡¹Ö¹æ¹ý¿¡¼
´Â À̸¦ Áß½ÉÀ¸·Î ¼³
¸íÇÏ·Á°í ÇÑ´Ù.
4.2 SSLeay
SSLeay È£ÁÖÀÇ E A Young¿¡ ÀÇÇØ ¸¸µé¾îÁø SSL 2.0 ¶óÀ̺귯¸®ÀÌ´Ù. SSLeay´Â ÀüÀûÀ¸·Î
SSLÇÁ·ÎÅäÄÝÀ» ±¸ÇöÇÏ
±âÀ§ÇØ ¸¸µç °ÍÀÌÁö¸¸ ±× ¼Ó¿¡ crypto.a¶ó´Â ¶óÀ̺귯¸®¸¦ »ý¼ºÇϸç ÀÌ ¼Ó¿¡´Â ¾Õ¿¡¼ ¾ð±ÞÇÑ ¾Ï
È£È ¾Ë°í¸®ÁòÀÌ ´ë
ºÎºÐ Æ÷ÇԵǾî ÀÖ´Ù. ±×·¯³ª SSLeay´Â SSLÇÁ·ÎÅäÄÝÀ» À§ÇØ ¸¸µç ÆÐŰÁö·Î¼ SSL API´Â ºñ±³
Àû ¸íÈ®ÇÏ°Ô »ç¿ëÇÒ¼ö
ÀÖµµ·Ï µÇ¾îÀÖÀ¸³ª ±× ÇϺÎÀÇ ¾ÏÈ£È ¾Ë°í¸®Áò¿¡ ´ëÇÑ API´Â ¹®¼È³ª ¼³¸íÀÌ ÃæºÐÄ¡ ¸øÇؼ
SSLÀÌ¿ÜÀÇ ¾ÏÈ£È
½Ã½ºÆÀÀ» ¸¸µé±â À§Çؼ´Â »ó´çÇÑ ³ë·ÂÀ» ÇØ¾ß °¡´ÉÇÏ´Ù.
4.3 PGP
°ø°³µÈ ¾ÏÈ£È ½Ã½ºÆÀÀ¸·Î ¿ª»ç°¡ °¡Àå ±íÀº °ÍÀº ¹¹¶óÇØµµ PGPÀÌ´Ù. PGP´Â ÃʱâºÎÅÍ ¼Ò½ºÃ¤
·Î °ø°³µÇ¾îÀÖ¾ú°í,
¹Ì±¹ ¹ÛÀ¸·Î À¯ÃâµÇ¸é¼ Àü¼¼°èÀûÀΠǥÁØ ÀüÀÚ¿ìÆí ¼ÒÇÁÆ®¿þ¾î·Î ÀÚ¸®ÀâÀº ½Ã½ºÆÀÀÌ´Ù. ÀÌ ¼Ó¿¡
¿ª½Ã RSA, IDEA,
MD5µî ¾ÏÈ£È ¾Ë°í¸®ÁòÀÌ ±¸ÇöµÇ¾î ÀÖ°í, À̰ÍÀ» ±â¹ÝÀ¸·Î ¾ÏÈ£È ÀüÀÚ¿ìÆí, PGP¸¦ ¸¸µé¾ú´Ù.
±×·¯³ª PGPÀÇ ¾à
Á¡Àº ¾ÏȣȶóÀ̺귯¸®¿Í ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ±¸ºÐµÇ¾î ÀÖÁö¾Ê°í ÇѲ¨¹ø¿¡ ¼¯¿©¼ ±¸ÇöµÇ¾î ÀÖ°í ÀÌ
ÀÇ ºÐ·®ÀÌ ÀÛÁö¾Ê±â
¶§¹®¿¡ PGP³»¿¡¼ ¾ÏȣȶóÀ̺귯¸®¸¦ ºÐ¸®Çؼ »ç¿ëÇÑ´Ù´Â °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÑ °Íó·³ ¾Ë·ÁÁ®
ÀÖ´Ù. MIT¹öÁ¯ÀÇ
PGP´Â RSAREF¸¦ »ç¿ëÇÏ´Â ¹öÁ¯ÀÇ PGP°¡ ÀÖ°í RSAEURO¹öÁ¯ÀÇ PGP°¡ ÀÖ±äÇÏÁö¸¸ PGP³»ÀÇ
¾ÏȣȶóÀ̺귯¸®
¸¦ ºÐ¸®ÇÏ´Â °ÍÀº ¸Å¿ì Èûµç °ÍÀ¸·Î ¾Ë·ÁÁ®ÀÖ´Ù. ´Ù¸¸ 96³â 7¿ù ¹Ì±¹¿¡¼ ¿¸° 6ȸ USENIX
Security ½ÉÆ÷Áö¿ò¿¡¼
SUN»ç¿¡¼ PGP¶óÀ̺귯¸®¸¦ ¸¸µé°í ÀÖ´Ù´Â ¹ßÇ¥°¡ ÀÖ±äÇßÁö¸¸ °ø°³°¡ µÉÁö ¿©ºÎ´Â ¾Ë·ÁÁöÁö
¾Ê¾Ò´Ù.
4.4 JAVA Crypto
JAVA¿¡¼ ¾ÏȣȶóÀ̺귯¸®¸¦ ±¸ÇöÇÏ´Â °ÍÀº ÃÖ±ÙÀÇ À¯Çàó·³ ¹øÁö°í ÀÖ´Ù. ±×·¯³ª ´ëºÎºÐÀÇ
ÀÚ¹Ù·Î ¸¸µé¾îÁø ¾Ï
ȣȶóÀ̺귯¸®´Â Native method¸¦ »ç¿ëÇØ¼ ³»ºÎÀÇ ¼öÇÐÀûÀÎ °è»êÀº CÄÚµå·Î ±¸ÇöÇϰí ÇÔ¼ö¸¸
À» ÀÚ¹Ù·Î ¸¸µå´Â ¹æ
½ÄÀ» ÃëÇϰí ÀÖ´Ù. ±×·¯³ª ÇöÀç ÀÚ¹Ù¸¦ »ç¿ëÇÏ´Â ºê¶ó¿ìÁ®ÀÇ ÀÚ¹Ù ¾ÖÇø´Àº Native method¸¦ »ç
¿ëÇÒ¼ö ¾ø±â¶§¹®¿¡
Å« Àǹ̰¡ ¾ø´Ù. ÃÖ±Ù ÀüÀûÀ¸·Î Àڹٷθ¸ ¾ÏÈ£È ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÏÀÚ´Â ³íÀǰ¡ ÀÖ°í ÇöÀç DES
Á¤µµ´Â ÀüÀûÀ¸·Î
Àڹٷθ¸ ±¸ÇöµÈ Ŭ·¡½º°¡ ¼±º¸À̱ä ÇÏÁö¸¸ ¾ÆÁ÷Àº ÀüÀûÀ¸·Î ÀÚ¹Ù·Î ´ëºÎºÐÀÇ ¾ÏÈ£È¾Ë°í¸®ÁòÀ»
±¸ÇöÇÑ ½Ã½ºÆÀÀº
¾ø´Ù.
Native method·Î ±¸ÇöµÈ Àڹ٠Ŭ·¡½º·Î´Â Systemics»çÀÇ cryptix-java 1.1ÀÌ ÀÖ´Ù. ACME Java
Ŭ·¡½º¿ª½Ã CryptoŬ·¡½º
¸¦ ±¸ÇöÇØ ³õ°í ÀÖ´Ù.
5. ¾ÏÈ£È ÇÁ·Î±×·¡¹Ö - RSAEURO/RSAREFÁß½ÉÀ¸·Î
ÀÌÁ¦ ÁøÂ¥ ¾ÏÈ£È ÇÁ·Î±×·¡¹ÖÀ¸·Î Á¢¾îµé¾ú´Ù. RSAEURO 1.03¹öÁ¯À» Áß½ÉÀ¸·Î ¾Õ¿¡¼ À̾߱â
ÇÑ °¢°¢ÀÇ ¾ÏÈ£È ¹æ
½ÄÀ» ÇÁ·Î±×·¡¹ÖÀ¸·Î ¾î¶»°Ô ±¸ÇöÇÏ´ÂÁö¸¦ ¼³¸íÇϰڴÙ.
5.1 Symmetric Cryptography Programming
´ëĪÇü ¾ÏÈ£È ÇÁ·Î±×·¡¹ÖÀº ¾Õ¿¡¼ ¾ð±ÞÇßµíÀÌ ¾ÏÈ£ÈÇÒ¶§ÀÇ Å°¿Í ¾Ïȣȸ¦ Ç®¶§ »ç¿ëÇϴ Ű
°¡ µ¿ÀÏÇÑ Å°¸¦ »ç
¿ëÇÏ´Â ¾ÏÈ£È ¹æ½ÄÀ» ¸»ÇÑ´Ù. ´ëÇ¥ÀûÀÎ ´ëĪÇü ¾ÏÈ£È ¹æ½ÄÀº ¹Ù·Î DES(Data Encryption
Standard)ÀÌ´Ù. DES´Â ºí
·° ¾ÏÈ£È ¹æ½ÄÀ¸·Î¼ ºí·° ¾ÏÈ£È ¹æ½ÄÀº µ¿ÀÏÇÑ ¾ÏÈ£È ¹æ½Ä¿¡¼µµ µ¿ÀÛÇÏ´Â ¸ðµå°¡ °¢°¢ ´Ù¸¥
¸ðµå·Î µ¿ÀÛÇÒ ¼ö
ÀÖ´Ù.
ECB(Electronic CodeBook)
CBC(Cipher Block Chaining)
µîÀÌ ´ëÇ¥ÀûÀÎ ºí·°¾ÏÈ£È ¹æ½ÄÀÇ ¸ðµåÀ̸ç À̵éÀÇ º¯ÇüÀÌ ÀÖÀ»¼ö ÀÖ´Ù.
RSAEURO°¡ Áö¿øÇÏ´Â ºí·°¾Ïȣȹæ½ÄÀº ÇöÀç DESÀ̸ç IDEA, Blowfish¾ÏȣȰ¡ °ð Áö¿øµÈ´Ù
°í ÇÑ´Ù. RSAEURO
°¡ Áö¿øÇÏ´Â DES¿ª½Ã ÀÌ·± ºí·°¾ÏÈ£È ¸ðµå¸¦ »ç¿ëÇϴµ¥ ¿©±â¼´Â ´ëÇ¥ÀûÀÎ CBC¸ðµå¸¦ »ç¿ë
ÇÑ´Ù. ECB¸ðµå´Â ¿À
·¡µÈ ¹æ½ÄÀÌ¸ç ±¸ÇöÇϱ⵵ ¾î·Æ°í attackÀÇ °¡´É¼ºÀÌ ÀÖ´Â °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖ´Ù. DES´Â Àß ¾Ë·Á
Á® ÀÖ´Â ´ë·Î 56bit
Ű ±æÀ̸¦ °¡Áö´Â ¾Ïȣȹæ½ÄÀ¸·Î¼ 56bitÀÇ Å° ±æÀÌ´Â ÀÌÁ¦´Â ¾ÈÀüÇÏ´Ù°í ÇÒ ¼ö ¾ø´Â Ű ±æÀ̰¡
µÇ¾î ¹ö·È´Ù. ±×·¡
¼ ÃÖ±Ù¿¡´Â DES¾Ïȣȸ¦ ¼¼°³ÀÇ Å°·Î ¼¼¹ø ¹Ýº¹ÇÔÀ¸·Î½á ¾ÏÈ£ÀÇ °µµ¸¦ ³ôÀÎ Triple-DES¹æ½Ä
À» ¸¹ÀÌ ÀÌ¿ëÇÑ´Ù.
Triple-DES´Â Key1À¸·Î ¾Ïȣȸ¦ Çϰí Key2·Î º¹È£È¸¦ ÇÑ ÈÄ ´Ù½Ã Key3·Î ¾Ïȣȸ¦ ÇÏ´Â ¹æ
½ÄÀÌ´Ù. ±×·¯³ª Key1
°ú Key3¸¦ µ¿ÀÏÇÑ Å°¸¦ »ç¿ëÇÑ´Ù. ±×·¯¹Ç·Î ÀüüÀûÀ¸·Î »ç¿ëÇϴ ŰÀÌ´Â µÎ°³ Áï Key1°ú Key2
·Î¼ µÎ°³ÀÇ Å°¸¦
ÇÕÇϸé 112bitÀÇ Å°ÀÌ ±æÀ̸¦ °¡Áø ¾ÏÈ£È ¹æ½ÄÀÌ µÈ´Ù. RSAEURO¿¡¼ Áö¿øµÇ´Â DES´Â
RSAREF¿ÍÀÇ È£È¯À» À§
ÇØ RSA»ç°¡ ¸¸µç DESX¸ðµåµµ Áö¿øµÈ´Ù. DESX¸ðµå´Â RSA»ç°¡ DES¸¦ °ÈÇϱâÀ§ÇØ ¸¸µç ¸ð
µå·Î¼ DES CBC¸ð
µå¾ÏȣȽà ºñ¹ÐŰ·Î XOR¸¦ ÇÔÀ¸·Î½á ¾ÏÈ£ÀÇ °µµ¸¦ ³ôÀÎ ¸ðµåÀÌ´Ù.
µÚ¿¡ ´Ù½Ã ¾ð±ÞÇϰÚÁö¸¸ ºí·° ¾Ïȣȹæ½ÄÀº ºí·°´ÜÀ§·Î ¾Ïȣȸ¦ Çϱ⶧¹®¿¡ ¾Ïȣȸ¦ ÇÏ´Â ÀÚ
·áÀÇ ±æÀ̰¡ Ç×»ó
ºí·°ÀÇ ¹è¼ö¿©¾ßÇÑ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ±×·¯³ª ½ÇÁ¦´Â Ç×»ó ºí·°ÀÇ ¹è¼ö°¡ µÇÁö ¾Ê±â¶§¹®¿¡ ¾ÏÈ£È
ÇÏ´Â ÀÚ·áÀÇ ¸Ç ³¡
¿¡´Â Ç×»ó ºí·°ÀÇ ¹è¼ö¸¦ ¸¸µé±âÀ§ÇÑ Pading󸮰¡ ÀÖ¾î¾ßÇÑ´Ù.
5.1.1 API
1) DES CBC¸ðµå
void DES_CBCInit(context, key, iv, encrypt)
DES_CBC_CTX *context; /* context */
unsigned char *key; /* key, 8 bytes */
unsigned char *iv; /* initializing vector, 8 bytes */
int encrypt; /* encrypt flag (1 = encrypt, 0 = decrypt) */
int DES_CBCUpdate(context, output, input, len)
DES_CBC_CTX *context; /* context */
unsigned char *output; /* output block */
unsigned char *input; /* input block */
unsigned int len;
void DES_CBCRestart(context)
DES_CBC_CTX *context;
2) Triple-DES
void DES3_CBCInit(context, key, iv, encrypt)
DES3_CBC_CTX *context; /* context */
unsigned char *key; /* key, 24 bytes */
unsigned char *iv; /* initializing vector, 8 bytes */
int encrypt; /* encrypt flag (1 = encrypt, 0 = decrypt) */
int DES3_CBCUpdate(context, output, input, len)
DES3_CBC_CTX *context; /* context */
unsigned char *output; /* output block */
unsigned char *input; /* input block */
unsigned int len; /* length of input and output blocks */
void DES3_CBCRestart (context)
DES3_CBC_CTX *context; /* context */
3) DESX ¸ðµå
void DESX_CBCInit(context, key, iv, encrypt)
DESX_CBC_CTX *context; /* context */
unsigned char *key; /* DES key and whiteners, 24 bytes */
unsigned char *iv; /* DES initializing vector, 8 bytes */
int encrypt; /* encrypt flag (1 = encrypt, 0 = decrypt) */
int DESX_CBCUpdate (context, output, input, len)
DESX_CBC_CTX *context; /* context */
unsigned char *output; /* output block */
unsigned char *input; /* input block */
unsigned int len; /* length of input and output blocks */
void DESX_CBCRestart(context)
DESX_CBC_CTX *context; /* context */
5.1.2 ÇÁ·Î±×·¡¹Ö
1) ±¸Á¶
DESÇÁ·Î±×·¡¹ÖÀº ¸Å¿ì °£´ÜÇÏ´Ù. DES context¿¡´Ù°¡ ¾ÏÈ£È/º¹È£ÈÇÒ Å°ÀÌ¿Í iv(initial vector)
¸¦ ¼¼ÆÃÇϰí, ¾ÏÈ£ÈÇÑ
´Ù/º¹È£ÈÇÑ´Ù¸¦ ÁöÁ¤ÇÏ´Â ÃʱâÈ(initialization)ÇÑ ÈÄ, ¾ÏÈ£È/º¹È£ÈÇÒ ÀڷḦ 8byteÀÇ ¹è¼ö·Î
¸¸µé¾î ¾ÏÈ£È/º¹È£È
ÇÑ´Ù(update). iv´Â ŰÀÌó·³ ·£´ýÇÏ°Ô »ý¼ºÇؼ ¾ÏÈ£ÈµÈ ÀÚ·á¿Í ÇÔ²² Àü´ÞÇØ º¹È£ÈÇÒ¶§ »ç¿ë
ÇÑ´Ù.
»ùÇÃÄڵ带 º¸¸é
DES_CBC_CTX DEScontext;
unsigned char buf[BUFSIZE];
unsigned char opa_buf[BUFSIZE];
int len;
rtv = DES_CBCInit(&DEScontext, sessionkey, iv, 1);
/* the 1 means encryption */
if(rtv != IDOK) {
initialization error;
}
while(1) {
/* 8ÀÇ ¹è¼ö·Î buf¸¦ °¡Á®¿È */
if(getbuf_multiple8(buf) == EOF)
break;
rtv = DES_CBCUpdate(&DEScontext, buf, opa_buf, len);
if(rtv != IDOK) {
encryption/decryption error;
}
}
DES´Â ¾ÏÈ£È¿Í º¹È£ÈÀÇ °á°ú°¡ µ¿ÀÏÇÑ ±æÀÌÀÇ ÀÚ·á°¡ »ý¼ºµÈ´Ù. Áï 48byteÀÇ ÀڷḦ ¾ÏÈ£È
Çϸé 48byteÀÇ ¾ÏÈ£
ÈµÈ ÀÚ·á°¡ »ý¼ºµÈ´Ù.
2) Padingó¸®
¾Õ¿¡¼ ¾ð±ÞÇÑ ´ë·Î DES´Â ºí·° ¾ÏÈ£È ¹æ½ÄÀ̱⶧¹®¿¡ ¸Ç¸¶Áö¸· ÀÚ·áÀÇ ±æÀ̰¡ 8ÀÇ ¹è¼ö°¡ ¾Æ
´Ò°æ¿ì¿¡ 8ÀÇ ¹è
¼ö°¡ µÇµµ·Ï ÀڷḦ ä¿ö ¾Ïȣȸ¦ ÇÏ°í ¶Ç º¹È£È¸¦ ÇÑ ÈÄ Ã¤¿öÁø ÀÚ·á´Â Á¦°ÅÇØ¾ß, Á¤»óÀûÀÎ
¾ÏÈ£È/º¹È£È°¡ ÀÌ
·ç¾îÁø´Ù. ±×·¯¹Ç·Î ¸Ç¸¶Áö¸· ÀڷḦ 8ÀÇ ¹è¼ö°¡ µÇµµ·Ï PadingÇÏ´Â ¹æ¹ýÀº ¿©·¯°¡Áö°¡ ÀÖÁö¸¸
RSAEURO/RSAREF
¿¡¼ »ç¿ëÇÏ´Â Pading±â¹ýÀº ´ÙÀ½°ú °°´Ù.
¾ÏÈ£ÈÇÏ´Â ÀÚ·áÀÇ ¸Ç¸¶Áö¸·ÀÌ 8ÀÇ ¹è¼ö°¡ µÉ °æ¿ì´Â Ãß°¡ÀûÀ¸·Î 8byte¸¦ µ¡ºÙÀÌ°í ±× 8byte´Â
8¶ó´Â ¼ýÀڷΠä
¿î´Ù. ±×¸®°í 8ÀÇ ¹è¼ö°¡ ¾ÈµÉ°æ¿ì 8ÀÇ ¹è¼ö¿¡¼ ¸ðÀÚ¶ó´Â ¼ýÀÚ, Áï ¸Ç ¸¶Áö¸·ÀÚ·á°¡ 5byteÀÏ °æ
¿ì 3byte¸¦ ä¿ì´Â
µ¥ 3À̶ó´Â ¼ýÀڷΠä¿î´Ù. ±×·¡¼ ³ªÁß¿¡ º¹È£È¸¦ ÇÑÈÄ ¸Ç¸¶Áö¸· byteÀÇ ¼ýÀÚ¸¦ ±Ù°Å·Î
PadingµÈ byte¼ö¸¦ ¾Ë¾Æ
¼ PadingµÈ ÀڷḦ Á¦°ÅÇÒ¼ö ÀÖ°Ô ÇÑ´Ù.
»ùÇÃÄÚµå´Â ´ÙÀ½°ú °°´Ù.
opa_len = strlen(opa_buf);
if((pad = 8 - (opa_len % 8)) != 0) {
for(i = 0; i < pad; i++) opa_buf[opa_len+i] = (unsigned char) pad;
opa_len += pad;
}
5.2 Asymmetric Cryptography Programming - RSA
RSA´Â µÎ°³ÀÇ Å°ÀÌ Áï Public Key¿Í Private Key¸¦ °¡Áö°í »óÈ£°£¿¡ ¾ÏÈ£È/º¹È£È¸¦ ÇÏ´Â ¹æ
½ÄÀ¸·Î¼ ÀϹÝÀûÀÎ ÀÚ
·áÀÇ ¾Ïȣȿ¡¼´Â Public Key·Î ¾ÏÈ£ÈÇϰí Private Key·Î º¹È£ÈÇÑ´Ù. ±×·¯³ª ÀüÀÚ¼¸í°ú °°
Àº ÀÀ¿ë¿¡¼´Â ÀÚ½ÅÀÇ
Private key·Î ¾Ïȣȸ¦ Çϰí(ÀüÀÚ¼¸í), Public Key·Î º¹È£È¸¦ ÇØ, ¼¸íÀ» È®ÀÎÇϱ⵵ ÇÑ´Ù. ÀÏ
¹ÝÀûÀ¸·Î´Â Public Key
·Î ¾Ïȣȸ¦ Çϰí privateŰÀÌ·Î º¹È£È¸¦ ÇÏ´Â °ÍÀÌ ¼Óµµ°¡ ºü¸£´Ù. ±×·¯³ª ÀüüÀûÀ¸·Î´Â ´ëĪÇü
¾Ïȣȹæ½Äº¸´Ù´Â
¼Óµµ°¡ ¸Å¿ì ´À¸®´Ù.
RSA¾ÏÈ£È/º¹È£È¿¡´Â ´ÙÀ½°ú °°Àº ³×°³ÀÇ ÇÔ¼ö°¡ ÀÖ´Ù.
Á¦¸ñ ¾øÀ½
| RSAPrivateEncrypt
| Encrypts a block of data
using an RSA private key, according to PKCS#1: RSA Encryption Standard.
|
| RSAPrivateDecrypt
| Decrypts a block of data
using an RSA private key, according to PKCS#1: RSA Encryption Standard.
|
| RSAPublicEncrypt
| Encrypts a block of data
using an RSA public key, according to PKCS#1: RSA Encryption Standard.
|
| RSAPublicDecrypt
| Decrypts a block of data
using an RSA public key, according to PKCS#1: RSA Encryption Standard.
|
5.2.1 API
1) Private Key·Î ¾ÏÈ£È
int RSAPrivateEncrypt(output, outputLen, input, inputLen, privateKey)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block */
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
R_RSA_PRIVATE_KEY *privateKey; /* RSA private key */
2) Private Key·Î º¹È£È
int RSAPrivateDecrypt(output, outputLen, input, inputLen, privateKey)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block *
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
R_RSA_PRIVATE_KEY *privateKey; /* RSA private key */
3) Public key·Î ¾ÏÈ£È
int RSAPublicEncrypt(output, outputLen, input, inputLen, publicKey,
randomStruct)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block */
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
R_RSA_PUBLIC_KEY *publicKey; /* RSA public key */
R_RANDOM_STRUCT *randomStruct; /* random structure */
4) Public Key·Î º¹È£È
int RSAPublicDecrypt(output, outputLen, input, inputLen, publicKey)
unsigned char *output; /* output block */
unsigned int *outputLen; /* length of output block */
unsigned char *input; /* input block */
unsigned int inputLen; /* length of input block */
R_RSA_PUBLIC_KEY *publicKey; /* RSA public key */
5) RSA Key»ý¼º
int R_GeneratePEMKeys(publicKey, privateKey, protoKey, randomStruct)
R_RSA_PUBLIC_KEY *publicKey; /* new RSA public key */
R_RSA_PRIVATE_KEY *privateKey; /* new RSA private key */
R_RSA_PROTO_KEY *protoKey; /* RSA prototype key */
R_RANDOM_STRUCT *randomStruct; /* random structure */
5.2.2 ÇÁ·Î±×·¡¹Ö
RSAÇÁ·Î±×·¡¹ÖÀº DES¾ÏÈ£È ¹æ½Äº¸´Ù ºñ±³Àû °£´ÜÇÏ´Ù. ÀϹÝÀûÀ¸·Î ´ë·®ÀÇ ÀڷḦ RSA·Î Á÷
Á¢ ¾Ïȣȸ¦ ÇÏÁö
¾Ê±â¶§¹®¿¡ RSA ¾ÏÈ£È APIµéÀº while()·çÇÁ³ª for()·çÇÁ¸¦ µ¹¸é¼ ÀڷḦ Á¶±Ý¾¿ ºÐÇÒÇØ¼ ¾Ï
È£ÈÇÏ´Â ¹æ½ÄÀº °ÅÀÇ
»ç¿ëÇÏÁö ¾Ê°í ÀûÀº ÀڷḦ Çѹø¿¡ ¾ÏÈ£ÈÇϰųª º¹È£ÈÇϱ⶧¹®¿¡ °£´ÜÇÑ ÀÎÅÍÆÐÀ̽º·Î ¸¸µé¾î
Á® ÀÖ´Ù. ÀϹÝÀûÀ¸
·Î RSA·Î ¾ÏÈ£ÈÇÏ´Â ÀÚ·á´Â ÀϹÝÀÚ·á¶ó±âº¸´Ù´Â ÀϹÝÀڷḦ ´ëĪÇü ¾Ïȣȹæ½ÄÀ¸·Î ¾ÏÈ£ÈÇÏ
°í ±× ÆÐ½º¿öµå(Ű
ÀÌ)¸¦ º¸È£ÇϱâÀ§ÇØ ¾ÏÈ£ÈÇÏ´Â ¹æ¹ýÀ¸·Î RSA¸¦ »ç¿ëÇϱ⶧¹®¿¡ ÁÖ·Î 8byte, 24byteÁ¤µµ¸¦ ¾ÏÈ£
ÈÇϴµ¥ »ç¿ëÇÑ´Ù.
±×·¯¹Ç·Î ¾Ïȣȹæ½ÄÀº ¸Å¿ì °£´ÜÇÏ´Ù. ¾Õ´Ü¶ôÀÇ API¸¸º¸¸é ±×³É »ç¿ëÇÒ¼ö ÀÖÀ»Á¤µµ·Î °£´ÜÇϱâ
¶§¹®¿¡ ¿©±â¼´Â ¿¹
Á¦¸¦ ´Ù·çÁö ¾Ê°Ú´Ù.
RSAŰ½ÖÀ» »ý¼ºÇÏ´Â R_GeneratePEMKeys()ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇϰڴÙ. RSA¾ÏÈ£È
´Â µÎ°³ÀÇ Å°(Public
Key, Private Key)¸¦ »ç¿ëÇÑ´Ù. RSA۸¦ »ý¼ºÇϱâÀ§Çؼ´Â ŰÀDZæÀÌ, ¸ðµå, ±×¸®°í ·£´ýÇÑ ¼ýÀÚ
µîÀÌ ÇÊ¿äÇÏ´Ù.
»ùÇÃÄÚµå´Â ´ÙÀ½°ú °°´Ù.
R_RSA_PUBLIC_KEY PUB_KEY;
R_RSA_PRIVATE_KEY PRI_KEY;
R_RSA_PROTO_KEY protoKey;
protoKey.bits = 1024; /* KeyÀÇ ±æÀÌ */
protoKey.useFermat4 = 1; /* RSA Key Mode */
status = R_GeneratePEMKeys(&PUB_KEY, &PRI_KEY, &protoKey, randomStruct);
if(status) {
PrintError("Key Generation", status);
return;
}
5.2.3 ·£´ý ÇÔ¼ö
´ëĪÇü¾Ïȣȹæ½ÄÀ̳ª ºñ´ëĪÇü ¾Ïȣȹæ½Ä¿¡¼³ª ¾ÏÈ£È¾Ë°í¸®ÁòÀÌ ¾Æ¹«¸® °·ÂÇÏ´ÙÇÏ´õ¶óµµ
¾ÏÈ£ÈÇÒ¶§ »ç¿ëÇÏ
´Â ÆÐ½º¿öµå(Ű)°¡ ´Ù¸¥ »ç¶÷ÀÌ ½±°Ô ÃßÁ¤ÀÌ °¡´ÉÇÏ´Ù¸é ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ ¿ì¼ö¼ºÀº Àǹ̰¡ ¾ø´Â
°ÍÀÌ µÇ°í ¸¸´Ù.
Áï ¾ÏÈ£ÈÅë½ÅÀ» ÇÒ¶§ »ç¿ëÇϴ Ű(´ëĪÇü¾ÏÈ£ÈŰ, ºñ´ëĪÇü¾ÏÈ£ÈŰ)µéÀ» »ý¼ºÇÒ¶§ ³²µéÀÌ ½±°Ô
ÃßÁ¤ÀÌ ºÒ°¡´ÉÇÏ
µµ·Ï ·£´ýÇÏ°Ô »ý¼ºÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù.
ÀϹÝÀûÀ¸·Î UNIXµî ÄÄÇ»ÅͽýºÆÀ¿¡¼ »ç¿ëÇÏ´Â ·£´ýÇÔ¼ö(rand())´Â ÄÄÇ»ÅÍÀÇ Å¬·°À» °¡Áö°í »ý
¼ºÇÏ´Â ·£´ýÇÔ¼ö·Î
¼ ¾ö¹ÐÇÏ°Ô ¸»ÇÏÀÚ¸é ·£´ýÇÏ´Ù°í ÇÒ¼ö°¡ ¾ø´Ù. ¿Ö³ÄÇÏ¸é »ý¼ºµÇ´Â ·£´ý¼ýÀÚÀÇ seed¸¦ ¾Ë¼ö°¡
Àֱ⶧¹®¿¡ ·£´ý ¼ý
ÀÚ¸¦ ¿¹ÃøÀÌ °¡´ÉÇϱ⶧¹®ÀÌ´Ù.
RSA۸¦ »ý¼ºÇÒ¶§´Â ÀϹÝÀûÀ¸·Î ÄÄÇ»ÅÍÀÇ Å°º¸µå¸¦ ¸¶À½´ë·Î ÀÔ·ÂÇϵµ·Ï ÇÑ´Ù. À̶§ ÀÔ·ÂµÈ ³»
¿ëÀ» seed·Î »ç¿ë
ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó Űº¸µå¸¦ µÎµå¸®´Â ½Ã°£Àû °£°ÝÀ» seed·Î »ç¿ëÇØ¼ ·£´ý ¼ýÀÚ¸¦ ±¸Çϰí À̸¦
±â¹ÝÀ¸·Î RSA۸¦
»ý¼ºÇÑ´Ù.
RSAEURO/RSAREF¿¡¼ÀÇ ·£´ýÇÔ¼ö´Â ´ÙÀ½°ú °°´Ù. ÀÌ À̿ܿ¡µµ ½Ã½ºÆÀÀÇ clockÀ» ÀÌ¿ëÇØ ·£
´ý ¼ýÀÚ¸¦ ±¸ÇÏ´Â ÇÔ
¼öµîÀÌ ÀÖ´Ù.
(1) ·£´ý ½ºÆ®·°ÃÄ ÃʱâÈ
int R_RandomInit(random)
R_RANDOM_STRUCT *random; /* random structure */
(2) ·£´ý ½ºÆ®·°Ãĸ¦ blockÀڷḦ seed·ÎÇØ¼ ·£´ýÈ
int R_RandomUpdate(random, block, len)
R_RANDOM_STRUCT *random; /* random structure */
unsigned char *block; /* block of data */
unsigned int len; /* length of block */
(3) ÇöÀçÀÇ ·£´ý ½ºÆ®·°Ãĸ¦ ÃæºÐÈ÷ ·£´ýÈÇϱâÀ§ÇØ ÇÊ¿äÇÑ seed byte¼ö.
int R_GetRandomBytesNeeded(bytesNeeded, random)
unsigned int *bytesNeeded /* number of mix-in bytes needed */
R_RANDOM_STRUCT *random /* random structure */
(4) ÇöÀçÀÇ ·£´ý ³Ñ¹ö¸¦ Áö¿ò.
void R_RandomFinal(random)
R_RANDOM_STRUCT *random; /* random structure */
ÀÌ»óÀÇ ·£´ýÇÔ¼ö¸¦ ÀÌ¿ëÇØ ·£´ý ½ºÆ®·°Ãĸ¦ ¸¸µå´Â »ùÇà ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
static unsigned char seedByte = 0;
unsigned int bytesNeeded;
static R_RANDOM_STRUCT randomStruct;
R_RandomInit(&randomStruct);
while (1) {
R_GetRandomBytesNeeded(&bytesNeeded, &randomStruct);
if(bytesNeeded == 0)
break;
get_seed_data(&seedByte); /* Get Seed data from any way */
R_RandomUpdate(&randomStruct, &seedByte, 1);
}
/* using randomStruct in the Cryptography function */
R_RandomFinal(&randomStruct);
¿©±â¼ get_seed_data()´Â ¾Õ¿¡¼ ¾ð±ÞÇÑ Å°º¸µåÀÔ·ÂÀÇ ½Ã°£°£°Ýµî ¿ÜºÎ·ÎºÎÅÍ seedÀڷḦ ¾ò¾î
³»´Â ÇÔ¼öÀÌ´Ù.
5.3 Message Digest Programming
¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÇÔ¼ö´Â ¾Õ¿¡¼ ¾ð±ÞÇßµíÀÌ ¸Þ½ÃÁö¿¡ ´ëÇØ À¯ÀÏÇÑ Ã½¼¶À» ±¸ÇÏ´Â ÇÔ¼ö ÀÌ´Ù.
Áï ¸Þ½ÃÁöÀÇ ³»¿ë
ÀÇ ¼öÁ¤»èÁ¦µîÀ» Áõ¸íÇÒ¼ö ÀÖ´Â °íÁ¤±æÀÌÀÇ Äڵ带 »ý¼ºÇÏ´Â ÇÔ¼öÀÌ´Ù. ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦ ±¸
ÇÏ´Â ÇÔ¼ö·Î´Â MD2,
MD5µîÀÌ ÀÖÀ¸¸ç RSAREF¿¡´Â ¾øÁö¸¸ RSAEURO¿¡´Â SHAÇÔ¼öµµ Áö¿øÇϰí ÀÖ´Ù. SHA¾Ë°í¸®
ÁòÀº MD5º¸´Ù °·Â
ÇÑ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÇÔ¼ö¶ó°í ÇÒ¼ö ÀÖ´Ù. MD2³ª MD4, MD5´Â 128bit ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÄÚµå
¸¦ »ý¼ºÇϸç SHA
´Â 160bit ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® Äڵ带 »ý¼ºÇϸç SHA´Â SHS¶ó°í (Secure Hash Standard)·Î ¹Ì±¹
FIPSÀÇ Ç¥ÁØÀ¸·Î ÀÌ¿ë
µÇ°í ÀÖ´Ù.
¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®ÇÔ¼ö´Â ¾î´ø ÀÚ·á(¸Þ½ÃÁö)¸¦ ó¸®Çؼ ¸Þ½ÃÁö¿¡ ´ëÀÀµÇ´Â 128bit, 160bitÀÇ ´Ù
ÀÌÁ¦½ºÆ®Äڵ带 »ý¼º
ÇÏ´Â ÇÔ¼öÀÌ´Ù. ÀÌ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÄÚµå´Â ¸Þ½ÃÁöÀÇ ÅëÇÕ¼ºÀ» Áõ¸íÇϰųª ÀüÀÚ¼¸í(Digital
Signature)¸¦ ÇÒ¶§ »ç¿ë
ÇÑ´Ù.
5.3.1 API
(1) ÇÔ¼ö context¿Í ´ÙÀÌÁ¦½ºÆ®¾Ë°í¸®Áò(MD2, MD4, MD5, SHS) ¼±Á¤
int R_DigestInit(context, digesttype)
R_DIGEST_CTX *context; /* new context */
int digesttype; /* message-digest algorithm */
(2) ¸ÞÁöÁö¸¦ ó¸®Çؼ ´ÙÀÌÁ¦½ºÆ®¸¦ °è»ê
int R_DigestUpdate(context, partIn, partInLen)
R_DIGEST_CTX *context; /* context */
unsigned char *partIn; /* next data part */
unsigned int partInLen; /* length of next data part */
(3) ÃÖÁ¾ÀûÀ¸·Î ´ÙÀÌÁ¦½ºÆ® ÄÚµå »ý¼º
int R_DigestFinal(context, digest, digestLen)
R_DIGEST_CTX *context; /* context */
unsigned char *digest; /* message digest */
unsigned int *digestLen; /* length of message digest */
(4) ¸Þ½ÃÁö ºí·°À» Çѹø¿¡ ´ÙÀÌÁ¦½ºÆ® ÄÚµå »ý¼º
int R_DigestBlock(digest, digestLen, block, blockLen, digestAlgorithm)
unsigned char *digest; /* message digest */
unsigned int *digestLen; /* length of message digest */
unsigned char *block; /* block */
unsigned int blockLen; /* length of block */
int digestAlgorithm; /* message-digest algorithm */
¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÇÔ¼ö´Â À§¿¡ ¾ð±ÞÇÑ 12°¡Áö À̿ܿ¡µµ °¢°¢ÀÇ ´ÙÀÌÁ¦½ºÆ®¾Ë°í¸®Áòº°·Î °¢°¢
3-4°³¾¿ÀÇ ÇÔ¼ö°¡ º°µµ·Î Á¸ÀçÇÑ´Ù. Çʿ信 µû¶ó ÀÌ·± ÇϺÎÀÇ ÇÔ¼ö¸¦ »ç¿ëÇÒ¼öµµ ÀÖ´Ù.
5.3.2 ÇÁ·Î±×·¡¹Ö
¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÇÁ·Î±×·¡¹ÖÀº ¸ÕÀú XXXInit()À¸·Î context¸¦ ÃʱâÈÇÏ°í³ª¼ ¸Þ½ÃÁö´ÙÀÌÁ¦½º
Æ®¸¦ ±¸ÇÒ ¸Þ½ÃÁö¸¦
ÀÔ·ÂÇØ¼ ´ÙÀÌÁ¦½ºÆ®¸¦ °è»êÇÏ´Â °úÁ¤À¸·Î¼ XXXUpdate()ÇÔ¼ö°¡ ÀÖ°í, ¸¶Áö¸·À¸·Î XXXFinal()
ÇÔ¼ö·Î¼ ¸Þ½ÃÁö ´ÙÀÌ
Á¦½ºÆ®¸¦ ±¸ÇÑ´Ù. ¾Õ¿¡ ºÙ¿©Áø XXX´Â MD2, MD4, MD5, SHSµîÀ¸·Î ±¸ºÐµÈ´Ù. ÀÌ·±½ÄÀ¸·Î ÃÑ
12°³ÀÇ ÇÔ¼ö°¡ °¢°¢ÀÇ
¾Ë°í¸®Áòº°·Î ±¸¼ºµÇ¾î ÀÖÀ¸³ª ÇÁ·Î±×·¡¹ÖÀÇ ÆíÀǸ¦ À§ÇØ °¢°¢ÀÇ ¾Ë°í¸®ÁòÀ» ÃѰýÇÏ´Â »óÀ§ÇÔ¼ö
°¡ Á¸ÀçÇÑ´Ù. À̰Í
ÀÌ 5.3.1Àý¿¡ º¸¿©ÁØ 4°³ÀÇ ÇÔ¼ö ÀÌ´Ù. ÇÁ·Î±×·¡¸Ó´Â Ãʱâȶ§ ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®ÁòÀ» ÁöÁ¤ÇصÎ
°í ³ª¸ÓÁö´Â µ¿ÀÏ
ÇÑ API¸¦ »ç¿ëÇÒ¼ö ÀÖµµ·Ï ¸¸µé¾îÁ® ÀÖ´Ù.
»ùÇÃÄÚµå´Â ´ÙÀ½°ú °°´Ù.
R_DIGEST_CTX MDcontext;
R_DigestInit(&MDcontext, DA_MD5);
while(1) {
if(get_data(data) == EOF) break;
R_DigestUpdate(&MDcontext, data, sizeof(data));
}
R_DigestFinal(&MDcontext, digest_code, &digest_len);
R_DigestInit()ÇÔ¼ö¿¡¼ DA_MD5¸¦ ¼±ÅÃÇϸé MD5¾Ë°í¸®ÁòÀ¸·Î ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇϰڴÙ
´Â ÃʱâÈÀÌ´Ù. ¿©±â
¿¡ DA_MD2, DA_MD4, DA_SHSµîÀ» »ç¿ëÇÔÀ¸·Î½á ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®ÁòÀ» ¹Ù²Ü¼ö ÀÖ´Ù.
5.4 Digital Signature Programming
RSA¸¦ ÀÌ¿ëÇÑ ÀüÀÚ¼¸íÀº RSAÀÇ Private Key·Î ¾ÏÈ£ÈÇØ¼ ¸Þ½ÃÁö¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀÌ °¡Àå
ÀϹÝÀûÀÎ ÀüÀÚ¼¸í¹æ
½ÄÀÌ´Ù. ±×·¯³ª ¸Þ½ÃÁö Àüü¸¦ RSA Private key·Î ¾ÏÈ£ÈÇÏ´Â °ÍÀº ¸Å¿ì ºñÈ¿À²ÀûÀÎ ÀÏÀ̵ȴÙ.
±×·¡¼ ¸Þ½ÃÁöÀÇ ´Ù
ÀÌÁ¦½ºÆ®Äڵ带 ±¸ÇÑÈÄ¿¡ ´ÙÀÌÁ¦½ºÆ®Äڵ带 RSA Private Key·Î ¾ÏÈ£ÈÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.
³ªÁß¿¡ »çÀÎÀ» È®ÀÎÇÏ
´Â ¹æ¹ýÀº ¿ªÀ¸·Î ¸Þ½ÃÁöÀÇ ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸Çϰí, ¸Þ½ÃÁö¿¡ µû¶ó¿Â ¼¸íÀ» ¼Û½ÅÀÚÀÇ Public Key
·Î º¹È£È¸¦ ÇØ¼ ¼Û
½ÅµÈ ´ÙÀÌÁ¦½ºÆ®¸¦ ¾ò¾î¼, ÀÌ µÎ ´ÙÀÌÁ¦½º¸¦ ¼·Î ºñ±³ÇØ ÀÏÄ¡ÇÏ¸é ¼¸íÀ» È®ÀÎÇÑ °ÍÀÌ µÈ
´Ù.
5.4.1 API
(1) ¼¸í ÃʱâÈ, ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò ¼±ÅÃ
int R_SignInit(context, digesttype)
R_SIGNATURE_CTX *context; /* new context */
int digesttype; /* message-digest algorithm */
(2) ¸Þ½ÃÁöÀÇ ¼¸íÀ» ó¸®
int R_SignUpdate(context, partIn, partInLen)
R_SIGNATURE_CTX *context; /* context */
unsigned char *partIn; /* next data part */
unsigned int partInLen; /* length of next data part */
(3) ¼¸íÃÖÁ¾ÀûÀ¸·Î ¼¸íÄÚµå »ý¼º
int R_SignFinal(context, signature, signatureLen, privateKey)
R_SIGNATURE_CTX *context; /* context */
unsigned char *signature; /* signature */
unsigned int *signatureLen; /* length of signature */
R_RSA_PRIVATE_KEY *privateKey; /* signer's RSA private key */
(4) Çѹø¿¡ ¸Þ½ÃÁö ºí·°À» ¼¸íÇÏ°í ¼¸íÄÚµå »ý¼º
int R_SignBlock(signature, signatureLen, block, blockLen,digestAlgorithm, privateKey)
unsigned char *signature; /* signature */
unsigned int *signatureLen; /* length of signature */
unsigned char *block; /* block */
unsigned int blockLen; /* length of block */
int digestAlgorithm; /* message-digest algorithm */
R_RSA_PRIVATE_KEY *privateKey; /* signer's RSA private key */
(5) ¼¸íÈ®ÀÎÀÛ¾÷ ÃʱâÈ, ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®Áò ¼¼ÆÃ
int R_VerifyInit(context, digesttype)
R_SIGNATURE_CTX *context; /* new context */
int digesttype; /* message-digest algorithm */
(6) ¸Þ½ÃÁö¿¡ ´ëÇÑ ¼¸íÈ®ÀΠó¸®
int R_VerifyUpdate(context, partIn, partInLen)
R_SIGNATURE_CTX *context; /* context */
unsigned char *partIn; /* next data part */
unsigned int partInLen; /* length of next data part */
(7) ÃÖÁ¾ÀûÀ¸·Î ¸Þ½ÃÁö¿¡¼ »ý¼ºµÈ ´ÙÀÌÁ¦½ºÆ®¿Í ¼¸íÀ» º¹È£ÈÇØ¼ »ý¼ºµÈ ´ÙÀÌÁ¦½ºÆ®ºñ±³
int R_VerifyFinal(context, signature, signatureLen, publicKey)
R_SIGNATURE_CTX *context; /* context */
unsigned char *signature; /* signature */
unsigned int *signatureLen; /* length of signature */
R_RSA_PRIVATE_KEY *privateKey; /* signer's RSA public key */
(8) ¸Þ½ÃÁö ºí·°À» Çѹø¿¡ ¼¸íÈ®ÀÎ
int R_VerifyBlockSignature( block, blockLen, signature, signatureLen,
digestAlgorithm, publicKey)
unsigned char *block; /* block */
unsigned int blockLen; /* length of block */
unsigned char *signature; /* signature */
unsigned int signatureLen; /* length of signature */
int digestAlgorithm; /* message-digest algorithm */
R_RSA_PUBLIC_KEY *publicKey; /* signer's RSA public key */
5.4.2 ÇÁ·Î±×·¡¹Ö
ÀüÀÚ¼¸í°ü·Ã ÇÁ·Î±×·¡¹ÖÀº ¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ® ÇÁ·Î±×·¡¹Ö°ú ±¸Á¶°¡ ¶È°°´Ù. »ç½Ç ÀüÀÚ¼¸íÀÇ ´ë
ºÎºÐÀÇ °úÁ¤Àº ¸Þ
½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ´Â µ¥ Àֱ⶧¹®¿¡ °°À»¼ö ¹Û¿¡ ¾ø´Ù. ´Ù¸¸ ¸¶Áö¸· R_SignFinal()ÇÔ¼ö¿Í
R_VerifyFinal()ÇÔ¼ö¿¡
´ÙÀÌÁ¦½ºÆ®Äڵ带 RSA·Î ¾ÏÈ£È/º¹È£È¸¦ ÇϱâÀ§ÇØ °¢°¢ RSA Private key¿Í RSA Public key¸¦
Á¦°øÇÏ´Â °ÍÀÌ ´Ù¸£´Ù.
(1) ÀüÀÚ¼¸í
R_SIGNATURE_CTX context; /* context */
R_SignInit(&context, DA_MD5);
while(!ReadData(file, partIn, &partInLen, sizeof (partIn))) {
if ((status = R_SignUpdate(&context, partIn, partInLen)) != 0)
break;
}
status = R_SignFinal(&context, signature,signatureLen, privateKey);
if(status == 0) {
/* Success !! */
}
else {
/* Fail !! */
}
(2) ÀüÀÚ¼¸í È®ÀÎ
R_SIGNATURE_CTX context; /* context */
R_VerifyInit(&context, DA_MD5);
while(!ReadData(file, partIn, &partInLen, sizeof (partIn))) {
if ((status = R_VerifyUpdate(&context, partIn, partInLen)) != 0)
break;
}
status = R_VerifyFinal(&context, signature,signatureLen, publicKey);
if(status == 0) {
/* Right Signature !! */
}
else {
/* Signature Fail !! */
}
5.5 High Level API
Áö±Ý±îÁö ´ëĪÇü¾Ïȣȹæ½Ä°¡¿îµ¥ ´ëÇ¥ÀûÀÎ ¹æ¹ýÀÎ DES¾ÏÈ£ÈÇÁ·Î±×·¡¹Ö, ºñ´ëĪÇü ¾Ïȣȹæ½Ä
ÀÎ RSA¾ÏÈ£ÈÇÁ·Î
±×·¡¹Ö, ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ÇÁ·Î±×·¡¹Ö, ÀüÀÚ¼¸í ÇÁ·Î±×·¡¹ÖµîÀ» À̾߱âÇÏ¿´´Ù. ÀÌ ³×°¡Áö°¡ ¹Ù
·Î ¾ÏÈ£ÈÇÁ·Î±×·¡
¹ÖÀÇ ÇÙ½É ¿ä¼ÒÀÌ´Ù. ÇöÀç Àü¼¼°èÀûÀ¸·Î ¾Ë·ÁÁ®ÀÖ´Â ´ëºÎºÐÀÇ ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀÀº ±×°ÍÀÌ ¹«¾ù
ÀÌ´ø°£¿¡ ´ëºÎºÐ À§
¿¡¼ ¾ð±ÞÇÑ ³×°¡Áö ±âº»¿ä¼Ò·Î ±¸¼ºµÇ¾î ÀÖ´Ù. º¹ÀâÇϱâ·Î À¯¸íÇÑ PEM°°Àº º¸¾ÈÀüÀÚ¿ìÆí½Ã½º
ÆÀµµ À§¿¡¼ ¾ð±ÞÇÑ
³×°¡Áö ±âº»¿ä¼Ò¸¦ º¹ÇÕÀûÀ¸·Î ÀÌ¿ëÇÑ ½Ã½ºÆÀ¿¡ ºÒ°úÇÏ´Ù.
ÀÌ·± ³×°¡Áö ±âº» ¿ä¼Ò¸¦ º¹ÇÕÀûÀ¸·Î ¹¾î¼ ÀÚÁÖ »ç¿ëÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé¾î¼
RSAEURO/RSAAREF´Â Á¦°øÇϰí ÀÖ
´Ù. ÀÌ ÇÔ¼ö¸¦ Envelop ÇÔ¼ö¶ó°í ºÎ¸¥´Ù. Digital EnvelopÀ̶õ ¾î¶² ÀڷḦ ¾ÏÈ£ÈÇØ¼ Àü´ÞÇÒ
¶§ ÀϹÝÀûÀ¸·Î ´ëĪÇü
¾ÏÈ£È¾Ë°í¸®ÁòÀ¸·Î ŰÀ̸¦ »ý¼ºÇؼ ¾ÏÈ£ÈÇÑ ÈÄ, ŰÀ̸¦ ºñ´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀ¸·Î ¾ÏÈ£È
ÇØ¼ ºÀÇÕÇØ¼ ¼ö
½ÅÀÚ¿¡°Ô Àü´ÞÇÏ´Â ¹æ¹ýÀ» ¸»ÇÑ´Ù. ÀڷḦ Àüü¸¦ ºñ´ëĪÇü ¾ÏÈ£È¾Ë°í¸®ÁòÀ¸·Î ¾ÏÈ£ÈÇÑ´Ù´Â
°ÍÀº ¸Å¿ì ºñÈ¿À²Àû
À̱⶧¹®¿¡ È¿À²¼ºÀ» À§ÇØ ÀÌ·± ¹æ¹ýÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·± ¿©·¯´Ü°èÀÇ ÀÏÀ» °£´ÜÈ÷ ó¸®ÇÏ
´Â ÇÔ¼ö¸¦ ¼Ò°³ÇÑ´Ù.
5.5.1 API
(1) Digital Envelop ÃʱâÈ
int R_SealInit(context, encryptedKeys, encryptedKeyLens, iv, publicKeyCount,
publicKeys, encryptionAlgorithm, randomStruct
R_ENVELOPE_CTX *context; /* new context */
unsigned char **encryptedKeys; /* encrypted keys */
unsigned int *encryptedKeyLens; /* lengths of encrypted keys */
unsigned char iv[8]; /* initialization vector */
unsigned int publicKeyCount; /* number of public keys */
R_RSA_PUBLIC_KEY **publicKeys; /* public keys */
int encryptionAlgorithm; /* data encryption algorithm */
R_RANDOM_STRUCT *randomStruct; /* random structure */
Digital Envelop ÃʱâÈ´Â context¸¦ ÃʱâÈÇÏ´Â ÀÛ¾÷ÀÌ´Ù. ¿©±â¿¡ ÇÊ¿äÇÑ Á¤º¸´Â ¼ö½ÅÀÚÀÇ RSA
Public Key (¿©±â¼´Â
º¹¼ö·Î ³Ñ°ÜÁÖ°í ±× °¡¿îµ¥ ¾ÏÈ£ÈÇÒ Public KeyÀÇ ¹øÈ£¸¦ ÁöÁ¤ÇÏ´Â Çü½ÄÀ» ÃëÇÑ´Ù)¿Í ÀڷḦ ¾Ï
È£ÈÇÒ ´ëĪÇü ¾ÏÈ£
È ¾Ë°í¸®ÁòÀ» ÁöÁ¤ÇÏ°í ·£´ý±¸Á¶Ã¼¸¦ ³Ñ°ÜÁØ´Ù. ±×¸®°í ÃʱâÈ °á°ú·Î´Â ÀڷḦ ¾ÏÈ£ÈÇÒ (RSA
·Î ¾ÏȣȵÈ) ´ëĪ
Çü¾ÏÈ£È ¾Ë°í¸®ÁòÀÇ ¼¼¼ÇŰ¿Í iv°ªÀ» ³Ñ°Ü¹Þ´Â´Ù.
(2) ÀÚ·á Digital Envelop ó¸®
int R_SealUpdate (context, partOut, partOutLen, partIn, partInLen)
R_ENVELOPE_CTX *context; /* context */
unsigned char *partOut; /* next encrypted data part */
unsigned int *partOutLen; /* length of next encrypted data part */
unsigned char *partIn; /* next data part */
unsigned int partInLen; /* length of next data part */
Digital Envelop 󸮰úÁ¤Àº envelopÇÒ ÀڷḦ Á¦°øÇÏ°í ¾ÏÈ£ÈµÈ ÀڷḦ ³Ñ°Ü¹Þ´Â ÀÛ¾÷ÀÌ´Ù.
(3) Digital Envelop Á¾·á
int R_SealFinal(context, partOut, partOutLen)
R_ENVELOPE_CTX *context; /* context */
unsigned char *partOut; /* last encrypted data part */
unsigned int *partOutLen; /* length of last encrypted data part */
Digital Envelop Á¾·áÀÛ¾÷Àº ÀÚ·á´Â ³Ñ°ÜÁÖÁö¾Ê°í ÃÖÁ¾ÀûÀΠó¸®(ÁÖ·Î Padingó¸®)¸¦ ÇÑ ¾ÏȣȵÈ
¸¶Áö¸· ÀڷḦ ³Ñ°Ü
¹Þ´Â °ÍÀ¸·Î Á¾·á°¡ µÈ´Ù.
´ÙÀ½ ¼¼°³ÀÇ ÇÔ¼ö´Â Digital EnvelopµÈ ÀڷḦ º¹È£ÈÇÏ´Â µ¥ »ç¿ëÇÏ´Â ÇÔ¼öµéÀÌ´Ù.
(4) Opening ÃʱâÈ
int R_OpenInit(context, encryptionAlgorithm, encryptedKey,
encryptedKeyLen, iv, privateKey)
R_ENVELOPE_CTX *context; /* new context */
int encryptionAlgorithm; /* data encryption algorithm */
unsigned char *encryptedKey; /* encrypted data encryption key */
unsigned int encryptedKeyLen; /* length of encrypted key */
unsigned char iv[8]; /* initialization vector */
R_RSA_PRIVATE_KEY *privateKey; /* recipient's RSA private key */
(5) ÀÚ·á Digital Envelop Opening ó¸®
int R_OpenUpdate(context, partOut, partOutLen, partIn, partInLen)
R_ENVELOPE_CTX *context; /* context */
unsigned char *partOut; /* next recovered data part */
unsigned int *partOutLen; /* length of next recovered data part */
unsigned char *partIn; /* next encrypted data part */
unsigned int partInLen; /* length of next encrypted data part */
(6) Digital Envelop Opening Á¾·á
int R_OpenFinal(context, partOut, partOutLen)
R_ENVELOPE_CTX *context; /* context */
unsigned char *partOut; /* last recovered data part */
unsigned int *partOutLen; /* length of last recovered data part */
5.5.2 ÇÁ·Î±×·¡¹Ö
Digital EnvelopÀº ¼¼¼ÇŰ(´ëĪÇü¾ÏÈ£È Å°ÀÌ)»ý¼º°ú RSA/´ëĪÇü¾Ïȣȸ¦ µ¿½Ã¿¡ ó¸®ÇÒ¼ö ÀÖÀ¸
¹Ç·Î ¸Å¿ì °£ÆíÇÑ ÇÔ
¼öÀÌ´Ù. »ùÇà ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
R_ENVELOPE_CTX context;
R_SealInit(&context, encryptedKeys, &encryptedKeyLen,
iv, 1, &publicKey, encryptionAlgorithm, randomStruct);
while(!ReadInData (inFile, partIn, &partInLen, sizeof (partIn))) {
status = R_SealUpdate(&context, partOut, &partOutLen, partIn, partInLen);
if (status != ID_OK)
break;
WriteOutData (outFile, partOut, partOutLen);
}
R_SealFinal (&context, partOut, &partOutLen);
5.6 ¾ÏÈ£È ÇÁ·ÎÅäÄÝ
±×·¯³ª ¾ÏȣȰ¡ µÇ¾î ÀÖ´Ù°í ¸ðµç º¸¾ÈÀÌ ÀÚµ¿ÀûÀ¸·Î ÀÌ·ç¾îÁö´Â °ÍÀº ¾Æ´Ï´Ù. ¾ÏÈ£ÈµÈ ÀÚ·á
ÀÚü´Â ¾ÈÀüÇÏ´Ù
ÇÏ´õ¶óµµ ¾ÏÈ£ÈÇϱâÀ§ÇØ »ý¼ºÇÑ ¼¼¼ÇŰ, ·£´ýÇÔ¼ö, Åë½Å»ó¿¡¼ ¹ß»ýÇÒ¼ö ÀÖ´Â ¿©·¯°¡Áö ȯ°æµî¿¡
ÀÇÇØ ¸¹Àº ÇêÁ¡µé
ÀÌ ¹ß»ýµÉ¼ö ÀÖ´Ù. ÀÌ·± ÇêÁ¡µéÀ» º¸¿ÏÇϱâÀ§Çؼ ¾ÏÈ£ÈÇÁ·ÎÅäÄÝÀÌ ÀÖ´Ù. ÀڷḦ ´Ü¼øÈ÷ ¾ÏÈ£
ÈÇØ¼ Àü´ÞÇϴµ¥
ÀÖ¾î¼ Àü´ÞÇÏ´Â ¹æ½Ä, »óÈ£°£¿¡ ŰÀÌ Àü´Þµî ÁÖº¯È¯°æÀ» ÅëÇÕÀûÀ¸·Î Àû¿ëÇÏ´Â ¹æ¹ýÀ» ¾ÏÈ£È ÇÁ
·ÎÅäÄÝÀ̶ó ÇÑ´Ù.
ÀÌ·± ÇÁ·ÎÅäÄÝ¿¡´Â SSL, S-HTTP, PEM, PGPµî °¢Á¾ ÀÀ¿ë½Ã½ºÆÀº°·Î ÀûÇÕÇÑ ÇÁ·ÎÅäÄÝÀÌ ÀÖÀ¸¸ç
À̵éÀ» °¢°¢ÀÇ ÀÀ¿ë½Ã
½ºÆÀ¿¡ Ȱ¿ëÇÏ°Ô µÈ´Ù.
¾Æ¹«¸® °£´ÜÇÑ ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀÀÌ¶óµµ ÆÐ½º¿öµå¸¦ ¾î¶»°Ô ÀúÀåÇÒ °ÍÀΰ¡? RSA private Key¸¦
»ç¿ëÀÚ°¡ 1024bit¸¦
¿Ü¿ì°í ÀÖÀ»¼ö´Â ¾øÀ¸´Ï±î µð½ºÅ©¿¡ ÀúÀåÇØ¾ßÇϴµ¥ ¾î¶² ÇüÅ·ΠÀúÀåÇØ¾ß ¾ÈÀüÇÏ°Ô ÀúÀåÇÒ¼ö ÀÖ
´Â°¡? µî °í·ÁÇØ¾ß
ÇÒ ¿ä¼ÒµéÀÌ ¸¹ÀÌ ÀÖ´Ù. ÀÌ·± ¿ä¼ÒµéÀ» ¹Ì¸® Á¤¸®ÇÑ ¹®¼µµ ÀÖ±äÇÑ´Ù. ºÐ·®ÀÌ Á» ¸¹±äÇÏ´õ¶óµµ
PKCS(Public Key
Cryptography Standard)¶ó´Â ÇüÅ·Π1¹øºÎÅÍ 11¹ø±îÁö Ç¥ÁØÀÌ Á¤ÇØÁ® ÀÖ´Ù. ÀÌ ¹®¼´Â RSA»ç°¡
¸¸µé¾î¼ ¾ÏÈ£È ÀÀ
¿ë½Ã½ºÆÀÀ» °³¹ßÇÒ¶§ °øÅëÀûÀ¸·Î ÇÊ¿äÇÑ ¿©·¯°¡Áö °í·ÁÁ¡À» ¹Ì¸® Ç¥ÁØÈÇØ µÐ °ÍµéÀÌ´Ù. ¸¹Àº
¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀ
µéÀÌ ÀÌ PKCSÇ¥ÁØÀ» µû¸£°í ÀÖ´Ù. (http://www.rsa.com/PUBS/home_frame.html) ±×·¯³ª PKCS
´Â »ó´çÈ÷ º¹ÀâÇÏ°Ô ¸¸µé
¾îÁ® ÀÖ¾î¼ ¿ÀÈ÷·Á ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀÀ» ¸¸µå´Âµ¥ ¾î·´°ÔÇϰí ÀÖ´Ù´Â ºñÆÇµµ ¹Þ°í ÀÖ´Ù.
³×Æ®¿÷»óÀÇ Á¤º¸¸¦ ÃëµæÇÏ´Â attackµé°¡¿îµ¥ man in middle attack°ú °°Àº attackÀº µÎ ÄÄÇ»ÅͰ¡
Åë½ÅÀ» ÇÏ´Â °¡¿îµ¥
Á¦ 3ÀÚ°¡ ³¢¾î¼ óÀ½ºÎÅÍ ¸ðµç ÀڷḦ ´Ù ÃëµæÇÏ°í ¼öÁ¤Çؼ º¸³¾¼ö ÀÖ´Ù°í ÇÑ´Ù¸é ¾Ïȣȸ¸À¸
·Î´Â Á¤º¸¸¦ º¸È£
Çϴµ¥ ¹ÌÈíÇÏ´Ù.
¿¹¸¦µé¸é A¿Í B°¡ RSA¸¦ ÀÌ¿ëÇØ Åë½ÅÀ» ÇÏ·Á°í ÇÑ´Ù°í Ä¡¸é ÀϹÝÀûÀÎ ¼ø¼´Â ´ÙÀ½°ú °°
´Ù.
- A´Â B¿¡°Ô ÀÚ½ÅÀÇ Public Key¸¦ ¾Ë·ÁÁÖ°í,
- B´Â ¼¼¼Ç۸¦ »ý¼ºÇØ AÀÇ Public Key·Î ¾ÏÈ£ÈÇØ¼ A¿¡°Ô Àü¼ÛÇϸé,
- A´Â ÇØ´ç ¼¼¼Ç۸¦ ÀÚ½ÅÀÇ Private Key·Î ÇØµ¶Çؼ ¾ò¾î¼ ÇØ´ç ¼¼¼ÇŰ·Î ÀڷḦ ¾ÏÈ£È
ÇØ¼ B¿¡°Ô Àü´ÞÇÑ
´Ù.
- B´Â ¼¼¼Ç۸¦ ¾Ë°í ÀÖÀ¸¹Ç·Î ÀڷḦ º¹È£ÈÇØ¼ ¾òÀ»¼ö ÀÖ´Ù.
À̶§ A¿Í B»çÀÌ¿¡ C¶ó´Â »ç¶÷(man in middle)ÀÌ ÀÖ´Ù¸é ÀÌ·± ÀÏÀÌ °¡´ÉÇÏ´Ù.
- A°¡ B¿¡°Ô ÀÚ½ÅÀÇ Public Key¸¦ Àü¼ÛÇÑ´Ù
- C°¡ Áß°£¿¡ AÀÇ Public Key¸¦ °¡·Îä°í, ÀÚ½ÅÀÇ Public Key¸¦ B¿¡°Ô ÀüÇÑ´Ù.
- B´Â ¼¼¼Ç۸¦ »ý¼ºÇØ CÀÇ Public Key·Î ¾ÏÈ£ÈÇØ¼ A¿¡°Ô Àü¼ÛÇÑ´Ù.
- C°¡ B·ÎºÎÅÍ A·Î °¡´Â ¾ÏÈ£ÈµÈ ¼¼¼Ç۸¦ Áß°£¿¡¼ °¡·Îä°í, ÀÚ½ÅÀÇ PrivateŰ·Î ÇØ´ç
¼¼¼Ç۸¦ ¾ò¾î³»°í,
´Ù½Ã AÀÇ Public Key·Î ¼¼¼Ç۸¦ ¾ÏÈ£ÈÇØ¼ A¿¡°Ô º¸³½´Ù.
- A´Â ÇØ´ç ¼¼¼Ç۸¦ ÀÚ½ÅÀÇ Private Key·Î ÇØµ¶Çؼ ¾ò¾î¼ ÇØ´ç ¼¼¼ÇŰ·Î ÀڷḦ ¾ÏÈ£È
ÇØ¼ B¿¡°Ô Àü´ÞÇÑ
´Ù.
- C°¡ ÀڷḦ Áß°£¿¡ ¾ÏÈ£ÈµÈ ÀڷḦ °¡·Îä¼ ÀÚ½ÅÀÌ ÀÌ¹Ì °¡Áø ¼¼¼ÇŰ·Î ÀڷḦ ÇØµ¶ÇØ
º»´ÙÀ½ B¿¡°Ô Àü´Þ
ÇÒÁö ¸»Áö ¸¶À½´ë·ÎÇÑ´Ù.
- B´Â ÀÚ·á°¡ Àü¼ÛµÇ¸é ÀÚ½ÅÀÇ ¼¼¼ÇŰ·Î º¹È£ÈÇØ¼ ÀڷḦ ¾ò´Â´Ù.
ÀÌ °æ¿ì A¿Í B´Â ÀüÇô Áß°£¿¡ C°¡ ÀÖ´Ù´Â »ç½ÇÀ» ´«Ä¡Ã¤Áö ¸øÇÑ´Ù. ÀÌ·± ÀϵéÀ» ¹æÁöÇϱâÀ§ÇØ
¾ÏÈ£È¿Í ´õºÒ¾î
¿©·¯°¡Áö ÇÁ·ÎÅäÄÝÀÌ µµÀԵȴÙ. ¿©±â¼´Â ÀÌ·± ÇÁ·ÎÅäÄݵ鿡´ëÇØ¼´Â »ó¼¼È÷ ¾ð±ÞÇÏÁö ¾Ê°Ú
´Ù.
5.7 ±âŸ °í·ÁÇÒ Á¡
ÀÌÁ¦ ±âº»ÀûÀÎ ¾ÏÈ£È ÇÔ¼öµéÀº ´Ù ³ª¿ÇÏ¿´´Ù. ¾Õ¿¡¼ À̾߱â ÇßµíÀÌ ¸ðµç ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀ
µéÀº À̵éÀ» º¯Çü
ÀÀ¿ëÇØ¼ ¸¸µé¾îÁö´Â °ÍµéÀÌ¸ç »õ·Î¿î ¾Ë°í¸®ÁòµéÀÌ µµÀԵȴÙÇÏ´õ¶óµµ ±âº»ÀûÀÎ °³³äÀ» À§¿¡¼
¾ð±ÞÇÑ °Íµé¿¡¼ ±×
¸® ¸¹ÀÌ ¹þ¾î³ªÁö ¾Ê´Â´Ù.
±×·¯³ª ½ÇÁ¦·Î ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀµéÀ» ¸¸µé¶§ ¿©·¯°¡Áö Á¡µéÀÌ °É¸°´Ù. ´ëÇ¥ÀûÀÎ °ÍµéÀº ´ÙÀ½°ú
°°´Ù.
5.7.1 RSAŰÀÇ ÀúÀå
RSAÀÇ µÎ°¡Áö ŰÀ̸¦ ¿Ü¿ì°í ÀÖÀ»¼ö´Â Àý´ë·Î ¾ø´Ù. ƯÈ÷ Public Key´Â ÀúÀåµµÇϰí Àü¼ÛµµÇؾß
ÇÒ Çʿ䰡 ÀÖ´Ù.
Àü¼ÛÀ» ÇÑ´Ù´Â °ÍÀº ½Ã½ºÆÀÀÇ Ç÷§Æû°£¿¡ ¼·Î ´Ù¸¥ ¿ä¼Ò(int±æÀ̵î)¸¦ °í·ÁÇØ¼ Àü¼ÛÇϰųª ÀúÀå
ÇØ¾ßÇÑ´Ù. ÀÌ·± ¾î
·Á¿òÀ» ÇØ°áÇϱâÀ§ÇØ Ç÷§Æû Á¾¼ÓÀûÀÌÁö ¾ÊÀº ¹æ¹ýÀ¸·Î ASN.1(Abstract Syntax Notation One)¾ç
½ÄÀ» µû¸£´Â
DER(Distingush Encoding Rule)À̳ª BER(Basic Encoding Rule)À» »ç¿ëÇØ¼ ÀúÀåÇÏ´Â °ÍÀ» ¸¹ÀÌ
¾²°í ÀÖ´Ù. À̰ÍÀº
PKCSÇ¥ÁØ¿¡¼ ÀÌ·¸°Ô Á¤ÀÇÇßÀ¸¸ç X.509µð·ºÅ丮 Ç¥ÁØ, SETµî¿¡¼µµ À̹æ¹ýÀ» ¾²µµ·Ï Çϰí ÀÖ
´Ù. ASN.1¸ðµâÀº º¹
ÀâÇÏ°í ±¸ÇöÇϱⰡ ±î´Ù·Ó´Ù´Â ºñÆÇÀÌ ÀÖ±äÇÏÁö¸¸ ÇöÀç·Î´Â ¸¹ÀÌ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ±×·¯³ª ²À
ASN.1Ç¥±â¸¦ µû
¸¥ DER, BER¸ðµâ·Î ÀúÀåÇÒ ÇÊ¿ä´Â ¾ø´Ù. ³ª¸§´ë·Î Ç÷§Æû ºñÁ¾¼ÓÀûÀÎ ¹æ¹ýÀ» »ç¿ëÇØ
Read/Write°¡ °¡´ÉÇÑ ¹æ¹ýÀ»
Á¤ÀÇÇØ¼ »ç¿ëÇÏ¸é µÈ´Ù.
ŰÀ̸¦ ÀúÀåÇÒ¶§ °í·ÁÇØ¾ßÇÒ ¶Ç ÇѰ¡ÁöÀÇ ¹®Á¦Á¡Àº ¹Ù·Î º¸¾ÈÀÌ´Ù. Çϵåµð½ºÅ©¿¡ ÀÚ½ÅÀÇ RSA
Private Key¸¦ ±×´ë·Î
ÀúÀåÇØ µÎ¸é ´©±º°¡°¡ ±× ÆÄÀÏÀ» ÈÉÃİ¡¸é ÀÚ½ÅÀÇ ¸ðµç º¸¾ÈÀº ±ú¾îÁø´Ù°í º¼¼ö ÀÖ´Ù. ±×·¯¹Ç·Î
ŰÀ̸¦ µð½ºÅ©¿¡
ÀúÀåÇÒ¶§´Â ¾Ïȣȸ¦ ÇØ¼ ÀúÀåÇϴµ¥ ÀϹÝÀûÀ¸·Î´Â ÆÐ½º¿öµå¸¦ Oneway Hash¸¦ Åë°ú½ÃÄÑ ³ª¿Â
¸Þ½ÃÁö´ÙÀÌÁ¦½ºÆ®¸¦
ŰÀÌ·Î ÇØ¼ ´ëĪÇü ¾ÏÈ£È ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇØ ¾ÏÈ£ÈÇØ¼ ÀúÀåÇÑ´Ù.
5.7.2 Digital EnvelopÇÑ ¸Þ½ÃÁöÀÇ ±¸Á¶
Digital EnveopÀ» ÇÑ ¸Þ½ÃÁö´Â ¿ì¼± µÎ°¡Áö·Î ±¸¼ºµÈ´Ù. ù°´Â ´ëĪÇüŰÀÌ(DK)·Î ¾ÏÈ£ÈµÈ ¸Þ
½ÃÁö(EM)¿Í ¼ö½ÅÀÚÀÇ
Public Key·Î ¾ÏÈ£ÈµÈ ´ëÆÃÇüŰÀÌ(EDK) µÎ°¡ÁöÀÌ´Ù. ±×¸®°í ¸¹ÀÏ ÀüÀÚ¼¸í(DS)À» µ¡ºÙÀδٸé
¸Þ½ÃÁö´Â ¼¼°¡Áö ÆÄÆ®
·Î ±¸¼ºµÇ°Ô µÈ´Ù. À̵éÀ» ¾î¶»°Ô ±¸¼ºÇØ¾ß ³ªÁß¿¡ ¾Ïȣȸ¦ Ç®±â ÁÁÀ»±î? ÇÏ´Â °í·Áµµ ÇÊ¿äÇÏ
´Ù.
ÀϹÝÀûÀÎ ¹æ¹ýÀº ´ÙÀ½ÀÇ ¼ø¼¸¦ µû¸¥´Ù.
- ¸Þ½ÃÁö(M)¸¦ ´ëĪÇü ŰÀÌ(DK)·Î ¾ÏÈ£ÈÇÑ´Ù.
- ±× µÚ¿¡ ´ëĪÇü ŰÀÌ(¼¼¼ÇŰ, DK)¸¦ ¼ö½ÅÀÚÀÇ Public Key·Î ¾ÏÈ£ÈÇÑ´Ù(EDK)
- ±× µÚ¿¡ ¾ÕÀÇ µÎ ºÎºÐ Àüü¸¦ ÀÌ¿ëÇØ ÀüÀÚ¼¸í(DS)À» »ý¼ºÇÑ´Ù.
¸Þ½ÃÁö¸¦ ¼ö½ÅÇÑ Ãø¿¡¼´Â ¿ª¼ø¼·Î ¸Þ½ÃÁö¸¦ ±¸ÇÑ´Ù.
- ¸Þ½ÃÁöÀÇ ¾ÕÀÇ µÎ ºÎºÐÀ» ÀÌ¿ëÇØ ÀüÀÚ¼¸íÀ» È®ÀÎÇÑ´Ù.
- ÀÚ½ÅÀÇ Private Key·Î ¾ÏÈ£ÈµÈ ´ëĪÇüŰÀÌ(¼¼¼ÇŰ, DK)¸¦ ±¸ÇÑ´Ù.
- ±¸ÇÑ ¼¼¼ÇŰ·Î ¾ÏÈ£ÈµÈ ¸Þ½ÃÁö(EM)¸¦ º¹È£ÈÇÑ´Ù.
±×·¯³ª ¹®Á¦´Â ¿©±â¼ ³¡³ªÁö ¾Ê´Â´Ù. ±×·³ ¸Þ½ÃÁö°¡ ¼¼°¡Áö ÆÄÆ®·Î ±¸ºÐµÇ¾î ÀÖ´Ù¸é ¼¼°¡Áö ÆÄ
Æ®¸¦ ¼·Î ±¸ºÐÇÒ¼ö
ÀÖ¾î¾ß Çϴµ¥ ±× ±¸ºÐÀÚ´Â ¹«¾ùÀ¸·Î ÇÒ °ÍÀΰ¡? ¶Ç ±¸ºÐÀÚ´Â ¼¸í¿¡ ³ÖÀ» °ÍÀΰ¡ ¸»°ÍÀΰ¡? µî
¿©·¯°¡Áö °í·ÁÇÒ
Á¡ÀÌ ÀÖ´Ù.
6. °á·Ð
¾ÏÈ£È ¾Ë°í¸®ÁòÀº Àå±âÀûÀ¸·Î ¿¬±¸°³¹ßÇÒ ¼ÒÁö°¡ ¸¹´Ù. ¶ÇÇÑ °·ÂÇÑ ±¹»ê ¾Ë°í¸®ÁòÀÌ °³¹ßµÇ¸é
¸Å¿ì ȯ¿µÇÒ ¸¸ÇÑ
ÀÏÀÌ´Ù. ÃÖ±Ù ±¹»ê ¾ÏÈ£È¾Ë°í¸®ÁòÀÇ °³¹ßÀÌ È°¹ßÇÏ°Ô ÁøÇàµÇ°í ÀִµíÇѵ¥ ´ëÇ¥ÀûÀÎ °ÍÀÌ ¹Ù·Î
KDST(Korean
Digital Signature Standard)¶ó´Â ¾Ë°í¸®ÁòÀ¸·Î °ÅÀÇ ¿Ï¼º´Ü°è¿¡ ¿Í ÀִµíÇÏ´Ù. ¾ÆÁ÷ °ËÁõµÈ °ÍÀº
¾Æ´Ï°í °ËÁõÀÇ ÀýÂ÷°¡
ÇÊ¿äÇϱä ÇÒ °ÍÀÌ´Ù.
±×·³¿¡µµ ºÒ±¸Çϰí Á¤º¸Åë½ÅºÐ¾ßÀÇ ÀÀ¿ë½Ã½ºÆÀÀº ±¹³»¿¡¼¸¸ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±¹Á¦ÀûÀÎ Åë
½ÅÀÇ °æ¿ì°¡ ´õ ¸¹
À¸¹Ç·Î ±¹Á¦ÀûÀΠǥÁذúÀÇ È£È¯À» °í·ÁÇÏ¿©¾ß¸¸ÇÑ´Ù. ±×·±Àǹ̿¡¼ ¾Õ¿¡¼ ¾ð±Þ¾È RSA, DES,
MD5, SHSµî°ú °°Àº
¾Ë°í¸®ÁòµéÀº ¾ÏÈ£È ÀÀ¿ë½Ã½ºÆÀÀÇ ±âº»¿ä¼Ò°¡ µÇ°í ÀÖ´Ù. ¾ÏÈ£È ¾Ë°í¸®ÁòÀ» ¿¬±¸°³¹ßÇÏ´Â ºÐ
¾ßµµ ÇϳªÀÇ ºÐ¾ßÀÌ
Áö¸¸ ¾ÏÈ£ÈÀÀ¿ë½Ã½ºÆÀÀ» ȤÀº ¾ÏÈ£ÇÁ·ÎÅäÄÝÀ» °³¹ßÇÏ´ÂÀÏÀº ¶Ç´Ù¸¥ »õ·Î¿î Áß¿äÇÑ ºÐ¾ß°¡¿îµ¥
Çϳª¶ó°í ¸»ÇÏ°í ½Í
´Ù.
¾Ïȣȱâ¼úÀÌ ¼Ò±ØÀûÀ¸·Î´À Á¤º¸ÈÀÇ °É¸²µ¹ÀÎ Á¤º¸À¯Ãâ, ÇØÅ·µîÀ» ¸·´Â ±à±ØÀûÀÎ ´ë¾ÈÀ¸·Î Ȱ
¿ëµÉ¼öÀÖÀ¸¸ç, Àû±Ø
ÀûÀ¸·Î´Â ÀüÀÚ°Å·¡, ÀüÀÚÈÆó, ÀüÀÚ¹®¼À¯Åëµî »çÀ̹ö½ºÆÐÀ̽º»ó¿¡¼ÀÇ È°µ¿¿¡ ¹ýÀû/°æÁ¦ÀûÀÎ Áö
À§¸¦ º¸ÀåÇÏ´Â ´ë¾È
À¸·Î¼ Ȱ¿ëµÉ¼ö ÀÖ´Ù. ±×µ¿¾È ÀÎÅͳÝÀ» ÅëÇØ Àü´Þ¹ÞÀº ÀüÀÚ¿ìÆíÀÇ ³»¿ëÀ» ¹ýÁ¤¿¡¼ Áõ°Å·Î üÅÃ
µÇÁö ¸øÇß¾ú´Ù. ±×
·¯³ª º¸¾ÈÀüÀÚ¿ìÆíÀÌ È°¼ºÈµÇ°í ÀüÀÚ¼¸í¿¡ ¹ýÀûÀÎ ±ÇÀ§¸¦ ºÎ¿©ÇÑ´Ù¸é ¿ì¸®´Â ÀüÀÚ¿ìÆíÀ¸·Î °è
¾à¼¸¦ »çÀÎÇÏ°í ±³
ȯÇÒ¼öµµ ÀÖ°ÔµÉ °ÍÀÌ´Ù. ƯÇã½Åû, °ü°ø¼¿¡ µî·ÏÇÏ´Â ÇàÀ§µîµµ ¸ðµÎ »ç¶÷ÀÌ ¼·ù¸¦ µé°í Á÷Á¢
µµÀåÀ» Âï°Å³ª ¼
¸íÀ» ÇÏ¸é¼ ÇØ¾ßÇÏÁö¸¸ ÀÌ·± ¸ðµç ÇàÀ§µéÀ» Åë½Å»ó ȤÀº »çÀ̹ö½ºÆÐÀ̽º»ó¿¡¼ °¡´É Çϵµ·ÏÇÏ´Â
°ÍÀÌ ¹Ù·Î ¾ÏÈ£È
±â¼úÀÌ´Ù. ÃÖ±Ù Certificate Authority±â¼úÀ» ÀÀ¿ëÇÑ ¼ºñ½º°¡¿îµ¥ Çϳª°¡ ¹Ù·Î Digital
ID(VeriSign)¼ºñ½ºÀε¥ À̰͵µ ¾Ï
ȣȱâ¼úÀÇ ÀÀ¿ë°¡¿îµ¥ Çϳª·Î¼ ÀÎÅͳÝÀÇ µðÁöÅ» ȯ°æ¿¡¼ÀÇ ½ÅºÐÁõ¿ªÇÒÀ» ÇÏ´Â ¼ºñ½º¸¦ Á¦°ø
ÇÏ´Â °ÍÀÌ´Ù. Sigital
IDÀÇ º¸Áõ¿ªÇÒÀÌ ¾î´ÀÁ¤µµÀÎÁö´Â ¾Ë¼ö ¾øÁö¸¸ Á¶±Ý¸¸ ¹ßÀüÇÏ¸é µðÁöÅ» º¸Ç輺ñ½ºµîµµ °¡´ÉÇÒ °Í
ÀÌ´Ù.
¹Ì·¡»çȸ´Â ÄÄÇ»Å͸¦ ÀÌ¿ëÇÑ Åë½ÅÀÌ ¸ðµç »çȸÀÇ Ç÷°ü°ú ½Å°æÀ¸·Î¼ÀÇ ¿ªÇÒÀ» ÇÒ °ÍÀÌ´Ù. »ç¶÷
ÀÌ Á÷Á¢ ¸¸³ª°í Á÷
Á¢ ¹«¾ð°¡¸¦ ÇÏ´Â °Íº¸´Ù´Â ½Ã°£°ú °ø°£Àû Á¦¾àÀ» Á¤º¸Åë½ÅÀÌ ±Øº¹Çؼ ¸¹Àº ÀϵéÀ» Á¤º¸Åë½ÅÀ»
ÅëÇØ ó¸®ÇÒ °ÍÀÌ
ºÐ¸íÇÏ´Ù. ±×·± µðÁöÅ» Çõ¸íÀÌ ÀϾ´Â ¹Ì·¡»çȸ¿¡´Â µðÁöÅ» Á¤º¸Åë½ÅÀÇ ¾àÁ¡À» º¸¿ÏÇÏ´Â ¾ÏÈ£
ȱâ¼úÀÌ ¹Ù·Î Áß¿ä
ÇÑ Çٽɱâ¼ú·Î ÀÚ¸®ÀâÀ» °ÍÀÌ´Ù. (³¡)
Âü°í¹®Çå(References)
- [SCHNEIER 1996]
- BRUCE SCHNEINER, Applied Cryptography , 1996
- John Wiley & Sons, Inc
- [STALLING 1995]
- WILLIAM STALLING, Network and Internetwork Security, 1995
- IEEE Press
- [GARFINKEL 1995]
- SIMSON GARFINKEL, PGP, Pretty Good Privacy, 1995
- O'Reilly & Associates, Inc
- [KAPP 1996]
- STEPHEN KAPP, RSAEURO Reference Manual 1.03,1996
- [RSA 19xx]
- PKCS(Public Key Cryptography Standard) #1 - #11, 198x-199x
Last-Modified : Sunday, 20-Oct-96 22:11:17 KDT
Copyright 1996 Douglas Guen(dgguen@madang.dacom.co.kr)