📌 HTTP (HyperText Transfer Protocol)
- 서로 다른 시스템들 사이에서 통신을 주고 받게하는 가장 기본적인 프로토콜, 통신 규약이다. 기본적으로 포트번호는 80을 사용.
- 암호화가 되지않은 평문 데이터를 전송하는 프로토콜.
📌 HTTPS (HyperText Transfer Protocol Secure)
- HTTP에 데이터 암호화가 추가됨. 기본적으로 포트번호는 443을 사용.
- SSL (보안 소켓 계층)을 사용한다.
📌 HTTPS를 사용하는 이유
1) 보안성
- 데이터들이 전송될 때, 해커와 같은 제 3자에 의해 주고받는 데이터가 가로채질 확률이 존재한다.
- HTTP는 암호화 없이 평문 데이터를 전송하기 떄문에 해커가 중간에 데이터를 가로챘을 때 쉽게 확인이 가능하다.
- 개인정보나 보안에 민감한 정보들은 꼭 암호화가 필요하다.
2) SEO (검색 엔진 최적화)
- 구글은 HTTPS를 사용하는 웹 사이트들에 가산점을 부여하고 있다.
- AMP를 만들 때는 HTTPS를 사용해야한다.
- 점점 모바일 친화적인 웹 사이트들을 만들고, 모바일 검색 순위를 증가 시키는 것이 중요해지는 요즘엔 HTTPS 사용이 필수적이라고 볼 수 있다.
📌 SSL (Secure Sockets Layer)
- Netscape Communications Corporation에서 웹 서버와 웹 브라우저 간의 보안을 위해 만든 프로토콜이다. 대칭키과 비대칭키 기반으로 사용.
🔍 참고하기
TLS
Transport Layer Security의 줄임말.
과거 SSL에서 발전하며 이름이 변경 된 것이다. 하지만 아직도 SSL이란 명칭이 많이 사용되고 있다.
1) 대칭키
- 클라이언트와 서버가 동일한 키를 사용해서 암호화, 복호화를 진행한다.
- 키가 노출되면 위험하지만 , 연산 속도가 빠르다.
2) 비대칭키 (공개키 + 개인키)
- 1개의 쌍으로 구성된 공개키와 개인키를 사용해 암호화, 복호화를 진행한다.
- 노출 되어도 비교적 안전하지만, 연산 속도가 느리다.
📌 SSL의 통신 방식
대칭키와 비대칭키는 서로 장단점이 있기 때문에 HTTPS는 대칭키와 비대칭키 모두 사용해서 통신한다.
A
에서 B
로 접속 요청을 보낸다.
B
는 A
에게 자신의 공개키
를 보낸다.
A
는 자신의 대칭키
를 받은 B
의 공개키
를 사용해서 암호화한다.
A
는 암호화 된 자신의 대칭키
를 B
에게 보낸다.
B
는 받은 암호화 된 대칭키
키를 자신의 개인키
를 사용해서 복호화한다.
A
와 B
는 서로 같은 대칭키
를 얻게 되었다.
- 이렇게 암호화 된
대칭키
로 서로 보안을 확보하고 , 대칭키
를 사용해서 데이터를 주고 받아 속도, 비용적인 문제도 해결한다.
📌 HTTPS의 발급 과정
-
사이트는 사이트 공개키와, 사이트 정보를 인증 기관(CA 기업)에 보낸다.
-
인증 기관은 받은 사이트 정보를 검증한다.
-
검증이 완료되면 CA 기업의 이름, 서버 공개키, 서버 정보 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화 (서명)하여 사이트에게 전달.
-
클라이언트가 사이트에 접속 요청
(이 때, 브라우저는 CA 기업의 공개키를 이미 다운받아 가지고 내장하고 있음.)
-
사이트는 암호화 된 인증서를 제공한다.
-
클라이언트는 내장된 공개키로 인증서를 복호화한다.
-
인증서를 복호화하면 사이트 정보와 사이트 공개키를 얻을 수 있게 된다.
-
클라이언트가 대칭키를 사이트 공개키로 암호화해서 전송한다.
-
사이트는 받은 암호화 된 대칭키를 개인키로 복호화한다.
-
클라이언트와 사이트는 서로 같은 대칭키를 얻게 되었고 , 대칭키로 통신한다.
📌 HTTPS의 장단점
장점
- HTTPS는 웹사이트의 무결성을 보호해준다. 웹 사이트와 브라우저 사이의 통신을 침입자가 건드리지 못하도록 한다. (악의가 있는 공격자는 물론, 합법이지만 통신에 침입하여 페이지에 광고를 삽입하는 경우에도 해당)
- 가벼운 웹 서핑이라면 HTTP도 상관없지만, 사용자의 정보를 웹 서버와 주고 받아야하는 경우라면 HTTP는 정보 유출의 위험성이 있다. HTTPS는 침입자가 웹 사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지함으로써 보안을 강화한다.
getUserMedia()
를 통한 사진 촬영이나 오디오 녹음, 프로그레시브 웹 앱과 같은 강력한 웹 플랫폼 신기능들은 실행하려면 사용자의 명시적인 권한 허락을 필요로 한다. 지오로케이션 API와 같은 오래된 API들도 실행할 때 권한이 필요하도록 업데이트되고 있는데, HTTPS는 이러한 새 기능과 업데이트 된 API에 대한 권한 허락을 가능하게 한다.
- 키워드 검색 시 상위 노출되는 기준 중 하나가 보안 요소이다. 네이버, 다음, 구글은 SEO (검색 엔진 최적화) 관련 내용을 HTTPS 웹사이트에 대해서 적용하고 있다.
단점
- 모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있다. 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다.
- HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다. 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.
reference!
https://www.youtube.com/watch?v=wPdH7lJ8jf0
https://mangkyu.tistory.com/98
https://www.youtube.com/watch?v=H6lpFRpyl14
https://rachel-kwak.github.io/2021/03/08/HTTPS.html