혹시 예전에 이곳에서 ‘중국 차이나텔레콤이 캐나다에서 한국 정부로 오는 트래픽을 납치했었다’는 기사를 읽은 분이 계신지 모르겠습니다. 지난 2016년 2월부터 약 6개월 동안 캐나다에서 한국 정부 웹사이트로 접속하려는 트래픽은 중간에 중국 땅을 지나서 오는 현상이 있었습니다. 이는 중국 통신사인 차이나텔레콤이 해당 트래픽을 ‘납치’했었기 때문입니다.
- 중국이 한국 정부로의 인터넷 백본을 납치함 (2018-10-27)
https://gigglehd.com/gg/3736699
이런 일이 일어나는 근본 원인은 바로 현재의 인터넷이 설계되던 때는 보안이 지금처럼 중요하게 여겨지지 않던 시대였기 때문입니다. 인터넷은 서로 다른 수많은 네트워크가 전세계적으로 연결된 통신망인데, 이를 이루는 각각의 네트워크는 AS(Autonomous System, 자치 시스템)라고 합니다. 각 AS는 관할지역 인터넷 관리기구로부터 ASN(망식별번호)을 부여받아 서로를 구분합니다. 예를 들면 KT는 ISP(인터넷 서비스 공급회사)이고 4766이라는 ASN을 APNIC(아태지역네트워크정보센터)으로부터 부여받았지요. KT, SKB, 유플러스 같은 통신사나 구글, MS, 아마존, 클라우드플레어 같은 대형 IT 기업은 각자 자신만의 네트워크를 가지고 고유한 ASN을 부여받았습니다. 이러한 AS들을 서로 연결해야 진정한 인터넷이 되는 것인데, 이때 사용되는 것이 BGP(Border Gateway Protocol)입니다.
BGP를 간단히 설명하면 이렇습니다. 각 AS들은 서로 다른 여러 IP 주소대역을 할당받고 있으며, 이를 다른 AS에게 알리는 BGP 라우터란 것을 두고 있습니다. 각 AS에 속한 BGP 라우터는 서로 이웃한 BGP 라우터에 자신이 속한 IP 주소대역에 대해 알려줍니다. 예를 들어 123이라는 ASN을 부여받은 네트워크에 1.2.3.0/24 대역(1.2.3.0부터 1.2.3.255까지)의 IP 주소가 할당되어 있다면, 이 AS의 BGP 라우터에서는 이웃한 네트워크의 BGP 라우터에 “1.2.3.0/24 대역에 속한 IP 주소로 가는 패킷이 있으면 ASN 123 쪽으로 보내달라”고 알리는 것입니다. 그렇게 해서 다른 네트워크에서 123 AS로 패킷이 오면, 그 안에서의 패킷 처리는 123 네트워크의 내부 라우팅 정책에 따라 결정됩니다. 그래서 ‘자치 시스템’인 것이지요.
문제는 이 BGP라는 프로토콜은 순전히 상호간의 신뢰에만 의존하고 있어서, 누군가 잘못된 정보를 뿌려도 이를 전혀 의심하지 않는다는 심각한 취약점이 있습니다. 원래 BGP는 1980년대에 만들어졌는데, 그 당시에는 네트워크끼리 서로를 속일 수도 있다는 생각을 전혀 하지 않은 채 이를 설계했기 때문이지요. 그래서 종종 실수로 이게 잘못 설정되어 문제가 되는 경우가 있기도 한데(예를 들어 국내에서는 2004년에 충남대학교의 라우터에 전국의 트래픽이 몰려 국내 인터넷이 1시간 가량 마비된 사건이 있었습니다), 근래에 들어서 점차 실수가 아니라 의도적으로 잘못된 정보를 뿌리는 경우가 늘어나고 있습니다. 이렇게 하면 글 맨 처음에 서술한 것과 같이 트래픽을 다른 곳으로 납치하는 것이 가능하지요. 실제로 이를 해킹에 사용하는 사례도 발견되고 있습니다. 예를 들면 2018년 4월에는 어떤 해커가 이더리움 전자지갑 사이트인 myetherwallet.com에 접속하는 사용자들을 노리고 이와 같은 수법을 응용하여 1700만 달러 상당의 이더리움을 빼돌린 사건이 있었습니다. 사용자는 분명히 올바른 URL을 입력했지만 해커가 준비한 러시아의 가짜 서버에 접속하고 만 것이지요. 사건이 벌어지던 2시간 동안 아마존 소유의 IP 1275개가 이 해커의 손아귀에 들어 있었습니다. 이외에도 이러한 수법을 일부 국가에서 인터넷 검열 등에 사용하고 있다고 합니다.
이런 보안 문제점을 해결하기 위해 RPKI라는 라우팅 인증 시스템이 제안되었습니다. 대략적으로 비유하자면, http에 암호키 서명이 담긴 인증서를 적용하여 https로 만드니 보안성이 향상된 것처럼 BGP에도 인증서 기술을 적용하는 것입니다. 사실 이것만으로는 완벽하게 안전하다고 볼 수가 없어서 중간에 지나가는 모든 경로를 검증하는 BGPsec이라는 표준이 새로 제정되었지만, 이는 아직 완전히 성숙하지 않은 기술이라고 합니다. 그러나 클라우드플레어에 따르면 이제 RPKI 정도는 충분히 성숙했다고 하네요. 그럼에도 불구하고 RPKI조차 적용되지 않은 네트워크가 아직 대다수입니다. 심지어는 구글이나 마이크로소프트와 같은 선도적인 IT 기업조차 이를 적용하지 않고 있지요. 미국 NIST(국립표준기술연구소)의 자료에 따르면, 지난달(2020년 3월)까지도 전세계 RPKI 적용 비율은 채 20%를 넘기지 못했습니다.
그래서 클라우드플레어는 RPKI 적용을 촉진하기 위해, 지금 자신이 사용하고 있는 ISP가 RPKI를 적용했는지 여부를 확인할 수 있는 웹사이트를 개설하였습니다. 아래 사이트에 접속해서 [Test your ISP] 버튼을 누르면 지금 사용중인 ISP의 ASN과 함께 해당 ISP의 RPKI 적용 여부가 출력됩니다.
아마도 이 글을 쓰는 현재 시점에서는 위 사이트에서 테스트를 해보면 대부분의 사람이 [실패]라고 뜰 것입니다. 현재 이와 같은 조치를 제대로 한 통신사는 세계적으로도 일본의 NTT나 스웨덴의 Telia 정도밖에 없다고 하는군요. 미국 AT&T와 같은 다른 외국 ISP는 부분 적용이라고 나오고, 프랑스의 오랑주나 독일의 도이치텔레콤은 이제 작업을 시작했다고 합니다. 앞서 언급한 것처럼 구글이나 마이크로소프트 같은 대형 IT기업도 아직 미적용한 조치이니만큼, 이게 적용되지 않았다고 해서 아직 세계적 추세에 뒤떨어졌다고 판단하기는 이릅니다. 그래도 이런 것이 국내 통신사에도 하루빨리 적용되었으면 좋겠군요.
참고 - KRNIC(한국인터넷정보센터)의 RPKI 설명 :
https://krnic.or.kr/jsp/resources/rpki.jsp