1장. ¼Ò°³

 

A wise man attacks the city of the mighty and pulls down the stronghold in which they trust.

 Proverbs 21:22 (NIV)

ÀÌ Ã¥Àº ¸®´ª½º¿Í À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ º¸¾ÈÀûÀÎ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ À§ÇÑ ÀÏ·ÃÀÇ ¼³°è ¹× ±¸Çö ÁöħµéÀ» ±â¼úÇÑ´Ù. ÀÌ Ã¥ÀÇ ¸ñÀûÀ» À§ÇØ º¸¾ÈÀûÀÎ (secure) ÇÁ·Î±×·¥À» º¸¾È °æ°è¿¡ Á¸ÀçÇÏ¿© ÇÁ·Î±×·¥°ú µ¿ÀÏÇÑ ±ÇÇÑÀ» °®Áö ¾Ê´Â Ãâó·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ´Â ÇÁ·Î±×·¥À¸·Î Á¤ÀÇÇÒ ¼ö Àִµ¥ À̵é·Î´Â ¿ø°Ý ºä¾î·Î »ç¿ëµÇ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¥, CGI ½ºÅ©¸³Æ®¸¦ Æ÷ÇÔÇÑ À¥ ¾ÖÇø®ÄÉÀ̼Ç, ³×Æ®¿öÅ© ¼­¹ö¿Í setuid/setgid ÇÁ·Î±×·¥µéÀÌ ÀÖ´Ù. ÀÌ Ã¥¿¡¼­ ³íÀǵǴ ¿ø¸®µéÁß ´Ù¼ö°¡ Àû¿ëµÊ¿¡µµ ºÒ±¸ÇÏ°í ¿î¿µ üÁ¦ÀÇ Ä¿³Î ÀÚü¸¦ ¼öÁ¤ÇÏ´Â °ÍÀ» ´Ù·çÁö´Â ¾Ê´Â´Ù. ÀÌ ÁöħµéÀº ÀúÀÚ°¡ Ãß°¡ÇÑ Àǰ߰ú ÇÔ²² º¸¾ÈÀûÀÎ ÇÁ·Î±×·¥µéÀ» ¸¸µé¾î³»´Â ¹æ¹ý¿¡ ´ëÇÑ ´Ù¾çÇÑ Ãâóµé·ÎºÎÅÍ ¹è¿î ±³ÈƵéÀ» Á¶»çÇÔÀ¸·Î½á °³¹ßµÇ¾úÀ¸¸ç ÀÏ·ÃÀÇ ´õ¿í Ä¿´Ù¶õ ¿ø¸®µé·Î À籸¼ºµÇ¾ú´Ù. ÀÌ Ã¥Àº C, C++, ÀÚ¹Ù, ÆÞ, ÆÄÀ̽ã, TCL °ú Ada95 ¸¦ Æ÷ÇÔÇÑ ¸¹Àº ¾ð¾îµé¿¡ ´ëÇÑ ±¸Ã¼ÀûÀÎ ¾È³»¸¦ Æ÷ÇÔÇÑ´Ù.

ÀÌ Ã¥Àº º¸Áõ Á¶Ä¡, ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µ ÇÁ·Î¼¼½º¿Í ǰÁú º¸Áõ ¹æ¹ýÀ» ´Ù·çÁö´Â ¾Ê´Âµ¥ ÀÌ´Â Áß¿äÇÏÁö¸¸ ´Ù¸¥ °÷¿¡ ±¤¹üÀ§ÇÏ°Ô ³íÀǵǾî Àֱ⠶§¹®ÀÌ´Ù. ±×·¯ÇÑ Á¶Ä¡µé·Î´Â °Ë»ç, ÀÚ¼¼ÇÑ °ËÅä (peer review), ¼³Á¤ °ü¸®¿Í Çй®ÀûÀÎ (formal) ¹æ¹ýµéÀÌ Àִµ¥ º¸¾È ¹®Á¦¿¡ ´ëÇÑ ÀÏ·ÃÀÇ ¹ßÀüÇϰí ÀÖ´Â º¸Áõ Á¶Ä¡µéÀ» ¸íÈ®ÇÏ°Ô ºÐ°£ÇÏ´Â ¹®¼­µé·Î´Â Common Criteria [CC 1999] ¿Í System Security Engineering Capability Maturity Model [SSE-CMM 1999] µéÀÌ ÀÖ´Ù. ÀÏ·ÃÀÇ ´õ¿í ÀϹÝÀûÀÎ ¼ÒÇÁÆ®¿þ¾î ¿£Áö´Ï¾î¸µ ¹æ¹ý ¶Ç´Â ÇÁ·Î¼¼½ºµéÀº Software Engineering Institute's Capability Maturity Model for Software (SE-CMM), ISO 9001 ¹× ISO 9001-3 °ú ÇÔ²² ISO 9000 °ú ISO 12207 °ú °°Àº ¹®¼­µé³»¿¡ Á¤ÀǵǾî ÀÖ´Ù.

ÀÌ Ã¥Àº ÁÖ¾îÁø ȯ°æ¿¡¼­ ½Ã½ºÅÛ ¶Ç´Â ³×Æ®¿öÅ©¸¦ º¸¾ÈÀûÀ¸·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ³íÀÇÇÏÁö´Â ¾Ê´Â´Ù. À̰ÍÀÌ ÁÖ¾îÁø ÇÁ·Î±×·¥À» º¸¾ÈÀûÀ¸·Î »ç¿ëÇϱâ À§Çؼ­´Â ºÐ¸íÈ÷ ÇÊ¿äÇÏÁö¸¸ ¸Å¿ì ¸¹Àº ´Ù¸¥ ¹®¼­µéÀÌ º¸¾ÈÀûÀÎ ¼³Á¤À» ³íÀÇÇϰí ÀÖ´Ù. À¯´Ð½º °è¿­ ½Ã½ºÅÛÀ» º¸¾ÈÀûÀ¸·Î ¼³Á¤ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¿ì¼öÇÑ ÀÏ¹Ý Ã¥À¸·Î´Â Garfinkel [1996] ÀÌ ÀÖÀ¸¸ç À¯´Ð½º °è¿­ ½Ã½ºÅÛÀ» ¾ÈÀüÇÏ°Ô Çϱâ À§ÇÑ ´Ù¸¥ Ã¥À¸·Î´Â Anonymous [1998] °¡ ÀÖ´Ù. ¶ÇÇÑ http://www.unixtools.com/security.html ¿Í °°Àº À¥ »çÀÌÆ®¿¡¼­ À¯´Ð½º °è¿­ ½Ã½ºÅÛ ¼³Á¤¿¡ °üÇÑ Á¤º¸¸¦ ãÀ» ¼ö ÀÖ´Ù. ¸®´ª½º ½Ã½ºÅÛÀÇ º¸¾ÈÀû ¼³Á¤¿¡ ´ëÇÑ Á¤º¸´Â Fenzi [1996], Seifried [1999], Wreski [1998], Swan [2001] °ú Anonymous [1999] ¸¦ Æ÷ÇÔÇÑ ±¤¹üÀ§ÇÑ ¹®¼­µé¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù. ¸®´ª½º ½Ã½ºÅÛ (°á±¹ ´Ù¸¥ À¯´Ð½º °è¿­ ½Ã½ºÅÛ) ÀÇ °æ¿ì ¸®´ª½º ¿î¿µÃ¼Á¦¸¦ °­È­ ¶Ç´Â ´Ü·Ã½ÃŰ·Á°í ÇÏ´Â Bastille °­È­ ½Ã½ºÅÛÀÇ °ËÅ並 ¿øÇÒ ¼öµµ Àִµ¥ ÀÌ¿¡ °üÇØ¼­´Â http://www.bastille-linux.org ¿¡¼­ ´õ¿í ¸¹Àº °ÍÀ» ¹è¿ï ¼ö ÀÖ´Ù. ÀÌ´Â GPL (General Public License) ¶óÀ̼¾½º·Î ¹«·á·Î ¾òÀ» ¼ö ÀÖ´Ù.

ÀÌ Ã¥Àº µ¶ÀÚ°¡ ÀϹÝÀûÀÎ ÄÄÇ»ÅÍ º¸¾È ¹®Á¦, À¯´Ð½º °è¿­ ½Ã½ºÅÛÀÇ ÀϹÝÀûÀÎ º¸¾È ¸ðµ¨°ú C ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ÀÌÇØÇϰí ÀÖ´Ù°í °¡Á¤ÇÏ¸ç º¸¾ÈÀ» À§ÇÑ ¸®´ª½º¿Í À¯´Ð½º ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ ´ëÇØ »ó´çÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù.

ÀÌ Ã¥Àº ¸®´ª½º ¹× À¯´Ð½ºÀÇ ´Ù¾çÇÑ º¯ÇüµéÀ» Æ÷ÇÔÇÑ ¸ðµç À¯´Ð½º °è¿­ ½Ã½ºÅÛµéÀ» ´Ù·çÁö¸¸ ƯÈ÷ ¸®´ª½º¿¡ ÁßÁ¡À» µÎ¾î ¸íÈ®ÇÏ°Ô ÀÌ¿¡ ´ëÇÑ ¼¼ºÎ »çÇ×µéÀ» Á¦°øÇÑ´Ù. ÀÌ¿¡ ´ëÇÑ ¸î°¡Áö ÀÌÀ¯°¡ ÀÖÁö¸¸ °£´ÜÇÑ ÀÌÀ¯´Â ¸®´ª½ºÀÇ ´ëÁß¼º¶§¹®ÀÌ´Ù. 1999³â IDC Á¶»ç¿¡ µû¸£¸é ÀÎÅͳݰú ÀÎÆ®¶ó³Ý ¼­¹ö ¸ðµÎ¸¦ Æ÷ÇÔÇØ »ó´çÈ÷ ´õ¿í ¸¹Àº ¼­¹öµéÀÌ ¸ðµç À¯´Ð½º ¿î¿µÃ¼Á¦ ŸÀÔÀ» ÇÕÄ£ °Íº¸´Ù ¸®´ª½º·Î 1999³â ±¸ÃàµÇ¾ú´Ù (¸®´ª½º 25% ´ë ¸ðµç À¯´Ð½º ŸÀÔÀ» ÇÕÄ£ °Í 15%; À©µµ¿ì NT ´Â ¸ðµç À¯´Ð½º °è¿­ ¼­¹öµéÀÌ 40% Àε¥ ¹ÝÇØ 38% ÀÓÀ» ÁÖ¸ñÇØ¶ó) [Shankland 2000].1999³â 4¿ù Zoebelein ÀÇ Á¶»ç´Â 1999³â ÀÎÅÍ³Ý»ó¿¡ ±¸ÃàµÈ ¼­¹ö (Àû¿Àµµ ftp, news ¶Ç´Â http (WWW) ¼­ºñ½º¸¦ Á¦°øÇÏ´Â ¼­¹ö) µéÀÇ ÃѼöÁß ´ëºÎºÐÀº ¸®´ª½º (28.5%) ¸¦ ¿î¿ëÇϰí ÀÖÀ¸¸ç ¸ðµç À©µµ¿ì 95/98/NT ¸¦ ÇÕÄ£ ¼­¹ö°¡ 24.4%, ¼Ö¶ó¸®½º ¶Ç´Â ½ã OS °¡ 17.7%, BSD °è¿­ÀÌ 15% ±×¸®°í IRIX °¡ 5.3% ·Î ¸®´ª½º¸¦ µû¸£°í ÀÖÀ½À» º¸¿´´Ù. ÁöÁöÀÚµéÀº ÀÎÅͳݻóÀÇ ¼­¹öµéÀÇ ´ë´Ù¼ö (¾à 66%) °¡ À¯´Ð½º °è¿­ ½Ã½ºÅÛÀ» ¿î¿ëÇϰí ÀÖ´Â ¹Ý¸é ¾à 24% ¸¸ÀÌ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ À©µµ¿ì º¯ÇüµéÀ» ¿î¿ëÇϰí ÀÖÀ½À» ¾Ë¾ÆÂ÷·ÈÀ» °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ÀÌ Ã¥ÀÇ ¿øº»Àº ¸®´ª½º¸¸À» ³íÀÇÇÏ¿´°í ±×·¡¼­ ÀÌ Ã¥ÀÇ ¹üÀ§°¡ È®ÀåµÇ¾úÀ½¿¡µµ ºÒ±¸ÇÏ°í ¸®´ª½º °ü·Ã Á¤º¸°¡ ¾ÆÁ÷±îÁö ÇöÀúÇÏ°Ô Áö¹èÀûÀÌ´Ù. ÀÌ Ã¥¿¡ ¾ÆÁ÷ Æ÷ÇÔµÇÁö ¾ÊÀº °ü·Ã Á¤º¸¿¡ °üÇØ ¾Ë°í ÀÖ´Ù¸é ÀúÀÚ¿¡°Ô ¾Ë·ÁÁֱ⠹ٶõ´Ù.

ÀÌ Ã¥ÀÇ ¿øº»Àº http://www.dwheeler.com/secure-programs ¿¡¼­ ãÀ» ¼ö ÀÖÀ¸¸ç http://www.linuxdoc.org ÀÇ ¸®´ª½º ¹®¼­È­ ÇÁ·ÎÁ§Æ® (Linux Documentation Project, LDP) ÀÇ ÇÑ ºÎºÐÀ¸·Î ¸î¸îÀÇ ´Ù¸¥ »çÀÌÆ®¿¡¼­µµ ¶ÇÇÑ ¹Ì·¯¸µµÇ°í ÀÖ´Ù. LDP º¹»çº» ¹×/¶Ç´Â °¢ ¹èÆ÷ º¹»çº»À» Æ÷ÇÔÇÑ ÀÌ·¯ÇÑ º¹»çº»µéÀÌ ¿øº»º¸´Ù ¿À·¡µÈ °ÍÀÏ ¼öµµ ÀÖÀ½À» ÁÖ¸ñÇϱ⠹ٶõ´Ù. ÀúÀÚ´Â ÀÌ Ã¥¿¡ ´ëÇÑ ÀǰßÀ» µè°í ½ÍÁö¸¸ ¹Ýµå½Ã ¿©·¯ºÐÀÇ ÀǰßÀÌ ÃֽйöÀü¿¡ ´ëÇØ Ÿ´çÇÑÁö °Ë»çÇÑ ÈÄ ÀǰßÀ» º¸³»Áֱ⠹ٶõ´Ù.

ÀÌ Ã¥ÀÇ ÀúÀÛ±ÇÀº 1999-2001 David A. Wheeler ¿¡ ÀÖÀ¸¸ç ±× ¶óÀ̼¾½º´Â GNU Free Documentation License (GFDL) ÀÌ´Ù; ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â 부록 C ¿Í 부록 D ¸¦ º¸¶ó.

2장 Àº À¯´Ð½º, ¸®´ª½º ¹× º¸¾È¿¡ ´ëÇÑ ¹è°æÀ» ³íÀÇÇϸç 3장 Àº ÇÁ·Î¼¼½º, ÆÄÀϽýºÅÛ °´Ã¼ µîÀÇ º¸¾È ¼Ó¼º°ú ¿¬»êÀ» °³°ýÀûÀ¸·Î ¼³¸íÇϴµ¥ ÀϹÝÀûÀÎ À¯´Ð½º ¹× ¸®´ª½º º¸¾È ¸ðµ¨À» ±â¼úÇÑ´Ù. ´ÙÀ½ Àå¿¡¼­´Â ÀÌ Ã¥ÀÇ °ñÀÚÀÎ ¸®´ª½º¿Í À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ ¾ÖÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ ÀÏ·ÃÀÇ ¼³°è ¹× ±¸Çö ÁöħµéÀ» ³íÀÇÇÑ´Ù. ÀÌ Ã¥Àº 11장¿¡¼­ °á·ÐÀ¸·Î ¸ÅµìÁöÀ¸¸ç ´ÙÀ½¿¡ ÀÌ Ã¥¿¡¼­ ÀοëÇÑ µµ¼­ ¸ñ·Ï°ú ºÎ·ÏÀÌ ³ª¿Â´Ù.

¼³°è ¹× ±¸Çö ÁöħµéÀº ÀúÀÚ°¡ ¹Ï±â¿¡ ÇÁ·Î±×·¡¸ÓÀÇ °üÁ¡¿¡ ÁßÁ¡À» µÐ ¹üÁÖ·Î ³ª´©¾îÁø´Ù. 그림 1-1 ¿¡ º¸ÀÌ´Â °Í°ú °°ÀÌ ÇÁ·Î±×·¥Àº ÀÔ·ÂÀ» ¹Þ°í, µ¥ÀÌŸ¸¦ ó¸®Çϰí, ´Ù¸¥ ÀÚ¿øµéÀ» È£ÃâÇϰí Ãâ·ÂÀ» »êÃâÇÑ´Ù; °³³äÀûÀ¸·Î ¸ðµç º¸¾È ÁöħµéÀº ÀÌ·¯ÇÑ ¹üÁÖµéÁß Çϳª¿Í ÀÏÄ¡Çϴµ¥ ÀúÀÚ´Â ``µ¥ÀÌŸ ó¸®" ¸¦ ÇÁ·Î±×·¥ ³»ºÎ ±¸Á¶È­Çϱâ, ¹öÆÛ ¿À¹öÇ÷οì ÇÇÇϱâ (¾î¶² °æ¿ì ÀÔ·Â ¹®Á¦·Î °í·ÁµÉ ¼ö ÀÖ´Ù), ¾ð¾î¿¡ ƯÁ¤ÀûÀÎ Á¤º¸¿Í Ưº° ÁÖÁ¦·Î ¼¼ºÐÈ­ÇÏ¿´´Ù. °¢ ÀåµéÀº ½±°Ô µû¶ó°¥ ¼ö ÀÖµµ·Ï Á¤¸®µÇ¾ú´Âµ¥ µû¶ó¼­ ÁöħµéÀ» Á¦°øÇÏ´Â °¢ ÀåµéÀº ¸ðµç ÀÔ·Â À¯È¿È­Çϱâ (4장), ¹öÆÛ ¿À¹öÇ÷οì ÇÇÇϱâ (5장), ÇÁ·Î±×·¥ ³»ºÎ ±¸Á¶È­ÇÏ±â ¹× Á¢±Ù ¹æ¹ý (6장), ÁÖÀDZí°Ô ´Ù¸¥ ÀÚ¿øµé È£ÃâÇϱâ (7장), ½ÅÁßÈ÷ Á¤º¸¸¦ µÇµ¹·ÁÁÖ±â (8장), ¾ð¾î¿¡ ƯÁ¤ÀûÀÎ Á¤º¸ (9장) ±×¸®°í ³­¼ö (random number) ¸¦ ¾ò´Â ¹æ¹ý°ú °°Àº Ưº° ÁÖÁ¦¿¡ ´ëÇÑ Á¤º¸ (10장) µéÀ» ³íÀÇÇÑ´Ù.

그림 1-1. ÇÁ·Î±×·¥ÀÇ Ãß»óÀûÀÎ ºä

A program accepts inputs, processes data,
possibly calls out to other programs, and produces output.