[혼자 공부하는 네트워크] Day 5 / 암호화 프로토콜 (SSL/TLS)

2025. 1. 7. 11:04·💽 CS Knowledge/🌐 Network

암호화 프로토콜

SSL(Secure Sockets Layer)/ TLS(Transport Layer Security)


🔑

SSL은 데이터를 안전하게 전송하기 위해
”웹 서버와 클라이언트 간의 통신을 암호화하는 프로토콜”

— SSL은 이후 TLS로 발전 —

1. 주요 목적

1.1 기밀성(Confidentiality)

데이터가 암호화되어 네트워크를 통해 전송되므로, 중간에 누군가가 데이터를 가로채더라도 내용을 알 수 없음.

** 비대칭 암호화와 대칭 암호화 방식을 사용

1.2 무결성(Integrity)

데이터가 전송 중에 변조되지 않도록 보장

** 데이터에 디지털 서명을 추가하여 변조 여부를 확인

1.3 인증(Authentication)

서버와 클라이언트가 서로 신뢰할 수 있는지 확인

** 인증서를 사용하여 서버의 정당성을 검증

2. SSL의 작동 원리

2.1 핸드쉐이크(Handshake) 과정

  1. 클라이언트가 연결 요청

    클라이언트는 서버에 SSL 연결 요청을 보내며, 지원 가능한 암호화 알고리즘 및 TLS 버전을 전달

  2. 서버가 인증서 전송

    서버는 클라이언트에게 자신의 SSL 인증서를 보냄
    → 이 인증서는 서버의 공개 키와 인증 기관의 서명을 포함

  3. 클라이언트가 인증서 검증

    클라이언트는 서버 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 확인
    → 인증서의 유효성을 검증

  4. 세션 키 설정

    클라이언트와 서버는 공개 키 암호화를 사용해 세션 키를 교환
    → 이후 통신은 대칭 암호화를 사용해 데이터를 암호화

  5. SSL 연결 시작


3. SSL 인증서

SSL 인증서는 서버의 신뢰성을 보장하기 위해 사용되며, 인증 기관(CA)이 발급

** 인증서가 포함하고 있는 정보

  • 서버 도메인 이름
  • 서버의 공개 키
  • 인증서 발급자 정보
  • 유효 기간
  • 인증서 서명

3.1 인증서 종류

  1. 도메인 인증(DV, Domain Validation)

    도메인 소유권만 검증합니다. 가장 간단하고 저렴한 인증서입니다.

  2. 기관 인증(OV, Organization Validation)

    도메인 소유권과 조직 정보를 검증합니다. 보다 신뢰성이 높습니다.

  3. 확장 인증(EV, Extended Validation)

    가장 높은 수준의 신뢰성을 제공합니다. 주소창에 초록색 자물쇠 또는 회사 이름이 표시됩니다.


4. SSL/TLS의 암호화 방식

  1. 대칭 암호화

    클라이언트와 서버가 동일한 키를 사용해 데이터를 암호화하고 복호화 → 속도가 빠름

  2. 비대칭 암호화

    공개 키와 개인 키를 사용하여 데이터를 암호화 → 주로 세션 키 교환에 사용됨

  3. 해싱(Hashing)

    메시지 다이제스트를 생성해 데이터의 무결성을 확인 → MD5, SHA256 등이 사용됨


5. SSL의 발전과 TLS

SSL은 버전 3.0 이후 TLS로 발전

현재 SSL 3.0은 보안 취약점(예: POODLE 공격) 때문에 사용이 권장되지 않으며, 대부분 TLS 1.2 또는 TLS 1.3이 사용됨

** TLS와 SSL의 차이점

항목 SSL TLS
보안 수준 낮음 (현재는 사용 금지) 높음 (최신 보안 알고리즘 포함)
암호화 알고리즘 제한적 (구식 알고리즘 포함) 최신 알고리즘 지원 (AES, ECDHE 등)
핸드쉐이크 메시지 인증 없음 메시지 인증 코드(MAC) 사용으로 무결성 강화
키 교환 RSA만 지원 RSA, Diffie-Hellman, ECDHE 등 지원
세션 재개 제한적 세션 재개를 위한 세션 ID 및 세션 티켓 지원
취약점 POODLE, BEAST 등의 공격에 취약 취약점 개선 (TLS 1.3은 프로토콜 단순화)
속도 느림 (오래된 핸드쉐이크 방식) TLS 1.3에서 더 빠른 핸드쉐이크 제공
현재 상태 더 이상 사용되지 않음 (폐기됨) 표준화된 보안 프로토콜 (활성 사용 중)

'💽 CS Knowledge > 🌐 Network' 카테고리의 다른 글

[혼자 공부하는 네트워크] Day 4 / 내가 만든 쿠키  (0) 2024.12.23
[혼자 공부하는 네트워크] Day 3 / 포트 포워딩 & DMZ  (0) 2024.12.23
[혼자 공부하는 네트워크] Day 2 / 게이트 웨이  (0) 2024.12.23
[혼자 공부하는 네트워크] Day 1 / LAN과 서브넷 마스크  (0) 2024.12.23
'💽 CS Knowledge/🌐 Network' 카테고리의 다른 글
  • [혼자 공부하는 네트워크] Day 4 / 내가 만든 쿠키
  • [혼자 공부하는 네트워크] Day 3 / 포트 포워딩 & DMZ
  • [혼자 공부하는 네트워크] Day 2 / 게이트 웨이
  • [혼자 공부하는 네트워크] Day 1 / LAN과 서브넷 마스크
dush
dush
흑인 음악 A&R에서 FE 개발자까지 / Front-End Dev. Since 2024.07
  • dush
    Dushtify
    dush
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • ✏️ Personal (2)
        • SSAFY (2)
        • Block-Chain (0)
      • 🖥️ Front-End (4)
        • JavaScript (1)
        • React (3)
      • 💽 CS Knowledge (6)
        • 🌐 Network (5)
        • 💻 CS (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공통프로젝트
    react-query
    싸피
    javascript
    Fe
    삼성청년소프트웨어아카데미
    프론트엔드
    zustand
    react
    TLS
    게이트웨이
    네트워크
    SSAFY
    frontend
    2학기공통프로젝트
    혼자공부하는네트워크
    CS
    리액트
    tanstack-query
    우수프로젝트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
dush
[혼자 공부하는 네트워크] Day 5 / 암호화 프로토콜 (SSL/TLS)
상단으로

티스토리툴바