출처: 모질라 웹 기술블로그
날짜: 2019.10.27
HTTP -> HTTPS
브라우저에서 서버로 요청이 전달되려면, 중간에 여러 손을 거쳐야 합니다. 서버로부터 응답이 되돌아 올 때도 마찬가지입니다.
이 방식의 문제점은 중간 경로에 있는 누구라도 쪽지를 읽을 수 있다는 것입니다. 그리고 사전에 쪽지가 어떤 경로로 전달될지 알 수 없습니다. 그래서 어떤 아이들이 쪽지를 보는지 알 수 없습니다. 또는 응답 내용을 바꾸는 짓도 있습니다.
이런 문제를 해결하기 위해, 새로운, 보안상 안전한 HTTP인 HTTPS 가 만들어졌습니다. HTTPS 는 모든 메시지에 자물쇠를 거는 것입니다.
자물쇠를 여는 번호는 브라우저와 서버 말고는 중간 단계의 누구도 알지 못합니다.
데이터가 노출될 수 있는 또다른 지점은 DNS 입니다.
DNS (Domain Name System)
당신은 사용자가 당신 웹사이트의 IP 주소를 기억하리라고 기대하지 못할 것입니다. 대신 당신은 당신의 웹사이트에 기억하기 쉬운 이름을 부여하고 싶을 것입니다.
당신의 브라우저는 DNS 를 이용해서 사이트 이름을 IP 주소로 변환합니다. 도메인 네임을 IP 주소로 바꾸는 이런 과정을 Domain Name Resolution이라고 합니다.
도메인 네임을 작은 부분들로 나누면 우리는 해당 사이트의 IP 주소를 담고 있는 목록을 찾을 수 있습니다. 이 과정에서 도움을 주는 어떤 장치가 필요합니다. 리졸버(resolver)라고 불리는 장치입니다. 리졸버는 Root DNS 서버, 톱레벨 도메인 (TLD : Top-Level Domain) 네임 서버, 오쏘러테이티브 서버 (Authoritative Server)에서 보물찾기를 수행하여 IP 주소를 찾아 줍니다.
문제는 당신이 커피숍이나 호텔 등에 가서 다른 네트워크를 사용할 경우, 당신은 아마도 다른 리졸버를 사용할 겁니다. 그 리졸버의 데이터 수집 정책이 어떤지는 아무도 모른다는 겁니다.
DNS 서버에게 당신이 찾는 도메인을 묻습니다. 이런 요청에 당신의 전체 IP 주소가 포함됩니다. 전체 IP 주소가 아니더라도 당신 IP 주소의 대부분이 포함됩니다. 이를 다른 정보와 조합하면 당신이 누구인지 알아낼 수 있습니다.
DNS 시스템이 사용자의 데이터를 위험에 빠뜨리는 몇 가지 경우가 있습니다. 그 중 중요한 두 가지 위협은 트래킹(Tracking) 과 스푸핑(Spoofing)입니다.
Tracking
전체 IP 주소 또는 일부 IP 주소를 가지고 어떤 웹사이트를 찾는 사람이 누구인지 밝혀내는 것은 쉬운 일입니다.
그들은 그들이 지켜본 내용을 기초로 당신이 찾았던 모든 웹사이트들의 기록을 만들 수 있습니다.
그 데이터는 무척 귀한 데이터입니다. 당신 찾는 웹사이트 내역을 알 수 있다면, 많은 사람들과 회사들이 기꺼이 큰 돈을 치르려 할 것입니다.
Spoofing
당신과 DNS 서버 사이에 있는 누군가가 DNS 서버의 응답을 변경하는 것입니다. 당신에게 진짜 IP 주소를 알려주는 대신, 스푸핑 하는 사람은 웹사이트에 대한 가짜 IP 주소를 전달합니다. 이렇게 함으로써 그들은 당신이 진짜 웹사이트에 방문하는 것을 막거나 스캠(scam) 웹사이트를 보여줍니다.
위와 같이 사용자의 프라이버시와 보안에 대한 위협이 커지고 있음에 따라 Mozilla 가 사용자 보호를 위해 다음 두 가지를 더 추가하려고 합니다.
-
DoH (DNS over HTTPS).
-
TRR (Trusted Recursive Resolver).
문제 해결 방법
-
TRR (Trusted Recursive Resolver) 를 사용함으로써 신뢰할 수 없는 리졸버 사용을 피합니다.
-
DoH (DNS over HTTPS) 를 사용함으로써 경로 상에서의 도청을 방지합니다.
-
가능한 최소한의 데이터만 전송해서 사용자를 식별하지 못하게 합니다.
TRR 을 사용함으로써 신뢰할 수 없는 리졸버 사용을 회피
사용자의 DNS 데이터를 보호하기 위해 Cloudflare 회사는 사용자 친화적인 프라이버시 정책과 함께 RRS (Recursive Resolution Service) 를 제공합니다. Cloudflare 는 24시간마다 사용자를 식별에 사용될 수 있는 모든 데이터를 폐기하며, 그 데이터를 제 3자에게 제공하지 않습니다. 그리고 그 데이터가 규정대로 폐기되었음을 증명하는 감사 자료를 제공합니다.
이제, 우리는 사용자의 프라이버시를 보호하는 신뢰할 수 있는 리졸버를 갖게 된 것입니다. 이는 이제 Firefox 가 네트워크가 제공하는 리졸버를 무시하고 Cloudflare 의 리졸버를 사용할 수 있게 됐음을 의미합니다. 신뢰할 수 있는 리졸버를 확보함으로써 우리는 사용자 데이터를 팔아먹는 리졸버나 가짜 응답을 제공하는 Spoof DNS 에 대한 걱정을 할 필요가 없어졌습니다.
DoH (DNS over HTTPS) 를 사용함으로써 경로 상에서의 도청을 방지
그런데, 리졸버가 위협의 전부는 아닙니다. 경로 라우터들도 DNS 기록을 수집하고 위장할 수 있습니다. 하지만 인터넷에는 이런 도청을 막는 기술이 이미 존재합니다. 바로 암호화 기술입니다.
DNS 패킷 전달 과정에 HTTPS 를 사용하면, 누구도 사용자가 만드는 DNS 요청을 도청할 수 없습니다.
최소한의 데이터만 전송해서 사용자 식별을 방지
리졸버는 도메인 네임 전부를 모든 서버들(루트 DNS, TLD 네임서버, 2차 네임서버 등)에 전달합니다. 하지만 Cloudflare 는 약간 다른 방식으로 동작할 것입니다. Cloudflare 는 상대하는 DNS 서버에 따라 꼭 필요한 일부 정보만 전달할 것입니다. 이것을 QNAME minimization 이라고 부릅니다.
또 리졸버는 요청을 보낼 때 당신 IP 주소의 처음 24비트를 포함시켜 보냅니다. DNS 서버는 이 정보를 이용해서 당신 근처의 CDN 을 골라 추천해줍니다. 하지만 이 정보는 DNS 서버들이 다른 불순한 용도로 악용하기 쉽습니다.
대신, Cloudflare 는 Cloudflare 이 보유한 당신 근처의 다른 IP 주소를 이용해서 DNS 요청을 만듭니다. 이렇게 하면 지리적 정보를 제공하면서도 사용자를 식별하지 못하게 할 수 있습니다.
이렇게 도메인 네임에서 불필요한 부분을 없애고 당신의 IP 주소를 포함시키지 않으면 DNS 서버가 당신에 관한 정보를 수집하기 어려워집니다.
'개발포스팅' 카테고리의 다른 글
웹개발 흔한 이슈 브라우저 정책 CORS 란? (0) | 2021.09.27 |
---|---|
클린코드 (0) | 2021.08.06 |
3월 개발 포스팅 리스트 공유 (0) | 2021.03.24 |
2월 주니어 웹개발자를 위한 포스팅 (0) | 2020.03.03 |
국내 해외 기업 IT 기술 블로그 모음 (0) | 2020.02.25 |
댓글