Light Blue Pointer
본문 바로가기
Developing/TIL(CS)

SSL/TLS

by 개발바닥곰발바닥!!! 2024. 4. 11.

📖SSL = Secure Sockets Layer

  • encryption-based Internet security protocol
  • SSL은 웹을 통해서 전송되는 데이터를 암호화(Encrypt) 한다.
  • 누군가 데이터를 중간에 가로채더라도 암호화된 의미없는 문자열만 보게 된다.

📖SSL의 작동 방식

  • 두 기기의 본인 확인을 위해 두 기기 사이에 handshake라고 불리는 authentication process를 시작한다.
  • 데이터에 디지털 서명(digital sign)을 남겨서 데이터 무결성(data integrity)를 제공한다
  • 매 업데이트마다 점점 더 안전해 지다가 1999년에 TLS로 넘어갔다

📖TLS = Transport Layer Security

  • Internet security protocol that provides privacy and data integrity
  • 웹 어플리케이션과 서버 간의 통신 뿐만 아니라 이메일,메시지,VoIP(voice over IP)까지 모두 암호화가 가능하다
  • 웹 어플리케이션을 데이터 유출(data breach)등의 공격으로부터 보호한다

📖 TLS 가 하는 일

  • Encryption(암호화): third party가 전송하는 데이터를 숨긴다
  • Authentication(인증): 정보를 교환하는 주체가 맞는지 확인
  • Integrity(무결성): 데이터가 변조되거나 위조되지 않았는지 확인

📖 TLS의 동작 방식

  • communication session 전에 TLS handshake를 해서 TLS connection을 맺음

TLS handshake

  1. 사용할 TLS 버전(TLS 1.0, 1.2, 1.3 등)을 지정
  2. 사용할 Cipher Suite를 결정
  3. 서버의 TLS 인증서를 사용하여 서버의 신원을 인증(public key로)
  4. 핸드셰이크가 완료된 후 메시지를 암호화하기 위한 세션 키를 생성

Cipher suite 그 세션에서 사용될 공유 암호 키 또는 세션 키와 같은 세부 정보를 지정하는 알고리즘 집합 encryption keys, session keys 같은 세부 정보를 포함 public key cryptography기술로 암호화된 채널에 맞는 세션 키를 알아낼 수 있다

public key cryptography = asymmetric cryptography. 
public key와 private key 두가지 키를 사용한다
public key로 암호화한 데이터는 private key를 사용해서만 풀 수 있다
SSL/TLS certificate는 public key를 포함하고 있다 private key는 서버에 설치된다
TLS handshake는 public key를 origin server의 신원을 인증하고 , 세션 키를 만들기 위해 필요한 데이터를 교환(RSA or Diffie-Hellman)하는데에 사용된다
세션 키는 핸드셰이크가 완료된 후에 symmetric cryptography에 사용된다
클라이언트와 서버는 각 통신 세션마다 새로운 세션 키를 사용해서 악의적인 행위자가 이전 세션키를 식별하거나 도용해도 통신을 해독할 수 없게 할 수 있다

 

'Developing > TIL(CS)' 카테고리의 다른 글

디자인 패턴  (0) 2024.04.17
HTTP/HTTPS  (0) 2024.04.11
DB 로직 최소화 하기  (0) 2024.04.05
쿼리 최적화 방법 Query Optimization  (0) 2024.04.05
TCP와 UDP  (0) 2024.04.03