HTTPS 및 Hand Shaking

TopOfTheHead·2025년 10월 25일

컴퓨터네트워크

목록 보기
12/21

HTTPS ( Hyper Text Transfer Protocol Secure )
HTTP에서 보안을 위해 TLS 암호화를 통한 암 & 복호화 과정을 추가한 프로토콜
클라이언트서버간 통신을 암호화하여 보호하여 네트워크 중간에 제 3자가 데이터를 확인 불가능

HTTP암&복호화 과정을 추가했으므로 처리속도가 느리지만 대칭키 / 비대칭키 조합으로 어느정도 개선
대칭키를 통한 빠른 연산속도비대칭키를 통한 안정성을 모두 확보
비대칭키 / 대칭키 암호화

HTTPSCA에 비용을 지불하여 인증서를 발급 받는 방식이므로 유료
민감한 데이터를 교환 시 HTTPS를 사용하며 단순한 데이터 교환개발환경에서는 HTTP를 이용

HTTPS 기본포트 : 443

SSL , TLS 프로토콜을 활용하여 Session data를 암호화.


SSL / TLS
클라이언트서버데이터 무결성기밀성을 보장하는 암호화 프로토콜
▶ 상호간 통신암호화되어 전달되므로 중간에 데이터가 탈취되더라도 안전

HTTPS 등 다양한 프로토콜에서 활용

  • SSL ( Secure Sockets Layer )
    。Web의 초기 보안 프로토콜로 개발
    ▶ 현재는 TLS로 대체.

  • TLS ( Transport Layer Security )
    SSL보다 강력한 암호화 기능 제공.
    ▶ 현재의 보안 표준. ( TLS 1.2, TLS 1.3 )

    。다양한 암호화 알고리즘과 Key 교환방법을 사용하여 Client와 Server간 안전한 통신을 가능하게 한다.

    Cipher Suites : TLS에서 활용하는 보안 알고리즘

HTTPS연결과정 ( Hand Shacking )
서버클라이언트초기 연결비대칭키 암호화 방식으로 안전하게 세션키( = 대칭키 )를 공유

초기 연결 성립을 통해 세션키가 공유된 이후 데이터 교환 과정은 세션키를 통한 대칭키 암호화 방식으로 데이터 교환을 수행
세션키( = 대칭키 )를 통해 비대칭키 암호화 방식에 비해 빠른 데이터 교환이 가능

  • 비대칭키 암호화 단계
  1. 클라이언트서버로 최초 연결 시도

  2. 서버에서 공개키CA에 전송 후 인증서 발급 및 암호화 후 클라이언트에게 전달
    인증서CA에서 발급되며 서버공개키를 저장 후 CA 비밀키암호화
    인증서 = 서버 공개키


  3. 클라이언트는 수신한 인증서유효성 검사 후 세션키 발급
    클라이언트CA 공개키를 미리 가지고 있으므로 CA 비밀키암호화인증서복호화하여 서버 공개키 획득

  4. 클라이언트세션키를 보관 및 서버 공개키세션키암호화하여 서버로 전송
    세션키가 다른 서버로 잘못 전송되더라도 비대칭키 암호화 방식을 통해 서버 공개키암호화 되어 있으므로 오직 서버비밀키로만 복호화가 가능하여 안전을 보장

  5. 서버비밀키를 통해 서버 공개키암호화세션키복호화하여 세션키를 획득

  • 대칭키 암호화 단계
  1. 클라이언트서버는 동일한 세션키( = 대칭키 )를 공유하므로 데이터 교환세션키암호화 / 복호화를 수행

HTTPS인증서 발급 원리

서버클라이언트세션키를 공유하기위한 인증된 기관으로부터의 인증서를 발급을 수행
CA에 비용 지불 및 공개키를 전송하여 해당 공개키가 저장된 인증서를 발급

인증서CA 비밀키암호화되어있어 안전성을 확보
브라우저에서 사전에 내장한 CA 공개키를 활용해 복호화서버 공개키를 획득

클라이언트에서는 CA인증서복호화하여 획득한 서버 공개키세션키암호화하여 서버로 전송
서버서버 비밀키를 공유할 필요 없이 복호화만 수행하면 되므로 안전

  • HTTPS인증서 발급과정

  1. A 기업HTTP 기반 어플리케이션HTTPS를 적용하기 위해 비대칭키 암호화를 수행하기위한 공개키/비밀키를 발급

  2. CA 기업에 비용 지불 및 공개키를 전달하여 인증서의 발급을 요청

  3. CA인증서를 생성 및 CA비밀키암호화하여 A 기업에게 전달
    CA 이름, 서버 공개키, 서버 정보를 기반으로 인증서 생성

  4. 클라이언트에서 A 서버로 연결 시 클라이언트에게 암호화인증서를 제공

  5. 브라우저는 사전에 내장한 인증된 CA공개키를 통해 인증서복호화하여 A 서버 공개키 획득 및 세션키암호화하여 서버로 공유
    브라우저에는 인증된 CA들을 사전에 등록 및 CA 공개키를 내장

    ▶ 인증된 CA를 사용하지 않는 HTTP에서는 다음 형태로 브라우저에서 표시됨
    • 인증서
      。신뢰할 수 있는 CA 인증기관에서 해당 서버 신원에 대한 검증 확인서

    • CA 인증기관 ( CA : Certificate Authority ) ex ) ComodoCA
      인증서를 발급하고 관리하는 신뢰할 수 있는 기관
      HTTPS를 통해 요청서버가 실제 서버인지 확인하는 용도
      ex ) 가짜인 척 하는 서버를 구분가능

      서버공개키식별정보를 포함하는 인증서를 생성 및 CA 고유의 비밀키디지털서명 ( = 암호화 )

      CA비밀키 암호화, 서버공개키 암호화를 수행
      공개키암호화 / 비밀키암호화

    • OpenSSL :
      서버에 무료로 자체 인증서를 발급
      ▶ 무료이나 유효기간이 짧다.
profile
공부기록 블로그

0개의 댓글