1. 인터넷 작동방식
- 인터넷 이전의 컴퓨터는 케이블로 연결되어 소통했다. 그러므로 컴퓨터의 개수가 늘어나면 케이블의 개수도 늘어났다.
- 그러나 케이블을 통한 연결은 한계가 있다. 1:1로 연결되는 케이블은 지구 반대편까지 연결하기에는 많은 장애물이 있으며, 데이터 처리, 전송 및 비용적인 측면에서의 효율이 좋지 않다.
- 이 문제를 해결해준 것이 Router라는 통신장치다. 당연히 Router와 컴퓨터는 케이블에 연결이 되어 있지만 하나의 라우터를 Hub로 주변의 다양한 컴퓨터와 연결하여 통신이 가능해졌다. 다시말해, Router에 의해 더 적은 수의 케이블을 사용하여 더 많은 컴퓨터간의 통신이 가능한, 새로운 네트워크가 형성된 것이다. 이러한 Router간의 통신까지 가능해지면서 Router간의 네트워크 또한 형성하게 된다.
- Router에 의해 형성된 네트워크 그리고 Router 간의 또 다른 네트워크가 만들어졌고, 이를 네트워크의 네트워크 즉, interconnected Network(=internet)라고 부르는 것이다.
* 참고로 해외의 인터넷에 접속이 가능한 것은 무선통신이 아니라 해저 광케이블을 통해 연결되는 것이다. 현재 전세계 인터넷의 99%는 해저 광케이블로 연결된다. 즉, 인터넷 연결 케이블이 바다 속에 있는 것이다. 최근에 위성을 이용한 우주 인터넷이 주목받는 이유에 대한 감이 오지 않는가?
2. HTTP(Hyper Text Transfer Protocol)는 무엇일까?
- 인터넷에서 데이터 통신에 사용되는 표준화된 소통방식이다. 쉽게 설명하자면 인터넷에서 사용되는 우편주소 표기양식같은 것이다.
- 어떤 사이트에 접속을 하기 위해서는 브라우저에서 서버에게 요청을 보낸다. 보낸 요청에 따라 서버는 브라우저에게 응답을 return한다. 이처럼 요청과 응답을 주고받기 위해 사용되는 통일된 데이터 작성양식을 HTTP라고 한다.
* Hypertext는 무엇일까?
- Hypertext는 전자기기에서 보여지는 text를 의미하며, 동시에 정보를 담고있는 text를 뜻한다.
- 여기서 정보를 담고있는 text란, 링크를 갖고있어 클릭으로 페이지 이동을 가능하게 하는 text를 말한다.
3. HTTPS는 무엇일까?
- 지금까지 인터넷이 사용한 데이터 통신방식은 HTTP다. 이 HTTP는 보안적으로 부족한 부분이 많다. HTTP를 이용한 데이터 통신은 해커가 중간에서 전송되는 데이터의 정보를 가로채거나, 가짜 서버를 만들어 사용자의 정보노출을 유도하기 쉬운 환경이기 때문이다.
- 이러한 보안적 부족함을 보완한 새로운 데이터 통신 규칙이 바로, HTTPS(HyperText Transfer Protocol Secure)다.
- HTTPS는 기존에 사용하던 HTTP에 SSL(Secure Socket Layer)라는 기술을 합친 것인데, 쉽게 설명하자면 데이터 통신에 사용되는 새로운 암호화 및 복호화 방식이라고 이해하면 된다.
4. HTTPS의 handshake → 대칭키, 비대칭키(=공개키)
* 여기서 키(key)라는 것은 데이터를 암호화 하고 복호화 할 수 있는 알고리즘을 의미한다.
- 대칭키 방식은 송신자와 수신자 모두 동일한 key를 사용하는 것이다. 중간에서 데이터가 유출되더라도, 해당 key만 유출되지 않는다면 걱정할 필요가 없다. 하지만, 대칭키 방식은 반드시 한번은 상대방에게 key가 전달되어야 한다는 문제점이 있다. 이것이 문제가 되는 이유는 key를 전달하는 과정에서 key가 유출될 수 있기 때문이다. 이를 보완하기 위해 비대칭키(=공개키) 방식이 있다.
- 공개키 방식은 암호화 방식(=public key)은 모두에게 공개하고, 암호화된 데이터를 복호화 할 수 있는 복호화 방식(=private key)은 한쪽만 갖는 형태를 말한다. 반대로 private key로 암호화된 데이터는 public key로만 복호화 할 수 있는 형태다.
- 예를 들어서 Client가 카카오에게 어떤 데이터를 보낼 때, A라는 public key를 사용하여 암호화된 데이터를 전송한다. 모두가 암호화 방식만 알고 있기 때문에 데이터가 유출되더라도 그 누구도 해석할 수 없다. 오직 카카오만이 해당 암호화 방식을 복호화 하는 private key를 갖고 있기 때문이다. 이로써, 기존의 HTTP가 갖고 있던 데이터 유출에 대한 위험과 대칭키 방식이 갖고 있는 key전송에 대한 문제점이 해결된다.
- 그렇다면 HTTP가 갖고 있는 두번째 문제는 어떻게 해결될까? 만약 카카오에서 보내온 데이터가 진짜 카카오 서버로부터 온 것인지 어떻게 알수 있을까?
- 카카오에서 Client에게 데이터를 보낼 때, 카카오는 private key를 이용하여 데이터를 암호화 한다. 이렇게 암호화된 데이터는 public key를 이용하여 해석할 수 있기에 카카오에서 보내온 데이터라는 것을 알 수 있는 것이다.
- 하지만, 이 public key가 진짜 카카오가 발급한 것인지 어떻게 알 수 있을까? 공인된 기관에 의해 확인할 수 있다면 해당 public key가 카카오에서 발급된 것이라고 신뢰할 수 있지 않을까?
- public key를 검증해주는 공인된 기관을 CA(Certificate Authority)라고 부르는데, 일반적으로 사용하는 모든 브라우저에는 이미 CA의 목록이 저장되어 있다. 이 CA기관은 공인된 서버의 인증서를 갖고 있으며, 이를 이용해 특정 서버에서 발급된 해당 public key가 진짜인지 가짜인지를 판별하여 해당 서버의 진위를 알 수 있다.
- 어떤 서버에서 데이터를 보내오면, 해당 데이터에는 반드시 인증서가 포함되어 있다. 각 인증서는 해당 서버의 또 다른 private key로 암호화 되어 있으며, CA는 해당 서버의 특정 private key를 복호화할 수 있는 public key를 갖고 있다. 해당 public key를 이용한 복호화를 통해 해당 인증서의 진위를 판단하고, 인증서를 보내온 해당 서버가 진짜인지 가짜인지를 판단할 수 있게 되는 것이다.
- 쉽게 설명하자면, 카카오에서 보내온 데이터에 들어있는 인증서를 CA기관이 갖고 있는 public key를 이용하여 복호화하는 것이다. 만약 인증서가 복호화 된다면, 해당 데이터를 보낸 서버는 진짜 카카오 서버임을 증명하게 된다.
- 이로써, HTTPS는 HTTP가 갖고 있는 보안적 취약점을 보완한다는 것을 알 수 있다.
'컴퓨터공학기초 개념' 카테고리의 다른 글
웹개발 기본지식(2) (0) | 2021.01.20 |
---|
댓글