본문 바로가기
기타 진열장/여러정보들 집합소

https에대해서 알아보자

by JiNan's 2019. 2. 8.
반응형

1. 인터넷의 원리



인터넷이 수많은 컴퓨터들이 연결되어있는 망인 걸 모르는 게이는 없을 거야. 

그런데 그 망의 구조는 계층 구조로 되어있어.


니가 일베사이트에 접속 한다고 치자. 

니가 ilbe.com 을 주소창에 치면 일베 서버에 사이트 내용을 보내달라고 요청하는 패킷(메시지)을 보내는데, 

그 패킷이 너네 집에 있는 통신장비에서 랜선을 타고 ISP 서버(Kt, Sk, LG 등 니가 쓰는 인터넷 회사서버)로 간다. 

ISP를 거쳐 우리나라 인터넷의 최상위 서버로 거슬러 올라가 일베 서버까지 가게 돼.


일베 서버가 그 메시지를 받으면 반대로 너네집 인터넷 주소로 

사이트 내용을 담은 패킷을 보내서 위와 반대 과정을 거쳐 보내고 

너는 그 패킷을 받게 되어 사이트를 볼 수 있는 것임.



2. Http 와 Https 의 차이



Http는 인터넷에서 쓰는 통신 프로토콜임. 

프로토콜은 규칙이라고 생각하면 돼. 

패킷이란 것도 컴퓨터에서 쓰이는 데이터이기 때문에 0과 1로만 이루어져 있는데 

정해진 자리에 따라 각각의 자리가 정해진 내용을 담고 있지.


예를 들면 (실제 패킷 포맷과는 다름. 말그대로 예시임)

0번째에서 8번째까지는 출발지 주소, 

9번째부터 16번째까지는 도착지 주소 17번째부터 그 뒤로는 내용.


이렇게 정해 놓아야 패킷을 보고 처리를 할 수 있겠지?


그럼 Https는 뭘까? 

http에 간단하게 보안이 추가된거라고 생각하면 된다. 

패킷 내용 전체를 암호화 하기 때문에 방금 말한 포맷과는 

전혀 다른 암호화된 패킷이 보내지는 것이며 

니가 암호화해서 보내면 서버에서는 복호화 해서 패킷 내용을 알게 되는 것이지.


그리고 중간에 거치는 ISP나 도메인서버들은 

그 내용을 복호화 할 수 없어. 

즉, 중간에서 패킷을 가로채서 내용을 확인하거나 내용을 바꾸는 행위가 먹히지 않는다는 뜻이지. 


http는 니가 보낸 패킷이 ISP를 거쳐 상위 계층까지 갔다가 

다시 하위 계층에 있는 웹 서버까지 가는 도중 가로채서 내용을 볼 수 있다는 것이고


https는 니가 보낸 패킷을 중간에 있는 

ISP 나 다른 개체가 볼 수 없다는 뜻이야. 

오로지 암/복호화는 양쪽 끝단에서만 가능해.



3. DNS 란 ? 



인터넷이 연결된 모든 서버나 단말기는 IP 주소를 할당받아 가지고 있어. 

IP 주소는 편지 쓸 때처럼 우체국이 처리할 수 있게 보내는 사람 주소와 

받는 사람 주소를 패킷에 적게 되는데 주소가 적혀있어야 우체부가 배달할 수 있잖아 ? 


그런데 니가 일베를 들어가려고 일베 서버의 IP 주소 xxx.xxx.xxx.xxx 숫자를 외우고 있기는 힘드니깐 

편의를 위해 ilbe.com 이라는 도메인 이름을 사용해. 


DNS 서버는 ilbe.com의 도메인 이름과 

이에 해당되는 IP주소를 매칭시켜주는 정보를 가지고 있어서 연결시켜주는 역할을 해.

한마디로 IP주소 및 도메인 이름은 둘 다 주소 역할을 하는 것이라고 생각하면 돼.


여기까지가 기본 깔고 가야하는 이론이고 이제 본격적으로 설명해볼게.



4. DNS 오염



기존에 애용하던 사이트가 갑자기 이 화면이 떴을 때 개빡침을 누구나 느껴봤을 거야.  이건 어떻게 하는 것이냐?


설명을 위해 위의 그림을 다시 가져올게.


니가 www.turnonvpn.org 라는 도메인 이름을 적었을 때 

실제 주소인 198.61.190.243을 알려주는 게 아니라, 


정부에서 저 엿같은 화면의 IP주소와 

www.turnonvpn.org 도메인 이름을 매칭시킨 것을 

한국의 DNS 서버에 입력시킨 뒤,


한국에서 www.turnonvpn.org 라는 주소로 들어가려고 하면 

항상 DNS server에서 잘못된 IP 주소를 알려주도록 해놓은 거야.



5. SNI 필터링



많은 사람들이 https 차단 이라고 하는데 정확하게 문재인 정부가 하려는 정책이름은 SNI 필터링이야. 

https 차단이라고 하면 기존에 암호화해서 패킷을 보내는 것을 막는다는 것인데 이게 아니란 말이지.


SNI 란, 간단히 말해 도메인 이름을 알려 https 통신의 인증을 하기 위한 프로토콜이야.


이용자와 사이트가 암호화 통신을 하려면 암복호화하기 위한 키(비밀번호)가 필요해. 

이 키를 생성하는 과정을 인증 과정(TLS HandShaking)이라고 하는데, 

https의 통신 시, 

처음에 인증을 해야되는데 이 때 도메인 이름(www.example.com)을 통해 

통신하고자 하는 상대를 찾는데 이걸 암호화하면 찾을 수가 없잖아? 


그래서 도메인 이름은 평문(암호화하지 않은 것)으로 보내지고, 

인증이 끝나고 나서야 그 때 부터 일어나는 모든 통신이 암호화 되는 것이야. 


처음 인증할 때 보내지는 도메인 이름을 포함한 패킷이 SNI 패킷이라고 생각하면 돼.


SNI 패킷은 어떤 사이트를 들어가던 평문이기 때문에 

그 이후에 벌어지는 https 통신의 암호화된 패킷 내용을 검열하는 것과는 별개의 일이야.


원래도 필터링을 하건 안하건 니가 어느 사이트를 들어가려고 처음 시도했는지는 다 알 수 있다는 뜻임.




출처: 묻재.정보) https 관련 팩트를 알려줄게

댓글