HTTPS와 TLS - 암호화

이강용·2024년 6월 16일
0

CS

목록 보기
58/109

암호화란?

  • 암호화(Encryption)는 데이터를 인가된 당사자만 읽을 수 있도록 스크램블(Scramble) 하는 과정
  • 암호화는 평문(Plaintext)을 암호문(Ciphertext)으로 변환하여 데이터가 전송되는 동안 도청, 위변조, 훼손 등의 위협으로부터 보호함
  • 암호화의 목표는 기밀성(Confidentiality)을 보장하는 것

스크램블(Scramble)이란?

  • 데이터를 승인된 당사자만 이해할 수 있도록 무작위로 뒤섞는 과정을 의미
    • 암호화 과정에서 데이터는 스크램블되어 원래의 정보를 알아볼 수 없는 형태로 변환

    • 이를 복호화하려면 송신자와 수신자가 미리 동의한 키(key)가 필요

암호화

Cipertext=Encryption(Plaintext,Key)Cipertext = Encryption(Plaintext, Key)

복호화

Plaintext=Decryption(Cipertext,Key)Plaintext = Decryption(Cipertext, Key)

TLS(Transport Layer Security)에서의 암호화

  1. 대칭 키 암호화
  • 사용 목적 : 데잍러르 빠르고 효율적으로 암호화 및 복호화하기 위해 사용
  • 동작 방식 : 클라이언트와 서버는 TLS 핸드세이크 과정에서 대칭 키를 공유
    • 이 대칭 키는 이후의 데이터 전송을 암호화하는 데 사용
  • 특징 : 같은 키로 암호화와 복호화를 수행하며 매우 빠른 속도로 데이터를 처리할 수 있음

  1. 비대칭 키 암호화
  • 사용 목적 : 초기 핸드세이크 과정에서 대칭 키를 안전하게 교환하기 위해 사용
  • 동장 방식 : 클라이언트와 서버는 공개 키(공개된 키)와 개인 키(비공개 키) 쌍을 사용하여 데이터를 암호화하고 복호화함
    • 예를들어, 클라이언트는 서버의 공개 키를 사용하여 대칭 키를 암호화하고 서버는 자신의 개인 키를 사용하여 리를 복호화함
  • 특징 : 서로 다른 키로 암호화와 복호화를 수행하며 보안성이 높지만 대칭 키 암호화보다 속도가 느림

공개 키(Public Key) : 누구나 사용할 수 있는 공개 자물쇠

  • 많은 사람들이 이 자물쇠를 사용해 상자를 잠글 수 있지만, 이 자물쇠로 잠긴 상자는 특정한 키를 사용해야만 열 수 있음

개인 키(Private Key) : 오직 특정한 사람만 가지고 있는 비밀 키

  • 이 키를 사용해야만 공개 자물쇠로 잠긴 상자를 열 수 있음
  1. TLS 핸드세이크 과정에서의 암호화
  • 클라이언트와 서버는 초기 연결 설정을 위해 비대칭 암호화를 사용하여 대칭 키를 안전하게 교환함
  • 핸드세이크가 완료되면 이후의 데이터 전송은 대칭 키 암호화를 사용하여 수행
    클라이언트 헬로 (Client Hello)
    |
    | - 클라이언트가 서버에 연결을 요청하며, 지원하는 TLS 버전, 암호화 스위트 목록, 랜덤 값(클라이언트 랜덤)을 보냅니다.
    v
    서버 헬로 (Server Hello)
    |
    | - 서버가 클라이언트의 요청에 응답하며, 선택한 TLS 버전, 암호화 스위트, 랜덤 값(서버 랜덤)을 보냅니다.
    v
    서버 인증 및 키 교환 (Server Authentication & Key Exchange)
    |
    | - 서버는 자신의 디지털 인증서를 클라이언트에 보냅니다. 인증서에는 서버의 공개 키가 포함되어 있습니다.
    | - 필요한 경우 서버는 키 교환에 필요한 추가 데이터를 보냅니다.
    v
    서버 헬로 완료 (Server Hello Done)
    |
    | - 서버가 클라이언트에게 헬로 메시지 전송이 완료되었음을 알립니다.
    v
    클라이언트 키 교환 (Client Key Exchange)
    |
    | - 클라이언트는 서버의 공개 키를 사용하여 프리마스터 시크릿(Pre-Master Secret)을 암호화한 후 서버에 보냅니다.
    v
    변경 암호 사양 (Change Cipher Spec)
    |
    | - 클라이언트가 Change Cipher Spec 메시지를 보내고, 이후의 통신을 대칭 키로 암호화할 준비가 되었음을 알립니다.
    v
    클라이언트 완료 (Client Finished)
    |
    | - 클라이언트가 Finished 메시지를 보내 핸드셰이크가 무결하게 완료되었음을 확인합니다.
    v
    서버 변경 암호 사양 (Server Change Cipher Spec)
    |
    | - 서버가 Change Cipher Spec 메시지를 보내고, 이후의 통신을 대칭 키로 암호화할 준비가 되었음을 알립니다.
    v
    서버 완료 (Server Finished)
    |
    | - 서버가 Finished 메시지를 보내 핸드셰이크가 무결하게 완료되었음을 확인합니다.
    
profile
HW + SW = 1

0개의 댓글