인터넷의 원리
인터넷은 수많은 컴퓨터들이 연결되어 있는 망인 걸 모르는 사람들은 없을 거예요.
그런데 그 망의 구조는 계층 구조로 되어 있다고 해요.
만약 여러분이 jinanmuzik 사이트에 접속한다고 할게요.
여러분이 주소창에 www.jinanmuzik.com을 치면 jinanmuzik 서버에 사이트 내용을 보내달라고 요청하는 패킷(메시지)을 보내게 돼요.
그 패킷이 여러분의 집에 있는 통신장비에서 랜선을 타고 ISP 서버(KT, SK, LGU등 여러분이 쓰는 인터넷 회사 서버)로 가게 돼요.
ISP를 거쳐서 우리나라 인터넷의 최상위 서버로 거슬러 올라가 jinanmuzik.com 서버까지 가게 되죠.
jinanmuzik.com 서버에 그 메세지를 받으면 반대로 여러분의 집 인터넷 주소로 사이트 내용을 담은 패킷을 보내서 위와 반대 과정을 거쳐서 보내고 여러분은 그 패킷을 받게 되어 사이트를 볼 수 있게 되는 거예요.
Http 와 Https 의 차이
http는 인터넷에서 쓰는 통신 프로토콜이라고 해요.
프로토콜은 규칙이라고 생가가하면 되요.
패킷이란 것도 컴퓨터에서 쓰이는 데이터이기 때문에 0과 1로만 이루어져 있어요.
정해진 자리에 따라 각각의 자리가 정해진 내용을 담고 있죠.
예를 들면(실제 패킷 포맷과는 다르고 말 그대로 예시에요.)
0번째에서 8번째까지는 출발지 주소,
9번째부터 16번째까지는 도착지 주소, 17번째부터 그 뒤로는 내용.
이렇게 정해 놓아야 패킷을 보고서 처리 할 수 있겠죠??
그럼 https는 뭘까요?
http에 간단하게 보안이 추가된 것이라고 생각하면 될거에요.
패킷 내용 전체를 암호화 하기 때문에 방금 말한 포맷과는 전혀 다른 암호화된 패킷이 보내지게 되는 것이죠.
여러분이 암호화해서 보내면 서버에서는 복호화 해서 패킷 내용을 알게 되는 것이죠.
그리고 중간에 거치는 ISP나 도메인 서버들은 그 내용을 복호화 할 수 없다고 해요.
다시말해 중간에서 패킷을 가로채서 내용을 확인하거나 내용을 바꾸는 행위가 먹히지 않는다는 이야기가 되겠죠.
http는 여러분이 보낸 패킷이 ISP를 거쳐서 상위 계층까지 갔다가 다시 하위 계층에 있는 웹 서버까지 가는 도중에 중간에서 가로채서 내용을 볼 수 있다는 것인 반면,
https는 여러분이 보낸 패킷을 중간에 있는 ISP나 다른 개체가 볼 수 없다는 것이에요.
오로지 암호화와 복호화는 양쪽 끝단에서만 가능하다는 것이죠.
DNS 란 ?
인터넷이 연결된 모든 서버나 단말기는 IP주소를 할당 받아 가지고 있어요.
IP주소는 편지 쓸때처럼 우체국이 처리 할 수 있게 보내는 사람 주소와 받는 사람 주소를 패킷에 적게 되는데 주소가 적혀있어야 우체부가 배달 할 수 있잖아요??
그런데 여러분이 jinanmuzik.com에 들어가려고 jinanmuzik.com 서버의 IP 주소 000.000.000.000 숫자를 외우고 있는게 쉽지 안잖아요.
그래서 편의를 위해 jinanmuzik.com이라는 도메인 이름을 사용하게 되는 것이죠.
DNS서버는 jinanmuzik.com의 도메인 이름과 이에 해당되는 IP주소를 매칭시켜주는 정보를 가지고 있어서 연결시켜주는 연할을 하게 되는 거에요.
쉽게 IP주소 및 도메인 이름은 둘 다 주소 역활을 하는 것이라고 생각하시면 될거에요.
DNS 오염
기본에 이용하던 사이트가 갑자기 위 화면이 뜨게 되면 빡침을 누구나 느껴 봤을 거에요.
여러분이 www.turnonvpn.org 라는 도메인 이름을 적었을 때 실제 주소인 198.61.190.243을 알려주는 게 아니라
정부에서 저 그지같은 화면의 IP주소와 www.turnonvpn.org 도메인 이름을 매칭시킨 것을 한국의 DNS 서버에 입력시킨 뒤
한국에서 www.turnonvpn.org 라는 주소로 들어가려고 하면 항상 DNS server에서 잘못된 IP 주소를 알려주도록 해놓는 거에요.
SNI 필터링
많은 사람들이 https 차단 이라고 하는데 정확하게 문재인 정부가 하려는 정책이름은 SNI 필터링이라고 해요.
https 차단이라고 하면 기존 암호화해서 패킷을 보내는 것을 막는다는 것인데 이 것은 아니라는 것이죠.
SNI란, 간단히 말해서 도메인 이름을 알려 https 통신의 인증을 학 위한 프로토콜이라고 해요.
이용자와 사이트가 암호화 통신을 하려면 암호화, 복호화 하기위한 키(비밀번호)가 필요하다고 해요.
이 키를 생성하는 과정을 인증 과정(TLS HandShaking)이라고 하는데,
https의 통신시 처음에 인증을 해야 되는데 이 때 도메인 이름()을 통해 통신하고자 하는 상대를 찾는데 이 것을 암호화하면 찾을 수 없게 되잖아요.
그래서 도메인 이름은 평문(암호화하지 않은 것)으로 보내지고,
인증이 끝나고 나서야 그 때 부터 일어나는 모든 통신이 암호화 되는 것이라고 해요.
처음 인증 할 때 보내지는 도메인 이름을 포함한 패킷이 SNI패킷이라고 생각하시면 되요.
SNI패킷은 어떤 사이트를 들어가던지 평문이기 때문에 그 이후에 벌어지는 https 통신의 암호화된 패킷 내용을 검열하는 것과는 별개의 일이 되는 거이죠.
원래도 필터링을 하건 안하건 여러분이 어느 사이트를 들어가려고 처음 시도했는지는 다 알 수 있다는 뜻 이라고 해요.