Archive

TLS (Transport Layer Security) 본문

------- CS -------/Security

TLS (Transport Layer Security)

enent 2022. 2. 20. 18:03
반응형

TLS

  • SSL 표준화 암호화 프로토콜
  • 웹사이트 ~ 브라우저(OR 서버 ~ 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결 보안을 유지하는 표준 기술 (HTTPS)
  • 상호인증, 무결성, 기밀성 등을 보장함
  • TCP/IP 통신 위에서 동작

Protocols Layer

 

TLS 사용 이유 

  • 웹사이트 ~ 브라우저(OR 서버 ~ 서버) 사이에 정보를 주고받을 때 사용하는 HTTP 프로토콜 (Hypertext Transfer Protocol) 에 보안을 적용하기 위함.
  • HTTP는 기본적으로 주고 받는 패킷을 암호화하지 않고 그대로 전송하기에 공격의 위험성이 존재.
  • TLS는 HTTP통신에 사용되는 패킷을 암호화 및 인증 과정을 거치게끔 하는 프로토콜로 HTTPS 프로토콜 (HTTP Secure)에 사용됨.

 

TLS 특징

1) 암호화 

TLS는 여러 암호화 방식 중에 대칭키 방식과 비대칭키 방식을 혼용해서 사용한다.

  • 대칭키 (Symmetric Key) 방식
    • 암호화에 사용하는 Key를 한개만 사용하여 암호화 / 복호화 할 때 모두 동일한 키를 사용하여 암호화하는 방식.
    • 장점 : 계산 속도가 빠르다. 
    • 단점 :  같은 키를 암호화/복호화에 사용하므로, 키를 전달하는 과정에서 해킹을 당하면 데이터가 노출될 위험이 있다. 

Symmetric Key

  • 비대칭키 (Asymmetric Key) 방식 (= 공개키 (Public Key) 방식)
    • 암호화에 공개키/비밀키 를 1쌍으로 사용하여, 암호화 / 복호화 할 때 다른 키를 사용하여 암호화하는 방식.
    • 공개키로 암호화 한 데이터는 비밀키로만 복호화 가능.
    • 장점 : 대칭키 방식보다 암호화 수준이 더 높음. (비밀키로만 복호화 가능)
    • 단점 : 계산이 복잡함 -> 계산 속도가 느림 (= CPU 리소스 소모가 큼)

Asymmetric Key

 

TLS는 대칭키를 전달하는 방식으로 비대칭키 방식을 사용한다.

통신할 때는 대칭키를 사용하여 암호화/복호화를 하며 패킷을 전달하는데, 처음에 대칭키를 전달하는 과정에서 비대칭키 방식을 사용하여 안전하게 공유한다.

따라서 보다 강력한 암호화를 적용함과 동시에 리소스도 효율적으로 사용할 수 있게 된다.

 

2) 서버 인증 

TLS는 암호화된 통신을 제공할 뿐만 아니라, 통신할 서버가 신뢰할 수 있는 서버인지 인증서를 통해 확인하는 역할도 한다.

즉, 인증서를 통해 인증된 서버에 한정하여 암호화된 통신을 수행한다.

 

(1) 인증서

  • 구성요소 : 서비스 정보 ( CA, 서비스 도메인 등 ), 서버 측 공개키, 지문, 디지털서명 등

인증서 1. CA 정보

  • CA(Certificate Authority) : 인증서를 발급해주는 기관. 신뢰성이 엄격하게 공인된 기업만 가능(Verisign, Geotrust 등) 하며 일반적으로 최상위 인증기관(Root CA) ~ RootCA 로 부터 서명을 받은 인증기관 ~  개인, 3계층으로 구성되어 있다. 

인증서 2. Public Key Info

  • 공개키 (Public Key) : 인증서 별로 공개키/비밀키 1 쌍을 가지고 있으며, 해당 인증서의 공개키를 상위 CA의 비밀키로 암호화 할 때 사용.
  • 서명 (Signiture):  인증서의 지문을 상위 CA의 비밀키로 암호화한 것. 디지털 서명(Digital Sigining) 이라고 하기도 함.

인증서 3. Fingerprints

  • 지문 : CA의 검증을 거쳐 발급 받은 해당 기관의 인증서의 공개키를 해시(SHA-256) 한 값

 

  • 발급 받고자 하는 해당 기관은 자신의 도메인과 공개키를 CA에게 제출하고, CA는 검증을 거친 후 이 기관의 공개키를 해시해서 인증서에 지문으로, 지문을 CA의 비밀키로 암호화하여 서명으로 등록하는 과정을 거쳐 인증서가 발급됨.
    • 인증서 체인 : 이렇게 CA가 발급 받고자 하는 기관의 인증서가 포함하고 있는 공개키를 상위 기관의 비밀키로 암호화하여 상호 보증하게 됨 

 

(2) 인증프로세스

① 서버인증 ② 암호화 통신 의 과정으로 수행된다.

 

① 서버인증

  • 1. Client가 서버에 접속 요청
    • Client는 CA 리스트(공인으로 인증된 CA기관들의 리스트 + 공개키 ) 가 이미 등록되어 있음.
      • CA List 예시 : Geotrust와 같은 Root CA의 인증서, Google CA같은 ICA의 인증서 등
      • Client 예시 :  Mac in keyChain, 브라우저 in 소스코드 등
  • 2. 서버 측의 인증서를 Client에게 전송
    • Client는 등록되어 있는 정보와 비교하여 서버가 신뢰할 수 있는 서버인지 판단하는 작업을 수행하게 됨.

2. 서버 측 인증서를 Client한테 전송

② 암호화 통신

  • Client는 서버를 신뢰할 수 있다고 판단되면, 해당 서버의 공개키를 꺼내서 통신에 사용하게 된다. 
  • 연결 수립 이전 Handshake과정에서 서버, 클라이언트가 각각 생성한 Nounce 값을 주고 받게 되고, Client는 서버의 공개키를 사용하여 일종의 난수인 PMS값 (Pre-Master Secret) 을 생성하여 암호화하여 서버로 전달한다.

  • 이후 서버와 클라이언트는 각각의 Nounce값과 PMS값을 활용하여 대칭키를 생성한다.  

 

  • 이 생성된 대칭키를 활용하여 패킷을 암호화하여 통신을 진행하게 된다.  

 

 

참고자료

https://babbab2.tistory.com/4
http://pchero21.com/?p=597
https://velog.io/@yanghl98/Network-%EB%8C%80%EC%B9%AD%ED%82%A4%EA%B3%B5%EA%B0%9C%ED%82%A4-Symmetric-KeyPublic-Key
https://m.blog.naver.com/alice_k106/221468341565
반응형
Comments