¡¡
ÀÎÅͳÝÀÇ ±Þ¼ÓÇÑ ¹ßÀü°ú ´õºÒ¾î 1995³â 5¿ù¿¡ ¹ßÇ¥µÈ Java´Â ±âÁ¸ÀÇ ÄÄÇ»ÆÃ ȯ°æÀÎ ¸ÞÀÎÇÁ·¹ÀÓ ¹× Ŭ¶óÀ̾ðÆ®/¼¹ö ±â¹ÝÀÇ ºÐ»êÄÄÇ»ÆÃ ȯ°æ, ±×¸®°í WWW(World Wide Web)µéÀÌ °¡Áö°í ÀÖ´Â ¸¹Àº Á¦¾àµé¿¡ ´ëÇØ ´Ù¾çÇÑ ÇØ°áÃ¥À» Á¦½ÃÇÏ¿´´Ù[1]. ƯÈ÷ Java·Î ±¸ÇöµÈ ÀÀ¿ë ÇÁ·Î±×·¥Àº ±âÁ¸ÀÇ ÄÄÇ»ÆÃ Ç÷§Æû°ú µ¶¸³ÀûÀ¸·Î ½ÇÇà °¡´ÉÇϸç, ÀÌ·¯ÇÑ ÆÐ·¯´ÙÀÓÀ» ½ã ¸¶ÀÌÅ©·Î½Ã½ºÅÛÁî(ÀÌÇÏ ½ã)´Â " Write Once, Run AnywhereTM"¶ó´Â ¹®ÀåÀ» ÅëÇØ JavaÀÇ ÇÙ½ÉÀûÀΠƯ¡À» Ç¥ÇöÇÏ¿´´Ù. ±×¸² 1Àº Java·Î ±¸ÇöµÈ ¾ÖÇø´(Applet)ÀÌ ¾Æ¹«·± ¼öÁ¤¾øÀÌ ±âÁ¸ÀÇ ¿î¿µÃ¼Á¦ Ç÷§Æû¿¡¼ µ¿À۵Ǵ °ÍÀ» º¸¿©ÁØ´Ù.
±×¸²1¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ Java ¾ÖÇø´°ú °°Àº ½ÇÇà °¡´ÉÇÑ ÀÀ¿ë(executable contents)Àº ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼Û(download)µÇ¾î ¿ø°ÝÁö¿¡ ÀÖ´Â »ç¿ëÀÚÀÇ ÄÄÇ»ÅÍ¿¡¼ ½ÇÇàµÇ¾îÁö´Âµ¥ ÀÌ¿Í °°Àº Java ±â¼úÀº ³×Æ®¿öÅ©¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â ÄÄÇ»ÆÃÀÇ ´É·ÂÀ» Áõ´ë½Ãų °ÍÀº Ʋ¸²¾øÁö¸¸ »õ·Î¿î º¸¾È ¹®Á¦¸¦ ¹ß»ý½ÃŲ´Ù.

ÀÌ¿¡ º» °í¿¡¼´Â ÇöÀç Java¿¡¼ Á¦°øµÇ°í ÀÖ´Â Security ±â¼ú, ±×¸®°í ÇâÈÄ Java¿¡¼ Á¦°øÇϰíÀÚ ÇÏ´Â Security ±â¼ú¿¡ ´ëÇØ ±â¼úÇÑ´Ù.
º» °íÀÇ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù. IIÀå¿¡¼´Â ÀϹÝÀûÀÎ Security ¿ä±¸»çÇ׿¡ ´ëÇÑ ³»¿ëÀ» ±â¼úÇϰí, IIIÀå¿¡¼´Â JDK1.0ºÎÅÍ Á¦°øÇÏ´ÂSecurity ±â¹ýÀÎ Sandbox¸¦ ºÐ¼®Çϰí, IVÀå¿¡¼´Â JDK1.1¿¡¼ Áö¿øÇÏ´Â È®ÀåµÈ Security ±â¹ýÀ» ±â¼úÇÑ´Ù. VÀå¿¡¼´Â ÇâÈÄ Á¦°ø ¿¹Á¤ÀÎ Java Security±â¼úÀ» »ìÆìº¸°í, ¸¶Áö¸·À¸·Î VIÀå¿¡¼ °á·ÐÀ» ¸Î´Â´Ù.
¡¡
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
±×¸®°í, Ç¥2´Â Ç¥1¿¡¼ »ìÆì º» ÄÄÇ»ÅÍ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ À§Çù ¿ä¼Ò¿¡ ´ëÇØ Java ¾ÖÇø´°ú °°Àº ½ÇÇà °¡´ÉÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á¢±ÙÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛÀÇ ÀÚ¿ø ¿ä¼ÒµéÀ» º¸¿©ÁØ´Ù.
Java¿¡¼´Â ÀÌ·¯ÇÑ À§Çù ¿ä¼Ò¿¡ ´ëÇÑ ±âº»ÀûÀÎ Security¸¦ Á¦°øÇϰí ÀÖÀ¸¸ç, ¶ÇÇÑ Security Á¤Ã¥ ¼ö¸³ÀÚÀÇ Security ¹æÄ§ ³»¿ë¿¡ µû¶ó ¼öÁ¤ ¹× È®Àå °¡´ÉÄÉ ÇÏ´Â ±â¼úÀ» Á¦°øÇÑ´Ù. ÇöÀç ½Ã½ºÅÛ ÀÚ¿øµé¿¡ ´ëÇÑ Á¢±Ù Çã¿ëÀº Java ¾îÇø®ÄÉÀ̼Ç(application) ¹× ¾ÖÇø´ ºä¾î(viewer) , ±×¸®°í ³×Æ®¿öÅ©¿¡¼ Àü¼ÛµÈ Java ¾ÖÇø´À» ¼öÇàÇÒ ¼ö ÀÖ´Â À¥ ºê¶ó¿ìÀú(¿¹: ³Ý½ºÄÉÀÌÇÁ»çÀÇ ³×ºñ°ÔÀÌÅÍ, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»çÀÇ ÀÎÅÍ³Ý ÀͽºÇ÷ξî) µî¿¡ µû¶ó ´Ù¸£´Ù. ´ÙÀ½ Ç¥ 3¿¡¼´Â Çã¿ë °¡´ÉÇÑ ½Ã½ºÅÛ ÀÚ¿ø Á¢±ÙÀÇ ¿©ºÎ¸¦ ³Ý½ºÄÉÀÌÇÁ»çÀÇ À¥ ºê¶ó¿ìÀúÀÎ ³×ºñ°ÔÀÌÅÍ 2.x ÀÌ»ó ¹öÀü ¹× JDK³»ÀÇ ¾ÖÇø´ ºä¾î, ±×¸®°í Java ¾îÇø®ÄÉÀÌ¼Ç º°·Î ºñ±³ÇÏ¿© Á¦½ÃÇÏ¿´´Ù[3].
|
|
|
|
|
|
| ÆÄÀÏ ½Ã½ºÅÛ |
|
|
|
|
| ³×Æ®¿öÅ© |
|
|
||
| ¸Þ¸ð¸® |
|
|
|
|
| Ãâ·Â ÀåÄ¡(¸ð´ÏÅÍ, ½ºÇÇÄ¿ µî) |
|
|||
| ÀÔ·Â ÀåÄ¡(Űº¸µå, ¸¶ÀÌÅ© µî) |
|
|
|
|
| ÇÁ·Î¼¼½º Á¦¾î |
|
|
||
| »ç¿ëÀÚ È¯°æ |
|
|
|
|
| ½Ã½ºÅÛ Ä¿³Î È£Ãâ |
|
|
|
|
Ç¥ 3¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ NNÀÎ °æ¿ì¿¡´Â Security Á¤Ã¥ÀÌ ¸Å¿ì ¾ö°ÝÇϰí, JSÀÎ °æ¿ì¿¡´Â ±âÁ¸ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥°ú °°ÀÌ ´ëºÎºÐÀÇ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. Áï, ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼ÛµÇ¾î¿Â ¾ÖÇø´Àº ½Ã½ºÅÛ Á¢±Ù¿¡ ´ëÇÑ ¸¹Àº Á¦¾àÀÌ µû¸£³ª, ·ÎÄ® ÆÄÀÏ ½Ã½ºÅÛ¿¡¼ ÀÐÇôÁ® µ¿À۵Ǵ Java ¾îÇø®ÄÉÀ̼ÇÀº ´ëºÎºÐÀÇ ½Ã½ºÅÛ ÀÚ¿ø¿¡ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù.
ÇÑÆí, Ç¥ 3¿¡¼´Â Ç¥ 2¿¡¼ ¾ð±ÞÇÑ ½Ã½ºÅÛ ÀÚ¿ø Áß ¸Þ¸ð¸®, Ãâ·Â ÀåÄ¡, ÀÔ·Â ÀåÄ¡, ÇÁ·Î¼¼½º Á¦¾î, ½Ã½ºÅÛ Ä¿³Î È£Ãâ µî°ú °°Àº ºÎºÐÀÇ ³»¿ëÀÌ ºüÁ® ÀÖ´Ù. ÀÌµé °¢°¢¿¡ ´ëÇØ »ìÆì º¸¸é ´ÙÀ½°ú °°´Ù.
¸ÕÀú ¸Þ¸ð¸®¿¡ ´ëÇÑ º¸È£´Â Java ¾ð¾î ¸í¼¼¿¡ ÀÇÇØ ±âº»ÀûÀ¸·Î ÀÌ·ç¾îÁø´Ù. ÀÌ¹Ì ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ´ëÇÑ ¾ÖÇø´ÀÇ Á¢±ÙÀº °¡´ÉÇÏÁö ¾ÊÀ¸³ª, ¾ÖÇø´ÀÌ °´Ã¼¸¦ »ý¼ºÇÏ¿© ÇöÀçÀÇ ÀÌ¿ë °¡´ÉÇÑ ¸Þ¸ð¸®¸¦ °ú´ÙÇÏ°Ô ÇÒ´çÇÏ´Â À§Çù ¿ä¼Ò¿¡ ´ëÇÑ º¸È£ ÀÛ¿ëÀº Á¸Àç ÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ¾ÖÇø´ÀÇ °ú´ÙÇÑ ¸Þ¸ð¸® ÇÒ´ç ¿ä±¸´Â Á÷Á¢ÀûÀÎ À§ÇùÀ» Á¦°øÇÏÁö ¸øÇÑ´Ù. ÀϹÝÀûÀ¸·Î À¥ ºê¶ó¿ìÀú´Â Java°¡ »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀ» Á¦ÇÑÇϱ⠶§¹®¿¡ ¾ÖÇø´ÀÇ °ú´ÙÇÑ ¸Þ¸ð¸® ÇÒ´ç ¿ä±¸´Â Ä¡¸íÀû À§Çù ¿ä¼Ò´Â ¾Æ´Ï¸ç, ¶ÇÇÑ À¥ ºê¶ó¿ìÀú´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼ÛµÈ ¾ÖÇø´ÀÌ °úµµÇÑ ¸Þ¸ð¸® ÇÒ´çÀ» ¿ä±¸ÇÏ´Â °æ¿ì, ¾ÖÇø´À» Á¾°á ½ÃŰ´Â ¸Þ½îµå(method)¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ ¾ÖÇø´ÀÇ °úµµÇÑ ¸Þ¸ð¸® ÇÒ´ç ¿ä±¸¸¦ ¸·À» ¼ö ÀÖ´Ù.
|
|
|
|
|
|
|
| Read file in /home/me
(/home/me µð·ºÅ丮¿¡ ÀÖ´Â
ÆÄÀÏÀ» ÀÐÀ» °æ¿ì)
acl.read = null (Àб⿡ ´ëÇÑ Á¢±Ù ±ÇÇÑ(access control)À» ºÎ¿©ÇÏÁö ¾ÊÀ½) |
|
|
|
|
|
| Read file in /home/me,
acl.read = /home/me (/home/me µð·ºÅ丮¿¡¸¸ ÀÖ´Â ÆÄÀÏÀ» ÀÐÀ» ¼ö ÀÖ´Â Á¢±Ù ±ÇÇÑ(access control)À» ºÎ¿©ÇÔ) |
|
|
|
|
|
| Write file in /tmp
(/tmp µð·ºÅ丮¿¡ ÆÄÀÏÀ»
»ý¼º ¹× ¼öÁ¤ÇÒ
°æ¿ì)
acl.write = null (»ý¼º ¹× ¼öÁ¤ ±ÇÇÑÀ» ÁÖÁö ¾ÊÀ½) |
|
|
|
|
|
| Write file in /tmp,
acl.write =/tmp (/tmp µð·ºÅ丮¿¡¸¸ ÀÖ´Â ÆÄÀÏÀ» »ý¼ºÇϰųª ¼öÁ¤ÇÒ ¼ö ÀÖ´Â Á¢±Ù ±ÇÇÑ(access control)À» ºÎ¿©ÇÔ) |
|
|
|
|
|
| Get file info, (ÆÄÀÏÀÇ
Á¤º¸¸¦ ¾ò°íÀÚ ÇÔ)
acl.read=null (Àб⠱ÇÇÑÀ» ºÎ¿©ÇÏÁö ¾ÊÀ½) acl.write=null (¾²±â ±ÇÇÑÀ» ºÎ¿©ÇÏÁö ¾ÊÀ½) |
|
|
|
|
|
| Get file info,
acl.reame=/home/me (/home/me µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏ¿¡ ´ëÇÑ Àб⠱ÇÇÑÀ» ºÎ¿©ÇÔ) acl.reame=/tmp (/tmp µð·ºÅ丮¿¡ ÆÄÀÏÀ» »ý¼ºÇϰųª ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ºÎ¿©ÇÔ) |
|
|
|
|
|
| Delete file (ÆÄÀÏ
»èÁ¦)
Using File.delete() (Java ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ °æ¿ì) |
|
|
|
|
|
| Delete file,
Using exec /usr/bin/rm(¿ÜºÎ exec¸¦ ÀÌ¿ëÇÏ¿© ½ÇÇà ¸í·ÉÀÎ rmÀ» »ç¿ëÇÑ °æ¿ì) |
|
|
|
|
|
| Read the user.name
Property (»ç¿ëÀÚ Á¤º¸ ¾ò±â) |
|
|
|
|
|
| Make network connections except to the host that it came from (¾ÖÇø´ÀÌ ½ÇÇàµÇ´Â Ŭ¶óÀÌ¾ðÆ®¿¡¼ ¾ÖÇø´À» Àü¼ÛÇÑ ¼¹ö¸¦ Á¦¿ÜÇÑ ´Ù¸¥ ½Ã½ºÅÛ°ú Åë½ÅÀ» ÇϰíÀÚ ÇÒ °æ¿ì) |
|
|
|
|
|
| Load library (½Ã½ºÅÛ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÔ) |
|
|
|
|
|
| Exit() (¾ÖÇø´ÀÌ ½Ã½ºÅÒ È£Ãâ ¸í·ÉÀÎ Exit¸¦ È£ÃâÇÒ °æ¿ì¿¡ ¾ÖÇø´ÀÌ µ¿À۵ǰí ÀÖ´Â À¥ ºê¶ó¿ìÀú ÀÚü°¡ Á¾°áµÇ´Â °á°ú¸¦ ¹ß»ý½ÃÅ´) |
|
|
|
|
|
| Create a popup window without a warning (popup À©µµ¿ì¸¦ »ý¼ºÇϰíÀÚ ÇÒ °æ¿ì) |
|
|
|
|
|
±¸ºÐ:
ÇÑÆí, ¾ÖÇø´Àº Á÷Á¢ÀûÀ¸·Î Ãâ·ÂÀåÄ¡¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ¸¸ç, ´ë½Å¿¡ Java ¶óÀ̺귯¸®¿¡¼ Á¦°øÇÏ´Â ¹æ¹ý¸¸À» »ç¿ëÇÔÀ¸·Î½á Ãâ·Â ÀåÄ¡¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ±×¸®°í, ¾ÖÇø´Àº Űº¸µå ÀÔ·ÂÀ̳ª ¸¶¿ì½º ÀåÄ¡¸¦ ÅëÇØ¼¸¸ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç, ÀԷ¿¡ ´ëÇÑ Æ¯º°ÇÑ Á¢±Ù Á¦ÇÑÀº ¾ø´Ù.
¾ÖÇø´ÀÇ ¾²·¹µå¿¡ ´ëÇÑ Á¢±ÙÀº ¸Å¿ì Á¦ÇÑÀûÀÌ¾î¼ ¾ÖÇø´Àº ¾²·¹µå¿¡ ´ëÇÑ Á¦¾î ±ÇÇÑÀ» °¡ÁöÁö ¸øÇÑ´Ù. ¶ÇÇÑ, ¾ÖÇø´ÀÇ ½Ã½ºÅÒ Ä¿³Î È£Ã⠺κп¡ ´ëÇÑ Á¢±Ùµµ ¸Å¿ì Á¦ÇÑÀûÀÌ´Ù.
ÀÌ¿Í °°ÀÌ ¾ÖÇø´Àº ¸Å¿ì Á¦ÇÑµÈ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±Ù ±ÇÇѸ¸À» °¡Áö°í ½ÇÇàµÊÀ¸·Î½á, Security¿¡ ´ëÇÑ ¾ÈÀü¼ºÀ» Á¦°øÇÑ´Ù.
¡¡
¡¡
¡¡
|
|
|
|
|
|
|
Java°¡ Á¦°øÇÏ´Â ±âº»ÀûÀÎ Security ¸ðµ¨ÀÎ Sandbox´Â ¹Ì±¹ÀÇ °¡Á¤Áý µÚ¶ã¿¡¼ Àå³Ä¡´Â ¾î¸°À̵éÀÇ ¹°¸®ÀûÀÎ ºÎ»óÀ» ¸·±â À§ÇÑ ¸ð·¡Åë(Sandbox)¿¡¼ Àǹ̸¦ °¡Á®¿Ô´Ù. ÀÌ¿Í °°ÀÌ Java¿¡¼µµ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±Ù Á¦ÇÑÀ» À§ÇØ JVM(Java Virtual Machine) ¿µ¿ª³»¿¡ Sandbox¸¦ ¸¸µé¾î ¾ÈÀüÇÑ Security¸¦ Á¦°øÇÑ´Ù [4][5][6]. JVM³»ÀÇ SandboxÀÇ À§Ä¡´Â ±×¸² 2¿Í °°´Ù.

±×¸² 2¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ Java´Â ±âº»ÀûÀ¸·Î ·ÎÄ®(Local) ÆÄÀÏ ½Ã½ºÅÛ¿¡¼ ½ÇÇàµÇ´Â ¾ÖÇø´°ú ¾îÇø®ÄÉÀ̼ÇÀº ½Å·Ú¼ºÀÌ ÀÖ´Â ½ÇÇà°¡´ÉÇÑ ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î °£ÁÖÇÏ¿© ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀÌ °¡´ÉÇÏÁö¸¸, ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼ÛµÈ ¾ÖÇø´Àº ½Å·Ú¼ºÀÌ ¾ø´Â °ÍÀ¸·Î °£ÁÖÇÏ¿© ¹Ýµå½Ã Sandbox³»¿¡ ÀÖ´Â Security Á¤Ã¥¿¡ µû¶ó ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦ÇÑÇÑ´Ù. Áï, Sandbox¿¡ ÀÇÇØ Á¢±ÙÀÌ Çã¿ëµÈ ¾ÖÇø´Àº ÀÚ½ÅÀÇ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖÁö¸¸, Sandbox¿¡ ÀÇÇØ ·ÎÄ® ÆÄÀÏ ½Ã½ºÅÛÀÇ Á¢±ÙÀÌ Çã¿ëµÇÁö ¾Ê´Â ¾ÖÇø´Àº ·ÎÄ® ÆÄÀÏÀ» Àаųª º¯°æÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ·ÎÄ® ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ¼Õ»óÀ» ÀÔÈ÷Áö ¾Ê´Â´Ù. Java¿¡¼´Â Security Ã¥ÀÓÀÚµéÀÌ Sandbox¸¦ ½Ã½ºÅÛÀÇ °íÀ¯ Ư¼º¿¡ ÀûÇÕÇÑ Security Á¤Ã¥À» ¼ö¿ëÇÒ ¼ö ÀÖ´Â Ç÷§ÆûÀ¸·Î ÀüȯÇÒ ¼ö ÀÖ´Â ±â¼úÀ» Á¦°øÇÑ´Ù.
ÇÑÆí, ¾ÖÇø´ÀÇ ÀÚ¿ø Á¢±Ù¿¡ ´ëÇÑ ºÎºÐÀº ÀÚµ¿ÀûÀ¸·Î Sandbox¸¦ ÅëÇØ Á¦ÇѵǾîÁö¹Ç·Î »ç¿ëÀÚ´Â ½Ã½ºÅÛ³»ÀÇ º¸¾ÈÀ» °í·ÁÇÒ Çʿ䰡 ¾ø´Ù. µû¶ó¼ ¾Õ¼ »ìÆìº» ¹Ù¿Í °°ÀÌ Java Security º¸¾È ¸ðµ¨Àº »ç¿ëÀÚ°¡ Á÷Á¢ Security Á¤Ã¥À» °í·ÁÇØ¾ß ÇÏ´Â ±âÁ¸ÀÇ Security ¸ðµ¨º¸´Ù »ç¿ëÀÚ Æí¸®¼º Ãø¸é¿¡¼ ÈξÀ ¿ì¼öÇÔÀ» º¸¿©ÁØ´Ù.
¡¡
ÀÌµé ¼¼°¡Áö ÄÄÆ÷³ÍÆ®¸¦ ÅëÇØ ³×Æ®¿öÅ©¿¡¼ Àü¼ÛµÈ ¾ÖÇø´ÀÇ Security ó¸® °úÁ¤Àº ±×¸² 3°ú °°´Ù[8].

¸ÕÀú, Ŭ¶óÀ̾ðÆ®ÀÇ À¥ ºê¶ó¿ìÀú´Â ³×Æ®¿öÅ©¿¡ ¿¬°áµÇ¾î ÀÖ´Â ¼¹ö·ÎºÎÅÍ Àü¼ÛµÈ ¾ÖÇø´À» ÀÚ½ÅÀÇ À¥ ºê¶ó¿ìÀú³»¿¡¼ ½ÇÇà½Ã۱â À§ÇÑ Ã¹¹øÂ° ´Ü°è·Î Ŭ·¡½º ·Î´õ(Class Loader)¸¦ È£ÃâÇÏ¸ç ´ÙÀ½°ú °°Àº ±â´É ¼öÇàÀ» ÅëÇÏ¿© ¾ÖÇø´ÀÌ Å¬·¡½º¸¦ ¾ðÁ¦ ¾î¶»°Ô ·ÎµåÇÒ ¼ö Àִ°¡¸¦ °áÁ¤ÇÑ´Ù.
Ŭ·¡½º ·Î´õ´Â ±×¸² 4¿Í °°ÀÌ Å¬·¡½º°¡ ¹ß»ýÇÑ À§Ä¡¸¦ ±â¹ÝÀ¸·Î ÇÏ¿© À̸§ °ø°£À» °ü¸® ¹× ÀÌ¿ëÇÏ¿© Ŭ·¡½º°¡ ·ÎÄ® Ŭ·¡½ºÀΰ¡ ȤÀº ³×Æ®¿öÅ©¸¦ ÅëÇÏ¿© ¿Â Ŭ·¡½ºÀΰ¡¸¦ ±¸ºÐÇϰí Ŭ·¡½ºÀÇ ½Å·Ú¼º ¿©ºÎ¸¦ ÆÇ´ÜÇÑ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á Ŭ·¡½º ·Î´õ´Â ½Å·Ú¼ºÀÌ ¾ø´Â ¾ÖÇø´ÀÌ Çã°¡ ¹ÞÁö ¾ÊÀº ½Ã½ºÅÛ ÀÚ¿ø(¿¹: ·ÎÄ® ÆÄÀÏ)¿¡ ´ëÇÑ Á¢±ÙÀ» ¸øÇÏ°Ô ÇÑ´Ù.

ÇÑÆí, ¹ÙÀÌÆ®ÄÚµå·Î ±¸¼ºµÈ ¾ÖÇø´Àº Ŭ·¡½º ·Î´õ¿¡ ÀÇÇØ ½ÇÇàµÇ±â ÀÌÀü¿¡ Bytecode Verifier¿¡ ÀÇÇØ °ËÁõÀ» ¹Þ´Â´Ù.
Bytecode Verifier´Â Ŭ·¡½º ÆÄÀÏÀÌ ¿Ã¹Ù¸¥ ÇüÅ·Π±¸¼ºµÇ¾î ÀÖ´ÂÁö¸¦ È®ÀÎÇÏ¿© Java ÄÄÆÄÀÏ·¯ÀÇ Àû¹ýÇÑ »ç¾ç¿¡ µû¶ó »ý¼ºµÈ ¹ÙÀÌÆ®ÄÚµåÀÎÁö¸¦ °Ë»çÇÑ´Ù. À̿ܿ¡µµ Bytecode Verifier´Â Àü¼ÛµÇ¾î¿Â ¹ÙÀÌÆ®Äڵ尡 ½Ã½ºÅÛ³»¿¡¼ ½ºÅà ¿À¹öÇ÷οì, ȤÀº ¾ð´õÇ÷ο찡 ¹ß»ýµÇ´ÂÁö¸¦ °Ë»çÇϰí, ¸í·É¾î ¹× ÆÄ¶ó¹ÌÅͰ¡ ¿Ã¹Ù¸¥Áö¸¦ È®ÀÎÇϸç, ºÎÀûÀýÇÑ ·¹Áö½ºÅÍ Á¢±Ù ¿©ºÎ¸¦ °Ë»çÇÑ´Ù. Bytecode Verifier°úÁ¤À» ÅëÇØ 1Â÷ÀûÀÎ Security ó¸® °úÁ¤ÀÌ ³¡³ª¸é, ¾Õ¼ ±â¼úÇÑ °Íó·³ Ŭ·¡½º ·Î´õ¿¡ ÀÇÇØ ¶Ç Çѹø Security ó¸® °úÁ¤À» °ÅÄ£´Ù. Ŭ·¡½º ·Î´õ¸¦ ÅëÇÑ µÎ ¹øÂ° ´Ü°èÀÎ Security ó¸® °úÁ¤ÀÌ ³¡³ª¸é, ¼¼ ¹øÂ° ´Ü°èÀÎ Security Manager°¡ ¼öÇàµÈ´Ù.
Security Manager´Â ¾ÖÇø´ ½ÇÇà½Ã ÄÄÇ»ÅÍ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦¾îÇϸç, ¶ÇÇÑ À§Ç轺·¯¿î ¸Þ½îµå(dangerous method)¿¡ ´ëÇÑ °ËÁõÀ» ÇÑ´Ù. À§Ç轺·¯¿î ¸Þ½îµå¶õ ÆÄÀÏ I/O, ³×Æ®¿öÅ© Á¢±ÙÀÌ ¿ä±¸µÇ´Â ¸Þ½îµå³ª »õ·Î¿î Ŭ·¡½º ·Î´õ¸¦ Á¤ÀÇÇϰíÀÚ ÇÏ´Â ¸Þ½îµå µîÀ» ¸»ÇÑ´Ù. ¾î´À °æ¿ì¿¡³ª Security Manager´Â °ÅºÎ±ÇÀ» Çà»çÇϴµ¥ ¿¹·Î½á, ¾ÖÇø´ÀÌ ¡°read¡± ¸Þ½îµå¸¦ È£ÃâÇϸé, JVMÀº Security Manager¸¦ ÂüÁ¶ÇÏ¿© ±× ¾ÖÇø´ÀÌ ½Å·Ú¼ºÀÌ ÀÖ´Ù°í ÆÇ´ÜµÇ¸é ¡°read¡± ¸Þ½îµå´Â ¾ÖÇø´À» ½ÇÇà½Ã۰í, ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â ¿¡·¯°¡ ¹ß»ýµÇ¾î ½ÇÇàÀ» ÁßÁö ½ÃŲ´Ù. ÀÌ·¯ÇÑ Security Manager¸¦ ÅëÇÑ Á¢±Ù Á¦¾î´Â ±âÁ¸ÀÇ Security ±â´ÉÀ» È®ÀåÇϰųª »õ·Î¿î Security ±â´ÉÀ¸·Î ±¸ÇöµÇ¾î ó¸®µÉ ¼ö ÀÖ´Ù. ¸¸¾à Security Manager°¡ ±¸ÇöµÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì¿¡´Â ¾ÖÇø´Àº Java ¾îÇø®ÄÉÀ̼ǰú °°Àº Á¢±Ù ±ÇÇÑÀ» °¡Áú ¼ö ÀÖ´Ù. Ç¥ 3¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ ³×ºñ°ÔÀÌÅÍ¿Í °°Àº À¥ ºê¶ó¿ìÀú°¡ ¾ÖÇø´À» ½ÇÇàÇÒ °æ¿ì ¾ÖÇø´ÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÏÁö ¾Ê´Â °ÍÀº ³×ºñ°ÔÀÌÅÍ JVM³»¿¡ ÀÖ´Â Security Manager°¡ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. À̿ܿ¡µµ Security Manager¿¡¼´Â ¼ÒÄÏ(socket) ÀÛµ¿ °ü¸®, ¾²·¹µå(thread) °ü¸®, Class Loader °ü¸® µî°ú °°Àº ±â´ÉµéÀ» ¼öÇàÇÑ´Ù.
ÀÌ·¯ÇÑ Security Manager¸¦ ±¸ÇöÇϱâ À§Çؼ´Â JDK¿¡¼ Á¦°øÇÏ´Â SecurityManager Ŭ·¡½º¿Í SecurityManager Ŭ·¡½º¿¡¼ Á¦°øµÇ´Â checkXXX() ¸Þ½îµå¸¦ ÀÌ¿ëÇÑ´Ù. Java¿¡¼´Â ÆÄÀÏ ½Ã½ºÅÛ, ¼ÒÄÏ, ¾²·¹µå, Ŭ·¡½º ·Î´õµî ½Ã½ºÅÛ ÀÚ¿øÀÇ Á¾·ù¿¡ µû¶ó Á¦°øµÇ´Â checkXXX() ¸Þ½îµåÀÇ Á¾·ù°¡ ´Ù¸£´Ù. ¿¹·Î½á, ÆÄÀÏ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±Ù Á¦¾î¸¦ ¼öÇàÇÏ´Â checkXXX() ¸Þ½îµå Á¾·ù·Î´Â checkWrite(), checkRead(), ±×¸®°í checkDelete() µîÀÌ ÀÖ´Ù. ÀÌµé ¸Þ½îµåÀÇ ±â´ÉÀ» »ìÆìº¸¸é, checkWrite()´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ Ŭ¶óÀÌ¾ðÆ®¿¡ Àü¼ÛµÈ ¾ÖÇø´ÀÌ Å¬¶óÀÌ¾ðÆ®³»ÀÇ ·ÎÄ® ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¢±ÙÇÏ¿© ÆÄÀÏ »ý¼º¿¡ ´ëÇÑ ½ÇÇàÀ» Á¦¾îÇϰíÀÚ ÇÒ ¶§ »ç¿ëµÇ¾îÁö¸ç, checkRead()´Â ÆÄÀÏ Àб⿡ ´ëÇÑ ½ÇÇàÀ» Á¦¾îÇϰí, checkDelete()´Â ÆÄÀÏ »èÁ¦¿¡ ´ëÇÑ ½ÇÇàÀ» Á¦¾îÇϰíÀÚ ÇÒ ¶§ ¼öÇàµÇ¾îÁø´Ù.
¾Õ¼ ¼³¸íÇÑ checkXXX() ¸Þ½îµå¿Í SecurityManager Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿©Security Manager¸¦ ±¸ÇöÇÏ´Â ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù. ¸ÕÀú, Security Ã¥ÀÓÀÚ´Â »õ·Î¿î Security Á¤Ã¥À» ¼ö¸³Çϰí, ¼ö¸³µÈ Security Á¤Ã¥ÀÇ ½ÇÇàÀ» ´ã´çÇÏ´Â SecurityManager Ŭ·¡½ºÀÇ ¼ºêŬ·¡½º(Subclass)¸¦ »ý¼ºÇÑ´Ù. ±×¸®°í, ¼ºêŬ·¡½º°¡ »ý¼ºµÈ ÈÄ¿¡ ¼ö¸³µÈ SecurityÁ¤Ã¥ ³»¿ëÀ» ¸¸Á·½Ã۱â À§ÇØ ±âÁ¸ checkXXX() ¸Þ½îµåµéÀÇ µ¿ÀÛ ³»¿ëµéÀ» ¼öÁ¤Çϰí, ¼öÁ¤µÈ checkXXX() ¸Þ½îµåµéÀ» ¼ºêŬ·¡½º³»¿¡ Æ÷ÇÔ½ÃŲ´Ù. ¸¶Áö¸·À¸·Î, »õ·Î¿î Security Á¤Ã¥À» ¼öÇàÇÏ´Â ¼ºêŬ·¡½º¸¦ Æ÷ÇÔÇϰí ÀÖ´Â SecurityManager Ŭ·¡½º¸¦ ¼³Ä¡Çϱâ À§Çؼ SystemŬ·¡½º³»ÀÇ setSecurityManager() ¸Þ½îµå¸¦ ÀÌ¿ëÇÏ¿© »õ·Î¿î Security Manger¸¦ JVM³»¿¡ ¼³Ä¡ÇÔÀ¸·Î½á, Security ManagerÀÇ ±¸ÇöÀÌ ¿Ï·áµÈ´Ù. ÀÌ¿Í °°ÀÌ Java¿¡¼´Â Security Manager¸¦ ÅëÇØ ¸Å¿ì À¯¿¬Çϸ鼵µ Åõ¸í¼ºÀÌ ÀÖ´Â Security¸¦ Á¦°øÇØÁÙ ¼ö ÀÖ´Ù.
ÇÑÆí, Bytecode Verifier, Ŭ·¡½º ·Î´õ, ±×¸®°í Security Manger¸¦ ÅëÇÑ Security ó¸® °úÁ¤ÀÌ ³¡³ª¸é, JVMÀº ¿î¿µÃ¼Á¦¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ½Ã½ºÅÛ³»ÀÇ Çϵå¿þ¾î ÀÚ¿øÀ» »ç¿ëÇÏ¸é¼ Àü¼Û¹ÞÀº ½ÇÇà °¡´ÉÇÑ ÀÀ¿ëÀÎ ¾ÖÇø´À» µ¿ÀÛ ½ÃŲ´Ù.
¡¡
C++¿Í ¸¶Âù°¡Áö·Î Java´Â °´Ã¼µéÀÇ º¯¼ö¿Í ¸Þ½îµå¿¡ ´ëÇØ¼ public, protected, privateÆÄ¶ó¹ÌÅ͸¦ ÅëÇØ Á¢±Ù Á¦¾î ´É·ÂÀ» °¡Áö°í ÀÖ´Ù. ÀÌ·¯ÇÑ Á¢±Ù Á¦¾î´Â ½Å·ÚÇÒ ¼ö ¾ø´Â Ŭ·¡½º°¡ ºÎÀûÀýÇÏ°Ô »ç¿ëµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» º¸ÀåÇØÁØ´Ù.
¶ÇÇÑ Á¢±Ù Á¦¾î¸¦ º¸ÀåÇÏ´Â ´Ù¸¥ ÆÄ¶ó¹ÌÅͷδ final·Î Ŭ·¡½º³ª ¸Þ½îµå¸¦ ¼±¾ðÇÏ´Â °ÍÀÌ´Ù. À̰ÍÀº ¾ÇÀÇÀûÀÎ ÇÁ·Î±×·¡¸Ó°¡ ½Ã½ºÅÛÀÇ ÀÚ¿øÀ» À§ÇùÇϴ Ŭ·¡½º¸¦ ±âÁ¸ÀÇ ÀÚ¿ø °ü·Ã ÇÙ½ÉÀûÀÎ ¶óÀ̺귯¸® Ŭ·¡½ºÀÇ ¼ºêŬ·¡½º·Î »ç¿ëÇϰųª ÇÑ Å¬·¡½ºÀÇ ¸Þ½îµå¸¦ ¿À¹ö¶óÀ̵ùÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù. ±×·¯¹Ç·Î, Java°¡ Á¦°øÇÏ´Â final ÆÄ¶ó¹ÌÅʹ Ŭ·¡½ºÀÇ Æ¯Á¤ÇÑ ºÎºÐÀÌ ¼öÁ¤µÇÁö ¾Ê¾ÒÀ½À» º¸ÀåÇØÁØ´Ù.
¶ÇÇÑ Java´Â ±âÁ¸ C++¿¡¼ Á¦°øÇÏ´Â Æ÷ÀÎÅÍ ±â´ÉÀ» Á¦°ÅÇÏ¿´´Ù. ÀÌ´Â ½ÇÇà °¡´ÉÇÑ ÀÀ¿ëÀÎ ¾ÖÇø´ÀÌ ³×Æ®¿öÅ©À» ÅëÇØ ¿ø°ÝÁö¿¡ ÀÖ´Â ÄÄÇ»ÅÍ ½Ã½ºÅÛ¿¡¼ ¼öÇàµÉ °æ¿ì ¸Þ¸ð¸®³»¿¡ Á¸ÀçÇϰí ÀÖ´Â ±âÁ¸ÀÇ ´Ù¸¥ ½ÇÇà ÇÁ·Î±×·¥µéÀÇ Á¢±ÙÀ» ¸·±â À§Çؼ´Ù.
ÀÌ¿Í °°ÀÌ Java´Â Sandbox ±â¼ú»Ó¸¸ ¾Æ´Ï¶ó Java ¾ð¾î ÀÚü¿¡ ´ëÇÑ Security¸¦ Á¦°øÇÏ¿© ¾ÈÀü¼ºÀ» ÇÑÃþ ´õ °È½ÃÄ×´Ù.
¡¡
IV È®ÀåµÈ Java Security ±â´É
º» Àå¿¡¼´Â JDK1.1¿¡¼ºÎÅÍ Á¦°øÇϱ⠽ÃÀÛÇÑ ÀüÀÚ ¼¸í ¹× X.509±â¹ÝÀÇ ÀÎÁõ¼ µî JDK1.0¿¡¼ È®ÀåµÈ ¿©·¯ Security ±â¼ú¿¡ ´ëÇØ ±â¼úÇÑ´Ù.
¡¡
1. Java Security API
JDK1.0¿¡¼ÀÇ Security ±â¼ú ¿Ü¿¡ JDK1.1ºÎÅÍ´Â ÀüÀÚ ¼¸í, ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®, X.509±â¹ÝÀÇ ÀÎÁõ¼ °ü¸®, Ű °ü¸®, ±×¸®°í Á¢±Ù Á¦ÇÑ ±ÇÇÑÀ» Á¦°øÇÏ´Â Security API¸¦ Á¦°øÇÑ´Ù[10].
¸ÕÀú ÀüÀÚ ¼¸í¿¡ ´ëÇØ »ìÆì º¸¸é, ÀüÀÚ ¼¸íÀº ¾ÖÇø´ ¹× ¾îÇø®ÄÉÀ̼ÇÀ» ½Å·ÚÇϴµ¥ »ç¿ëµÇ¾îÁø´Ù.
ÀüÀÚ ¼¸íÀ» ±¸ÇöÇϱâ À§Çؼ´Â °ø°³Å° ¾ÏÈ£È ¹æ½ÄÀ» ÀÌ¿ëÇϴµ¥, °ø°³Å° ¾ÏÈ£È ¹æ½ÄÀº ¾ÏÈ£È Å°¿Í º¹È£È ۰¡ µ¿ÀÏÇÏ¿© ±³È¯µÇ´Â Á¤º¸¿¡ ´ëÇÑ ÀÎÁõÀ» Á¦°øÇÏÁö ¸øÇÏ´Â ´ëĪÇü ¾ÏÈ£È ±â¼ú°ú ´Þ¸® ¾Ïȣȿ¡ »ç¿ëµÇ´Â Ű¿Í º¹È£È¿¡ »ç¿ëµÇ´Â ۰¡ ¼·Î ´Ù¸£´Ù. ÀϹÝÀûÀ¸·Î º¹È£È Ű´Â °ø°³¸¦ Çϱ⠶§¹®¿¡ °ø°³Å°·Î Á¤ÀǵǾîÁö¸ç, ¾ÏÈ£ÈÇϴµ¥ »ç¿ëµÇ´Â Ű´Â ºñ¹Ð·Î °£Á÷Çϱ⠶§¹®¿¡ °³ÀÎŰ·Î Á¤ÀǵǾîÁø´Ù. °ø°³Å° ¾ÏÈ£È ¹æ½ÄÀº ¾ÏÈ£È ¾Ë°í¸®µë Ư¼º»ó °³ÀÎŰ·Î ¾ÏÈ£ÈµÈ Á¤º¸´Â °³ÀÎŰ¿¡ ´ëÀÀµÇ´Â °ø°³Å°¸¦ ¹Ýµå½Ã »ç¿ëÇÏ¿© º¹È£ÈÇÒ ¼ö ÀÖ´Ù[11]. °ø°³Å° ¾ÏÈ£È ¹æ½ÄÀÇ ÀýÂ÷´Â ±×¸² 5¿Í °°´Ù.

±×¸²5¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ ¼Û½ÅÀÚ A´Â °³ÀÎŰ KRa¸¦ °¡Áö°í Æò¹® M¿¡ ´ëÇÑ ¾ÏÈ£¹®À» ±¸¼ºÇϰí, ¼ö½ÅÀÚ B´Â AÀÇ °³ÀÎŰ·Î ¾ÏÈ£ÈµÈ M`À» ¹Þ°í ¾ÏÈ£ÈµÈ M`À» º¹È£ÈÇϱâ À§Çؼ AÀÇ °ø°³Å° KUa¸¦ ÀÌ¿ëÇÑ´Ù. ±×¸²5¿Í °°Àº °ø°³Å° ¾ÏÈ£È ÀýÂ÷°úÁ¤Àº °á°úÀûÀ¸·Î´Â ¼Û½ÅÀÚ A°¡ ¾ÏÈ£ÈÇϱâ À§ÇÑ Æò¹® M¿¡ ÀÚ½ÅÀÇ °³ÀÎ۸¦ »ç¿ëÇÏ¿© ÀüÀÚ ¼¸íÇÑ È¿°úÀÌ´Ù. ÀÌ¿Í °°Àº °ø°³Å° ¾ÏÈ£ÈÀÇ Æ¯¼º¶§¹®¿¡ Á¤º¸ ÀÎÁõÀ» À§Çؼ´Â °ø°³Å° ¾ÏÈ£È ¹æ½ÄÀ» ±Ù°£À¸·Î ÇÏ´Â ÀüÀÚ ¼¸íÀ» »ç¿ëÇÑ´Ù.
´ëÇ¥ÀûÀÎ °ø°³Å° ¾ÏÈ£È ¾Ë°í¸®µëÀ¸·Î´Â DSA(Digital Signature Algorithm)¿Í RSA(RSA ¾Ë°í¸®µëÀ» ¸¸µç Ronald Rivest, Adir Shamir, Leonard Adleman¿¡ ÀÇÇØ ¸í¸íµÇ¾îÁü)°¡ ÀÖ´Ù. JDK1.1¿¡¼´Â DSA¸¸À» »ç¿ëÇϰí ÀÖÀ¸¸ç, ÀÌ´Â RSA»ç°¡ ÇöÀç ¹Ì±¹°ú ij³ª´Ù¿¡¼ RSA ¾ÏÈ£È ¾Ë°í¸®µë¿¡ ´ëÇØ ƯÇ㸦 ¼ÒÁöÇϰí Àֱ⠶§¹®ÀÌ´Ù. ±×·¯³ª, Á¦3ÀÇ ¾÷ü·ÎºÎÅÍ RSA¸¦ Á¦°øÇÏ´Â Java Security API¸¦ »ç¿ëÇϸé, RSA ¾ÏÈ£È ¾Ë°í¸®µëÀ» Java¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÇÑÆí, ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼ÛµÇ¾î¿Â ¾ÖÇø´ÀÇ ³»¿ëÀÌ º¯ÇÏÁö ¾Ê¾ÒÀ½À» Áõ¸íÇϴµ¥ »ç¿ëµÇ¾îÁø´Ù. ÀÌ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ® ¾Ë°í¸®µëÀº Á¤º¸ ³»¿ëÀÇ Ã¼Å©¼¶(CheckSum)À» ±¸ÇϵíÀÌ Á¤º¸¸¦ ÇØ½¬(hash) ó¸®ÇÑ ÈÄ °¢ Á¤º¸¿¡ ´ëÀÀµÇ´Â ÀÏÁ¤ ±æÀÌÀÇ ÇØ½¬¸¦ ±¸ÇÏ´Â ¾Ë°í¸®µëÀÌ´Ù. ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®´Â ÇØ´ç Á¤º¸¿Í ÀÏ´ëÀÏ·Î ¸ÅÇεDZ⠶§¹®¿¡ Á¤º¸ÀÇ ³»¿ëÀ» Áõ¸íÇÒ ¼ö ÀÖ´Â ÄÚµå·Î¼ Ȱ¿ëµÈ´Ù. Áï ¾î¶² Á¤º¸¸¦ ÇØ½¬ÇÔ¼ö¸¦ ÅëÇØ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸Çϸé ÇØ´ç ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ÀÌ¿ëÇØ ÀÚ·áÀÇ ¼öÁ¤, ¼ø¼ º¯°æ, »èÁ¦, ÷°¡ µî Á¤º¸ÀÇ ÅëÇÕ¼ºÀ» üũÇÒ ¼ö ÀÖ´Ù.
ƯÈ÷ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ´Â ÇØ½¬ÇÔ¼ö´Â ´Ü¹æÇâ ÇØ½¬ÇÔ¼ö·Î¼ »ý¼ºµÈ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®·ÎºÎÅÍ ¿ø·¡ÀÇ Á¤º¸¸¦ Ãß·ÐÇÒ ¼ö ¾ø´Â ÇØ½¬¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ¾ÈÀüÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇØ½¬ÇÔ¼ö´Â ÀÓÀÇÀÇ ±æÀ̸¦ °¡Áö°í ÀÖ´Â Á¤º¸¸¦ ÀÔ·Â ¹Þ¾Æ ÀÏÁ¤ÇÑ ±æÀÌÀÇ °á°ú·Î ÀüÇØÁÖ´Â ÇÔ¼öÀÌ´Ù. ¿ø·¡ÀÇ Á¤º¸ X¿¡ ´ëÇÏ¿© ÇØ½¬ÇÔ¼ö f¸¦ »ç¿ëÇÏ¿© ³ª¿Â °á°ú°¡ x'ÀÎ °æ¿ì¿¡ ½ÄÀ¸·Î ³ªÅ¸³»¸é f(X) = x' À̸ç, ¾ÈÀüÇÑ ÇØ½¬ ÇÔ¼ö°¡ µÇ±â À§Çؼ´Â ´ÙÀ½ÀÇ Á¶°ÇÀ» ¸¸Á·ÇØ¾ß ÇÑ´Ù.
Á¶°Ç 1: ÀÓÀÇÀÇ ±æÀÌÀÇ Á¤º¸¸¦ ÀÔ·ÂÀ¸·Î ¹ÞÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
Á¶°Ç 2: °íÁ¤µÈ ±æÀÌÀÇ Ãâ·ÂÀ» ¸¸µé¾î¾ß ÇÑ´Ù.
Á¶°Ç 3: ¸ðµç X¿¡ ´ëÇØ¼, f(X)ÀÇ °è»êÀÌ ½¬¿ö¾ß ÇÑ´Ù.
Á¶°Ç 4: ÁÖ¾îÁø x'¿¡ ´ëÇØ¼ ¿ø·¡ÀÇ X¸¦ ±¸ÇÒ ¼ö ¾ø¾î¾ß ÇÑ´Ù.
Á¶°Ç 5: X,Y°¡ °°Áö ¾ÊÀ» ¶§, f(X), f(Y)´Â °°À» ¼ö ¾ø´Ù.
Á¶°Ç 6: f(X)=f(Y)ÀÎ X,Y¸¦ ±¸ÇϱⰡ ¾î·Á¿ö¾ß ÇÑ´Ù.
¡¡
ÀÌ·¯ÇÑ ¾ÏÈ£È ÇØ½¬ ÇÔ¼öÀÇ Á¾·ù´Â 128 bitÀÇ Ãâ·ÂÀ» »ý¼ºÇÏ´Â MD5¿Í 160 bitÃâ·ÂÀÇ SHA(Secure Hash Algorithm)°¡ ÀÖ´Ù. JDK1.1¿¡¼´Â MD5¿Í SHA¸¦ Áö¿øÇÏ´Â API¸¦ Á¦°øÇϰí ÀÖ´Ù. ±×¸²6Àº ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®ÀÇ »ý¼º °úÁ¤À» º¸¿©ÁØ´Ù.

ÇÑÆí, JDK1.1¿¡¼´Â X.509v1±â¹ÝÀÇ ÀÎÁõ¼¸¦ Áö¿øÇÑ´Ù. X.509 ±â¹ÝÀÇ ÀÎÁõ¼´Â ¾ÖÇø´ ȤÀº ¾îÇø®ÄÉÀ̼ǿ¡ °ø°³Å° ¾ÏÈ£È ¾Ë°í¸®µëÀ» ÀÌ¿ëÇÏ¿© ÀüÀÚ ¼¸íÀ» ÇÒ °æ¿ì »ç¿ëµÇ¸ç °ø°³Å°ÀÇ ½Å·Ú¼ºÀ» Áõ¸íÇÏ´Â ÀÎÁõ¼·Î »ç¿ëµÈ´Ù. ¶ÇÇÑ, JDK1.1¿¡¼ Á¦°øÇϴ Ű °ü¸® ºÎºÐÀº ÀüÀÚ ¼¸í ¹× ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ »ç¿ëÇϴµ¥ ÇÊ¿äÇÑ °³ÀÎŰ ¹× °ø°³Å°ÀÇ °ü¸®¸¦ Áö¿øÇϱâ À§ÇÑ °ÍÀ̸ç Á¢±Ù Á¦ÇÑ ºÎºÐÀº ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ÀÚ¿ø¿¡ Á¢±ÙÀ» Á¦ÇÑÇϴµ¥ »ç¿ëµÇ¾îÁø´Ù.
À̿ܿ¡µµ Security¿Í °ü·ÃµÇ¾î JDK1.1¿¡¼ Á¦°øÇÏ´Â API¿Ü¿¡ ´Ù¸¥ ¾÷ü¿¡¼ Á¦°øÇÏ´Â SSP(Security Package Provider)¿¡ Æ÷ÇԵǾî ÀÖ´Â API¸¦ »ç¿ëÇÏ¿© Security ±â´ÉÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù.
¡¡
JAR¹æ½ÄÀº ¿©·¯ °³ÀÇ ÆÄÀÏ·Î µÇ¾î ÀÖ´Â ¾ÖÇø´À» ÇϳªÀÇ ÅëÇÕµÈ ÆÄÀÏ·Î, Çѹø¿¡ HTTP ÇÁ·ÎÅäÄÝÀ» ÅëÇØ Àü¼ÛÇϱ⠶§¹®¿¡ HTTP ÇÁ·ÎÅäÄÝÀÇ Àü¼Û È¿À²À» °³¼±½Ãų ¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ JAR ÆÄÀÏ ¹æ½ÄÀÇ Æ¯¼ºÀº ¾ÖÇø´¿¡ ÇÊ¿äÇÑ ÆÄÀϵéÀ» ÇÔ²² ¹¾î Àü¼ÛÇÒ ¼ö Àֱ⠶§¹®¿¡ ¾ÖÇø´À» ±¸¼ºÇϰí ÀÖ´Â °¢°¢ÀÇ ÆÄÀÏ¿¡ ´ëÇÑ ÀüÀÚ ¼¸íÀ» ÇÒ ÇÊ¿ä¾øÀÌ ¾ÖÇø´À» ±¸¼ºÇϰí ÀÖ´Â Àüü ÆÄÀÏÀÎ JARÆÄÀÏ¿¡ ´ëÇÑ ÀüÀÚ ¼¸íÀ» ÅëÇØ ¾ÖÇø´ÀÇ Àüü ³»¿ëÀ» ÀÎÁõÇÒ ¼ö ÀÖ´Ù. ÀüÀÚ ¼¸íÀº ÆÄÀÏÀÇ ¾ÐÃà ¹× º¹¿øÀ» ´ã´çÇÏ´ÂJAR Åø°ú ÀüÀÚ ¼¸í¿¡ ÇÊ¿äÇÑ Å° »ý¼ºÀ» ´ã´çÇÏ´Â Javakey¸¦ ÀÌ¿ëÇÑ´Ù. ±×¸®°í, JDK1.1¿¡¼´Â ÀüÀÚ ¼¸íÀ» À§ÇØ DSA¿Í MD5, ±×¸®°í SHA ¾ÏÈ£È ¾Ë°í¸®µë°ú X.509v1±â¹ÝÀÇ ÀÎÁõ¼¸¦ »ç¿ëÇÑ´Ù.
¿©·¯ °³ÀÇ ÆÄÀÏ µé·Î ±¸¼ºµÇ¾î ÀÖ´Â ¾ÖÇø´Àº JAR Åø°ú Javakey¸¦ ÀÌ¿ëÇÏ¿© ÇϳªÀÇ JARÆÄÀÏ·Î ¹¿©Áö¸ç, JARÆÄÀϳ»¿¡´Â ¿ø·¡ÀÇ ÆÄÀϰú ÀüÀÚ ¼¸íÀ» ÅëÇØ »ý¼ºµÈ Manifest ÆÄÀÏ ¹×Signature ÆÄÀÏ, ±×¸®°í ÀüÀÚ ¼¸íÀÇ ³»¿ëÀÌ ´ã°ÜÁ® ÀÖ´Â DSAÆÄÀÏÀÌ »ý¼ºµÈ´Ù. ManifestÆÄÀÏÀÇ È®ÀåÀÚ´Â .MFÀ̸ç, Signature ÆÄÀÏÀÇ È®ÀåÀÚ´Â .SFÀ̰í, ¸¶Áö¸·À¸·Î DSAÆÄÀÏÀÇ È®ÀåÀÚ´Â .DSA°¡ µÈ´Ù. ±×¸²7Àº ¾ÖÇø´ÀÇ ÀüÀÚ ¼¸í °úÁ¤À» º¸¿© ÁØ´Ù.
±×¸²7¿¡¼ÀÇ µ¿ÀÛ °úÁ¤À» »ìÆìº¸¸é ¼Û½ÅÀÚ´Â JAR ÅøÀ» ÀÌ¿ëÇÏ¿© ¿©·¯ °³ÀÇ ÆÄÀÏ·Î ±¸¼ºµÈ ÆÄÀÏÀ» Çϳª·Î ¹¾î JARÆÄÀÏÀ» »ý¼ºÇÏ°í »ý¼ºµÈ JARÆÄÀÏÀÇ ÀüÀÚ ¼¸íÀ» ÃʱâÈ ÇÑ´Ù. ÃʱâÈ ÇÏ´Â °úÁ¤Àº JAR ÆÄÀϳ»¿¡ Æ÷ÇԵǾî ÀÖ´Â °¢ Ŭ·¡½º¸¶´Ù º°µµ·Î ¼öÇàµÇ´Âµ¥ ¸ÕÀú Ŭ·¡½ºÀÇ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ¿© .MFÈ®ÀåÀÚ¸¦ °¡Áö´Â ÆÄÀÏÀ» »ý¼ºÇÏ¿© ÀúÀåÇϰí, .MFÆÄÀÏÀÇ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ¿© .SFÈ®ÀåÀÚ¸¦ °¡Áö´Â ÆÄÀÏÀ» »ý¼ºÇÏ¿© ÀúÀåÇÑ´Ù. ÀÌ¿Í °°ÀÌ ¼öÇàÇÏ´Â ÀÌÀ¯´Â .MFÆÄÀÏÀÇ ¹«°á¼ºÀ» º¸ÀåÇϱâ À§Çؼ ÀÌ´Ù. ±×¸®°í »ý¼ºµÈ .MFÆÄÀÏÀº X.509v1 ÀÎÁõ¼¿Í »ý¼ºµÈ °ø°³Å° ¹× ºñ¹Ð۸¦ ÀÌ¿ëÇÏ¿© ÀüÀÚ ¼¸íµÈ ÈÄ¿¡ .DSAÈ®ÀåÀÚ¸¦ °¡Áö´Â ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.

¼Û½ÅÀÚ´Â »ý¼ºµÈ .MFÆÄÀÏ ¹× .DSAÆÄÀÏ, ±×¸®°í .SFÆÄÀÏÀ» ´Ù½Ã ¹¾î ÀüÀÚ ¼¸íÈµÈ »õ·Î¿î JARÆÄÀÏÀ» »ý¼ºÇÏ¿© ¼ö½ÅÀÚ¿¡°Ô Àü¼ÛÇÑ´Ù. ¼ö½ÅÀÚ´Â ÀüÀÚ ¼¸íÈµÈ ÆÄÀÏÀ» ¼ö½Å ¹ÞÀº µÚ ¼¼ °³ÀÇ .MFÆÄÀÏ ¹× .DSAÆÄÀÏ, ±×¸®°í .SFÆÄÀÏÀ» ÃßÃâÇÑ ÈÄ, .MFÆÄÀÏÀÇ ¸Þ½ÃÁö ´ÙÀÌÁ¦½ºÆ®¸¦ ±¸ÇÏ¿© .SFÆÄÀϰú ºñ±³ÇÏ¿© ÀÏÄ¡Çϸé .DSAÆÄÀÏÀ» º¹È£ÈÇÑ´Ù.
.DSAÆÄÀÏÀÌ º¹È£ÈµÇ¸é .MFÆÄÀϰúÀÇ ³»¿ë°ú ºñ±³ÇÏ¿© °á°ú°¡ ÀÏÄ¡Çϸé, JARÆÄÀÏÀ» º¹¿øÇÏ¿© JARÆÄÀϳ»¿¡ Æ÷ÇԵǾî Àִ Ŭ·¡½º ÆÄÀϵéÀ» ½ÇÇà½ÃŲ´Ù. ÀÌ·¯ÇÑ °úÁ¤À» ÅëÇØ ½Å·Ú¼ºÀ» º¸ÀåÇÏ´Â ÀüÀÚ ¼¸íÈµÈ ¾ÖÇø´À» ½ÇÇà½Ãų ¼ö ÀÖ´Ù.
ÇÑÆí, ÀüÀÚ ¼¸í°ú JAR ÆÄÀÏÀº Java ¾îÇø®ÄÉÀ̼ǿ¡µµ ÀÌ¿ëµÇ¾î Áú ¼ö ÀÖ´Ù. ¹°·Ð Java ¾îÇø®ÄÉÀ̼ÇÀº ´ëºÎºÐÀÇ ½Ã½ºÅÛ ÀÚ¿ø Á¢±Ù¿¡ ´ëÇÑ Á¦ÇÑÀÌ ¾ø±â ¶§¹®¿¡ ¾ÖÇø´ÀÇ ÀüÀÚ ¼¸í È¿°ú¿Í Á¶±Ý ´Þ¶óÁú ¼ö ÀÖÀ¸³ª, ÀüÀÚ ¼¸íÀ» ÅëÇØ ÄÄÇ»ÅÍ ½Ã½ºÅÛ³»¿¡ ¹ÙÀÌ·¯½º¸¦ °¨¿°½ÃŲ »ç¿ëÀÚ¿¡ ´ëÇØ Java ¾îÇø®ÄÉÀÌ¼Ç ¹èÆ÷ À¯¹«ÀÇ Ã¥ÀÓÀ» ÆÇº°ÇÒ ¼ö ÀÖ´Â È¿°ú¸¦ °¡Á®¿Â´Ù.
¡¡
V. ÇâÈÄ Java Security ±â¼ú
JDK1.2 ¹× ÇâÈÄ Java¿¡¼ Á¦°øÇÏ°Ô µÉ Security ±¸Á¶´Â Protected Domain¿¡ ´ëÇÑ Security, Ʋ ±â¹ÝÀÇ Security ȯ°æ ¼³Á¤, À¯¿¬ÇÑ Á¢±Ù Á¦ÇÑ, X.509v3±â¹ÝÀÇ ÀÎÁõ¼, ´Ù¾çÇÑ ¾ÏÈ£È ¾Ë°í¸®µëÀÇ ¼ö¿ë, ¾ÈÀüÇÑ Åë½ÅÀ» À§ÇÑ SSL(Secure Socket Layer) ¹× SKIP(Simple Key Management Internet Protocol) Áö¿ø, Çâ»óµÈ °¨½Ã ´É·Â, ±×¸®°í Domain IDs µîÀ» Áö¿øÇÒ ¿¹Á¤ÀÌ´Ù. ´ÙÀ½¿¡ ÀÌµé °¢ ±â¼ú¿¡ ´ëÇØ »ìÆìº»´Ù.
¡¡
Protected Domains´Â ½ÇÇà °¡´ÉÇÑ ÀÀ¿ëÀÎ ¾ÖÇø´ ȤÀº ¾îÇø®ÄÉÀ̼ÇÀÇ Æ¯Â¡¿¡ µû¶ó ½Ã½ºÅÛ ÀÚ¿ø¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ºÎºÐÀ» ºÐ¸®½ÃÄÑ ÇÑ ½Ã½ºÅÛ ¿µ¿ª³»¿¡ °¡»óÀûÀÎ Protected DomainsÀ» ¿©·¯ °³·Î µÎ´Â ±â¼úÀÌ´Ù. ¿¹¸¦ µé¾î ÀüÀÚ ¼¸íÀ» ÀÌ¿ëÇÏ¿© ½Å·Ú¼ºÀ» Á¦°øÇÏ´Â ¾ÖÇø´ ȤÀº ¾îÇø®ÄÉÀ̼ÇÀÌ Á¢±ÙÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛ ÀÚ¿ø ºÎºÐ°ú ±×·¸Áö ¾ÊÀº °æ¿ì¿¡ ´ëÇÑ ºÎºÐÀ» Protected Domain ±â¼úÀ» ÀÌ¿ëÇÏ¿© Â÷º°È ½Ãų ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ±â¼úÀº ±âÁ¸ÀÇ ¹æ½Ä¿¡¼ Á¦°øÇÏ´Â Sandbox ±â¼úÀÇ ±â´É Áß Fine-grained Control·Î ¸í¸íµÇ¾îÁö´Â ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±Ù Á¦ÇÑ ±â¼úÀ» È®ÀåÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Æ¯¼º¿¡ µû¶ó ´ÙÁß Security Á¤Ã¥À» ¼¼¿ï ¼ö ÀÖÀ½À¸·Î½á À¯¿¬¼º ¹× ¾ÈÁ¤¼ºÀ» °È½ÃÄ×´Ù.
Java¿¡¼ Á¤Àǵǰí ÀÖ´Â Protection DomainÀº ½Ã½ºÅÛ ÀÚ¿ø ºÎºÐ°ú ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î ³ª´©¾îÁø´Ù. ½Ã½ºÅÛ ÀÚ¿ø ºÎºÐÀ¸·Î´Â ÆÄÀÏ ½Ã½ºÅÛ, ³×Æ®¿öÅ©, ¸ð´ÏÅÍ, Űº¸µå µîÀ̸ç, ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î´Â Java ¾ÖÇø´ ¹× ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÖ´Ù. Protected Domains ±¸Á¶´Â ±×¸² 8°ú °°´Ù.
±×¸² 8¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ Protected Domain ±¸Á¶´Â ÇÑ System Domain ¿µ¿ª³»¿¡ ´ÙÁß Protected DomainÀ» µÎ¾î ÇØ´çµÇ´Â Protected Domain¿¡ Domain ID(±×¸²8 ¿¹: A, B)¸¦ ºÎ¿©ÇÏ¿© ±¸ºÐÇϸç ÀÌ·¯ÇÑ ¹æ½ÄÀ» ÅëÇØ ±âÁ¸ÀÇ Java¿¡¼ »ç¿ëµÇ´Â ´ÜÀÏ System Domain ±â¼ú¿¡¼ ¹ß»ýµÇ¾î¿Â ¹®Á¦Á¡ÀÎ ÇϳªÀÇ ¿¡·¯°¡ ÀüüÀûÀÎ ½Ã½ºÅÛ ÀÚ¿ø °ü¸® ºÎºÐ¿¡ Ä¡¸íÀûÀÎ À§ÇùÀÌ µÇ´Â °ÍÀ» ÇØ°áÇÒ ¼ö ÀÖ´Ù.

ÀÌÀü¿¡ Java¿¡¼ Á¦°øÇÏ´Â Security Á¤Ã¥Àº ÇÁ·Î±×·¡¹Ö ¼öÁØ¿¡¼ Á¦°øÇÏ¿© ÀÏ¹Ý »ç¿ëÀÚµéÀÌ ÀÌ¿ëÇϱ⿡´Â ¸Å¿ì ¾î·Á¿üÀ¸³ª, ÇâÈÄ ³ª¿À°Ô µÉ JDK1.2 ÀÌÈÄ ¹öÀü¿¡¼´Â °£´ÜÇÏ¸é¼ »ç¿ëÇϱ⠽¬¿î ÅøÀ» Á¦°øÇÒ °èȹÀÌ´Ù.
ÇÑÆí, ¼Û½ÅÀÚ¿Í ¼ö½ÅÀÚ°£¿¡ Åë½Å»ó¿¡¼ ¹ß»ýµÇ´Â ÁÖ¿äÇÑ Á¤º¸ÀÇ À¯ÃâÀ» ¹æÁöÇϱâ À§ÇÑ ¾ÏÈ£È ±â¼úÀÇ »óÈ£ Á¶Á¤À» °¡´ÉÄÉ ÇÏ´Â SKIPÀ» Á¦°øÇÏ¿© SSL°ú ´õºÒ¾î Åë½Å»ó¿¡¼ ¹ß»ýµÇ´Â À§Çù ¿ä¼Òµé¿¡ ´ëÇÑ Security¸¦ °È ½Ãų ¿¹Á¤ÀÌ´Ù [14].
°¨½Ã ±â´É¿¡¼´Â ºÒ¹ýÀûÀ¸·Î ħÀÔÇÑ ³×Æ®¿öÅ© »ç¿ëÀÚ¿¡ ´ëÇÑ °¨½Ã ±â´ÉÀ» À§ÇØ »ç¿ëÀÚ ±â·Ï(log)À» ÀúÀåÇÏ°í °Ë»öÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇϸç X.509v3 ±â¹ÝÀÇ ÀÎÁõ¼ ¹× ¿Â¶óÀÎ ÀÎÁõ ¼¹ö(Certificate Authority)¸¦ ±¸ÇöÇϴµ¥ ÇÊ¿äÇÑ APIµéµµ Á¦°øÇÒ ¿¹Á¤ÀÌ´Ù.
¡¡
VI. °á·Ð
Java´Â °£°áÇÏ°í °´Ã¼ÁöÇâÀûÀ̸ç Ç÷§Æû¿¡ µ¶¸³ÀûÀ¸·Î ½ÇÇà °¡´ÉÇÑ ÇÁ·Î±×·¥¹Ö ¾ð¾îÀÌ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡ Áß °¡Àå Áß¿äÇÑ °ÍÀº ³×Æ®¿öÅ©¸¦ ÅëÇØ Java·Î ±¸ÇöµÈ ¾ÖÇø´°ú °°Àº ½ÇÇà °¡´ÉÇÑ ÇÁ·Î±×·¥µéÀÌ ¿î¿µÃ¼Á¦ Ç÷§Æû¿¡ °ü°è¾øÀÌ »ç¿ëÀÚÀÇ ÄÄÇ»ÅÍ¿¡¼ µ¿ÀûÀ¸·Î Àü¼ÛµÇ¾î ¼öÇàµÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Java ±â¼úÀº ³×Æ®¿öÅ©À» ±â¹ÝÀ¸·Î ÇÏ´Â ÄÄÇ»ÆÃ ½Ã½ºÅÛÀÇ ´É·ÂÀ» Áõ´ë½Ã۸ç, ¶ÇÇÑ ³×Æ®¿öÅ© ¹× ºÐ»ê ÄÄÇ»ÆÃ ȯ°æ¿¡¼ ¹ß»ýµÇ´Â ÀÀ¿ë ÇÁ·Î±×·¥µéÀÇ º¸¼ö ¹× À¯Áö ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥À» Á¦½ÃÇÒ ¼ö ÀÖ´Ù.
±×·¯³ª ³×Æ®¿öÅ© ¹× ºÐ»ê ÄÄÇ»ÆÃ ȯ°æ¿¡¼´Â ¼¹ö¿¡¼ Àü¼ÛµÇ¾î ¿Â Java ¾ÖÇø´°ú °°Àº ½ÇÇà °¡´ÉÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Å¬¶óÀÌ¾ðÆ®¿¡¼ ½ÇÇàµÇ¾î ½Ã½ºÅÛ ÀÚ¿øµéÀ» ÆÄ±«ÇÒ ¼ö ÀÖ´Â »õ·Î¿î Security ¹®Á¦¸¦ ¹ß»ý½ÃŲ´Ù. ÇöÀç Java Security¿¡¼´Â JDK1.0¿¡¼ÀÇ Sandbox ±â¼ú, JDK1.1¿¡¼ÀÇ ÀüÀÚ ¼¸íÀ» »ç¿ëÇÑ ¾ÖÇø´ ÀÎÁõ ±â¼ú, ±×¸®°í JDK1.2¿¡¼ Á¦°øÇÒ ¿¹Á¤ÀÎ Á¢±Ù Á¦ÇÑ ±â¼úµî°ú °°Àº ´Ù¾çÇÑ Security ±â¼úÀ» Á¦°øÇÏ¿© Security¸¦ ÇÑÃþ ´õ °È ½Ã۸ç, »ç¿ëÀÚ¿¡°Ô´Â º¸´Ù ³ªÀº À¯¿¬¼ºÀ» Áö¿øÇÑ´Ù.
µû¶ó¼, Java¸¦ ³×Æ®¿öÅ© ÄÄÇ»ÆÃ ȯ°æ¿¡ Àû¿ëÇÏ·Á´Â ±â¾÷À̳ª ±â°ü, ȤÀº °³ÀÎ »ç¿ëÀÚ´Â Java¿¡¼ Á¦°øÇÏ´Â ´Ù¾çÇÑ Security±â¼úÀ» È¿°úÀûÀ¸·Î ÀÌ¿ëÇÔÀ¸·Î½á, ³×Æ®¿öÅ© ¹× ºÐ»ê ÄÄÇ»ÆÃ ȯ°æ¿¡¼ÀÇ Security ¹®Á¦¸¦ º¸´Ù È¿À²ÀûÀ¸·Î ÇØ°áÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
JVM Java Virtual Machine
OLE Object Linking and Embedding
SHA Secure Hash Algorithm
SKIP Simple Key Management Internet Protocol
SSL Secure Socket Layer
SSP Security Package Provider
WWW World Wide Web
¡¡
Available via http://java.sun.com/security
Available via http://www-swiss.ai.mit.edu/~jbank/javapaper/javapaper.html
Available via http://java.sun.com/sfaq
Available via http://java.sun.com/marketing/collateral/security.html
Available via http://java.sun.com/javaone
Available via http://www.javaworld.com/javaworld/jw-05-1997/jw-05-security.html
Available via http://java.sun.com/sfaq/may95/ security.html
Available via http://java.sun.com/product¡¦ide/security/Cryptospec.html
Available via http://java.sun.com/security/UsingJavakey.html
Available via http://java.sun.com/products/jdk/1.1/docs/guide/jar/manifest.html
Available via http://psych.psy.uq.oz.au/~ftp/Crypto.html