본문 바로가기
웹 개발

HTTP와 HTTPS

by heosj 2024. 5. 22.

HTTPS; Hypertext Transfer Protocol Secure

  • HTTP는 텍스트 기반의 통신으로, 데이터가 암호화되지 않아 보안 위협에 노출될 수 있다
  • HTTPS는 HTTP에 보안 기능을 더해 데이터를 암호화하여 보안성을 강화하는 프로토콜이다
  • 데이터 보안, 신원 도용 방지, 개인 정보 보호의 역할을 한다
  • 온라인 쇼핑, 온라인 뱅킹, 개인 정보를 입력하는 사이트 등에 사용한다
  • SSL 또는 TLS 프로토콜을 사용하여 데이터를 암호화하고 보호하여, 민감한 정보의 안전한 전송을 보장한다


SSL/TLS; Secure Sockets Layer/Transport Layer Security

  • SSL은 클라이언트와 서버가 데이터를 암호화해 통신할 수있도록 돕는 보안 계층이다
  • SSL 2.0의 취약점을 보완하기 위해 SSL 3.0을 개발했으며, 이후 버전에서는 TLS로 명칭이 변경되었다
  • SSL/TLS는 대칭키와 공개키로 암호화를 시도하며, 핸드셰이크, 세션, 세션 종료 세 단계로 동작한다.

HTTPS 작동 원리

  1. 클라이언트가 서버에 접속하면, 서버는 자신의 도메인 이름, IP 주소, 공개키 등과 함께 서버의 인증서를 포함한 HTTPS 응답 메시지를 전달한다
  2. SSL 핸드셰이크 실행
    1. Client Hello, 클라이언트가 랜덤 데이터와 지원하는 암호화 방식 등을 서버에게 전달한다
    2. Server Hello, 서버가 랜덤 데이터와 선택한 암호화 방식, CA에서 발급 받은 인증서를 Server Certificate 메시지를 통해 클라이언트에게 전달한다
    3. 클라이언트는 인증 기관(CA)가 발급한 인증서 목록 중 서버의 인증서를 확인한다
    4. 클라이언트는 대칭 키(랜덤 세션 키)를 임시로 생성하고, 서버의 공개키로 암호화하여 서버로 전송한다
    5. 서버는 자신의 비밀 키로 대칭 키(랜덤 세션 키)를 복호화한다
    6. 이를 사용하여 세션 키를 생성함으로써 클라이언트와 서버는 동일한 세션 키를 갖게 된다.
  3. 클라이언트와 서버는 서로 공유하는 세션 키를 데이터 전송을 암호화하는 데 사용한다
  4. 데이터 전송이 끝나면 세션을 종료하고, 사용한 세션 키도 함께 삭제한다

클라이언트는 비대칭 키(공개 키)를 사용하여 대칭 키(비공개 키)를 암호화하여 전달
서버는 비대칭 키(공개 키)를 사용해여 대칭 키(비공개 키)를 복호화하여 클라이언트-서버가 대칭 키를 공유
이 대칭 키를 통해 데이터를 안전하게 교환

→ 대칭 키는 대량의 데이터를 빠르게 암/복호화 할 수 있지만 중간에 가로채 제3자가 복호화하여 악용할 수 있다
→ 비대칭 키는 자신의 개인 키로만 복호화할 수 있으므로 중간에 가로채더라도 제3자가 복호화할 수 없기 때문에 키를 안전하게 전달할 수 있다
→ 따라서, 대칭 키를 비대칭 키로 암호화하여 전달하면 대칭 키의 효율성과 공개 키의 안전성을 모두 활용할 수 있다

 

CA; Certification Authority, 인증기관
전자서명 및 암호화를 위한 디지털 인증서를 발급, 관리하는 서비스 제공 기관(서버)
디지털 서명의 서명자 신원을 확인하고, 서명자의 공개키를 맡아 보관
인증서 및 인증서 폐기 목록을 발행할 수 있다

'웹 개발' 카테고리의 다른 글

암호화  (0) 2024.05.22
TCP와 UDP  (0) 2024.05.22
HTTP와 TCP/IP  (0) 2024.05.22
HTTP 개념  (0) 2024.05.22
DNS  (0) 2024.05.22