ÀÚ¹Ù ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ °íÂûÀÓ ¿µ ÁÖ
¼¿ïƯº°½Ã °ü¾Ç±¸
¼¿ï´ëÇб³ ¹°¸®Çаú
E-mail : cogito@newton.snu.ac.kr, cogito@plaza.snu.ac.kr
º» ³í¹®Àº ÀÚ¹Ù ¾ð¾î°¡ °¡Á®¿Ã ¼ö ÀÖ´Â ½ÃÅ¥¸®Æ¼ ¹®Á¦¿¡ ´ëÇØ¼ °íÂûÇϰí ÀÚ¹Ù ½ÇÇà °¡´É À¥ºê¶ó¿ìÁ®(Java Enabled Web BrowserÀÌÇÏ JEWB)¿¡¼ÀÇ º¸¾È Ãë¾àÁ¡µéÀÇ ÀÌ¿ë °¡´É¼º°ú ÀÚ¹ÙÀÇ ½ÃÅ¥¸®Æ¼ ¸ÞÄ¿´ÏÁòµé¿¡ ´ëÇØ¼ Æò°¡ÇÑ´Ù. ½ÇÇà°¡´É ³»¿ë(Excutable Content ÀÌÇÏ EC)¿¡ ´ëÇØ¼ ¿ì¼± ³íÀÇÇÑ ÈÄ¿¡, ÀÌ ³í¹®Àº ECÀÇ ÀáÀçÀû Ãë¾à¼º°ú ±×¿¡ ´ëÇØ Á¦¾ÈµÈ ÀÚ¹ÙÀÇ ¸ÞÄ¿´ÏÁò¿¡ ´ëÇØ¼ ±×¸®°í ¸¶Áö¸·À¸·Î ÀÌ·¯ÇÑ ¸ÞÄ¿´ÏÁòµéÀÇ È¿°ú¿¡ ´ëÇØ ºÐ¼®ÇϰíÀÚ ÇÑ´Ù.Keywords: Java , Security , WWW
±×·¯³ª,ÀÚ¹Ù ¾ÖÇø´ÀÇ Áõ°¡µÈ ½ÇÇà ´É·ÂÀº ¶ÇÇÑ ÀáÀçÀûÀÎ ½ÃÅ¥¸®Æ¼ ¹®Á¦ÀÇ
¼ÒÁö¸¦ ¾È°í ÀÖ´Ù. »ç¿ëÀÚ°¡ À¥À» Ç×ÇØÇÏ´Â µ¿¾È, »ç¿ëÀÚ°¡ ¾ÖÇø´ÀÌ ÀڽŵéÀÇ
ÆÄÀÏÀ» Áö¿ì°Å³ª ±×µéÀÇ »çÀûÀÎ Á¤º¸¸¦ ³×Æ®¿öÅ©¸¦ ÅëÇØ Èê·Áº¸³¾ °¡´É¼º¿¡ ´ëÇÑ
ºÒ¾È°¨À» ´À³¥ Çʿ䰡 ¾ø¾î¾ß ÇÏ´Â °ÍÀÌ´Ù.
¹®Á¦ÀÇ ÇÙ½ÉÀº ÄÄÇ»Åͻ󿡼 ÇÁ·Î±×·¥ÀÇ ½ÇÇà½Ã È£½ºÆ®ÀÇ Æ¯Á¤ÇÑ ÀÚ¿ø¿¡ ´ëÇÑ
Á¢±ÙÀ»
ÇÁ·Î±×·¥ÀÌ ÇØ¾ß¸¸ ÇÑ´Ù´Â µ¥ ÀÖ´Ù. ECÀÇ °æ¿ì¿¡ ½ÇÇàµÇ°í ÀÖ´Â ÇÁ·Î±×·¥Àº
½Å·ÚµÉ ¼ö ¾ø´Ù.
ÀÚ¹Ù Äڵ带 ´Ù¿î·ÎµåÇØ¼ ½ÇÇàÇÏ´Â À¥ºê¶ó¿ìÁ®°¡ ½Å·ÚÇÒ ¼ö ¾ø´Â ÇÁ·Î±×·¥¿¡
´ëÇØ¼
ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» Á¦¾îÇÏÁö ¸øÇÑ´Ù¸é, ÇØÄ¿°¡ È£½ºÆ®¸¦ ħÀÔÇÑ °Í°ú
¸¶Âù°¡Áö·Î ½Ã½ºÅÛ¿¡ ¼Õ»óÀ» ÀÔÈú ¼ö ÀÖ´Â °ÍÀÌ´Ù. ºÒÇàÇϰԵµ, ÀÚ¿ø¿¡ ´ëÇÑ
Á¢±ÙÀ» ¿ÏÀüÈ÷ ±ÝÁöÇÏ´Â °ÍµîÀÇ ´Ü¼øÇÑ ¼Ö·ç¼ÇÀº Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ÀÌÀ¯´Â
ÇÁ·Î±×·¥ÀÌ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» Çã¿ëÇϴ ù¹øÂ° ÀÌÀ¯°¡ À¯¿ëÇÑ ÇÁ·Î±×·¥ÀÌ
±×·¯ÇÑ ÀÚ¿øµé¿¡ ´ëÇØ¼ ¹Ýµå½Ã Á¢±ÙÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¸é ¿¡µðÅÍ¿¡¼
ÆÄÀÏÀúÀå ±â´ÉÀÌ ¾ø´Ù¸é ÀÌ´Â À¯¿ëÇÑ ÇÁ·Î±×·¥À̶ó°í ÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù.
±×·¯¹Ç·Î, À¯¿ëÇϸ鼵µ ¾ÈÀüÇÑ EC¸¦ ¿øÇÑ´Ù¸é, ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀº ¸Å¿ì
ÁÖÀDZí°Ô ÅëÁ¦µÇ¾î¾ß¸¸ ÇÑ´Ù. ÀÌÇÏ¿¡¼´Â ¿ì¼± °í·ÁÇØ¾ß ÇÒ ÀÚ¿ø¿¡ ´ëÇØ¼
¼³¸íÇϰí ÃæºÐÇÑ ¾ÈÀüÀåÄ¡°¡ ¾øÀ» °æ¿ì ¹ß»ýÇÒ ¼ö ÀÖ´Â ¸î °¡Áö °¡»óÀû
½Ã³ª¸®¿À¿¡ ´ëÇØ¼ °íÂûÇÑ´Ù.
ÁÖ¾îÁø ÀÚ¿øÀÇ ¸î¸î ¿ä¼ÒµéÀº ´Ù¸¥ °Íµé¿¡ ºñÇØ Àüü Á¢±ÙÀ» ÇØ¿ëÇϱ⠶§¹®¿¡
´õ¿í
"À§Çè"ÇÏ´Ù. ¿¹¸¦ µé¸é ÆÄÀÏ ½Ã½ºÅÛ¿¡ ´ëÇØ ¾Ë·ÁÁöÁö ¾ÊÀº ÇÁ·Î±×·¥ÀÌ ÀüüÀû
Á¢±ÙÀ»
Çã¿ëÇÏ´Â º¸¾È Á¤Ã¥À» À¯¿ëÇÏ´Ù°í ÆÇ´ÜÇÒ ¼ö´Â ¾ø´Ù. ¹Ý´ë·Î, ´ëºÎºÐÀÇ
º¸¾ÈÁ¤Ã¥Àº
µð½ºÇ÷¹ÀÌ ÀåÄ¡¿¡ ´ëÇØ¼´Â ÀüüÀû Á¢±ÙÀ» Çã¿ëÇϴ°ÍÀ» Á¦ÇÑÇÏÁö´Â
¾Ê´Â´Ù.(¹°·Ð, ´Ù¸¥ ÀÚ¿øµé¿¡ ´ëÇØ¼´Â ÀûÀýÈ÷ ÅëÁ¦¸¦ ¹Þ´Â´Ù´Â
°¡Á¤ÇÏ¿¡¼ÀÌ´Ù.)
EC(Excutable Content)¸¦ Á¦°øÇÏ´Â ÀÚ¹ÙÀÇ ¹æ½ÄÀº JEWB°¡ ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ¿Í
·±Å¸ÀÓ
¶óÀ̺귯¸®¸¦ º¸À¯ÇÏ°Ô ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ À¥ºê¶ó¿ìÁ®´Â ¾ÖÇø´À̶ó°í
ºÒ¸®¿ì´Â ÀÚ¹Ù ÇÁ·Î±×·¥µéÀ» ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ°í ÀÚ¹ÙÀÎÅÍÇÁ¸®ÅͰ¡ À̸¦
½ÇÇàÇÏ°Ô ¸¸µç´Ù. ÀÌ·¯ÇÑ ¸ðµ¨°ú ÇÔ²², ¼¼°¡Áö ±âº»Àû¾ð °èÃþÀÌ Á¸ÀçÇϴµ¥:
ÀÚ¹Ù ¾ð¾î, Ç¥ÁØ ÀÚ¹Ù ¶óÀ̺귯¸® ±×¸®°í À¥ºê¶ó¿ìÁ®ÀÌ´Ù. ½Ã½ºÅÛ ÀüüÀÇ
½ÃÅ¥¸®Æ¼´Â ÀÌ·¯ÇÑ ¼¼ °èÃþÀÇ °³°³ÀÇ ½ÃÅ¥¸®Æ¼¿¡ ±âº»ÀûÀ¸·Î ÀÇÁ¸ÇÏ´Â
±¸Á¶ÀÌ´Ù.
C++°ú ¸¶Âù°¡Áö·Î ÀÚ¹Ù´Â °´Ã¼µéÀÇ º¯¼ö¿Í ¸Þ½îµå¿¡ ´ëÇØ¼ Á¢±ÙÀ» Á¦¾îÇÒ
´É·ÂÀ»
°¡Áö°í ÀÖ´Ù. ÀÌ·¯ÇÑ Á¢±Ù Á¦¾î´Â ½Å¿ëÇÒ ¼ö ¾ø´Â Äڵ忡 ´ëÇØ °´Ã¤°¡
ºÎÀûÀýÇÏ°Ô »ç¿ëµÇÁö ¾Ê´Â´Ù´Â º¸ÀåÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. ¿¹¸¦ µé¸é, ÀÚ¹Ù
¶óÀ̺귯¸®´Â ÆÄÀÏ °´Ã¼¿¡ ´ëÇÑ Á¤ÀǸ¦ Æ÷ÇÔÇϴµ¥, ÆÄÀÏ °´Ã¼´Â Àбâ¿ëÀ¸·Î
public ¸Þ½îµå(´©±¸³ª È£Ãâ °¡´É) °¡Áö°í ÀÖ°í ¶ÇÇÑ Àбâ¿ëÀ¸·Î Àú¼öÁØÀÇ
private ¸Þ½îµå(°´Ã¼ ¸Þ½îµå¿¡ ÀÇÇØ¼¸¸ È£Ãâ°¡´ÉÇÑ)¸¦ °¡Áö°í ÀÖ´Ù. public
È£ÃâÀº ¿ì¼± ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ Ã¼Å©¸¦ ¼öÇàÇÏ°í ³ ´ÙÀ½¿¡ private Àб⸦
È£ÃâÇÑ´Ù. ÀÚ¹Ù´Â ½Å·ÚµÇÁö ¾ÊÀº Äڵ尡 ÆÄÀÏ °´Ã¼¸¦ ¾ÈÀüÇÑ°Ô Á¶Á¤ÇÏ´Â °ÍÀ»
public ¸Þ½îµå¿¡ ´ëÇÑ Á¢±Ù¸¸À» Çã¿ëÇÔÀ¸·Î½á º¸ÀåÇÏ´Â °ÍÀÌ´Ù. ±×·¯¹Ç·Î,
Á¢±ÙÁ¦¾î´É·ÂÀº ÇÁ·Î±×·¡¸ÓµéÀÌ ¶óÀ̺귯¸®¿¡ ´ëÇÑ Á¢±ÙÁ¦¾î¸¦ Á¤È®È÷
¸í½ÃÇÔÀ¸·Î½á ¾ð¾î¿¡ ½ÃÅ¥¸®Æ¼°¡ º¸ÀåµÈ ¶óÀ̺귯¸® ÀÛ¼ºÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù.
Á¢±ÙÁ¦¾î¸¦ º¸ÀåÇÏ´Â ´Ù¸¥ ´É·ÂÀº ÆÄÀ̳Î(final)·Î¼ Ŭ·¡½º³ª ¸Þ½îµå¸¦
¼±¾ðÇÏ´Â °ÍÀÌ´Ù. À̰ÍÀº ¾ÇÀÇÀûÀÎ ÇÁ·Î±×·¡¸Ó°¡ ÇÙ½ÉÀûÀÎ ¶óÀ̺귯¸® Ŭ·¡½º¸¦
¼ºêŬ·¡½º·Î »ç¿ëÇϰųª, ÇÑ Å¬·¡½ºÀÇ ¸Þ½îµå¸¦ ¿À¹ö¶óÀ̵ùÇÏ´Â °ÍÀ» ¸·¾ÆÁØ´Ù.
±×·¯¹Ç·Î, ÀÚ¹Ù´Â ½ÇÁ¦ ¸Þ½îµå°¡ ¾î¶² °´Ã¼¿¡ °ü°èµÇ¾úÀ»¶§ °´Ã¼ÀÇ ÄÄÆÄÀϽÃ
ŸÀÔ¿¡ ¸Â°Ô ¾²¿©Áø ÆÄÀ̳Π¸Þ½îµåÀÓÀ» º¸ÀåÇÑ´Ù. ÀÌ´Â ¶ÇÇÑ °´Ã¼ÀÇ ÇൿÀÇ
ƯÁ¤ÇÑ ºÎºÐÀÌ ¼öÁ¤µÇÁö ¾Ê¾ÒÀ½À» º¸ÀåÇÏ´Â °ÍÀÌ´Ù.
ÀÚ¹Ù´Â ¶ÇÇÑ Å¸ÀÔ¿¡ ¾ÈÀüÇÏ°Ô ¼³°èµÇ¾ú´Ù. À̰ÍÀº ÄÄÆÄÀϽà ŸÀÔ°ú º¯¼öÀÇ
½ÇÇà½Ã ŸÀÔÀÇ È£È¯¼ºÀÌ º¸ÀåµÊÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â cast°¡ ÄÄÆÄÀϰú ½ÇÇàÇÏ´Â
°æ¿ì¿¡ ±×µéÀÌ À¯È¿ÇÑÁö¸¦ È®ÀÎÇϱâ À§Çؼ ¸ðµÎ üũµÊÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â Á¢±Ù
Á¦¾î¸¦ ºñ²¸°¡±â À§Çؼ °´Ã¼¿¡ ´ëÇÑ Á¢±ÙÀ» °¡ÀåÇÏ´Â °ÍÀ» ¿¹¹æÇØ ÁØ´Ù. À̹Ì
º¸¿©Áø File¿¡ ´ëÇÑ ¿¹¿¡¼ º¸µíÀÌ, ÀÌ´Â ¾ÇÀÇÀûÀÎ Äڵ尡 File °´Ã¼¿¡ ´ëÇØ
ij½ºÆÃÀ» ÇÏ´Â °Í¿¡¼ ¾ÇÀÇÀûÀÎ ÄÚµåÀÇ MyFile ŸÀÔÀÌ FileŸÀÔ°ú µ¿ÀÏÇÑ ÇüŸ¦
Áö´ÏÁö¸¸ ¸ðµç ¸Þ½îµå°¡ publicÀΰÍÀ» ¸·¾ÆÁØ´Ù.
¶óÀ̺귯¸®ÀÇ Á¢±Ù Á¦ÇÑÀº ±âº»ÀûÀ¸·Î ¼¼°¡Áö ¸ÞÄ¿´ÏÁò¿¡ ÀÇÁ¸ÇÑ´Ù. ù¹øÂ°´Â
ÀÚ¹Ù
¾ð¾îÀÇ ¿ÀºêÁ§Æ® ¸Þ½îµå¿Í ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±Ù Á¦ÇÑÀ» °ø±ÞÇÏ´Â ¹æ½ÄÀ¸·Î¼
ÀÌ·ç¾îÁö°í µÎ¹øÂ°´Â ƯÁ¤ÇÑ ClassLoader°¡ ƯÁ¤ÇÑ Äڵ带 ·ÎµåÇÏ´Â ¹æ½ÄÀ¸·Î
ÀÌ·ç¾îÁø´Ù. ¸¶Áö¸· ¸ÞÄ¿´ÏÁòÀº ±Û·Î¹ú SecurityManager°¡ ƯÁ¤ÇÑ ÀÛ¿ëÀÇ
À¯¿ë¼ºÀ» °Ë»çÇÏ´Â ¸í¹éÇÑ È£ÃâÀ» »ç¿ëÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù.
ClassLoader
ÀÚ¹Ù ½ÇÇàÀº »õ·Î¿î Ŭ·¡½º¸¦ ·ÎµåÇϴµ¥ ¸í¹éÇÑ µÎ°¡Áö ¹æ½ÄÀ» °¡Áø´Ù.
±âº»ÀûÀÎ ¹æ½ÄÀº ·ÎÄà ȣ½ºÆ®ÀÇ ÆÄÀÏ¿¡¼ Ŭ·¡½º¸¦ ·ÎµåÇÏ´Â °ÍÀÌ´Ù. ÀÌ ¹æ½ÄÀº
ClassLoader¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù. ³×Æ®¿öÅ©¸¦ ÀÌ¿ëÇÏ´Â µîÀÇ ¹æ½ÄÀ¸·Î Ŭ·¡½º¸¦
·ÎµùÇÏ´Â °ÍÀº °ü·ÃµÈ ClassLoader¸¦ ¿ä±¸ÇÑ´Ù. (¿¹¸¦ µé¸é Æ¯ÈµÈ ¹æ¹ýÀ»
Áö´Ï´Â ClassLoader Ŭ·¡½ºÀÇ ¼ºêŸÀÌÇÁ) ClassLoader´Â Ŭ·¡½ºÀÇ ¿ø½Ã
µ¥ÀÌÅ͸¦ ³»ºÎÀÇ Å¬·¡½º¸¦ ´ëÇ¥ÇÏ´Â µ¥ÀÌÅÍ ±¸Á¶·Î º¯È¯ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù.
ÀÚ¹Ù ¾ÖÇø´µéÀÌ °¡´ÉÇÑÇÑ Æ÷ÅͺíÇϱâ À§Çؼ, ÀÚ¹Ù ÄÄÆÄÀÏ·¯´Â ¸Ó½Å Äڵ带
ÄÄÆÄÀÏÇÏÁö ¾Ê°í ´ë½Å¿¡ ¾ÆÅ°ÅØÃÄ¿¡ ¹«°üÇÑ °¡»ó ±â°è¿ë ¹ÙÀÌÆ® Äڵ带
ÄÄÆÄÀÏÇÑ´Ù. ÀÚ¹Ù ÀÎÅÍÇÁ¸®ÅÍ´Â ÀÌ·¯ÇÑ ¹ÙÀÌÆ®Äڵ带 ÀÎÅÍÇÁ¸®Æ®Çؼ ÇÁ·Î±×·¥À»
½ÇÇàÇÑ´Ù. ±×·¯¹Ç·Î, ¾ÖÇø´Àº ¼Ò½ºÄڵ峪 ¸Ó½Å Äڵ尡 ¾Æ´Ï¶ó ¹ÙÀÌÆ®ÄÚµå
ÇüÅ·ΠÀü´ÞµÈ´Ù. À̰ÍÀº ClassLoader°¡ ¹ÙÀÌÆ®Äڵ常À» ´Ù·ê ¼ö ÀÖÀ½À»
ÀǹÌÇÑ´Ù.
Ŭ·¡½ºÆÄÀÏ °Ë»ç(Class File
Verification)
ÄÄÆÄÀÏ·¯°¡ ŸÀÔÀ» °Ë»çÇÏÁö¸¸ "À§ÇèÇÑ" ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÔÀ¸·Î½á °ø°ÝÀ» ¹ÞÀ»
¼ö ÀÖ´Â °¡´É¼ºÀÌ ¿©ÀüÈ÷ ÀÖ´Ù. ÇÖÀÚ¹Ù(tm)ºê¶ó¿ìÀú¿Í °°Àº ¾îÇø®ÄÉÀ̼ÇÀº
¼Ò½ºÄڵ带 Àü¼Û¹ÞÀº ÈÄ ÄÄÆÄÀÏÀ» ÇÏÁö ¾Ê´Â´Ù; ÀÌ·± ¾îÇø®ÄÉÀ̼ÇÀº À̹Ì
ÄÄÆÄÀÏµÈ Å¬·¡½ºÆÄÀϵéÀ» Àü¼Û¹Þ´Â´Ù. ÇÖÀÚ¹Ù ºê¶ó¿ìÀú´Â ±× ¹ÙÀÌÆ® Äڵ尡 ¹ÏÀ»
¸¸ÇÑ ÀÚ¹ÙÄÄÆÄÀÏ·¯¿¡¼ »ý¼ºµÇ¾ú´ÂÁö ¶Ç´Â ÀÎÅÍÇÁ¸®Å͸¦ °ø°ÝÇÏ·Á´Â ÀûÀ¸·ÎºÎÅÍ
»ý¼ºµÇ¾ú´ÂÁö È®ÀÎÇÒ ¹æ¹ýÀÌ ÀüÇô ¾ø´Ù.
¿ÜºÎ¿¡¼ À¯ÀÔµÈ ¸ðµç Ŭ·¡½ºÆÄÀϵéÀº °Ë»ç±â¿¡¼ È®ÀεǾî¾ß ÇÑ´Ù. °Ë»ç±â´Â ±×
Ŭ·¡½º ÆÄÀÏÀÌ ¿Ã¹Ù¸¥ Æ÷¸ËÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ¹ÙÀÌÆ®Äڵ忡 ´ëÇÑ
"±¸Á¶Àû Á¦ÇÑ"ÀÇ ¼¼Æ®¸¦ ±¸¼ºÇÏ´Â °£´ÜÇÑ ³í¸® È®ÀÎÀÚ¸¦ »ç¿ëÇÔÀ¸·Î½á
¹ÙÀÌÆ®Äڵ带 °Ë»çÇÒ ¼ö ÀÖ´Ù.
¹ÙÀÌÆ®ÄÚµå °Ë»ç±â´Â ÀÎÅÍÇÁ¸®ÅÍÀÇ ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱⵵ ÇÑ´Ù. °¢
ÀÎÅÍÇÁ¸®Æ®µÈ
¸í·É¾î¿¡ ´ëÇØ¼ ¼öÇàµÇ¾î¾ß ÇßÀ» ½ÇÇà½Ã°£ È®ÀÎÀ» ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ¿ÀÈ÷·Á
ÀÎÅÍÇÁ¸®ÅÍ´Â ÀÌ·¯ÇÑ È®ÀÎÀÌ ÀÌ¹Ì ¼öÇàµÇ¾ú´Ù°í °£ÁÖÇÒ ¼ö ÀÖ´Ù. °¢°¢¿¡ ´ëÇÑ
È®ÀÎÀº ±×´ÙÁö Å©°Ô ºÎ´ãµÇÁö ¾ÊÀ» ¼ö À־ °¢ ¹ÙÀÌÆ®ÄÚµå ¸í·É¾îÀÇ ½ÇÇà¿¡
´ëÇÑ ¸î°¡Áö ±â°è ¸í·É¾î°¡ ¾ø¾îÁú ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î ÀÎÅÍÇÁ¸®ÅÍ´Â Äڵ尡 ´ÙÀ½ Á¦ÇѵéÀ» °¡´ÉÇÑÇÑ ÁؼöÇÑ´Ù´Â °ÍÀ»
°í·ÁÇØ¼
ÀÛµ¿ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
´Ù¸¥ ¾ð¾îµéµµ ÀÚ¹ÙÀÇ Å¬·¡½ºÆ÷¸ËÀ¸·Î ÄÄÆÄÀ쵃 ¼ö ÀÖ´Ù. ¹ÙÀÌÆ®ÄÚµå°Ë»ç±â´Â
ÀÚ¹Ù¾ð¾î¿¡¸¸ Á¦ÇѵÇÁö ¾ÊÀ½À¸·Î½á »ç¿ëÀÚ°¡ ÆÄÀ̾î¿ù °Ç³Ê¿¡¼ ¾î¶°ÇÑ Äڵ嵵
¾ÈÀüÇϰÔ
ºÒ·¯µéÀÏ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù.
Ŭ·¡½ºÆÄÀÏ Æ÷¸Ë
°¢ Àڹ٠Ŭ·¡½ºÆÄÀÏÀº ºÐÇÒµÈ »óÅ·Π³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼ÛµÇ¾îÁø´Ù.
Ŭ·¡½ºÆÄÀÏÀº
°£´ÜÈ÷ º¸¸é 8ºñÆ® µ¥ÀÌÅÍÀÇ È帧ÀÌ´Ù. ¸ðµç 16ºñÆ®³ª 32ºñÆ®ÀÇ °ªµéÀº °¢±â µÑ
ȤÀº ³ÝÀÇ 8ºñÆ® ¹ÙÀÌÆ®µé·Î º¯ÇüµÈ »óÅ·ΠÀÐÇôÁø ÈÄ ¸¶Áö¸·¿¡ °¡¼ ÇϳªÀÇ
Àüü·Î ÇÕÃÄÁø´Ù.
±âº» Æ÷¸Ë
ÇϳªÀÇ Å¬·¡½ºÆÄÀÏÀº ´ÙÀ½À» Æ÷ÇÔÇÑ´Ù:
Ŭ·¡½ºÀÇ °¢ Çʵå¿Í ¸Þ½îµå¿¡ ´ëÇØ¼ Ŭ·¡½ºÆÄÀÏÀÇ ¹ÙÀÌÆ®´Â Çʵ峪 ¸Þ½îµåÀÇ
À̸§°ú ±× À¯ÇüÀ» ³ªÅ¸³½´Ù. Çʵ峪 ¸Þ½îµåÀÇ Å¸ÀÔÀº ½Ã±×³Êó(signature)¶ó°í
ºÒ¸®´Â ½ºÆ®¸µ¿¡ ÀÇÇØ¼ ³ªÅ¸³»¾îÁø´Ù. Çʵå´Â ÇʵåÀÇ ÃʱⰪÀ» ¾Ë·ÁÁÖ´Â
Ãß°¡ÀûÀÎ ¼Ó¼ºÀ» °¡Áú ¼ö ÀÖ´Ù. ¸Þ½îµå´Â ±× ¸Þ½îµå¸¦ ½ÇÇà½Ãų Äڵ带 ¾Ë·ÁÁÖ´Â
Ãß°¡ÀûÀÎ ¼Ó¼ºÀ» °¡Áú ¼ö ÀÖ´Ù.
½ÇÁ¦·Î´Â ¸Þ½îµå°¡ ÁßøµÈ ÄÚµå ¼Ó¼ºÀ» °¡Áú ¼ö ÀÖ´Ù. ÄÚµå¶ó´Â ¼Ó¼ºÀº
ÀÎÅÍÇÁ¸®Å͸¦
ÅëÇØ ½ÇÇàµÉ ¹ÙÀÌÆ®ÄÚµå¶ó´Â °ÍÀ» ³ªÅ¸³½´Ù. ¸Þ½îµå´Â ¶ÇÇÑ ±× ¸Þ½îµåÀÇ
±â°èÄڵ带 ±¸ÇöÇÑ SPARC-CODE³ª 386-CODE¿Í °°Àº ¼Ó¼ºÀ» °¡Áú ¼ö ÀÖ´Ù. ÇÖÀÚ¹Ù
ºê¶ó¿ìÀú´Â ÀÌ ¸Ó½ÅÄڵ尡 ±¸Á¶ÀûÀ¸·Î ¾ÈÀüÇÑ °ÍÀÎÁö ÆÇº°ÇÒ ¼ö ¾ø±â ¶§¹®¿¡
½Å·ÚÇÒ ¼ö ¾ø´Â Ãâó¿¡¼ ³ª¿Â ¸ðµç ¸Þ½îµåÀÇ ±â°è¸ðµå¸¦ ¹«½ÃÇÑ´Ù.
ÇÖÀÚ¹Ù ºê¶ó¿ìÀú¿¡¼´Â ÇöÀç ³×Æ®¿öÅ©¸¦ ÅëÇØ¼ Àü¼ÛµÇ´Â ¾î¶°ÇÑ Å¬·¡½ºÆÄÀϵµ
½Å·ÚÇÒ
¼ö ¾ø´Ù°í °£ÁÖÇÑ´Ù. ÇÖÀÚ¹Ù ºê¶ó¿ìÀú´Â ·ÎÄà Ŭ·¡½º ÆÄÀÏ¿¡¼ ºÒ·¯µé¿©Áø
±â°èÄڵ常À» ½ÇÇàÇÑ´Ù. ¾î·°Å³ª Ŭ·¡½ºÆ÷¸ËÀº ÀÛ¼ºÀÚ°¡ Ŭ·¡½ºÆÄÀÏ¿¡ ÀüÀÚ
¼¸íÀ» ³²±æ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¾ÕÀ¸·ÎÀÇ ºê¶ó¿ìÀúµéÀº ½Å·ÚÇÒ ¼ö ÀÖ´Â Ãâó¿¡¼
³ª¿Â ÀüÀÚ ¼¸íµÈ Äڵ带 Á» ´õ ½Å·ÚÇÏ°Ô µÉ °ÍÀÌ´Ù.
¹ÙÀÌÆ®ÄÚµå¿Í °¡»ó±â°è
ÄÚµå ¼Ó¼ºÀº °¡»ó±â°èÀÇ ±â°è¾ð¾î¿¡¼ ¸Þ½îµå¸¦ ½ÇÇà½Ã۱â À§ÇÑ Á¤º¸¸¦
Á¦°øÇÑ´Ù. °¢
¸Þ½îµå¿¡ ´ëÇÑ Á¤º¸´Â ´ÙÀ½À» Æ÷ÇÔÇÑ´Ù:
ÀÚ¹Ù °¡»ó±â°è´Â ¿©¼¸°¡ÁöÀÇ ¿ø½Ã À¯ÇüÀ» Á¤ÀÇÇÑ´Ù:
ÀÚ¹Ù °¡»ó±â°è´Â ¶ÇÇÑ ¸î°¡ÁöÀÇ ¹è¿ À¯ÇüÀ» Á¤ÀÇÇÑ´Ù: ÀÌ À¯ÇüµéÀº integers,
longs, single floats, double floats, handles, booleans, bytes (8-bit
integers), shorts (16-bit integers) ±×¸®°í Unicode ¹®ÀÚµéÀÇ ¹è¿À»
Æ÷ÇÔÇÑ´Ù. ÇÚµéÀÇ ¹è¿Àº ±× ¹è¿ÀÌ ÀâÀ» ¼ö ÀÖ´Â °´Ã¼ÀÇ Å¬·¡½º¸¦ Ç¥½ÃÇÏ´Â
Ãß°¡ÀûÀÎ À¯ÇüÇʵ带 °®°í ÀÖ´Ù.
°¢ ¸Þ½îµå Ȱ¼ºÈ´Â ±¸ºÐµÈ Expression-Evaluation ½ºÅðú ·ÎÄà ·¹Áö½ºÅÍÀÇ
¼¼Æ®¸¦ °®°í ÀÖ´Ù. °¢ ·¹Áö½ºÅÍ¿Í °¢ ½ºÅà À§Ä¡´Â ÇϳªÀÇ integer, single
float, handle ¶Ç´Â return address¸¦ ÀâÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. longs¿Í double
floats´Â µÎ ¿¬¼ÓÀûÀÎ ½ºÅà À§Ä¡³ª µÎ ¿¬¼ÓÀûÀÎ ·¹Áö½ºÅÍ¿¡ ¸Â¾Æ µé¾î¾ß ÇÑ´Ù.
°¡»ó±â°è ¸í·É¾îµé("opcodes")Àº ³·Àº ¼ýÀÚ°¡ ¸Å°ÜÁø ·¹Áö½ºÅÍÀÇ À妽º¸¦
»ç¿ëÇÏ¸é¼ ·¹Áö½ºÅÍ¿¡¼ longs¿Í double floats¸¦ °¡¸®ÄÑ¾ß ÇÑ´Ù.
½ºÅðú ·¹Áö½ºÅÍÀÇ °´Ã¼µéÀº (¹Ýµå½Ã) ÅÂ±×µÈ °ÍÀº ¾Æ´Ï´Ù. °¡»ó±â°è ¸í·É¾î
Á¶ÇÕÀº
¿ÉÄÚµåµéÀÌ ´Ù¸¥ ¿ø½Ã µ¥ÀÌŸ À¯Çü¿¡¼ ÀÛµ¿Çϵµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¾î ineg, fneg,
lneg ±×¸®°í dnegÀÇ °¢ negate´Â ±× ½ºÅÃÀÇ °¡Àå À§ÂÊ¿¡ ÀÖ´Â ¾ÆÀÌÅÛµéÀÌÁö¸¸ °¢
½ºÅÃÀÇ °¡Àå À§ÂÊÀÇ ¾ÆÀÌÅÛÀÌ °¢°¢ ¼ø¼´ë·Î integer, single float, long ¶Ç´Â
double floatÀ̶ó°í ¹Þ¾ÆµéÀδÙ.
¹ÙÀÌÆ®ÄÚµå ¸í·É¾îµéÀº ¸î°¡Áö ¹üÁÖ·Î ³ª´· ¼ö ÀÖ´Ù:
°¢ ¹ÙÀÌÆ®ÄÚµå´Â 0 ¶Ç´Â Ãß°¡ÀûÀÎ ¿ÀÆÛ·£µå Á¤º¸ÀÇ ¹ÙÀÌÆ®°¡ µÚ¿¡ µû¶ó ¿À´Â
1¹ÙÀÌÆ®
¿ÉÄÚµå·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. µÎ °¡ÁöÀÇ "Å×ÀÌºí °Ë»ö" ¸í·É¾î ¿¡ ´ëÇÑ ¿¹¿Ü¸¦
Á¦¿ÜÇÏ°í¼´Â ¸ðµç ¸í·É¾îµéÀº ¿ÉÄڵ忡 ±Ù°ÅÇÑ Á¤ÇØÁø ±æÀ̸¦ °®°Ô µÈ´Ù.
°Ë»ç ÇÁ·Î¼¼½º(The Verification
Process)
°Ë»ç±â´Â 4°¡ÁöÀÇ °úÁ¤À» ÅëÇØ ÀÛµ¿ÇÑ´Ù.
°úÁ¤ 1
ù¹øÂ° °úÁ¤Àº °¡Àå °£´ÜÇÑ °úÁ¤ÀÌ´Ù. ÀÌ °úÁ¤Àº ±× Ŭ·¡½º°¡ ÀÎÅÍÇÁ¸®ÅͷΠóÀ½
ÀÐÇôÁ³À» ¶§ ÀϾÙ.
ÀÌ °úÁ¤Àº Ŭ·¡½ºÆÄÀÏÀÌ Å¬·¡½ºÆÄÀÏÀÇ Æ÷¸ËÀ» °®Ãß°í ÀÖ´ÂÁö È®ÀÎÇÑ´Ù. ù¹øÂ°
¸î
¹ÙÀÌÆ®°¡ ¿Ã¹Ù¸¥ ¸ÅÁ÷ ³Ñ¹ö°ªÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù. ¸ðµç ÀÎ½ÄµÈ ¼Ó¼ºÀÌ ÀûÀýÇÑ
±æÀÌÀ̾î¾ß ÇÑ´Ù. Ŭ·¡½ºÆÄÀÏÀº Àß·ÁÁö°Å³ª ³¡ ºÎºÐ¿¡ Ãß°¡ÀûÀÎ ¹ÙÀÌÆ®°¡
À־ ¾È µÈ´Ù. »ó¼öÇ®Àº ¾Ë¾Æº¼ ¼ö ¾ø´Â Á¤º¸¸¦ °®°í ÀÖ¾î¾ß ¾È µÈ´Ù.
°úÁ¤ 2
µÎ¹øÂ° °úÁ¤¿¡¼´Â °Ë»ç±â°¡ Ŭ·¡½ºÆÄÀÏÀÇ Æ÷¸Ë¿¡ ´ëÇØ¼ Á» ´õ ±íÀÌ °Ë»ç¸¦ ÇØ
º»´Ù.
°Ë»ç±â´Â ¹ÙÀÌÆ®Äڵ带 °Ë»çÇÏÁö ¾Ê°í ¼öÇàÇÒ ¼öÀÖ´Â ¸ðµç °Ë»ç¸¦ ¼öÇàÇÑ´Ù.
°úÁ¤ 2¿¡¼ ã¾ÆÁö´Â ¿¡·¯µéÀº ´ÙÀ½ÀÇ °ÍµéÀÌ´Ù:
Çʵå¿Í ¸Þ½îµå ·¹ÆÛ·±½ºµéÀÌ °Ë»çµÉ ¶§¿¡ ÀÌ °úÁ¤Àº ÁÖ¾îÁø Çʵå¿Í ¸Þ½îµå°¡
½ÇÁ¦·Î
ÁÖ¾îÁø Ŭ·¡½º¿¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ÀØÀ¸¸é ¾ÈµÈ´Ù; ÀÌ
°úÁ¤¿¡¼´Â À¯Çü ½Ã±×³ÊÃİ¡ ½ÇÁ¦ Á¸ÀçÇϴ Ŭ·¡½º¸¦ °¡¸®Å°´ÂÁö ¿©ºÎµµ
È®ÀÎÇÏÁö ¾Ê´Â´Ù. ±×º¸´Ù´Â ±×Àú ±× ½Ã±×³ÊÃİ¡ ±ÔÄ¢¿¡ ¸Â´Â ½Ã±×³Êó·Î
"º¸¿©¾ß" ÇÏ´Â °ÍÀÌ´Ù. Á» ´õ ÀÚ¼¼È÷ È®ÀÎÇÏ´Â °ÍÀº °úÁ¤ 3À̳ª 4¿¡¼
ÀÌ·ç¾îÁø´Ù.
°úÁ¤ 3
ÀÌ °úÁ¤Àº Ŭ·¡½º °Ë»ç¿¡¼ °¡Àå º¹ÀâÇÑ °úÁ¤ÀÌ´Ù. °¢ ¸Þ½îµå¿¡ ´ëÇÑ
¹ÙÀÌÆ®ÄÚµåµéÀÌ
°Ë»çµÈ´Ù. µ¥ÀÌŸÈ帧 ºÐ¼®ÀÌ °¢ ¸Þ½îµå¿¡ ´ëÇØ¼ ¼öÇàµÈ´Ù. ÇÁ·Î±×·¥ »óÀÇ
ÁÖ¾îÁø
¾î¶°ÇÑ À§Ä¡¿¡¼, ±× ÁöÁ¡À¸·Î µµ´ÞÇϱâ À§ÇØ ¾î¶°ÇÑ ÄÚµå°æ·Î°¡ ÀâÇôÁöµç
°Ë»ç±â´Â Ç×»ó ´ÙÀ½ÀÇ Ç׸ñµéÀ» È®ÀÎÇÑ´Ù:
ÀÌ °úÁ¤¿¡ ´ëÇÑ Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ¹ÙÀÌÆ®ÄÚµå °Ë»ç±â(The
Bytecode Verifier)¼½¼Ç¿¡ ³ª¿Í ÀÖ´Ù.
°úÁ¤ 4
È¿À²À» ³ôÀ̱â À§Çؼ °úÁ¤ 3¿¡¼ ¼öÇàµÉ ¼ö ÀÖ¾ú´ø ¸î°¡Áö °Ë»çµéÀÌ ½ÇÁ¦·Î ±×
Äڵ尡 ½ÇÇàµÉ ¶§±îÁö ¹Ì·ç¾îÁø´Ù. °Ë»ç±âÀÇ °úÁ¤ 3Àº ±× Ŭ·¡½ºÆÄÀÏÀÌ ¹Ýµå½Ã
·ÎµùµÇ¾î¾ß µÉ ¶§±îÁö Ŭ·¡½ºÆÄÀÏÀ» ·ÎµùÇÏÁö ¾Ê´Â´Ù.
¿¹¸¦ µé¾î ¸¸ÀÏ ¾î´À ¸Þ½îµå°¡ À¯Çü foobarTypeÀÇ °´Ã¼¸¦ µ¹·ÁÁÖ´Â ¶Ç´Ù¸¥
¸Þ½îµå¸¦
È£ÃâÇÏ°í ±× °´Ã¼°¡ °°Àº À¯ÇüÀÇ Çʵå·Î °ð¹Ù·Î ÇÒ´çµÈ´Ù¸é °Ë»ç±â´Â À¯Çü
foobarTypeÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÏ´Â ¼ö°í¸¦ ÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ±× °´Ã¼°¡ À¯Çü
anotherTypeÀÇ Çʵå·Î ÇÒ´çµÈ´Ù¸é foobarType°¡ anotherTypeÀÇ ¼ºêŬ·¡½ºÀÎÁö¸¦
È®ÀÎÇϱâ À§ÇÏ¿©
foobarType¿ÍanotherType µÑ ´ÙÀÇ Á¤ÀÇ(definition)°¡ ·ÎµåµÇ¾î¾ß ÇÑ´Ù.
¾î¶² Ŭ·¡½º¸¦ ·¹ÆÛ·±½ºÇÏ´Â ¸í·É¾î°¡ óÀ½À¸·Î ½ÇÇàµÇ¸é °Ë»ç±â´Â ´ÙÀ½ÀÇ
°ÍµéÀ»
ÇÑ´Ù:
¸í·É¾î°¡ óÀ½À¸·Î ¸Þ½îµå¸¦ È£ÃâÇϰųª Çʵ带 ¾ï¼¼½ºÇϰųª º¯°æÇÏ¸é °Ë»ç±â´Â
´ÙÀ½ÀÇ °ÍµéÀ» ÇÑ´Ù:
°Ë»ç±âÀÇ ÀÌ °úÁ¤Àº ½ºÅà °´Ã¼ÀÇ À¯ÇüÀº Á¶»çÇÒ Çʿ䰡 ¾ø´Ù. ±× Á¶»ç´Â °úÁ¤
3¿¡¼ ÀÌ¹Ì ¼öÇàµÇ¾ú´Ù.
Á¶»ç°¡ ¼öÇàµÈ ÀÌÈÄ¿¡ ¹ÙÀÌÆ®ÄÚµå ½ºÆ®¸²ÀÇ ¸í·É¾î´Â ´Ù¸¥ ÇüÅÂÀÇ ¸í·É¾î·Î
´ëÄ¡µÈ´Ù.
¿¹¸¦ µé¾î ¿ÉÄÚµå new´Â new_quick·Î ´ëÄ¡µÈ´Ù. ÀÌ ¶Ç´Ù¸¥ ÇüÅÂÀÇ ¸í·É¾î´Â ÀÌ
¸í·É¾î¿¡ ´ëÇÑ Á¶»ç°¡ ÀÌ¹Ì ¼öÇàµÇ¾ú°í ´Ù½Ã Á¶»çÇÒ Çʿ䰡 ¾ø´Ù´Â °ÍÀ»
³ªÅ¸³½´Ù. °úÁ¤ 3¿¡¼ ÀÌ _quick¸í·É¾î°¡ ³ªÅ¸³ª´Â °ÍÀº À߸øµÈ °ÍÀÌ´Ù.
SecurityManager´Â Á¶°Ç¿¡ ¸Â°Ô ÀÚ¿ø¿¡ Á¢±ÙÀ» Çã¿ëÇϴµ¥ ±Øµµ·Î À¯¿¬Çϰí
°·ÂÇÑ
¹æ½ÄÀ» º¸ÀåÇØ ÁÖ°í ÀÖ´Ù. Á¢±ÙÀ» üũÇÏ´Â SecurityManagerÀÇ ¸Þ½îµå´Â Á¶°ÇÀû
Á¢±Ù Á¦¾î Á¤Ã¥À» ±¸ÇöÇϴµ¥ ÇÊ¿äÇÑ ÀÎÀÚµé·Î ³Ñ°ÜÁö´Âµ¥, ÀÌ´Â ÄÚµåÀÇ
Ãâó(·ÎÄÃÀ̳ª ³×Æ®¿öÅ©) °áÁ¤ÇÏ´Â ½ÇÇà ½ºÅÃÀ» üũÇÏ´Â ´É·ÂÀ» °¡Áö´Â °Í°ú
¸¶Âù°¡ÁöÀÌ´Ù.
ÀáÀçÀûÀ¸·Î À§ÇèÇÑ ½Ã½ºÅÛ ÀÚ¿øÀ» »ý¼ºÇÒ °¡´É¼ºÀÌ ÀÖ´Â ¶óÀ̺귯¸® Äڵ忡 ´ëÇÑ
Ç¥ÁØÀûÀÎ Á¢±Ù ¹æ½ÄÀº À§ÇèÇÏÁö ¾ÊÀº ¿¬»êµé¿¡ ´ëÇØ¼¸¸ Á¢±ÙÀ» Çã¿ëÇϰí Á¦ÇѵÈ
±â¹Ý¿¡¼¸¸ Á¢±Ù°¡´ÉÇÑ ½Ã½ºÅÛ È£Ãâ¿¡ ´ëÇØ ½ÃÅ¥¸®Æ¼ °Ë»ç¸¦ ¼öÇàÇÏ´Â
°ÍÀÌ´Ù.(SecurityManager¸¦ »ç¿ë)
SecurityManager´Â ÇÙ½ÉÀûÀÎ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» ÅëÁ¦ÇÑ´Ù. À̰ÍÀº
JEWBÀÇ
±¸ÇöÀÚ°¡ SecurityManager¸¦ ¼ºêŬ·¡½ÌÇÏ°í Æ¯Á¤ÇÑ ¸Þ½îµå¸¦ ¿À¹ö¶óÀ̵ùÇϰųª
»õ·Î¿î ¹öÁ¯À» ½Ã½ºÅÛSecurityManager·Î½á ¼³Ä¡ÇÏ´Â °Í¿¡ ÀÇÇØ ƯÁ¤ÇÑ º¸¾È
Á¤Ã¥À» ±¸ÇöÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇØÁØ´Ù. ¼ºêŬ·¡½ºµÈ SecurityManager´Â º¸¾È
Á¤Ã¥À» ±¸ÇöÇϱ⠶§¹®¿¡, À¥ºê¶ó¿ìÁ®ÀÇ SecurityManagerÀÇ ¹öÁ¯ÀÌ Á¤È®È÷ ±¸ÇöµÈ
°ÍÀÌ ¸Å¿ì Áß¿äÇÏ°Ô µÈ´Ù. ±Ø´ÜÀûÀ¸·Î, JEWB°¡ ½Ã½ºÅÛ SecurityManager¸¦
¼³Ä¡ÇÏÁö ¾Ê¾ÒÀ» °æ¿ì¿¡´Â, ¾ÖÇø´Àº ·ÎÄà ÀÚ¹Ù ¿¡Çø®ÄÉÀ̼ǰú °°Àº Á¢±Ù
±ÇÇÑÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù.
À¥ ºê¶ó¿ìÁ®ÀÇ ½ÃÅ¥¸®Æ¼ Á¤Ã¥Àº SecurityManagerÀÇ ¼ö´ÜµéÀÌ ¸Å¿ì À¯¿¬ÇÑ
ÀÎÅÍÆäÀ̽º¸¦
Á¦°øÇϱ⠶§¹®¿¡ ÀÓÀÇÀûÀ¸·Î º¹ÀâÇØÁú ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥µÉ ¼ö ÀÖ´Ù¸é ¾î¶°ÇÑ
½ÃÅ¥¸®Æ¼
Á¤Ã¥µµ »ç¿ëµÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î, ½ÃÅ¥¸®Æ¼ Á¤Ã¥Àº SecurityManager°¡
¾î¶²
»ç¿ëÀÚ°¡ ¾î¶² Á¢±ÙÀ» ½ÃµµÇß´ÂÁö¿¡ ´ëÇØ¼µµ Á¶»çÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.
ÀÚ¹Ù°¡ Á¦°øÇÏ´Â executable content¿¡ ´ëÇÑ º¸¾È ¸ðµ¨¿¡ ´ëÇÑ ºÐ¼®Àº µÎ
´Ü¶ôÀ¸·Î ÇàÇØÁú
°ÍÀÌ´Ù. ù¹øÂ° ´Ü¶ô¿¡¼´Â, ÀÚ¹ÙÀÇ °í¼öÁØ ¼³°è°¡ ³íÀÇµÉ °ÍÀÌ´Ù. µÎ¹øÂ°
´Ü¶ô¿¡¼´Â,
±¸ÇöÀÇ º¸´Ù ƯÁ¤ÇÑ ºÎºÐÀÇ À¯¿ë¼º¿¡ ´ëÇØ¼ ³íÀÇµÉ °ÍÀÌ´Ù.
ÀÚ¹ÙÀÇ º¸¾È ¸ðµ¨Àº °ÅÀÇ ÀüÀûÀ¸·Î ´Ù¿î·ÎµåµÈ ¹ÙÀÌÆ®Äڵ带 °Ë»çÇÏ´Â ´É·Â¿¡
ÀÇÁ¸ÇÑ´Ù,
±× ´É·ÂÀº ÀǵµµÇÁö ¾ÊÀº ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» ±ÝÁöÇÒ ¼ö ÀÖµµ·Ï ºÐ·ùÇϰí
¶óÀ̺귯¸®¸¦ ¾µ
¼ö ÀÖ´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¶ÇÇÑ, À¥ ºê¶ó¿ìÁ®ÀÇ °³¹ßÀÚµéÀÌ ¿ì¼öÇÑ º¸¾È Á¤Ã¥À»
±¸ÇöÇϰí
Äڵ带 ¾µ ¼ö ÀÖ´Â °ÍÀ» ÀǹÌÇÑ´Ù.
ÀÚ¹Ù ÇÁ·Î±×·¥À» ÄÄÆÄÀÏµÈ ¹ÙÀÌÆ®ÄÚµå ÇüÅ·Πº¯È¯Çϱâ·Î ÇÑ °áÁ¤Àº ½ÃÅ¥¸®Æ¼
Ãø¸é¿¡¼´Â Àǹ®À» ºÒ·¯ÀÏÀ¸Å°´Â »çÇ×ÀÌ´Ù. ½Ã½ºÅÛÀº ÀÚ¹Ù ¼Ò½ºÄڵ尡 ¹ÙÀÌÆ®
ÄÚµå ´ë½Å¿¡
¾²ÀÏ ¼ö ÀÖ´Ù¸é ´õ¿í ¾ÈÀüÇÒ °ÍÀÌ´Ù. ¹ÙÀÌÆ®ÄÚµåÀÇ »ç¿ëÀº ¹ÙÀÌÆ®ÄÚµåÀÇ °ËÁõ
°úÁ¤À» ÇÊ¿ä·Î
ÇÑ´Ù. ¸¸ÀÏ ÀÚ¹Ù¼Ò½ºÄڵ尡 ¾²¿´´Ù¸é, ÄÚµåÀÇ ¾ÈÀü¼ºÀº ¼Ò½º¸¦ Á÷Á¢ÀûÀ¸·Î
ÀÎÅÍÇÁ¸®ÆÃÇϰųª ÀÚ¹ÙÄڵ带 ·ÎÄà »ó¿¡¼ ½Å·ÚÇÒ ¼ö ÀÖ´Â ÄÄÆÄÀÏ·¯¸¦
»ç¿ëÇÔÀ¸·Î½á
º¸ÀåµÉ ¼ö ÀÖ¾úÀ» °ÍÀÌ´Ù. À̰ÍÀº ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ ´Ü¼øÇÑ Á¢±ÙÀÏ ¼ö Àִµ¥
ÀÌ´Â ÀÚ¹Ù
ÄÄÆÄÀÏ·¯´Â ÀÌ¹Ì ½Å·ÚÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.(ÀÚ¹Ù ½ÇÇà ½Ã½ºÅÛÀº ·ÎÄÃ
¹ÙÀÌÆ®Äڵ忡
´ëÇØ¼´Â °Ë»ç¸¦ ¼öÇàÇÏÁö ¾Ê´Â´Ù.) ´Ù¸¥ ¾ð¾î·Î µÈ ÇÁ·Î±×·¥(¹ÙÀÌÆ®ÄÚµå)ÀÌ
ȣȯ¼ºÀÌ
Àִ°¡¿¡ ´ëÇÑ Ã¼Å©¸¦ ¼öÇàÇÏ´Â ÇÁ·Î±×·¥¿¡ ´ëÇÑ Ã·°¡´Â ½Ã½ºÅÛ¿¡ ¶Ç´Ù¸¥
½ÇÆÐÀÇ °¡´É¼ºÀ»
´õÇÑ´Ù.
º¸¾È¼ºÀÖ´Â ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇÏ´Â °Í
¿ì¼öÇÑ ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇÏ°í °ËÁõÇÏ´Â °úÁ¤Àº ÀÚ¹ÙÀÇ ½ÃÅ¥¸®Æ¼¿¡ ÀÖ¾î °¡Àå
Áß¿äÇÏ´Ù°í Çϴµ¥¿¡´Â À̰ßÀÌ ÀÖÀ» ¼ö ¾ø´Ù. Drew Dean°ú Dan Wallach°¡ ¾´
Security Flow in
the HotJava Web Browser¶ó´Â ³í¹®¿¡´Â ÇÖÀÚ¹Ù°¡ ¶óÀ̺귯¸® ±¸Çö»óÀÇ ¿¡·¯·Î
ÀÎÇØ ºØ±«µÉ
¼ö ÀÖ´Â ÁÁÀº ¿¹µéÀ» º¸¿©ÁÖ°í ÀÖ´Ù. Dean°ú Wallach´Â ÇÖÀÚ¹Ù 1.0 alpha3
¶óÀ̺귯¸®ÀÇ
±¸Çö»óÀÇ ¾àÁ¡À» Áö´Ï°í ÀÖÀ½À» ÁöÀûÇÑ´Ù. ±×µéÀº ¸¹Àº ¼öÀÇ º¯¼ö¿Í ¸Þ½îµå°¡
ÆÛºí¸¯À¸·Î
Á¢±Ù °¡´ÉÇϸç, ½ÃÅ¥¸®Æ¼ üũ¸¦ ÇÏÁö ¾Ê¾Æ¼, ½ÃÅ¥¸®Æ¼ÀÇ ±¸¸ÛÀ» Çã¿ëÇÏ´Â °ÍÀ»
Áõ¸íÇß´Ù.
ÀÌ·¯ÇÑ Á¾·ùÀÇ ¹®Á¦µéÀÌ ÀÚ¹ÙÀÇ º£Å¸ ¹öÁ¯ ¶óÀ̺귯¸®µé¿¡¼´Â ÇØ°áÀÌ
ÀÌ·ç¾îÁ³Áö¸¸,
±×·¯ÇÑ ¿¡·¯µéÀº Á¤È®ÇÑ °ËÁõÀÌ ´Ü¼øÇÑ ÀÛ¾÷ÀÌ ¾Æ´ÔÀ» º¸¿©ÁÖ´Â °ÍÀÌ´Ù.
±×·¯¹Ç·Î ÀÚ¹ÙÀÇ ½ÃÅ¥¸®Æ¼´Â »ó´çÈ÷ Å« ÄÚµåµéÀÇ Á¤È®ÇÑ ±¸Çö¿¡ ÀÇÁ¸ÇÑ´Ù.
ÀÌ·¯ÇÑ »óȲÀº
ÀÚ¹ÙÀÇ ¼³°è°¡ ¸Å¿ì À¯¿¬ÇÑ ½ÃÅ¥¸®Æ¼ ¸ðµ¨À» Á¦°øÇϰíÀÚ ÇÑ °á°úÀÌ´Ù.
ÇÁ·Î±×·¡¸Ó¿¡°Ô
½Ã½ºÅÛ ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ Á¶ÀÛÀ» °¡´ÉÇÏ°Ô ÇÔÀ¸·Î½á, ÀÚ¹Ù Á¦ÀÛÀÚµéÀº ÀáÀçÀûÀÎ
º¸¾ÈÀÇ
Ãë¾à¼ºÀ» ³ëÃâÇÏÁö¸¸ À¯¿¬ÇÔÀ» Á¦°øÇß´Ù.
ÀÚ¹Ù ½ÃÅ¥¸®Æ¼ÀÇ À¯È¿¼ºÀ» °Ë»çÇϱâ À§Çؼ´Â ¾ð±ÞµÈ °¢°¢ÀÇ ÀÚ¿øµé¿¡ ´ëÇØ¼
Á¦¾îÇÏ´Â
ÀûÀýÇÑ ¹æ¹ýÀÌ Àִ°¡¿¡ ´ëÇÑ °Ë»ç¸¦ ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù.
ÀÚ¿øµé¿¡ ´ëÇÑ Á¢±Ù Á¦¾î¿¡ ´ëÇÑ ºÐ¼®À» ¹ÙÅÁÀ¸·Î, ÀÚ¹Ù°¡ 2.2¿¡¼ ¾ð±ÞµÈ
´Ù¾çÇÑ °ø°Ý¿¡
´ëÇØ¼ ¾î¶»°Ô ¹æ¾îÇÒ ¼ö Àִ°¡¸¦ °í·ÁÇØ º»´Ù.
1. ¼Ò°³(Introduction)
ÀÚ¹Ù´Â ½ã¸¶ÀÌÅ©·Î½Ã½ºÅÛ »ç¿¡¼ °³¹ßµÈ °£°áÇÏ°í °´Ã¼ÁöÇâÀûÀ̰í, Ç÷§Æû¿¡
¹«°üÇÑ
½ÇÇàÀÌ º¸ÀåµÇ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡ Áß °¡Àå Áß¿äÇÑ °ÍÀº
Ç÷§Æû¿¡ ¹«°üÇÑ ½ÇÇà Áï Æ÷Åͺí ÇÏ´Ù´Â °ÍÀÌ´Ù. Æ÷ÅͺíÇÏ´Ù´Â °ÍÀº
³×Æ®¿÷»ó¿¡¼ ÇÁ·Î±×·¥µé ¶ÇÇÑ µ¿ÀûÀ¸·Î ·ÎµåµÇ°í ·ÎÄÃÇÏ°Ô ½ÇÇàµÈ´Ù´Â
°ÍÀÌ´Ù.
ƯÈ÷, ¾ÖÇø´À̶ó°í ÇÏ´Â ÀÛÀº ÇÁ·Î±×·¥µéÀÌ ·ÎµåµÇ°í »ç¿ëÀÚÀÇ À¥ºê¶ó¿ìÁ®¿¡¼
½ÇÇàµÇ´Â µ¿¾È »ç¿ëÀÚ´Â À¥À» "¼ÇÎ"ÇÒ ¼ö ÀÖ´Ù.(ÇÖÀÚ¹Ù°¡ ÀÚ¹Ù¾ð¾î·Î ¾²¿©Áø
±×·¯ÇÑ ºê¶ó¿ìÁ®À̰í, ³×½ºÄÉÀÌÇÁ 2.0Àº ±×·¯ÇÑ
ÀÚ¹Ù¾ÖÇø´À» Áö¿øÇÑ´Ù.) ÀÌ·¯ÇÑ °³³äµéÀÌ ¸Å¿ì °·ÂÇÑ °ÍÀº Ʋ¸²¾øÁö¸¸, »õ·Î¿î
º¸¾È
¹®Á¦¸¦ ÃÊ·¡ÇÏ´Â °Í ¶ÇÇÑ È®½ÇÇÏ´Ù. ÀÚ¹Ù¾ð¾î¿Í ½ÇÇà ½Ã½ºÅÛµéÀº(¿©±â¿¡´Â
¶óÀ̺귯¸®, ÄÄÆÄÀÏ·¯, ¹ÙÀÌÆ®ÄÚµå ÀÎÅÍÇÁ¸®Å͵îÀÌ Æ÷ÇÔµÊ) ¼±»ç°¡ ÀÚ¹ÙÀÇ
¾ÈÀü¼ºÀ» ÁÖÀåÇßµíÀÌ ÀÌ·¯ÇÑ º¸¾È»óÀÇ ¹®Á¦µéÀ» ÇØ°áÇϱâ À§ÇÑ ½Ãµµ¸¦ Çϰí
ÀÖ´Ù.1.1. Excutable Content¿¡ ´ëÇÑ °íÂû
EC´Â ½ÇÇà °¡´ÉÇÑ Äڵ带 µ¥ÀÌŸ¿Í ÇÔ²² º¸³¾ ¼ö ÀÖ´Ù´Â °³³äÀÌ´Ù. EC´Â À¥¿¡
°·ÂÇÑ
»óÈ£Àۿ뼺À» ºÎ¿©ÇÒ ¼ö Àֱ⠶§¹®¿¡ ÁÖ¸ñÀ» ¹Þ°í ÀÖ´Ù. Áö³ ¼ö³â°£ À¥ÀÇ
»ç¿ëÀº Æø¹ßÀûÀ¸·Î Áõ°¡Çߴµ¥, ¿©±â¿¡´Â À¥¿¡ ±âÁ¸ÀÇ ÀÀ¿ëÇÁ·Î±×·¥À» À¥¿¡ ¸Â°Ô
¼öÁ¤ÇÏ·Á´Â ½Ãµµ ¿ª½Ã Áõ°¡ÇؿԴÙ. Æû°ú ½ºÅ©¸³Æ®¸¦ ÅëÇØ¼ ¸¹Àº ±â´ÉÀ» À¥ÀÌ
Ãß°¡ÇØ ¿ÔÁö¸¸, ÀÌ·¯ÇÑ ¹æ¹ýÀº ÀÌ¹Ì ÇѰ踦 º¸À̰í ÀÖÀ¸¸ç, »ç¿ëÀÚ°¡ ·ÎÄÃ
È£½ºÆ®»ó¿¡¼ ÇÁ·Î±×·¡¹Ö¾ð¾î·Î Â¥¿©Áø ÇÁ·Î±×·¥À» À¥ ºê¶ó¿ìÁ®¸¦ ÀÌ¿ëÇØ ½ÇÇàÇÒ
¼ö ÀÖ°Ô µÉ °æ¿ì À¥ºê¶ó¿ìÁ®ÀÇ ´É·ÂÀº ±âÁ¸ÀÇ ¾îÇø®ÄÉÀ̼ǵé°ú ÇÊÀûÇϰÔ
µÈ´Ù.
2. ¹®Á¦Á¡µé
ÀÚ¹Ù ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ ³íÀÇ¿¡ ¾Õ¼, EC¿¡ ÀÇÇØ ¹ß»ýµÉ ¼ö ÀÖ´Â ¹®Á¦Á¡µé¿¡ ´ëÇÑ
ÀÌÇØ°¡ ¼±ÇàµÇ¾î¾ß¸¸ ÇÑ´Ù. ECÀÇ ÀåÁ¡Àº ¼ÒÇÁÆ®¿þ¾îÀÇ ½ÇÇà ´É·Â°ú Á¾·ùÀÇ
´Ù¾ç¼ºÀÇ Áõ°¡¿¡¼ ºñ·ÔµÈ´Ù°í ÇÒ ¼ö ÀÖ´Ù.
2.1.¾î¶°ÇÑ °ÍµéÀÌ Á¦¾îµÇ¾î¾ß Çϴ°¡?
½ÇÇàµÉ ÇÁ·Î±×·¥À» À§ÇÑ ¾ÈÀüÇÑ È¯°æÀÇ Áß¿äÇÑ ºÎºÐÀº ÀÚ¿øÀ» ±¸ºÐÇÏ¿© ÀÌ·¯ÇÑ
ÀÚ¿øµé¿¡ ´ëÇØ ƯÁ¤ÇÑ ÇüÅ·ΠÁ¦ÇÑµÈ Á¢±ÙÀ» Çã¿ëÇÏ´Â °ÍÀÌ´Ù. µµÇ¥ 1Àº ±×·¯ÇÑ
ÀÚ¿øµéÀÇ ºÎºÐÀûÀÎ ¿¹¸¦ º¸¿©Áִµ¥, ÀÚ¿øÀÇ À̿밡´É¼º¿¡ ÀÇÇÑ °ø°ÝÀÇ Çüŵµ
¸¶Âù°¡Áö·Î ºÐ·ùÇϰí ÀÖ´Ù. °¡´ÉÇÑ ³× °¡Áö °ø°ÝÀÇ Á¾·ù´Â:
ÀÌ µµÇ¥°¡ °¡´ÉÇÑ ¸ðµç °ø°ÝÀ» ¸Á¶óÇÑ °ÍÀÌ ¾Æ´Ï¶ó´Â °Í¿¡ ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ´Â
´ÜÁö
ÁÖ¾îÁø ÀÚ¿ø¿¡ ´ëÇÑ °ø°Ý¿¡ ´ëÇØ ¿¹¸¦ µé°í ÀÖ´Â °Í¿¡ ºÒ°úÇÏ´Ù. ¿¹¸¦ µé¸é,
½ºÇªÇÎÇÁ·Î±×·¥Àº(»ç¿ëÀÚ¿¡°Ô ½ÇÁ¦¿Í ´Ù¸£°Ô º¸ÀÌ´Â ÇÁ·Î±×·¥) ¿ø·¡ÀÇ
ÇÁ·Î±×·¥°ú °°Àº ÀÚ¿øÀ» »ç¿ëÇÏ´Â °Íó·³ »ç¿ëÀÚ¸¦ ¼ÓÀ̱â À§ÇØ ¸ðµç ÀÚ¿øÀ»
°ø°ÝÀ» À§ÇØ »ç¿ëÇϰíÀÚ ÇÒ °ÍÀÌ´Ù.
ÀÚ¿ø
ÀºÆó
À̿밡´É¼º
¹«°á¼º
ºÒÄè°¨ À¯¹ß
ÆÄÀÏ ½Ã½ºÅÛ
V
V
V
V
³×Æ®¿öÅ©
V
V
¸Þ¸ð¸®
V
V
V
V
Ãâ·Â ÀåÄ¡
V
ÀÔ·Â ÀåÄ¡
V
V
V
ÇÁ·Î¼¼½º Á¦¾î
V
V
»ç¿ëÀÚ È¯°æ
V
V
V
½Ã½ºÅÛ È£Ãâ
V
V
V
V
2.2. ½Ã³ª¸®¿Àµé
¿©±â¿¡¼´Â ¾ÇÀÇÀûÀÎ ÇÁ·Î±×·¥ÀÌ ¼öÇàÇÒ ¼ö ÀÖ´Â °ø°ÝÀÇ À¯ÇüÀ» Ç¥½ÃÇÏ´Â ¸î°¡Áö
½Ã³ª¸®¿À¿¡ ´ëÇÑ ¿¹¸¦ º¸À̰íÀÚ ÇÑ´Ù. °ø°ÝÀÇ ºÐ·ù´Â ÀÌ¹Ì ¾ð±ÞµÈ °Í°ú
¸¶Âù°¡ÁöÀÌ´Ù. ¹°·Ð °¡´ÉÇÑ ¸ðµç °ø°ÝÀÌ Æ÷ÇÔµÈ °ÍÀº ¾Æ´Ï°í, ´ÜÁö ¹ß»ýÇÒ ¼ö
ÀÖ´Â ¹®Á¦¿¡ ´ëÇÑ °¨À» Á¦½ÃÇϱâ À§ÇÑ °ÍÀÌ´Ù.
3. ÀÚ¹ÙÀÇ ½ÃÅ¥¸®Æ¼ ¸ÞÄ¿´ÏÁò
ÀÚ¹Ù´Â ÇÁ·Î±×·¡¹Ö¾ð¾îÀÌ´Ù. ÀÏ´Ü ÀÚ¹Ù°¡ À¥°ú ¹«°üÇÑ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î
°³¹ßȯ°æÀ¸·Î
¾²ÀÏ ¼öµµ ÀÖ°í ¾ÖÇø´°³¹ß¿ëÀ¸·Îµµ ¾²ÀÏ ¼ö ÀÖ´Ù´Â »ç½ÇÀ» ±â¾ïÇØ¾ß ÇÑ´Ù.
±×·¯¹Ç·Î ÇÊÀÚÀÇ ÀÚ¹Ù ½ÃÅ¥¸®Æ¼¿¡ ´ëÇÑ ³íÀÇ´Â ½ÇÁ¦·Î EC¿¡ ´ëÇÑ ÀÚ¹Ù ¾ð¾îÀÇ
»ç¿ë¿¡ ´ëÇÑ °ÍÀÌ´Ù.
3.1. ÀÚ¹Ù ¾ð¾î¿¡ ´ëÇÑ °íÂû
ÀÚ¹Ù´Â C++°ú ºñ½ÁÇÑ °´Ã¼ ÁöÇâ ¾ð¾îÀÌ´Ù. ½ÃÅ¥¸®Æ¼ °üÁ¡¿¡¼ º» Áß¿äÇÑ ¾ð¾îÀû
Ư¡Àº º¯¼ö¿Í ¸Þ½îµå¿¡ ´ëÇØ¼ Ŭ·¡½º ³»ºÎ¿¡¼ Á¢±Ù Á¦¾î¸¦ »ç¿ëÇÏ´Â °Í, ŸÀÔ
Á¤ÀǵéÀÇ ¾ÈÀü¼º, ¾ð¾îÀÇ µ¥ÀÌÅÍ ÇüÀ¸·Î¼ Æ÷ÀÎÅÍÀÇ ºÎÀç, °¡ºñÁö ÄÝ·º¼ÇÀÇ
»ç¿ë(ÀÚµ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÀçºÐ¹è), ºÐ¸®µÈ ³×ÀÓ½ºÆäÀ̽ºÀÇ »ç¿ëµîÀÌ´Ù.
3.2. ¶óÀ̺귯¸®µé
½ºÅÄ´Ùµå ÀÚ¹Ù ½ÇÇà ȯ°æÀº ´Ù¾çÇÑ À¯¿ëÇÑ ¶óÀ̺귯¸®µé·Î °¡´ÉÇØÁö´Âµ¥, ÀÌ´Â
ÆÄÀÏ
½Ã½ºÅÛ¿¡ Á¢±ÙÇϰųª, ³×Æ®¿öÅ©¿¡ Á¢±ÙÇϴ°Í, À©µµ¿ì ŸŶÀ̳ª À̿ܿ¡ ´Ù¾çÇÑ
ÅøÀ»
Æ÷ÇÔÇÑ´Ù. ¶óÀ̺귯¸®ÀÇ Á¤È®ÇÑ ºÐ·ù´Â ¸Å¿ì Áß¿äÇÏ´Ù. ¾ð¾î ÀÚü´Â ¾ÈÀüÇÑ
¶óÀ̺귯¸®¸¦ Á¦°øÇÒ ´É·ÂÀ» Áö´ÏÁö¸¸, ¶óÀÌÆ®·¯¸® Äڵ尡 ºÐ·ùµÇÁö¾Ê°í Á¤È®È÷
¾²¿©ÁöÁö ¾ÊÀ» °æ¿ì ½Ã½ºÅÛÀÌ ¾ÈÀüÇÒ ¼ö´Â ¾ø´Ù. ¶óÀ̺귯¸®°¡ ÀÚ¹Ù ½ÇÇà½ÃÀÇ
2.1¿¡¼ ¾ð±ÞÇÑ ½Ã½ºÅÛ ÀÚ¿ø¿¡ ´ëÇÑ Á¢±ÙÀ» °¡´ÉÇÏ°Ô ÇÏ´Â ÇÑ ºÎºÐÀ̱⠶§¹®¿¡,
¶óÀ̺귯¸®ÀÇ Á¤È®ÇÑ ±¸ÇöÀº ÇÙ½ÉÀûÀÎ Á߿伺À» Áö´Ñ´Ù.
°Ë»ç±â´Â ÀÚ¹ÙÄÄÆÄÀÏ·¯¿Í´Â µ¶¸³ÀûÀÌ´Ù. ÇöÀçÀÇ ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ »ý¼ºµÇ´Â ¸ðµç
Äڵ带 üũÇÏÁö¸¸ °Ë»ç±â´Â ÇöÀçÀÇ ÄÄÆÄÀÏ·¯°¡ »ý¼ºÇÒ ¼ö ¾ø´Â ÄÚµåµéµµ
È®ÀÎÇÑ´Ù. ±¸Á¶ÀûÀÎ ±âÁØ¿¡ ¸¸Á·ÇÏ´Â ¹ÙÀÌÆ®ÄÚµåÀÇ ¾î¶°ÇÑ Á¶ÇÕÀÌ¶óµµ °Ë»ç±â¿¡
ÀÇÇØ È®À뵃 °ÍÀÌ´Ù.
»ó¼ö Ç®Àº ¿©·¯°¡Áö µ¥ÀÌÅÍÀÇ »óÀÌÇÑ
Á¶ÇÕÀÌ´Ù. »ó¼öÇ®ÀÇ °¢ µ¥ÀÌÅÍ´Â ´ÙÀ½ Áß Çϳª°¡ µÉ ¼ö ÀÖ´Ù:
Ŭ·¡½ºÆÄÀÏÀÇ ´Ù¸¥ ¾î¶² ºÎºÐµµ ½ºÆ®¸µ, Ŭ·¡½º, ÇÊµå ¶Ç´Â ¸Þ½îµå¿¡ ´ëÇÑ
·¹ÆÛ·±½º¸¦
¸¸µé¾î³»Áö ¾Ê´Â´Ù. ÀÌ·¯ÇÑ ¸ðµç ·¹ÆÛ·±½º´Â »ó¼öÇ®ÀÇ À妽ºµé¿¡ ÀÇÇØ¼
ÀÌ·ç¾îÁø´Ù.
ÀÌ ¹ÙÀÌÆ®ÄÚµå´Â ÀÚ¹Ù °¡»ó±â°è¸¦ À§ÇÑ °ÍÀÌ´Ù.
ÀÌ Å×À̺íÀÇ °¢ °ªµéÀº ¹ÙÀÌÆ®ÄÚµå, ¿¹¿Ü À¯Çü ±×¸®°í ¿¹¿Ü
Çڵ鷯¿¡
´ëÇÑ ¿ÀÇÁ¼Â¿¡ ½ÃÀÛ¿ÀÇÁ¼Â, Á¾·á¿ÀÇÁÁ¬À» ºÎ¿©ÇÑ´Ù. ¸¸ÀÏ Ç¥½ÃµÈ
À¯ÇüÀÇ ¿¹¿Ü°¡ ½ÃÀÛ¿ÀÇÁ¼Â°ú Á¾·á¿ÀÇÁ¼Â¿¡¼ Ç¥½ÃµÈ ÄÚµå ¾È¿¡¼
¹ß»ýÇÑ´Ù¸é ±× ¿¹¿Ü¿¡ ´ëÇÑ Çڵ鷯´Â ÁÖ¾îÁø Çڵ鷯 ¿ÀÇÁ¼Â¿¡¼
¹ß°ßµÉ °ÍÀ̶ó´Â °ÍÀ» ±× °ªÀÌ ÀǹÌÇÑ´Ù.
3.3. Security Manager
ÇöÀçÀÇ ÀÚ¹Ù ¹öÁ¯¿¡¼´Â, SecurityManager´Â »ó¼¼È÷ ¾ð±ÞµÇ¾î ÀÖÁö ¾Ê´Ù.
±×·³¿¡µµ, ÀÚ¹Ù º£Å¸ ¹öÁ¯°ú ÇÔ²² ¹èÆ÷µÈ °Ë»çÄڵ忡¼ ±×¸®°í ¾î¶°ÇÑ ¹®¼°¡
Á¸ÀçÇÏ´ÂÁö ÀÐÀ½À¸·Î¼, SecurityManagerÀÇ °³¹ß ¸ñÀû¿¡ ´ëÇØ¼ Ãß·ÐÇÒ ¼ö ÀÖ´Ù.
SecurityManager´Â ƯÁ¤ÇÑ Á¾·ùÀÇ ÇൿÀ» °Ë»çÇϱâ À§ÇØ È£ÃâµÇµµ·Ï ¼³°èµÈ
´Ù¼öÀÇ ¸Þ½îµå¸¦ Æ÷ÇÔÇÑ´Ù. SecurityManager Ŭ·¡¾²´Â Á÷Á¢ÀûÀ¸·Î »ç¿ëµÇÁö
¾Ê´Â´Ù. (°¢°¢ÀÇ Ã¼Å©´Â º¸¾È»óÀÇ ¿¹¿Ü¸¦ °Ë»çÇÏ´Â °ÍÀ» ±âº»À¸·Î ÇÑ´Ù.),
´ë½Å¿¡ ¼ºêŬ·¡½º°¡ µÇ°í ½Ã½ºÅÛ SecurityManager·Î¼ ¼³Ä¡µÇµµ·Ï µÇ¾î ÀÖ´Ù.
¼ºêŬ·¡½º°¡ µÈ SecurityManager´Â ÁöÁ¤µÈ ½ÃÅ¥¸®Æ¼ Á¤Ã¥À» ½ÇÇàÇϴµ¥ »ç¿ëµÉ
¼ö ÀÖ´Ù.
public boolean mkdir(String path) throws IOException {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(path);
}
return mkdir0();
}
½ÃÅ¥¸®Æ¼ üũÀÇ ¿¹½Ã. ÀÌ ¿¹´Â ±âº»ÀûÀÎ Á¢±Ù ¹æ½ÄÀ» º¸¿©ÁØ´Ù: public
¸Þ½îµå
mkdirÀº ½Ã½ºÅÛSecurityManager¸¦ üũ(üũ°¡ Åë°úµÇÁö ¾ÊÀ» ¶§´Â ¿¹¿Ü¸¦
»ý¼ºÇÏ´Â)ÇÏ°í ´ÙÀ½¿¡ Àú¼öÁØÀÇ private ¸Þ½îµåÀÎ mkdir0À» È£ÃâÇÑ´Ù.3.4. Java Enabled Browser(ÀÚ¹Ù °¡´É ºê¶ó¿ìÁ®)
À¥ ºê¶ó¿ìÁ® ¶ÇÇÑ ½Ã½ºÅÛÀÇ º¸¾È¿¡ ÀÖ¾î¼ Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù. À¥ ºê¶ó¿ìÁ®´Â
´Ù¿î·ÎµåµÈ ÀÚ¹Ù Äڵ带 ½ÇÇàÇÏ´Â º¸¾È Á¤Ã¥À» Á¤ÀÇÇÏ°í ±¸ÇöÇÑ´Ù. JEWB´Â ÀÚ¹Ù
ÀÎÅÍÇÁ¸®ÅÍ¿Í ½ÇÇà ½Ã°£ ¶óÀ̺귯¸®¿Í SecurityManager ¹× ´Ù¾çÇÑ ClassLoader¸¦
Æ÷ÇÔÇÒ °ÍÀÌ´Ù. ½ÃÅ¥¸®Æ¼ °üÁ¡¿¡¼ º»´Ù¸é, SecurityManagerÀÇ À¥ ºê¶ó¿ìÁ®»óÀÇ
±¸ÇöÀÌ
ClassLoaderÀÇ ±¸Çöº¸´Ù ´õ¿í Áß¿äÇÏ´Ù.
4.ºÐ¼®
4.1. ¼³°è
¿Ö ¹ÙÀÌÆ®ÄÚµåÀΰ¡?
¹°·Ð ¹ÙÀÌÆ® Äڵ带 »ç¿ëÇϴµ¥´Â ¸¹Àº ÀÌÀ¯°¡ ÀÖ´Ù. ¿ì¼±, ±×°ÍÀº È®½ÇÇÑ
Ãß»óȸ¦
º¸ÀåÇϴµ¥ ÀÌ´Â ÀÚ¹Ù ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¿ªºÐÇØ °øÇÐÀ» ¿¹¹æÇÑ´Ù. À̰ÍÀÌ
»ç½ÇÀ̱ä ÇÏÁö¸¸,
¹ÙÀÌÆ®Äڵ尡 ¿ªÄÄÆÄÀÏÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ±×¸®°í ¼Ò½º Äڵ带
Á÷Á¢
´Ù·ç´Â´Ù¸¥ ÄÚµå Ãß»óÈ ±â¼úµéÀÌ Á¸ÀçÇÑ´Ù. ´ÙÀ½À¸·Î, ¹ÙÀÌÆ®ÄÚµåÀÇ Ç¥ÇöÀº
Å©±â°¡
ÁÙ¾îµé°Ô ÇÑ´Ù. ÇöÀç·Î´Â À̰ÍÀÌ »ç½ÇÀº ¾Æ´Ï´Ù. ÇöÀçÀÇ ¸ðµç ¿¹¿¡¼,
HotJavaºê¶ó¿ìÁ®ÀÇ
¼Ò½ºÄڵ带 Æ÷ÇÔÇØ¼, ¼Ò½º¿Í ¹ÙÀÌÆ®ÄÚµå´Â °ÅÀÇ Å©±â¿¡ ÀÖ¾î¼ ÀÏÄ¡ÇÑ´Ù.
¼¼¹øÂ°·Î,
¹ÙÀÌÆ®ÄÚµå °Ë»ç °úÁ¤Àº ÄÄÆÄÀÏ °úÁ¤º¸´Ù ºü¸¦ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥À»
´Ù¿î·ÎµùÇϰí
½ÇÇàÇϴµ¥ °è»ê»ó ¸¹Àº ½Ã½ºÅÛ ÀÚ¿øÀ» »ç¿ëÇÒ Çʿ䰡 ¾ø°í ³·Àº latency¸¦
Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ
³íÀÇ´Â °øÆòÇÏ°Ô °¿äÀûÀε¥, ÀÚ¹ÙÆÀÀÌ °è»ê¿¡ ¸¹ÀÌ ÀÇÁ¸ÇÏ´Â ÇÁ·Î±×·¥¿¡
´ëÇØ¼´Â "Just in
Time"ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù°í ¾Ï½ÃÇÑ ¹Ù°¡ ÀÖÁö¸¸, ÄÄÆÄÀÏÀÌ ¿¹¹æÀûÀÌÁö
¾ÊÀ½À»
ÀǹÌÇÑ´Ù. ¸¶Áö¸· ³íÀÇ´Â ¹ÙÀÌÆ® ÄÚµå °Ë»ç±â°¡ ÀüÇüÀûÀÎ ÄÄÆÄÀÏ·¯º¸´Ù ´ú º¹
ÀâÇÑ
ÇÁ·Î±×·¥À̾î¼, Á¤È®¼ºÀÇ °Ë»ç°¡ ´Ü¼øÇÑ °úÁ¤À̶ó´Â °ÍÀÌ´Ù. »ç½Ç ÄÄÆÄÀÏ·¯´Â
¸ðµç
¹ÙÀÌÆ®Äڵ尡 ½Å·Ú¼º ÀÖ´Â ¹ÙÀÌÆ®ÄÚµå °Ë»ç±â·Î °Ë»çµÉ ¼ö Àֱ⠶§¹®¿¡ ½Å·Ú¼ºÀ»
°¡Áú
Çʿ䰡 ¾ø´Ù.(·ÎÄà ÄÚµå´Â È¿À²¼ºÀ» ÀÌÀ¯·Î ÇØ¼ ÄÄÆÄÀÏ ½Ã¿¡ ´Ü Çѹø¸¸ °Ë»çµÉ
¼ö ÀÖ´Ù.)
½ÃÅ¥¸®Æ¼ ¹®Á¦´Â ¶óÀ̺귯¸®°¡ ÀûÀýÈ÷ ÀÛ¼ºµÇ¾ú´Ù°í ÇØµµ ÀÚ¹Ù°¡ °¡´ÉÇÑ
À¥ºê¶ó¿ìÁ®ÀÇ
ÇÁ·Î±×·¡¸Ó°¡ Á¤È®È÷ SecurityManager¿¡¼ ±×µéÀ» Á¤È®È÷ ±¸ÇöÇÏ°í ¸í½ÃÇØ¾ß
ÇÑ´Ù´Â »ç½Ç
¶§¹®¿¡ ´õ¿í ¾î·Á¿öÁø´Ù. SecurityManager´Â ±âÁ¸ÀÇ ´õ¿í È®´ëµÈ ¸ÞÄ¿´ÏÁòµé¿¡
ºñÇØ¼
À¯¿¬ÇÑ ½ÃÅ¥¸®Æ¼ Á¤Ã¥À» ¼ö¸³Çϴµ¥ ƯÁ¤Çϸç ĸ½¶ÈµÈ ¹æ¹ýÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù´Â
Á¡¿¡ ÀÖ¾î
ºÐ¸íÇÑ ¹ßÀüÀÌ´Ù. ±×·³¿¡µµ ÀÚ¹Ù ½Ã½ºÅÛÀÇ ½ÃÅ¥¸®Æ¼¿¡ ´ëÇØ À¬ ºê¶ó¿ìÁ®°¡
Á÷Á¢ÀûÀÎ Á¶ÀÛÀ»
ÇÒ ¼ö ÀÖ´Â »ç½ÇÀº ¸í¼¼¿Í ±¸Çö¿¡ ÀÖ¾î ¿¡·¯ÀÇ È®·üÀ» Áõ°¡½ÃŲ´Ù. ÀÚ¹Ù ÀÚü´Â
¸Å¿ì ¾ö°ÝÇÑ
°Ë»ç¸¦ ¼öÇàÇÏÁö¸¸, ÀÚ¹Ù °¡´ÉÇÑ ºê¶ó¿ìÁ®°¡ ÀÚ¹ÙÀÇ ³»Àå ½ÃÅ¥¸®Æ¼¿¡ ÀÇÁ¸Çϸé¼
±×´ÙÁö
¾ö°ÝÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Â °ÍÀº ºÐ¸íÇÏ´Ù.4.2±¸Çö
ÀÌ·¯ÇÑ ÀÚ¿øµé Áß ÀϺο¡ ´ëÇÑ Á¦¾î´Â ºüÁ® ÀÖ´Ù. ¿ì¼±, ÇöÀçÀÇ
SecurityManager´Â »óÀ§
·¹º§ À©µµ¿ì¿¡ ´ëÇÑ »ý¼ºÀÇ Á¦¾î¿¡ ´ëÇÑ ¸Þ½îµå¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù.(±×µéÀÌ
¾ÈÀüÇÏÁö
¾ÊÀ½À» Ç¥½ÃÇÒ ¼ö ¾øÀ½À» Á¦¿ÜÇÏ°í¼¶óµµ), ¶ÇÇÑ Ç¥½ÃµÉ ¼ö ÀÖ´Â °ÍÀ̳ª µéÀ» ¼ö
ÀÖ´Â »çÇ׿¡
´ëÇÑ Á¦¾îµµ ºüÁ® ÀÖ´Ù. ´ÙÀ½À¸·Î, »ç¿ëÀÚÀÇ ÀԷ¿¡ ´ëÇÑ Á¦¾î¸¦ ÅëÁ¦ÇÏ´Â
¸ÞÄ¿´ÏÁòÀÌ
Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ´Ù¾çÇÑ ÀÔ·Â ÀåÄ¡¿¡ ´ëÇØ¼ º¸´Ù ƯÁ¤ÇÑ ½ÃÅ¥¸®Æ¼ Á¤Ã¥À»
»ç¿ëÇÒ Çʿ䰡
ÀÖ´Â »óȲÀÌ ºÐ¸íÈ÷ Á¸ÀçÇÑ´Ù. ¸¶Áö¸·À¸·Î, ¾ÖÇø´Àº ÇöÀç »õ·Î¿î °´Ã¼¸¦
»ý¼ºÇÔÀ¸·Î½á
ÀÓÀÇÀÇ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÒ ¼ö ÀÖ´Ù. ¸Þ¸ð¸® ÇÒ´çÀÇ ¹®Á¦´Â Á÷Á¢ÀûÀÎ À§ÇùÀ»
Á¦°øÇÏÁö
¾Ê±â ¶§¹®¿¡ Æò°¡ÇϱⰡ ¾î·Æ´Ù. ±×·¯ÇÑ ¹®Á¦´Â ºê¶ó¿ìÁ®°¡ ÀÚ¹Ù°¡ »ç¿ë°¡´ÉÇÑ
¸Þ¸ð¸®ÀÇ
¾çÀ» Á¦ÇÑÇÒ ¼ö Àֱ⠶§¹®¿¡ ´ë´ÜÇÑ °ÍÀº ¾Æ´Ï´Ù. ºê¶ó¿ìÁ®´Â ¶ÇÇÑ ÇöÀçÀÇ ÀÚ¹Ù
¾ÖÇø´À»
Á×ÀÌ´Â ¸Þ½îµå¸¦ °ø±ÞÇÒ ¼ö Àִµ¥, ÀÌ´Â ¸Þ¸ð¸®¸¦ ȸº¹°¡´ÉÇÏ°Ô ÇÑ´Ù.4.3½Ã³ª¸®¿Àµé
ÁÖ¾îÁø ºÐ¼®Àº ÀÚ¹Ù°¡ º¸´Ù À§ÇèÇÑ ÇüÅÂÀÇ °ø°ÝÀ» ¿¹¹æÇϴµ¥ È¿°úÀûÀÓÀ»
º¸¿©ÁØ´Ù.
ºÒÄè°¨ À¯¹ß °ø°ÝÀº ÀÚ¹Ù¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÇöÀçÀÇ À¥ ºê¶ó¿ìÁ®¿¡ ¶ÇÇÑ °¡´ÉÇÔÀÌ
¾ð±ÞÇϰíÀÚ
ÇÑ´Ù. ¼ºñ½º °ÅºÎ °ø°Ý¿¡ ´ëÇØ¼´Â ¾ÈÀüÈ÷ ¿¹¹æÇϱâ¶õ ¸Å¿ì ¾î·Æ´Ù. 10°³
ÀÌ»óÀÇ À©µµ¿ì¸¦
»ý¼ºÇÏ´Â °ÍÀ» ±ÝÁöÇϰųª 100ų·Î¹ÙÀÌÆ® ÀÌ»óÀÇ ¸Þ¸ð¸® ÇÒ´çÀ» ±ÝÁöÇÏ´Â
½ÃÅ¥¸®Æ¼ Á¤Ã¥À»
»ý°¢ÇØ º¼ ¼ö´Â ÀÖÁö¸¸, ÀÌ´Â ¸Å¿ì ÀÓÀÇÀûÀÌ´Ù. ´ë½Å¿¡, À¯Àú°¡ ¾ÖÇø´À̳ª
¾ÖÇø´ÀÌ »ç¿ëÇÒ
¼ö ÀÖ´Â ¸ðµç ÀÚ¿ø¿¡ ´ëÇØ ±ÇÇÑÀ» °¡Áö´Â À¥ºê¶ó¿ìÁ®°¡ ´õ ³ªÀº ´ë¾ÈÀ̶ó°í
»ý°¢ÇÑ´Ù.
´ÙÇེ·´°Ôµµ ±×·¯ÇÑ ¸ÞÄ¿´ÏÁòÀº ±¸ÇöÀÌ °¡´ÉÇÒ °ÍÀÌ´Ù.