이재호
HTTP / HTTPS 본문
HTTP(Hypertext Transfer Protocol)로 서로 다른 시스템들 사이에서
통신을 주고받게 하는 가장 기본적인 프로토콜(통신 규약)입니다.
서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용합니다.
한편 HTTP는 서버에서 브라우저로 전송되는 정보가 암호화 되지 않는다는 문제점을 가지고 있습니다.
그래서 데이터가 쉽게 도난당할수 있다
HTTPS(Hypertext Transfer Protocol Secure)
HTTP에 SSL(보안 소켓 계층) 을 사용한 프로토콜
SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들수 있게 도와주고
서버와 브라우저가 민감한 정보를 주고 받을떄 해당 정보가 도난당하는것을 막아줍니다.
HTTPS는 HTTP 자체를 암호화 해주는것이 아니라 HTTP를 사용해서 운반하는 내용 즉, HTTP body를 암호화 합니다.
이때 HTTP 헤더는 암호화 되지 않습니다.
왜 HTTPS 를 사용해야 하는가?
1. 보안성
보안성을 위해서 HTTP를 사용할시 서버와 클라이언트가 데이터를 주고받을떄 해커가 해당 데이터를 확인할수 있습니다,
HTTPS를 사용하면 해커가 중간에 데이터를 가로채도 데이터는 암호화 되어있으므로 어떤 내용인지를 알기가 어렵습니다.
그래서 HTTP 가 아닌 HTTPS 를 사용해 데이터를 전송하여 보안성을 확보해야한다.
2. SEO
구글을 예시로 들면 구글은 HTTPS를 사용하는 웹사이트에게 가산점을 부여합니다,
따라서 HTTP를 사용한다는것은 큰 마이너스로 작용합니다.
자신의 웹사이트가 검색엔진의 빈번하게 노출하게 할려면 HTTPS는 필수적 선택입니다.
또한 AMP(Accelerated Mobile Pages) 를 사용하여 가속화된 모바일 페이지를 만들수 있는데 이를 만들때는 HTTPS를 사용해야 합니다. AMP란 모바일기기에서 컨텐츠를 빠르게 로딩하게 하는 방법으로 구글에서 개발하였습니다.
모바일 세상에서 모바일에 친화적인 웹사이트를 만들고 모바일 검색순위를 증가시키기위해서도 HTTPS가 빠질수 없습니다.
SSL(보안 소켓 계층)/TSL(전송 계층 보안, SSL의 업그레이드 버전,)
※ 일반적으로 두 단어를 동일한 의미로 사용하는편입니다.
1. SSL
Netscape Communications Corporation에서 웹서버와 웹브라우저간의 보안을 위해 만든 프로토콜
SSL은 공개키 방식과 대칭키 방식을 혼합해서 사용합니다, 한가지를 사용하지 않고 혼합해서 사용하는 이유
※ 대칭키란
동일한 키로 암호화 복호화 를 수행하는 방법으로 누구든지 암호화에 이용된 키를 가지고 있다면 해당 데이터를 쉽게 복호화 할수 있습니다 예를 들어 암호화 할떄 사용하는 키를 원본그대로 전달하고 있고 해커가 중간에 이 키를 가로채서 가지고 있다면 그런다음 해당키로 암호화된 데이터를 가로채고 데이터를 확인하며 해당 데이터가 어떤 데이터를 가지고 있는지 쉽게 확인할수 있습니다
💡 복호화 : 디코딩(decoding)은 부호화(encoding)된 데이터를 부호(code)화 되기 전 형태로 바꾸어, 사람이 읽을 수 있는 형태로 되돌려놓는 것이다.
※ 공개키
서로다른 키로 암호화 복호화를 수행하는 방법으로 비대칭키 방식이라고도 불립니다.
데이터 암호화시에는 공개키를 사용하며 복호화에는 개인키를 사용합니다, 공개키로 암호화한 데이터는 오직 개인키로만 복호화 할수 있기 떄문에 누구든지 공개키를 가져도 상관이 없습니다. 이 방법은 해커가 중간에 데이터를 가지고 간다고 하여도 문제가 발생하지 않습니다, 하지만 이러한 장점만 있는건 아닙니다 공개키는 대칭키보다 암호화 연산을 하는 시간이 소요되어 비용이 발생합니다.
그래서 SSL은 각 방식이 가진 장점을 혼합해서 사용하는것입니다.
※ 통신과정
SSL은 공개키 방식으로 대칭키를 전달합니다
그리고 이 대칭키를 활용해서 암호화와 복호화를 하고 서버와 브라우저간의 통신을 진행합니다.
A -> B 로 접속요청을 보내면 B는 그러면 자신의 공개키를 A에게 전달합니다, 그럼 A는 자신의 대칭키를 B에게 전달받았던 공개키로 암호화를 합니다, 이렇게 암호화된 대칭키를 B에게 전달하면 B는 A의 대칭키를 자신의 개인키로 복호화하여 A의 대칭키를 얻어낼수 있는것입니다, 이렇게 얻은 대칭키로 서로간의 안전한 데이터 통신을 하는것입니다.
한가지 더 !
HTTPS는 도메인으로 밖에 접속이 불가능합니다, 왜그럴까요? 🤔
https는 도메인 네임에 대한 시큐어를 보장해서 그렇습니다.
IP대용으로 사람이 보기 좋게 사용할수 있게 나온게 도메인이지만 HTTPS는 IP에 대한 암호화 보장이 아니라 도메인에 대한 암호화 보장입니다.
실습
자신의 터미널창에 nslookup naver.com 을 입력해 봅니다
해당 명령어는 도메인의 IP주소를 알려주는 명령어 입니다.
다음과 같은 IP주소를 볼수 있습니다
여기서 저희는 223.130.200.107 을 이용해서 HTTP와 HTTPS의 차이를 확인해볼것입니다.
HTTP를 주소창에 입력했을때
HTTPS를 주소창에 입력했을때
※ 위 영상과 같이 https를 이용하여 IP주소를 입력했을떄는 안전하지 않은 사이트로 이동된것을 볼수 있습니다
이 영상을 통해서 HTTPS는 IP주소를 암호화 보장해주는것이 아니라 도메인에 대한 암호화를 보장해주는것을 다시한번 알수있습니다.