일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 딥러닝
- IPV4
- Django
- Python
- network
- 자격증
- Protocol
- 머신러닝
- Windows Server
- Algorithm
- 네트워크 관리사
- 자료구조
- 알고리즘
- FTP
- 패스트캠퍼스
- 네트워크 자격증
- deep learning
- Dynamic Programming
- 네트워크
- 프로토콜
- ICQA
- 서브넷마스크
- 파이썬
- 밑바닥부터 시작하는 딥러닝
- 코딩테스트
- 네트워크 관리사 2급
- dns
- Machine learning
- 실기
- 기본 정렬
- Today
- Total
쳉지로그
[네트워크] SSL(Secure Socket Layer) 본문
SSL(Secure Socket Layer)이란?
- SSL은 네트워크에서 메시지 전송 시 보안을 적용하기 위해 개발된 표준프로토콜로, 웹 서버와 브라우저 사이의 종단 간 보안과 데이터 무결성을 보증한다.
SSL? TLS? HTTPS?
- SSL과 TLS는 보안 계층을 만들어 HTTPS 뿐만 아니라 FTP, SMTP와 같이 다른 응용 프로토콜에도 적용할 수 있다. HTTPS는 TLS와 HTTP가 조합된 프로토콜만을 가리키는 것이다.
- TLS(SSL 3.0 version 표준)는 가장 최신 기술로 더욱 강력한 SSL이다. 하지만 일반적으로 SSL이 더 많이 사용되는 용어로, 여전히 보안 인증서는 SSL이라고 불린다. 즉, TLS와 SSL은 같은 의미의 용어라고 봐도 무방하다.
SSL 인증서
- 클라이언트와 서버간의 통신을 제 3자(CA or Root certificate)가 보증해주는 전자화 문서
*CA(Certificate Authority) : 인증서를 제공하는 (신뢰성이 엄격하게 공인된) 민간기업들
- 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. (암호화)
- 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지를 판단할 수 있다.
- 서버와 클라이언트가 주고받는 통신 내용을 악의적으로 변조하는 것을 방지할 수 있다.
SSL에서 사용하는 암호화 종류(대칭키+공개키)
- SSL은 보안과 성능상의 이유로 두 가지 암호화 기법을 혼용해서 사용한다.
- 각 단점을 보완 (대칭키 : 보안 위험성 / 공개키 : 많은 컴퓨터 자원 사용)
- 실제 데이터 : 대칭키 / 대칭키의 키 : 공개키
- 대칭키(symmetric-key algorithm) : 암호화와 복호화에 같은 암호 키를 사용한다.
- 암호를 주고 받는 사람들(수신자, 송신자) 사이에 대칭키를 전달하는 것이 어려움
- 매우 빠르지만, 키가 유출되면 공격에 노출 위험
- 공개키(public-key cryptography) : 암호화와 복호화에 사용하는 키가 서로 다르다.
- 암호화에 사용되는 키는 공개키(public key), 복호화에 사용되는 키는 개인키(private key)
- 송신자 : 수신자의 공개키를 받아 데이터를 암호화하여 네트워크를 통해 원격지에 전달
- 수신자 : 공개키로 암호화된 데이터를 자신의 개인키로 복호화
SSL의 동작 단계
1. 악수(handshake)
1) 클라이언트가 서버에 접속 (Client Hello)
- 서버에 보내는 정보 : 클라이언트 측에서 생성한 랜덤 데이터, 클라이언트가 지원하는 암호화 방식들, 세션 아이디
2) 서버 응답 (Server Hello)
- 클라이언트에 보내는 정보 : 서버 측에서 생성한 랜덤 데이터, 서버가 선택한 클라이언트의 암호화 방식, 인증서
3) 클라이언트는 인증서가 CA에 의해 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA 리스트 확인
- 해당 CA의 공개키를 이용해 인증서를 복호화한다.
- 복호화를 통해 클라이언트는 인증서에 들어있는 서버의 공개키를 획득한다.
클라이언트와 서버가 생성한 랜덤 데이터를 가지고 pre master secret 암호키 생성
- 인증서에서 복호화해 획득한 서버의 공개키로 pre master secret 키를 암호화해서 서버로 전송
- 서버는 자신의 비공개키로 pre master secret 키를 복호화
4) 서버와 클라이언트 모두 pre master secret값을 master secert 값으로 만든다.
- master secret으로 session key(세션키) 생성
5) 서버는 클라이언트가 전송한 pre master secret 값을 자신의 비공개키로 복호화한다.
6) 핸드쉐이크 종료를 서로에게 알린다.
2. 전송(세션)
- 실제로 서버와 클라이언트가 데이터를 주고 받는 단계이다.
- 정보 전달 이전에 세션키 값을 이용해서 대칭키 방식으로 암호화한다.
- 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는다.
3. 세션 종료
- 데이터의 전송이 완료되면 SSL 통신이 끝났음을 서로에게 알려주고, 세션키(대칭키)를 폐기한다.
'네트워크 > 기초 용어' 카테고리의 다른 글
[네트워크] 방화벽(Firewall) (0) | 2021.10.08 |
---|---|
[네트워크] 로드밸런싱(Load Balancing) (0) | 2021.10.08 |
[네트워크] OSI 7계층 (0) | 2021.10.05 |
[네트워크] 도메인(domain) (0) | 2021.10.05 |
[네트워크] VPN(Virtual Private Network) (0) | 2021.10.05 |