클라이언트와 서버 간 통신을 위한 응용계층 프로토콜
인터넷을 작동시키는 역할
사용자가 웹 사이트에 방문하면 사용자 브러우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 브라우저에 HTTP 응답한다.
이 때 데이터를 일반 텍스트로 교환한다.
1) 네트워크 통신을 작동하게 하는 기본 기술
2) 80번 포트 사용
3) 평문으로 데이터를 전송하기 때문에 데이터 암호화가 되어 있지 않아 보안에 취약하다
4) 인증서가 필요하지 않다
5) TCP/IP 위에서 작동
6) stateless
=> HTTP 요청이 독립적이므로 이전 요청과 다음 요청이 연결되어 상태를 공유하지 않는다.
=> 서버에 도착할 때마다 해당 요청을 처리하기 위한 모든 정보를 함께 제공한다.
=> 이전 요청과 관련된 정보를 서버에 기억하지 않는다.
HTTP는 암호화되지 않은 데이터를 전송하므로 브라우저에서 전송된 정보를 제 3자가 가로채고 읽을 수 있다. 이러한 이유때문에 HTTPS가 등장하였다.
브라우저와 서버가 데이터를 전송하기 전에 안전하고 암호화된 연결 설정
HTTP에 데이터 암호화가 추가된 프로토콜
1) SSL/TLS 프로토콜을 사용하여 데이터를 암호화한다.
2) 443포트를 사용한다.
3) SSL/TLS 인증서를 사용하여 서버의 신원을 검증하기 때문에 통신 신뢰성을 확보한다.
4) SSL 위에 HTTP를 얹어서 보안이 보장된 통신 방식인 SSL 암호화 통신이라고 한다. 이 통신은 공개키 암호화 방식이다.
5) 검색엔진 최적화(SEO)
암호화와 복호화에 사용하는 키가 서로 다른 암호화 방식
1) 송신자는 수신자의 공개키를 구한다.
2) 송신자는 수신자의 공개키로 평문을 암호화한다.
3) 송신자는 암호화된 메세지를 상대방에게 전달한다. 메세지는 암호화되어 있기 때문에 전달 도중에 유출되거나 도청이 되더라도 암호문으로부터 원문을 알아내기 어렵다.
4) 수신자는 자신의 비밀키로 암호화된 메세지를 해독해서 평문을 얻는다.
참고
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://mangkyu.tistory.com/98
https://brunch.co.kr/@hyoi0303/10
https://devjem.tistory.com/3
https://raonctf.com/essential/study/web/asymmetric_key