- HTTPS란?
==> Hypertext Transfer Protocol Secure는 World Wide Web에서 정보를 안전하게 전송하기 위한 통신 프로토콜이다. 보안 소켓 계층(SSL, Secure Sockets Layer) 또는 전송 계층 보안(TLS, Transpot Layer Security) 프로토콜을 사용하여 웹 브라우저와 웹 서버 간의 통신을 암호화한다.- HTTPS는 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하다. 데이터를 주고 받는 과정에 '보안'요소가 추가 되었다는 것이 가장 큰 차이점이다. HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화된다.
- 웹 서버 하나에 불특정 다수의 사용자가 접근했을 때 사용자마다 키를 주면 암호화의 의미가 없어진다. 따라서 암호화한 키를 그 페이지를 보는 특정 사용자에게만 알려지도록 하는 것이 HTTPS의 역할이다.
- SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 웨에서 HTTPS 프로토콜이 동작한다.
- 장점
- 데이터의 기밀성: HTTPS는 통신 과정에서 전송되는 데이터를 암호화하여 안전하게 보호한다. 이는 해커나 중간자 공격자로부터 사용자의 개인 정보를 보호한다.
- 데이터의 무결성: HTTPS는 데이터가 전송 중에 수정되지 않았음을 보장한다. 암호화된 데이터는 전송되기 전에 서명되어 검증되므로 데이터 변조를 감지할 수 있다.
- 신원 보증: HTTPS는 웹 서버의 신원을 인증하고 확인한다. 이는 사용자가 접속한 웹 사이트가 신뢰할 수 있는지 확인할 수 있도록 도와준다. 신뢰할 수 있는 인증 기관에서 발급한 SSL 인증서를 사용하여 신원 보증을 수행한다.
- 단점
- 추가 비용과 성능 저하: HTTPS를 구현하려면 SSL 인증서를 구입해야한다. 이에 따른 비용이 발생할 수 있다. 또한 암호화 및 복호화 작업으로 인해 일부 성능 저하가 발생할 수 있다.
- 설정 및 유지 관리의 어려움: HTTPS는 SSL 인증서 및 관련 구성을 올바르게 설정해야 하므로 설정 및 유지 관리가 다소 복잡할 수 있다.
- 암호화 방식
==> 공개키 암호화 방식과 공개키가 느리다는 단점을 보완한 대칭키 암호화 방식을 함께 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.- 공개키 방식
- A키로 암호화를 하면 B키로 복호화를 할 수 있다.
- B키로 암호화를 하면 A키로 복호화를 할 수 있다.
- 둘 중 하나를 비공개키 (Private Key) 혹은 개인키라 부르며, 이는 자신만 가지고 있고 공개되지 않는다.
- 나머지 하나를 공개키(Public Key)라고 부르며 타인에게 제공한다. 공갵키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전하다.
- 대칭키 방식
- 동일한 키로 암호화, 복호화가 가능하다.
- 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음에 사용할 때는 다른 키가 사용되기 때문에 안전하다.
- 공개키보다 빠르게 통신할 수 있다.
- 공개키 방식
- 동작 과정
- 인터넷 사이트(서버)는 공개키와 개인키를 만들고, 신뢰할 수 있는 인증 기관(CA)에 자신의 정보와 공개키를 관리해달라고 계약하고 (경우에 따라) 돈을 지불한다.
- 이 때, 계약을 완료한 인증 기관은 기관만의 공개키와 개인키가 있다. 인증 기관은 사이트가 제출된 데이터를 검증하고, 인증 기관의 개인키로 사이트에서 제출한 정보를 암호화해서 인증서를 만들어 제공한다. 사이트는 인증서를 가지게 되었다.
- 인증 기관은 웹 브라우저에게 자신의 공개키를 제공한다.
- 사용자가 사이트에 접속하면 서버는 자신의 인증서를 웹 브라우저(클라이언트)에게 보낸다. 예를 들어, 웹 브라우저가 index.html 파일을 달라고 요청했다면, 서버의 정보를 인증 기관의 개인키로 암호화한 인증서를 받게 되는 것이다.
- 웹 브라우저는 ③에 미리 알고 있던 인증기관의 공개키로 인증서를 해독하여 검증한다. 그러면 사이트의 정보와 서버의 공개키를 알 수 있게 된다.
* 이 부분은 보안상의 의미는 없다. 단지 해당 서버로부터 온 응답임을 확신할 수 있게 된다. - 이렇게 얻은 서버의 공개키로 대칭키를 암호화해서 다시 사이트에 보낸다.
- 사이트는 개인키로 암호문을 해독하여 대칭키를 얻게 되고, 이제 대칭키로 데이터를 주고받을 수 있게 된다.
'다양한 Dev. > 기본 정리' 카테고리의 다른 글
2023.07.28 - Docker (0) | 2023.07.28 |
---|---|
2023.06.07 - 명령어 정리 (feat. cmd, vi) (0) | 2023.06.07 |
2023.05.30 - Clone coding (0) | 2023.05.30 |
2023.05.20 - SQL 문 정리 (0) | 2023.05.20 |
2023.05.15 GitHub - Fork (0) | 2023.05.15 |