TLS 1.3°ú ÇÇÁî ¸ðµÎ Åë½Å È¿À²¼º ³ô¿©...ÆäÀ̽ººÏÀº ¡°10% Áõ°¡Çß´Ù¡±
[º¸¾È´º½º ¹®°¡¿ë ±âÀÚ] ÆäÀ̽ººÏÀÌ ¹Ì±¹ ÇöÁö ½Ã°¢À¸·Î ¿ù¿äÀÏ ÇÇÁî(Fizz)¶ó´Â TLS ¶óÀ̺귯¸®¸¦ ¿ÀǼҽºÈ ÇÏ°Ú´Ù°í ¹ßÇ¥Çß´Ù. ÇÇÁî´Â C++14·Î ÀÛ¼ºµÈ ¶óÀ̺귯¸®·Î, TLSÀÇ °¡Àå ÃֽŠ¹öÀüÀÎ 1.3À» Æ÷ÇÔÇÏ°í ÀÖ´Ù.
[À̹ÌÁö = iclickart]
ÇÇÁî´Â ÀÌ¹Ì ÆäÀ̽ººÏÀÇ ¸ð¹ÙÀÏ ¾Û°ú ºÎÇÏ ºÐ»ê ÀåÄ¡(load balancer), ³»ºÎ ¼ºñ½º¿¡ ÀÌ¹Ì ÀüºÎ Àû¿ëµÇ¾î ÀÖÀ¸¸ç, ÇÏ·ç¿¡µµ ¼ö¹é¸¸ °Ç¾¿ ¹ß»ýÇÏ´Â TLS 1.3 ÇÚµå¼ÎÀÌÅ©¸¦ ó¸®ÇÏ´Â ±â´ÉÀ» °¡Áö°í ÀÖ´Ù. ÆäÀ̽ººÏÀ̶ó´Â °Å´ë ÀÎÇÁ¶ó ³»¿¡¼´Â ÀÌ¹Ì »ç¿ëµÇ°í ÀÖ¾ú´ø °ÍÀÌ, ¿ÜºÎ·Î °ø°³µÈ °ÍÀÌ´Ù.
ÇöÀç ÆäÀ̽ººÏÀÇ ÀÎÅÍ³Ý Æ®·¡ÇÈ Áß 50%´Â TLS 1.3ÀÌ Àû¿ëµÇ¾î ÀÖ°í, ÆäÀ̽ººÏ ¸ð¹ÙÀÏ ¾ÛÀÇ °æ¿ì´Â TLS 1.3ÀÇ 0-RTT¸¦ È°¿ë Áß¿¡ ÀÖ´Ù°í ÇÑ´Ù. ÆäÀ̽ººÏÀº ¡°ÀÌ°ÍÀÌ °¡Àå ±¤¹üÀ§ÇÑ TLS 1.3 Àû¿ë »ç·ÊÀÏ °Í¡±À̶ó°í ¸»ÇÑ´Ù. ÇÇÁî´Â TLS 1.3À» ±¤¹üÀ§ÇÏ°Ô Àû¿ëÇÏ´Â µ¥ ÀÖ¾î¼ Áö¿¬ ¼Óµµ(latency)¸¦ ³·Ãâ »Ó¸¸ ¾Æ´Ï¶ó CPU È°¿ë ¿ª½Ã ÁÙ¿© ½Ã½ºÅÛ È¿À²À» ³ôÀÎ °ÍÀ¸·Î Æò°¡¹Þ´Â´Ù.
ÆäÀ̽ººÏÀÌ ÇÇÁ °ø°³ÇÑ ÀÌÀ¯´Â, TLS 1.3À̶ó´Â »õ ¾ÏÈ£È ÇÁ·ÎÅäÄÝÀ» ÀÎÅÍ³Ý Àü¹Ý¿¡ ºü¸£°Ô È®»ê½ÃÅ°±â À§Çؼ´Ù. TLS 1.2¿¡ ºñÇØ 1.3Àº ±× ÀÚü¸¸À¸·Îµµ ÀÌ¹Ì Áö¿¬ ¼Óµµ¸¦ ³·Ã߱⠶§¹®¿¡ È¿À²¼º Ãø¸é¿¡¼ ¿ùµîÇÑ ¸éÀ» °¡Áö°í Àִµ¥, ÇÇÁî±îÁö ÇÕÇØÁö¸é TLS 1.2 ½ÃÀý°ú´Â ºñ±³ÇÒ ¼ö ¾ø°Ô µÈ´Ù°í ÆäÀ̽ººÏÀº ¼³¸íÇÑ´Ù.
¡°ÆäÀ̽ººÏ ÀÚü ºÐ»ê ÀåÄ¡ÀÇ º¥Ä¡¸¶Å©¿¡ µû¸£¸é ÇÇÁ ÅëÇØ TLS 1.3À» µµÀÔÇßÀ» ¶§, 1.2 ¶§º¸´Ù È¿À²¼ºÀÌ ¾à 10% ³ô¾ÆÁ³½À´Ï´Ù. ÀÎÇÁ¶ó¿¡ °è¼ÓÇؼ TLS 1.3À» µµÀÔÇÔÀ¸·Î½á ÆÛÆ÷¸Õ½º°¡ Áö¼ÓÀûÀ¸·Î ³ô¾ÆÁú °ÍÀ» ±â´ëÇÏ°í ÀÖ½À´Ï´Ù.¡±
ÆäÀ̽ººÏ¿¡ µû¸£¸é ÇÇÁî ¼¹öµéÀº µðÆúÆ® »ó ºñµ¿±âÈ(async) µÇ¾î ÀÖ´Ù. Áï µ¥ÀÌÅÍ Àü¼Û ¼Óµµ°¡ °íÁ¤µÇÁö ¾Ê¾Ò´Ù´Â °ÍÀÌ´Ù. ¶ÇÇÑ ÀÎÁõ °ü·Ã ¿î¿µ°ú ƼÄÏ º¹È£È µîÀº ¿ø°Ý ¼ºñ½º·Î 󸮵ȴÙ. ¿©±â¿¡´Ù°¡ ÆäÀ̽ººÏÀº °£´ÜÇÑ ºñµ¿±â API¸¦ Á¦°øÇϱ⵵ Çϸç, ÇÇÁî·ÎºÎÅÍÀÇ Äݹé(callback)À» ÇÒ °æ¿ì ´Ù¸¥ ÇÚµå¼ÎÀÌÅ© 󸮸¦ Â÷´ÜÇÏÁö ¾ÊÀº ä·Î ºñµ¿±âÈ µÈ ÀÀ´äÀ» µÇµ¹¸± ¼ö ÀÖ´Ù°í ÇÑ´Ù.
ÇÇÁî´Â ¶ÇÇÑ ½ºÄ³ÅÍ/°³´õ(scatter/gather) Çü½ÄÀÇ I/O APIµéÀ» ȣȯÇÑ´Ù. ±×·¯¹Ç·Î ´ë·®ÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÏ°í ¾ÏȣȽÃÄÑ ¸Þ¸ð¸®¿¡ À§Ä¡½ÃÅ°´Â °Ô °¡´ÉÇÏ´Ù. Áï, µ¥ÀÌÅ͸¦ º¹»çÇÒ ÇÊ¿ä°¡ ¾ø¾îÁö°í, ÇÇÁî ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ¸ðµç ¾ÖÇø®ÄÉÀ̼ǵéÀÌ ¸Þ¸ð¸®¸¦ Àû°Ô »ç¿ëÇÑ´Ù´Â ¶æÀÌ µÈ´Ù.
ÇÇÁî´Â ¿äûÀÇ Áö¿¬ ¼Óµµ¸¦ ³·Ãß±â À§ÇØ ÀÌÀü¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ »ç¿ëÇϱ⵵ Çϴµ¥, ¿©±â¿¡´Â Á¶°ÇÀÌ Çϳª ÀÖ´Ù. ¹Ù·Î ÈÀÌÆ®¸®½ºÆà µÈ ¿äûµé¸¸ ÀÌ·± ½ÄÀÇ Ã³¸®¸¦ Çã¿ëÇÏ´Â °ÍÀÌ´Ù. TLS 1.3¿¡¼ ÀÌÀü µ¥ÀÌÅ͸¦ »ç¿ëÇÏ¸é °ø°ÝÀÚ°¡ µ¥ÀÌÅ͸¦ Àç»ý½Ãų ¼ö ÀÖ°Ô µÈ´Ù.
ÆäÀ̽ººÏÀº ÇÇÁ óÀ½ °³¹ßÇÒ ¶§ºÎÅÍ º¸¾ÈÀ» ¿°µÎ¿¡ µÎ¾ú´Ù°í ¼³¸íÇÑ´Ù. TLSÀÇ »óÅ ±â°è(state machine)´Â ¸Å¿ì ¸íÈ®ÇÏ¸ç ¸ðµç ÀÌÇà°ú Àü°³°¡ ÇÑ °÷¿¡¼ Á¤Àǵǰí, ±×·¸±â¿¡ º¸¾ÈÀ» °ü¸®ÇÏ´Â °Ô ÈξÀ ½¬¿öÁø´Ù´Â ¼³¸íµµ µ¡ºÙÀδÙ.
ÆäÀ̽ººÏÀº ºÎÁ¤È®ÇÑ »óÅ º¯È°¡ »ç¿ëµÇ´Â °ÍÀ» ¸·±â À§ÇØ Ãß»óȵµ µµÀÔ½ÃÄ×´Ù. ±×·¡¼ »óÅ ó¸®ÀÚ(state handler)°¡ »óÅ ±â°è¿¡¼ Á¤ÀǸ¦ ³»¸®Áö ¾ÊÀº »óÅ º¯È¸¦ »ç¿ëÇÒ °æ¿ì ÄÚµå ÄÄÆÄÀϸµÀÌ µÇÁö ¾Ê´Â´Ù.
º¸´Ù Á¤È®È÷ ¸»ÇØ ÇöÀç ÇÇÁî°¡ Áö¿øÇÏ´Â TLS 1.3Àº 28¹ø°¿Í 26¹ø°, 23¹ø° ÃÊ¾È ¹öÀüµéÀÌ´Ù. ¶ÇÇÑ ÁÖ¿ä ÇÚµå¼ÎÀÌÅ© ¸ðµåµé °ÅÀÇ ´ëºÎºÐÀ» Áö¿øÇϱ⵵ Çϴµ¥, ¿©±â¿¡´Â PSK ¸®Á¡¼Ç(PSK resumption), Ŭ¶óÀ̾ðÆ® ÀÎÁõ, HelloRetryRequest µîÀÌ Æ÷ÇԵȴÙ. ÇÇÁî´Â folly, OpenSSL, libsodiumÀ̶ó´Â ¼¼ °¡Áö ¶óÀ̺귯¸®¿¡ ÀÇÁ¸ÇÏ°í Àֱ⵵ ÇÏ´Ù.
ÇÇÁî´Â ¿©±â(https://github.com/facebookincubator/fizz)¼ ¿¶÷ÀÌ °¡´ÉÇÏ´Ù.
3ÁÙ ¿ä¾à
1. ÆäÀ̽ººÏ, TLS 1.3 ÇÁ·ÎÅäÄÝ µµÀÔ À§ÇØ ÇÇÁî¶ó´Â ¶óÀ̺귯¸® °³¹ßÇØ »ç¿ë.
2. ÇÇÁî »ç¿ëÇغ¸´Ï È¿À²¼ºÀÌ 10%³ª Áõ°¡ÇÏ´õ¶ó. CPUµµ ´ú Àâ¾Æ¸Ô°í, ¸Þ¸ð¸®µµ ´ú »ç¿ëÇÏ°í.
3. ±×·¡¼ ÇÇÁ ¿ÀǼҽº·Î ÀüȯÇÔ. ÀÎÅÍ³Ý Åë½ÅÀÌ ÀüºÎ TLS 1.3À¸·Î ÀÌ·ïÁö±æ ¹Ù¶ó¸é¼.
[±¹Á¦ºÎ ¹®°¡¿ë ±âÀÚ(globoan@boannews.com)]
<ÀúÀÛ±ÇÀÚ: º¸¾È´º½º(www.boannews.com) ¹«´ÜÀüÀç-Àç¹èÆ÷±ÝÁö>