HTTP(HyperText Tranfer Protocol)
인터넷에서 데이터를 주고받을 수 있는 프로토콜 (통신규약)
- 80 포트 사용
- TCP(HTTP/1, 2) 와 UDP(HTTP/3) 사용
- application layer 프로토콜
TCP/IP
- IP 주소와 port 번호를 통해 클라이언트와 서버 사이에 TCP/IP connection을 맺어야 함
- 웹브라우저
1) 서버의 URL 내에서 호스트 이름 추출
2) 서버의 호스트 이름을 IP로 변환
3) URL에서 port 번호 추출
4) 웹 서버와 TCP connection 맺음
5) 웹 서버에 HTTP 요청 전송
- 웹서버
6) 웹브라우저에게 HTTP 응답을 돌려줌
- connection이 닫히면 웹브라우저가 문서를 보여준다 (이전 글 참고)
HTTP의 한계
- 암호화 X -> 도청 가능성 존재
- Request의 출처, Client를 확신할 수 X
- 신원이 보장된 특정 Client와만 통신할 수 X
- 대량의 Request를 통한 Dos 공격 위험성 존재
- Response의 출처, Server를 확신할 수 X
- Response를 보낸 Server가 의도한 Server인지 확신할 수 X (위장 Server일 가능성)
- 완전성(정보의 정확성) X
- Client 와 Server가 보낸 정보를 중간에 누군가 바꿀 위험성 존재
HTTPS(HyperText Transfer Protocol over Secure Socket Layer)
HTTP 레이어에서 SSL(TLS) 프로토콜을 얹어 평문 데이터를 암호화하는 프로토콜
- 443 포트
- HTTP 메시지를 TCP로 보내기전, 암호화하는 보안 계층으로 보냄
- SSL이나 TLS 프로토콜을 통해 세션데이터 암호화
- TLS(Transport Layer Security) - SSL에서 이름이 변경된 것. SSL이라는 명칭을 더 많이 사용
- 클라이언트(웹 브라우저)는 웹 resource에 대한 transaction 수행을 요청받으면 URL의 scheme를 검사함
- http scheme -> 서버에 80포트 연결, 명령전송
- https scheme -> 443포트 연결, handshake, 암호화된 HTTP 명령
SSL 동작방식
공개키 암호화 방식 + 대칭키 암호화 방식
- 공개키 방식은 느리기 때문에 대칭키를 전달하는데에 사용하고 공유된 대칭키로 통신 진행함
인증기관(CA, Certificate authority)
- 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지를 보장하는 역할을 하는 인증서를 발급하는 기관
1. 인증서 발급
2. 사이트 접속
3) 인증서 검증시, 복호화되어 서버의 정보를 확인할 수 있다면 해당 SSL 인증서는 진짜라는 뜻 -> 이 인증서를 보유한 서버가 진짜임을 밝힘과 동시에 발급한 대상이 인증기관임을 알 수 잇음
4) 대칭키 전송 -> 서버와 브라우저는 동일한 대칭키(비밀키) 를 보유하게 됨
3. 안전하게 전달된 대칭키를 이용하여 암호문을 주고 받음
4. 세션이 종료되면 대칭키는 폐기
하이브리드 암호 시스템
대칭키 방식을 취하되, 그 키를 공유할 때 공개키 방식을 적용함
-> 대칭키의 단점과 공개키의 단점을 보완
- 대칭키 (비밀키)
- 1개의 key로 암호와 및 복호화
- 빠른 속도
- 탈취의 위험 존재
- 비대칭키 (공개키, 비밀키)
- 공개키로 암호화, 비밀키로 복호화
- 느린 속도
- 인증 기능 제공
참고
https://devdy.tistory.com/14https://velog.io/@moonyoung/HTTPS%EC%9D%98-%EC%9B%90%EB%A6%AC
https://github.com/bernard717/network-study/wiki/14%EC%9E%A5-%EB%B3%B4%EC%95%88-HTTP
https://aws-hyoh.tistory.com/entry/HTTPS-%ED%86%B5%EC%8B%A0%EA%B3%BC%EC%A0%95-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-2Key%EA%B0%80-%EC%9E%88%EC%96%B4%EC%95%BC-%EB%AC%B8%EC%9D%84-%EC%97%B4-%EC%88%98-%EC%9E%88%EB%8B%A4?category=768734