[ HTTP란? ]
웹 환경에서 브라우저와 웹서버가 통신하는 방법을 말합니다.
보다 정확한 표현으로는 프로토콜(protocol) 또는 규격, 규약이라고 합니다.
[ HTTP의 동작 방식 ]
크롬이나 익스플로러 등의 브라우저의 주소창에 특정 웹사이트(웹서버)의 주소를 입력하고
엔터를 치면 웹서버로 요청을 보내게 되고, 웹서버는 요청에 대한 페이지를 브라우저에게 응답하게 됩니다.
이때 요청하고 응답하는 내용을 HTTP 메세지라고 하고 편지(또는 쪽지) 같은 형태로 주고 받게 됩니다.
즉, 데이터를 주고 받게 되는 것입니다. 요청 대상으로는 페이지 주소가 될 수도 있고,
로그인과 관련된 아이디/패스워드 같은 중요한 데이터도 있을 수 있습니다.
[ HTTP의 단점 → 보안 ]
HTTP는 웹을 지탱하는 심플한 기술이지만 치명적인 단점을 가지고 있습니다.
브라우저와 웹 서버가 통신함에 있어 주고 받는 데이터가 암호화 되지 않고 날것 그대로 전송 된다는 점입니다.
HTTP는 인터넷이라는 바다를 지나 웹 서버와 브라우저가 통신함으로
그 중간 어딘가에서 해커가 중간 통로를 도청하게 된다면 날 것 그대로 중요한 정보들을 탈취 당할 수 있습니다.
만약 이러한 데이터가 로그인 기능에서 사용하는 아이디/비밀번호 등의 데이터라면 치명적일 수 있습니다.
뿐만 아니라 정상적인 데이터를 중간에서 악의적으로 변조 시킬 수도 있습니다.
그래서 등장한 것이 HTTPS입니다!
HTTPS는 정말 단순히 말하자면 데이터가 암호화 되지 않은 HTTP의 단점을 극복하고자 HTTP에 SSL이라는 기술을 더한 것 입니다.
[ SSL이란? ]
: Secure Socket Layer의 약자로, 암호화 통신과 그 암호화 통신에 사용되는 키를 공유 해주는 기술입니다.
이때 등장한 것이 인증기관입니다. 인증기관(CA)은 암호화 시 사용되는 키를 담은 인증서를 발급하고 관리합니다.
따라서 인증기관은 보안상 매우 중요한 역할을 하기 때문에 전 세계적으로 신뢰 받는 기관이 운영 해야 합니다.
웹서버를 운영하는 웹사이트는 암호화 키를 생성하여 하나는 자신이 보관하고, 하나는 인증기관에게 넘겨 인증서를 발급 받습니다.
인증기관은 인증서를 발급 및 관리 해주는 대신 돈을 받습니다. 발급된 인증서는 인증기관이 보관합니다.
[ 암호화, 암호화 키란? ]
데이터 암호화에는 키(key)가 필요합니다.
A와 B가 어떤 데이터에 대해 똑같은 암호화 알고리즘을 사용한다면 같은 결과가 나올것이기에
어떤 암호화 알고리즘을 사용하는지만 알아내면 암호화된 데이터일지라도 쉽게 답을 유추할 수 있습니다.
그러나 암호화 키라는 변수를 두면 암호화 결과를 달라지게 하면 예측할 수 없게 됩니다.
따라서 암호화 시 사용하는 암호화 키는 매우 중요하며 해커에게 노출 되어서는 안됩니다.
그런데 중요한점은 상대방이 암호화된 데이터를 다시 원래 데이터로 복호화 하는 과정에서도 키가 필요하다는 점 입니다.
열쇠로 자물쇠를 잠갔다면 다시 그 열쇠로 열어야 하는것과 같습니다.
따라서 암호화된 데이터를 주고 받기 이전에 통신할 대상과 키를 분배하여 공유 해야 합니다.
그런데 아이러니 하게도 이 키를 주고 받는 과정에서 키가 중간에 해커에게 노출 될 수 있습니다.
해커가 만약 키를 가로챈다면 데이터를 암호화 하여 통신 한다고 해도
데이터를 마음대로 복호화 하여 들여다 볼 수 있을 것입니다.
그럼 그 키를 또 암호화 해야 할까요?
그럼 또 그에 대한 암호화 키가 필요하게 될 것이고 분명한 해결책을 되지 못할 것 입니다.
[ HTTPS 통신과정 ]
[ HTTP와 HTTPS의 차이점은? ]
- HTTP는 암호화가 추가 되지 않았기 때문에 보안에 취약합니다.
- HTTPS는 SSL을 이용하여 안전하게 데이터를 주고 받을 수 있습니다.
하지만 HTTPS를 사용 시 암호화/복호화의 과정을 거치기 때문에 HTTP 보다 속도가 느립니다.
(오늘날에는 거의 차이를 느끼지 못합니다.)
그 밖에도 HTTPS를 사용하면 검색 엔진 최적화(SEO, Search Engine Optiomization)에 있어서도 큰 혜택을 볼 수 있습니다.
이는 구글이 HTTPS 웹사이트에 가산점을 주는 이유 때문이기도 하지만,
사용자들이 결국에는 가장 안전하다고 생각하는 사이트를 더 많이 방문하기 때문이기도 합니다.
'항해 후 > 예상 질문' 카테고리의 다른 글
Array vs LinkedList (0) | 2022.02.04 |
---|---|
GET vs POST (0) | 2022.02.04 |
Life Cycle Method (라이프 사이클 메소드) (0) | 2022.02.04 |
TCP/UDP (0) | 2022.02.03 |
프로그램, 프로세스, 스레드란? (0) | 2022.02.03 |
댓글