HTTP는 웹 브라우저와 서버 간 데이터를 주고 받기 위해 사용하는 인터넷 프로토콜이다.
그런데 HTTP에는 다음과 같은 약점이 있다.
스니핑(Sniffing)
- sniff: 코를 킁킁거리다
- 패킷 가로채기 공격, 네트워크 상에 떠돌아다니는 패킷이나 데이터 등을 훔쳐보는 것
스누핑(Snoofing)
- snoop: 기웃거리다, 염탐하다
- 네트워크 상에 떠도는 중요 정보를 염탐하여 불법적으로 몰래 획득하는 행위
스푸핑(Spoofing)
- spoof: 속이다, 사기치다
- 정상 사용자인척 시스템을 속여 권한을 탈취하고 정보를 빼앗는 행위
- IP 스푸핑: TCP/IP 패킷의 출발지 IP 주소를 위조하는 스푸핑
- MAC 스푸핑: IP 스푸핑처럼 MAC 주소를 위조하여 다른 사용자로 위장하여 공격
- ARP 스푸핑: ARP 테이블의 MAC 주소를 위조하여 데이터가 다른 곳으로 가거나 변조덴 데이터가 전달되게 함 (ARP는 IP주소와 MAC주소를 매핑하는 프로토콜)
- DNS 스푸핑: DNS 서버의 응답을 위조하여 다른 사이트로 리다이렉션하는 스푸핑. 사용자는 피싱 사이트로 이동된 줄 모르고 로그인 정보나 개인 정보를 입력하는 상황이 발생할 수 있음
이렇게 암호화되지 않은 프로토콜인 HTTP는 보안 이슈가 있고, 이런 문제를 해결해주는 것이 바로 'HTTPS'인 것이다.
'HTTPS'는 HTTP가 암호화하지 않은 평문으로 통신해서 발생하는 보안 이슈를 해결하기 위해
인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 사용하는 통신 규약(프로토콜)이다.
HTTPS는 누구나 볼 수 있었던 메시지를 통신하는 당사자들만 볼 수 있도록 암호화하여 HTTP의 보안 문제를 해결했다.
HTTPS는 새로운 애플리케이션 계층의 프로토콜은 아니다. HTTP 통신을 하는 소켓 부분을 SSL이나 TLS이라는 프로토콜로 대체하고 있을 뿐이다.
OSI 계층 구조로 보면 HTTPS는 다음과 같이 HTTP 프로토콜 아래에 SSL 이라는 보안 프로토콜이 추가된 형태이다.
HTTP와 SSL은 독립된 프로토콜이며, HTTP는 SSL과 통신하고 SSL은 TCP와 통신한다. 또한 HTTP 뿐만 아니라 애플리케이션 계층에서 동작하는 다른 프로토콜(SMTP, FTP)등과 조합해서 사용할 수 있다.
SSL(Secure Sokets Layer)는 클라이언트와 서버가 서로 데이터를 암호화해 통신할 수 있도록 돕는 보안 계층이다. SSL은 공개키 암호화 방식으로 텍스트를 암호화한다.
1990년대 후반 공개된 SSL 2.0에 몇 가지 취약점이 발견되어 이를 해결하기 위해 아예 구조를 재설계해 SSL 3.0을 배포했다. 이후 기존 버전과 구분하기 위해 3.0 이후부터 등장한 SSL의 이름을 TLS(Transport Layer Security)로 변경했다. 현재는 대부분의 보안 프로토콜이 TLS로 교체되어 사용하지만 총칭하여 SSL이라는 익숙한 이름을 사용하기도 한다.
HTTPS(SSL)의 동작 과정은 핸드 세이크, 세션, 세션 종료 세 단계로 이루어진다. TCP와 유사하게 SSL에서도 클라이언트와 서버가 통신할 준비가 되었는지 확인하는 과정인 핸드 세이크를 진행한다.
인증서란 서버가 공식으로 인증된 기관인 CA(Certificate Authority)에서 발급받은 문서로, 해당 서버가 신뢰할 수 있는지 보장하는 역할을 한다.
Reference
https://star7sss.tistory.com/866
https://brunch.co.kr/@swimjiy/47
https://velog.io/@averycode/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP%EC%99%80-HTTPS-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95
그림으로 배우는 HTTP & Network Basic