Frinee의 코드저장소

SSL과 TLS

by Frinee

1. SSL / TLS

  • 전송계층에서 보안을 제공하는 프로토콜을 말함.
  • SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 방지하는 역할을 함.
  • HTTPS 환경에서 애플리케이션 계층과 전송 계층 사이에 위치한 신뢰 계층
  • SSL (Secure Socket Layer)는 버전이 올라가면서 TLS(Transport Layer Security Protocol)로 명칭이 바뀌었으나 보통은 SSL/TLS 라고 부름

 

 

2. TLS의 핸드셰이크


보안 세션

보안이 시작되고 끝나는 동안 유지되는 세션을 말함

 

SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유함

 

TLS의 핸드셰이크

  1. 클라이언트에서 서버에 접속하여 ClientHello 메시지를 전송
  2. 클라이언트가 보낸 ClientHello에 응답, 그리고 서버가 사용가능한 암호화 방식을 선택하여 보냄
  3. 서버의 인증서를 클라이언트에게 보내는 단계, 필요에 따라 CA의 Certificate도 전송
  4. 메시지를 모두 보냈다는 의미의 메시지
  5. 클라이언트 측에서 서버의 공개키로 암호화한 것을 서버에 전송
  6. 성공적으로 공유했다는 메시지 확인
  7. 모든 메시지를 협의한 알고리즘, 키를 이용하여 암호화하겠다는 선언
  8. TLS 핸드셰이크를 성공적으로 마치고 종료
사이퍼 슈트
프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말하며, 총 5개가 존재

- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_CCM_SHA256
- TLS_AES_128_CCM_8_SHA256

 

 

3.  키교환 암호화 알고리즘


키 교환 암호화 알고리즘으로는

  • 대수곡선 기반의 ECDHE(Elliptic Curve Diffie-Hellman Ephermeral)
  • 모듈식 기반의 DHE(Diffie-Hellman Ephermeral)

둘 다 디피-헬만(Diffie - Hellman) 방식을 활용

 

디피-헬만 키 교환 암호화 알고리즘

 

$$ y = g^x \ mod \ p $$

 

뭐... g,x,p를 알면 y를 구하기 쉽지만,,, g,y,p만 안다면 x를 구하기 어렵다 어쩌고저쩌고 하는데....

암튼! 훌륭하니깐 많이 쓰이는 것 같다 

 

 

  1. 처음에 공개값을 공유
  2. 이후 각자의 비밀 값과 혼합 후 혼합 값을 공유
  3. 그다음 각자 비밀값과 혼합하면 공통의 암호키인 PSK(Pre-Shared Key) 생성

 

4. 해싱 알고리즘


  • 데이터를 추정하기 힘든 더 작고 섞여 있는 조각으로 만드는 알고리즘
  • 대표적으로 SHA-256 알고리즘과 SHA-384 알고리즘이 쓰이며 그중에서 SHA-256 알고리즘이 대표적

SHA-256 알고리즘

  • 해시 함수 결과값이 256 비트인 알고리즘
  • 비트코인을 비롯한 많은 블록체인 시스템에 사용
해시
다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값

해시 함수
임의의 데이터를 입력으로 받아 일정한 길이의 데이터로 바꿔주는 함수

 

ex) SHA256 - Online Tools

 

 

5. 마치며


2시간 동안 작성한 글이 중간에 날아가는 사태가 발생했습니다...

그래서 도합 3시간이 넘게...

개발자를 꿈꾸는 모든 분들,

저장 항상 상시로 하세요..

'Computer Science > 네트워크' 카테고리의 다른 글

HTTP  (0) 2024.08.30
IP 주소  (0) 2024.08.29
계층 간 데이터 송수신 과정  (0) 2024.08.27
TCP/IP 4계층 모델  (0) 2024.08.19

블로그의 정보

프리니의 코드저장소

Frinee

활동하기