
ããããã¯ãŒã¯ã¹ãã·ã£ãªã¹ãè©Šéš ä»€å7幎床 æ¥æ åå2 å11ã ãããã¯ãŒã¯ã®èŠïŒ3ãŠã§ã€ãã³ãã·ã§ã€ã¯å®å šè§£èª¬
仿¥ã®ããŒãã¯ãTCP/IPéä¿¡ã®åºç€ã«ããŠæéèŠæŠå¿µã®äžã€ã§ããã3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãã§ãã
ã€ã³ã¿ãŒããããã¯ãããšãããããããããã¯ãŒã¯éä¿¡ã®åå°ãæ¯ãããã®ä»çµã¿ãçè§£ããããšã¯ãè³æ ŒååŸã¯ãã¡ãããå®åã§ä¿¡é Œæ§ã®é«ãéä¿¡ãèšèšã»éçšããäžã§äžå¯æ¬ ã§ãã
ãããã§ãã·ã§ãã«ãªèŠç¹ããããã®å®çŸ©ãä»çµã¿ããããŠé¢é£ãããããã¯ãŒã¯ã®ç¶æ
é·ç§»ãŸã§ã詳现ãã€ç°¡æœã«æ·±æãããŠãããŸãã
åæ Œãžã®äžæ©ãšããŠããã®æ žãšãªãç¥èã確å®ã«ãã¹ã¿ãŒããŸãããã
åé¡
TCP ã®éä¿¡ã«ãããŠããµãŒããã¯ã©ã€ã¢ã³ãããèŠæ±ãåããŠ3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãçšããTCP ã³ãã¯ã·ã§ã³ã確ç«ãããšãããµãŒããSYNãã©ã°ã®ä»ãããã±ãããåãä»ããã®ã¯ã©ã®ç¶æ ã®ãšããã
ã¢ãLISTEN
ã€ãSYN-RECEIVED
ãŠãSYN-SENT
ãšãTIME-WAIT
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãšã¯
å®çŸ©
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ (Three-way Handshake) ãšã¯ãTCP (Transmission Control Protocol) ã«ãããŠãã¯ã©ã€ã¢ã³ããšãµãŒãéã§ä¿¡é Œæ§ã®ããéä¿¡ã»ãã·ã§ã³ãéå§ããããã«çšããããã³ãã¯ã·ã§ã³ç¢ºç«æé ã®ããšã§ãã
ãã®æé ã¯ãéä¿¡åŽãšåä¿¡åŽã®åæ¹ãçžæã«éä¿¡ã®éå§ãéç¥ãããã®éç¥ã«å¯Ÿãã確èªå¿çïŒACKïŒã3åã®ãã±ãã亀æã«ãã£ãŠè¡ãããšããããã®åãã€ããŠããŸãã
ããã«ãããåæ¹ã®åæã·ãŒã±ã³ã¹çªå·ïŒISNïŒã®äº€æãæ¥ç¶æ§ã®ç¢ºèªãããŒã¿ã®éåä¿¡æºåãå®äºããŸãã
èæ¯ã»çµç·¯
TCPã¯ãIPïŒInternet ProtocolïŒã®äžäœã¬ã€ã€ãŒã§åäœããããŒã¿ã®ä¿¡é Œæ§ãä¿èšŒãã圹å²ãæ
ã£ãŠããŸãã
IPãåã«ãã±ãããç®çå°ã«å±ããïŒãã¹ããšãã©ãŒãïŒã®ã«å¯ŸããTCPã¯ãã±ããã®é åºå¶åŸ¡ãåéå¶åŸ¡ããããŒå¶åŸ¡ãªã©ãè¡ããã¢ããªã±ãŒã·ã§ã³å±€ã«ä¿¡é Œæ§ã®é«ãããŒã¿ã¹ããªãŒã ãæäŸããŸãã
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã¯ããã®ãä¿¡é Œæ§ã®ä¿èšŒããéä¿¡éå§æã«å®çŸããããã®åºæ¬çãªä»çµã¿ãšããŠãTCPãããã³ã«ã®ä»æ§çå®åœåããå°å
¥ãããŠããŸãã
ãã®æé ãèžãããšã§ãéä¿¡ãéå§ããåã«åæ¹ã®éåä¿¡èœåãšç¶æ
ã確èªãåããåŸç¶ã®ããŒã¿è»¢éã®åºç€ãç£ç³ãªãã®ã«ããŠããŸãã
ä»çµã¿
ITãšã³ãžãã¢ã®ããåãã«ã3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®åäœã詳现ã«è§£èª¬ããŸãã
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã¯ã以äžã®3ã€ã®ã¹ãããã§æ§æãããTCPãããå ã®ç¹å®ã®ãã©ã°ãšã·ãŒã±ã³ã¹çªå·/確èªå¿ççªå·ãéµãšãªããŸãã
ã¹ããã 1ïŒSYN (Synchronize)
ã¯ã©ã€ã¢ã³ãããµãŒãã«å¯Ÿããæ¥ç¶èŠæ±ãšããŠSYNãã©ã°ã1ã«ã»ããããTCPãã±ãããéä¿¡ããŸãã
ãã®ãã±ããã«ã¯ãã¯ã©ã€ã¢ã³ããéä¿¡ã«äœ¿çšããåæã·ãŒã±ã³ã¹çªå·ïŒISN: Initial Sequence NumberïŒ(CISNâ)ãå«ãŸããŸãã
ã¹ããã 2ïŒSYN + ACK (Synchronize and Acknowledgement)
ãµãŒãã¯SYNãã±ãããåä¿¡ããæ¥ç¶èŠæ±ãåãä»ããŸãã
ãµãŒãã¯ã¯ã©ã€ã¢ã³ããžã®å¿çãšããŠã以äžã®èŠçŽ ãå«ãTCPãã±ãããè¿éããŸãã
SYNãã©ã°ã1ã«ã»ãã
ãµãŒãåŽã®ISNãéç¥ããŸããACKãã©ã°ã1ã«ã»ãã
ã¯ã©ã€ã¢ã³ãã®SYNã«å¯Ÿãã確èªå¿çã§ããããšã瀺ããŸãã確èªå¿ççªå· (Ack)
ã¯ã©ã€ã¢ã³ãããåãåã£ãã·ãŒã±ã³ã¹çªå·(CISNâ)ã«1ãå ããå€ (CISNâ+1)ãèšå®ããŸãã
ããã¯ããCISNãŸã§ã®ããŒã¿ïŒSYNãã©ã°ã1ãã€ããšèŠãªãïŒã¯æ£ããåä¿¡ãããããæ¬¡ã¯CISN + 1ããå§ãŸãããŒã¿ãæåŸ ããããšããæå³ãæã¡ãŸãã
ã¹ããã 3ïŒACK (Acknowledgement)
ã¯ã©ã€ã¢ã³ãã¯ãµãŒãããã®SYN + ACKãã±ãããåä¿¡ãããµãŒããæ¥ç¶å¯èœã§ããããšã確èªããŸãã
ã¯ã©ã€ã¢ã³ãã¯ãµãŒããžã®æçµç¢ºèªå¿çãšããŠãACKãã©ã°ã1ã«ã»ããããTCPãã±ãããè¿éããŸãã
確èªå¿ççªå· (Ack)
ãµãŒãããåãåã£ãã·ãŒã±ã³ã¹çªå·(SISNâ)ã«1ãå ããå€ (SISNâ+1)ãèšå®ããŸãã
ãµãŒãããã®ACKãã±ãããåä¿¡ãããšããµãŒããESTABLISHEDç¶æ ãžé·ç§»ããŸãã
ãã®3ã€ã®ã¹ããããçµãŠãåæ¹ã§ã·ãŒã±ã³ã¹çªå·ã®äº€æãšæ¥ç¶ã®åæãå®äºããESTABLISHED (確ç«) ç¶æ ãšãªããããŒã¿ã®éåä¿¡ãå¯èœã«ãªããŸãã
äºäŸ
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã¯ãã€ã³ã¿ãŒããããå©çšããã»ãšãã©å šãŠã®éä¿¡ã®éå§æã«äœ¿çšãããŠããŸãã
Webãã©ãŠãžã³ã°ïŒHTTP/HTTPSïŒ
Webãã©ãŠã¶ãWebãµãŒãã«ã¢ã¯ã»ã¹ããéãæåã«TCPã³ãã¯ã·ã§ã³ã確ç«ããããã«è¡ãããŸããã¡ãŒã«ã®éåä¿¡ïŒSMTP/POP3/IMAPïŒ
ã¡ãŒã«ã¯ã©ã€ã¢ã³ããã¡ãŒã«ãµãŒãã«æ¥ç¶ããéã«è¡ãããŸãããã¡ã€ã«è»¢éïŒFTPïŒ
ã¯ã©ã€ã¢ã³ããFTPãµãŒãã«æ¥ç¶ããå¶åŸ¡ãã£ãã«ã確ç«ããéã«è¡ãããŸããSSHã«ãããªã¢ãŒãæ¥ç¶
ã»ãã¥ã¢ãªã·ã§ã«æ¥ç¶ãè¡ãéã«ããåºç€ãšãªãTCPã³ãã¯ã·ã§ã³ã®ç¢ºç«ã«å©çšãããŸãã
課é¡
3ãŠã§ã€ãã³ãã·ã§ã€ã¯èªäœã¯ä¿¡é Œæ§ã®é«ãä»çµã¿ã§ãããæªçšããããšããã€ãã®ã»ãã¥ãªãã£äžã®èª²é¡ãåŒãèµ·ãããŸãã
SYNãã©ããæ»æ (SYN Flood Attack)
æŠèŠ
æªæããã¯ã©ã€ã¢ã³ãã倧éã®SYNãã±ãããéä¿¡ããæåŸã®ACKãè¿ããªãæ»æã§ãã圱é¿
ãµãŒãã¯åSYNãã±ããã«å¯ŸããSYN-ACKãè¿ããç¶æ ã§SYN-RECEIVEDç¶æ ã®ã³ãã¯ã·ã§ã³ïŒããŒããªãŒãã³ã³ãã¯ã·ã§ã³ïŒãä¿æãç¶ããŸãã
ããã«ããããµãŒãã®ãªãœãŒã¹ïŒã¡ã¢ãªããœã±ããïŒãæ¯æžããæ£åœãªã¯ã©ã€ã¢ã³ãããã®æ¥ç¶ãåãä»ããããªããªãïŒDoSç¶æ ã«ãªãïŒå¯èœæ§ããããŸãã
察ç
äžèšã®ãããªèª²é¡ã«å¯Ÿãã以äžã®ãããªå¯Ÿçãè¬ããããŠããŸãã
SYN Cookie
æŠèŠ
SYNãã©ããæ»æå¯ŸçãšããŠåºã䜿ãããææ³ã§ãã
SYN-RECEIVEDç¶æ ã®æ å ±ããµãŒãåŽã§ä¿æãããSYN-ACKãã±ããã®ã·ãŒã±ã³ã¹çªå·ã«æ¥ç¶æ å ±ïŒç§å¯éµãã¿ã€ã ã¹ã¿ã³ããªã©ïŒãæå·åããŠåã蟌ã¿ãŸããåäœ
ã¯ã©ã€ã¢ã³ããæåŸã®ACKãè¿ããŠããéã«ããã®ACKãã±ããã®ç¢ºèªå¿ççªå·ïŒãµãŒãã®ISN + 1ïŒããåã蟌ãŸããæ å ±ã埩å·ããŠæ£åœæ§ã確èªããåããŠã³ãã¯ã·ã§ã³ã確ç«ããŸãã
ããã«ããããµãŒãã®ã¡ã¢ãªãªãœãŒã¹ãæ¶è²»ããããšãªããæ£åœãªæ¥ç¶ã®ã¿ã蚱容ã§ããŸãã
ãã¡ã€ã¢ãŠã©ãŒã«/IPSã«ãããã£ã«ã¿ãªã³ã°
çæéã«å€§éã®SYNãã±ãããéä¿¡ããéä¿¡å IPã¢ãã¬ã¹ãæ€ç¥ã»ãããã¯ããŸããããŒããªãŒãã³ã³ãã¯ã·ã§ã³ã®ã¿ã€ã ã¢ãŠãççž®
SYN-RECEIVEDç¶æ ã®ã³ãã¯ã·ã§ã³ãä¿æãããæéãçãèšå®ãããªãœãŒã¹ã®æ©æè§£æŸãä¿ããŸãã
ä»åŸã®åå
TCPã¯é·å¹Žã«ãããã€ã³ã¿ãŒããããæ¯ããŠããŸããããè¿å¹Žã®é«å¹çåã»é«éåã®èŠæ±ããã¢ãã€ã«ç°å¢ã§ã®éä¿¡ã®æé©åãç®æããæ°ããªãããã³ã«ãç»å ŽããŠããŸãã
QUIC (Quick UDP Internet Connections)
æŠèŠ
GoogleãéçºããIETFã§æšæºåãé²ããããŠãããããã³ã«ã§ãUDPãããŒã¹ãšããŠããŸããé¢é£æ§
QUICã¯ãTCPã®3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã«ä»£ãããããé«éãª0-RTT (Zero Round Trip Time) ãŸã㯠1-RTT ã§ã®ã³ãã¯ã·ã§ã³ç¢ºç«ãå®çŸããŸãã
ç¹ã«ããã³ãã·ã§ã€ã¯ãšåæã«æå·åïŒTLSïŒã®æ å ±ã亀æããããšã§ãé å»¶ãå€§å¹ ã«åæžããŠããŸããå°æ¥æ§
Webãã©ãã£ãã¯ãäžå¿ã«æ¡çšãé²ãã§ãããå°æ¥çã«ã¯TCP/3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®å©çšã·ãŒã³ã®äžéšãQUICã眮ãæããå¯èœæ§ããããŸãã
ãã ããTCPã®ã·ã³ãã«ããšå ç¢æ§ãããåºç€æè¡ãšããŠã®å°äœã¯åŒãç¶ãéèŠã§ãã
åé¡
TCP ã®éä¿¡ã«ãããŠããµãŒããã¯ã©ã€ã¢ã³ãããèŠæ±ãåããŠ3ãŠã§ã€ãã³ãã·ã§ã€ã¯ãçšããTCP ã³ãã¯ã·ã§ã³ã確ç«ãããšãããµãŒããSYNãã©ã°ã®ä»ãããã±ãããåãä»ããã®ã¯ã©ã®ç¶æ ã®ãšããã
ã¢ãLISTEN
ã€ãSYN-RECEIVED
ãŠãSYN-SENT
ãšãTIME-WAIT
解説
æ£è§£ã¯ãã¢ãã§ãã
è§£çãå°ãããã®èãæ¹
ãã®åé¡ã¯ãTCPã®ç¶æ é·ç§»ãç¹ã«ã³ãã¯ã·ã§ã³ã®ç¢ºç«ïŒ3ãŠã§ã€ãã³ãã·ã§ã€ã¯ïŒã«ããããµãŒãåŽã®åœ¹å²ãçè§£ããŠããããåããŠããŸãã
泚ç®ãã¹ãã¯ãããµãŒããããã¯ã©ã€ã¢ã³ãããèŠæ±ãåããŠïŒã€ãŸãSYNãåãåã£ãŠïŒãã³ãã¯ã·ã§ã³ã確ç«ããéã®æåã®ç¶æ ã§ãã
泚ç®ãã€ã³ãïŒãµãŒãåŽã®ç¶æ é·ç§»
æ¥ç¶åŸ æ©ç¶æ
ãµãŒãã¯ãã¯ã©ã€ã¢ã³ãããã®æ¥ç¶èŠæ±ãåŸ ã¡åããŠããå¿ èŠããããŸãã
ãã®ãåŸ ã¡åããç¶æ ãã©ã®ç¶æ ã«å¯Ÿå¿ããããç¹å®ããŸããSYNãã±ããã®åŠç
ãµãŒãã¯ãã¯ã©ã€ã¢ã³ãããSYNãã©ã°ãã»ããããããã±ããïŒæ¥ç¶èŠæ±ïŒãåãåããšãSYN-ACKãè¿ããæ¬¡ã®ç¶æ ãžé·ç§»ããŸãã
åéžæè¢ã®ç¶æ ã®ç¢ºèª
ã¢ãLISTEN (åŸ ã¡åã)
ããã¯ããµãŒããæ¥ç¶ãåŸ ã¡åããŠããç¶æ ã§ãã
TCPããŒããéæŸããã¯ã©ã€ã¢ã³ãããã®æåã®ãã±ããïŒSYNïŒãåãä»ããæºåãã§ããŠããŸãã
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®ã¹ããã1ã§SYNãã±ãããåä¿¡ããããµãŒãã®åæç¶æ ã«è©²åœããŸãã
ã€ãSYN-RECEIVED (SYNåä¿¡)
ããã¯ããµãŒããã¯ã©ã€ã¢ã³ãããSYNãåä¿¡ããSYN-ACKãéä¿¡ããåŸã®ç¶æ ã§ãã
ã¯ã©ã€ã¢ã³ãããã®æåŸã®ACKãåŸ ã£ãŠããç¶æ ã§ãã
ãŠãSYN-SENT (SYNéä¿¡)
ããã¯ãäž»ã«ã¯ã©ã€ã¢ã³ãåŽããæ¥ç¶éå§ã®ããã«ãµãŒããžSYNãéä¿¡ããåŸã®ç¶æ ã§ãã
ãšãTIME-WAIT (æéåŸ ã¡)
ããã¯ãã³ãã¯ã·ã§ã³ãåæããéã®æçµç¶æ ã§ãããã³ãã¯ã·ã§ã³ç¢ºç«ã®æåã®æ®µéãšã¯ç¡é¢ä¿ã§ãã
ãããã£ãŠããµãŒããã¯ã©ã€ã¢ã³ãããã®æ¥ç¶èŠæ±ïŒSYNãã±ããïŒãåŸ ã¡åããŠåãä»ããç¶æ ã¯ããLISTENãã§ãã
ãŸãšã
ITãšã³ãžãã¢ãšããŠãã®èšäºããåŸãããç¥èŠ
ãã®èšäºãéããŠãããªãã¯åãªãã3ã€ã®ã¹ãããããšãã衚é¢çãªç¥èãè¶ ããTCP 3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®ãããã§ãã·ã§ãã«ãªçè§£ãåŸãããŸããã
ä¿¡é Œæ§ã®åºç€çè§£
3ãŠã§ã€ãã³ãã·ã§ã€ã¯ããåãªãæ¥ç¶ã§ã¯ãªããåæ¹åã®éåä¿¡èœåãšåæã·ãŒã±ã³ã¹çªå·ïŒISNïŒã®äº€æãä¿èšŒããä¿¡é Œæ§ã®åºç€ã§ããããšãææ¡ããŸããã
ç¹ã«ISNã®äº€æã¯ããã®åŸã®ããŒã¿ã®é åºå¶åŸ¡ãåéå¶åŸ¡ã®èµ·ç¹ãšãªããŸããç¶æ é·ç§»ãšãã©ã°ã®æå³
SYNãšACKãã©ã°ã®å³å¯ãªåœ¹å²ãšãLISTENãSYN-RECEIVEDãESTABLISHEDãšãã£ãç¶æ é·ç§»ãé¢é£ä»ããŠçè§£ããããšã§ããããã¯ãŒã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ïŒäŸïŒãã±ãããã£ããã£è§£æïŒã®éã«ãã©ã®æ®µéã§åé¡ãçºçããŠããããæ£ç¢ºã«ç¹å®ã§ããããã«ãªããŸãããã»ãã¥ãªãã£ãšå¯Ÿç
SYNãã©ããæ»æãšããå ·äœçãªã»ãã¥ãªãã£èª²é¡ãšããããé²ãããã®SYN Cookieãšããé«åºŠãªæè¡çãªå¯Ÿçãç¥ãããšã§ãã»ãã¥ã¢ãªã€ã³ãã©èšèšã®èŠç¹ãæã€ããšãã§ããŸãããæè¡ã®é²å
QUICãªã©ã®æ°ãããããã³ã«ã®ååãææ¡ããTCPãæã€é 延課é¡ãšãããã解決ããããšããæè¡ã®æ¹åæ§ãçè§£ããŸããã
ä»åŸæŽ»ãããŠããããã®ã¢ããã€ã¹
ãããã¯ãŒã¯ã¹ãã·ã£ãªã¹ããšããŠããããã®ç¥èãå®åã§æŽ»ãããããã«æ·±ããããã®ã¢ããã€ã¹ã¯ä»¥äžã®éãã§ãã
ãã±ããè§£æã®å®è·µ
Wiresharkãªã©ã®ãã±ãããã£ããã£ããŒã«ã䜿çšããŠãå®éã®3ãŠã§ã€ãã³ãã·ã§ã€ã¯ã®éä¿¡ããã£ããã£ããTCPãããå ã®ãã©ã°ãã·ãŒã±ã³ã¹çªå·ã確èªå¿ççªå·ãã©ã®ããã«å€åããŠããããèªåã®ç®ã§ç¢ºèªããŠãã ããã
æç§æžçãªç¥èããçããããŒã¿ãšããŠçµã³ã€ããŸããç¶æ é·ç§»ã®æèšãšå¿çš
TCPã®å šç¶æ é·ç§»å³ïŒCLOSEDããTIME-WAITãŸã§ïŒãå®å šã«ææ¡ããããããã®ç¶æ ãã©ã®ãããªãªãœãŒã¹ïŒã¡ã¢ãªãããŒãïŒãæ¶è²»ããŠããããæèããŠãã ããã
ããã«ããããµãŒãã®ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ã®è³ªãæ Œæ®µã«åäžããŸãããããã³ã«ã®æ¯èŒç ç©¶
QUICãšTCPã®ãã³ãã·ã§ã€ã¯ãä¿¡é Œæ§ç¢ºä¿ã®ã¡ã«ããºã ãæ¯èŒç ç©¶ããããšã§ã次äžä»£ãããã¯ãŒã¯æè¡ãžã®å¯Ÿå¿åãé«ããããšãã§ããŸãã
ãã®ç¢ºåºããåºç€ç¥èã¯ãããªãã®ãã£ãªã¢ãæ¯ãã匷åãªæŠåšã«ãªããŸããé 匵ã£ãŠãã ããïŒ