https://www.youtube.com/watch?v=wPdH7lJ8jf0
위 영상을 보고 정리한 글입니다.
HTTPS
HTTP
- Hypertext Transfer Protocol
- 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
- 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용
- 정보가 암호화되지 않아 정보 도난의 위험이 존재
HTTPS
- HTTP에 SSL을 사용한 프로토콜
- SSL(보안 소켓 계층) 사용하여 정보가 암호화 되지 않는
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 해당 정보가 도난 당하는 것을 막음
- HTTP를 암호화하는게 아니라 HTTP를 사용해서 운반하는 내용, 즉 HTTP Message Body를 암호화
HTTPS를 사용해야 하는 이유
- 보안성
- http로 데이터를 전송하면 네트워크로 전달되는 데이터는 원본 그 자체이다. 따라서 해커가 중간에서 가로채서 이 데이터를 보면 해당 데이터에 어떤 내용이 있는 지 바로 알 수 있다.
- https는 데이터를 암호화해서 전송하므로 이 데이터가 어떤 내용을 가지고 있는 지 알 수 없어진다.
- SEO
- 검색엔진 최적화
- 구글은 https 웹 사이트에 가산점을 부여
- amp(가속화된 모바일 페이지)를 만들때 https 사용해야 함
SSL/TLS
- SSL의 업그레이드 버전이 TLS
SSL
- Secure Sockets Layer
- 웹서버와 웹 브라우저간의 보안을 위해 만든 프로토콜
- 공개키/개인키방식과 대칭키 방식을 혼합해서 사용
대칭키
- 동일한 방식으로 암호화와 복호화를 사용
- 암호화에 이용된 키를 가지고 있다면, 해당 데이터를 쉽게 복호화 할 수 있음
- 암호화와 복호화가 쉬워 키를 배송할 때 문제점이 있음
공개키(비대칭키)
- 서로 다른 키로 암호화 복호화를 사용하는 방식
- 데이터 암호화 시에는 공개키를 사용하고 데이터 복호화시에는 개인키를 사용
- 공개키로 암호화한 데이터는 오직 개인키로만 복호화할 수 있음
- 암호화 연산 시간이 많이 소요되어 비용이 많이 발생
SSL의 필요성
- 서버와 브라우저 간의 전송되는 데이터를사용
SSL 통신 과정
- 공개키 방식으로 대칭키 전달
- 대칭키를 활용해서 암호화와 복호화를 하고, 서버와 브라우저 간 통신을 진행
- A의 대칭키를 B의 공개키로 암호화하여 전송하면, B에서 자신의 개인 키로 복호화하여 A의 대칭키를 알아내고 이 대칭키를 바탕으로 서로 통신
- 사용자가 접속한 사이트가 유효한 사이트인지 확인하기
- 사이트에서 인증기관에 사이트 정보와 사이트 공개키 전달
- 인증기관에서 사이트 인증서를 발급하기 전, 먼저 전달받은 데이터 검증
- 인증기관에서 검증 완료하면, 사이트 인증서를 생성하기 위해 이 데이터를 자신의 개인키로 서명
- 인증기관이 생성된 인증서를 사이트에게 전달하고 사용자에게 인증기관 공개키 전달
- 사용자가 사이트에게 접속 요청
- 사이트는 사용자에게 자신의 인증서 전달
- 사용자는 브라우저에 내장되어 있는 인증기관 공개키로 사이트 인증서를 복호화하여 검증
- 사이트 인증서를 해독하면 사이트 정보와 사이트 공개키를 얻을 수 있음
- 사용자는 얻은 사이트 공개키로 사용자의 대칭키를 암호화
- 암호화한 대칭키를 사이트에게 전달
- 사이트는 자신의 개인키로 사용자로부터 전달받은 암호문을 해독하여 사용자의 대칭키 얻음
- 사용자와 사이트는 각각 얻은 대칭키로 암호문 주고받을 수 있음
Uploaded by Notion2Tistory v1.1.0