반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- dump
- 파이썬
- elasticsearch
- daspecialty
- ELK
- Spark
- 알고리즘
- Django
- Medium
- kibana
- Optimization
- python
- 리트코드
- 키바나
- Algorithm
- twosum
- 깊이우선탐색
- dfs
- 해시
- Easy
- 장고
- RecommendationSystem
- 프로그래머스
- CentOS
- AWS
- solution
- 스파크
- leetcode
- programmers
- 엘라스틱서치
Archives
- Today
- Total
Archive
TLS (Transport Layer Security) 본문
반응형
TLS
- SSL 표준화 암호화 프로토콜
- 웹사이트 ~ 브라우저(OR 서버 ~ 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결 보안을 유지하는 표준 기술 (HTTPS)
- 상호인증, 무결성, 기밀성 등을 보장함
- TCP/IP 통신 위에서 동작

TLS 사용 이유
- 웹사이트 ~ 브라우저(OR 서버 ~ 서버) 사이에 정보를 주고받을 때 사용하는 HTTP 프로토콜 (Hypertext Transfer Protocol) 에 보안을 적용하기 위함.
- HTTP는 기본적으로 주고 받는 패킷을 암호화하지 않고 그대로 전송하기에 공격의 위험성이 존재.
- TLS는 HTTP통신에 사용되는 패킷을 암호화 및 인증 과정을 거치게끔 하는 프로토콜로 HTTPS 프로토콜 (HTTP Secure)에 사용됨.
TLS 특징
1) 암호화
TLS는 여러 암호화 방식 중에 대칭키 방식과 비대칭키 방식을 혼용해서 사용한다.
- 대칭키 (Symmetric Key) 방식
- 암호화에 사용하는 Key를 한개만 사용하여 암호화 / 복호화 할 때 모두 동일한 키를 사용하여 암호화하는 방식.
- 장점 : 계산 속도가 빠르다.
- 단점 : 같은 키를 암호화/복호화에 사용하므로, 키를 전달하는 과정에서 해킹을 당하면 데이터가 노출될 위험이 있다.

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

TLS는 대칭키를 전달하는 방식으로 비대칭키 방식을 사용한다.
통신할 때는 대칭키를 사용하여 암호화/복호화를 하며 패킷을 전달하는데, 처음에 대칭키를 전달하는 과정에서 비대칭키 방식을 사용하여 안전하게 공유한다.
따라서 보다 강력한 암호화를 적용함과 동시에 리소스도 효율적으로 사용할 수 있게 된다.
2) 서버 인증
TLS는 암호화된 통신을 제공할 뿐만 아니라, 통신할 서버가 신뢰할 수 있는 서버인지 인증서를 통해 확인하는 역할도 한다.
즉, 인증서를 통해 인증된 서버에 한정하여 암호화된 통신을 수행한다.
(1) 인증서
- 구성요소 : 서비스 정보 ( CA, 서비스 도메인 등 ), 서버 측 공개키, 지문, 디지털서명 등

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

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

- 지문 : 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 소스코드 등
- Client는 CA 리스트(공인으로 인증된 CA기관들의 리스트 + 공개키 ) 가 이미 등록되어 있음.
- 2. 서버 측의 인증서를 Client에게 전송
- 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
반응형