BGP: 신뢰 위에 돌아가는 프로토콜

BGP는 내장 인증 없이 인터넷을 라우팅한다. 어떤 AS든 어떤 프리픽스를 공지할 수 있다. 라우트 하이재킹이 터무니없이 쉽다.

인터넷은 기본적으로 낙관주의 위에 만들어진 프로토콜로 패킷을 라우팅한다.

가혹하게 들리지만 1989년에는 낙관주의가 미친 짓이 아니었다. BGP는 더 작고 더 협력적인 인터넷에서 나왔다. 참여자 수가 적었고 인센티브가 단순했고 프로토콜의 임무는 대체로 자율 시스템이 “이 프리픽스에 도달할 수 있고, 여기가 경로야”라고 말하게 하는 것이었다.

아무도 설계에 포함시키지 않은 것: 발표자가 그 주장을 할 권리가 있는지 증명하는 진짜 방법.

그래서 BGP는 아직도 정책, 관례, 필터링, 선의의 혼합으로 돌아간다. 암호화 오리진 검증은 나중에 볼트로 달았다. 인터넷이 더 이상 마을이 아니라는 걸 인정해야 했으니까.

BGP가 실제로 하는 일

BGP — Border Gateway Protocol — 는 자율 시스템(AS)이 라우팅 정보를 교환하는 방법이다. AS는 단일 관리 주체 아래 있는 네트워크 — ISP, 클라우드 제공자, 대기업, 대학.

AS가 IP 프리픽스와 그 프리픽스에 도달하는 AS 번호 경로를 공지한다. 이웃이 공지를 받고, 로컬 정책을 적용하고, 경로 속성을 비교하고, 선호 경로를 고르고, 자기 이웃에게 재공지한다. 글로벌 그래프 전체에서 반복하면 네트워크 간 트래픽을 이동시키는 도메인 간 라우팅 시스템이 된다.

중앙 권한이 없다. “이게 맞다”고 말하는 글로벌 라우팅 테이블이 없다. 수천 개의 자율 시스템이 정보를 교환하고 서로 진실을 말한다고 신뢰할 뿐이다.

신뢰 문제

BGP에는 AS가 공지하는 프리픽스를 실제로 소유하는지 검증하는 내장 메커니즘이 없다. 어떤 AS든 어떤 프리픽스를 공지할 수 있다. AS 12345가 실제로는 AS 67890에 속하는 프리픽스를 라우팅할 수 있다고 공지하면, 이웃 네트워크가 종종 수락한다. AS 67890으로 가야 할 트래픽이 AS 12345로 간다.

라우트 하이재킹이다. 무섭도록 쉽다.

더 구체적인 프리픽스가 이긴다. 정당한 소유자가 203.0.113.0/24를 공지하면, 공격자가 203.0.113.0/25203.0.113.128/25를 공지할 수 있다. 더 구체적인 라우트가 BGP 결정 알고리즘에서 선호된다. 피해자가 아무것도 잘못 안 해도 트래픽이 공격자로 이동한다.

잘못될 때

파키스탄과 YouTube (2008). 파키스탄 텔레콤이 국내에서 YouTube를 차단하려 했다. YouTube의 IP 프리픽스를 내부에서 공지했다. 공지가 업스트림 제공자를 통해 글로벌 라우팅 테이블로 유출됐다. 약 2시간 동안 인터넷 상당 부분에서 YouTube가 접근 불가였다. 트래픽이 파키스탄 텔레콤으로 라우팅되었고 거기서 버려졌다.

사고였다. 라우트 유출이 악의적이지 않았다. 누군가 필터를 잘못 설정했고 글로벌 인터넷이 피해를 봤다.

의도적 하이재킹은 귀속이 더 어렵지만 문서화되어 있다. 암호화폐 탈취, 감시를 위한 트래픽 가로채기, DNS 조작 — 모두 BGP 하이재킹 이벤트와 연결됐다.

RPKI: 진행 중인 해결책

RPKI — Resource Public Key Infrastructure — 가 라우트 오리진에 암호화 증명을 추가한다. 자원 보유자(IP 프리픽스를 소유한 주체)가 Route Origin Authorization(ROA)을 만든다: “AS 67890이 프리픽스 203.0.113.0/24를 공지할 권한이 있다.”

ROA는 자원 보유자의 개인키로 서명되고 분산 저장소에 게시된다. 네트워크 운영자가 RPKI 검증기를 실행해서 들어오는 BGP 공지를 게시된 ROA와 대조할 수 있다. 유효한 ROA가 없는 AS가 프리픽스를 공지하면 검증기가 플래그한다. 운영자가 공지를 거부할 수 있다.

RPKI 채택이 최근 몇 년간 상당히 성장했다. 주요 ISP와 클라우드 제공자가 라우트를 검증한다. 하지만 보편적이지는 않다. 닭과 달걀이 여기도 적용된다. ROA가 있어야 검증기가 확인한다. 검증기가 있어야 라우트가 서명된다. 보편적 채택 없이는 공격자가 ROA가 없는 프리픽스를 하이재킹하거나 검증하지 않는 네트워크를 표적으로 삼을 수 있다.

덕트테이프 인터넷

BGP는 덕트테이프와 선의로 인터넷을 붙잡고 있다. 모든 네트워크 운영자가 알려진, 협력적 참여자이던 세상을 위해 설계됐다. 그 세상은 오래전에 갔지만 프로토콜은 남아있다.

RPKI가 맞는 해결책이다 — 권한의 암호화 증명. 하지만 보편적 배포는 DNSSEC, IPv6, 그리고 모든 인터넷 전체 업그레이드를 괴롭히는 것과 같은 종류의 협조 문제다. 기술은 존재한다. 채택이 뒤처진다.

그 사이에 인터넷은 아무나 만들 수 있고 아무도 검증할 필요 없는 공지에 기반해서 계속 트래픽을 라우팅한다. 보통은 작동한다. 안 되면 결과가 글로벌할 수 있다.

BGP다. 아마 그러면 안 되는 세상에서 신뢰 위에 돌아가는 프로토콜.

토론 참여

← 블로그로 돌아가기