SSL과 TLS
by Frinee1. SSL / TLS
- 전송계층에서 보안을 제공하는 프로토콜을 말함.
- SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 방지하는 역할을 함.
- HTTPS 환경에서 애플리케이션 계층과 전송 계층 사이에 위치한 신뢰 계층
- SSL (Secure Socket Layer)는 버전이 올라가면서 TLS(Transport Layer Security Protocol)로 명칭이 바뀌었으나 보통은 SSL/TLS 라고 부름
2. TLS의 핸드셰이크
보안 세션
: 보안이 시작되고 끝나는 동안 유지되는 세션을 말함
SSL/TLS는 핸드셰이크를 통해 보안 세션을 생성하고 이를 기반으로 상태 정보 등을 공유함
- 클라이언트에서 서버에 접속하여 ClientHello 메시지를 전송
- 클라이언트가 보낸 ClientHello에 응답, 그리고 서버가 사용가능한 암호화 방식을 선택하여 보냄
- 서버의 인증서를 클라이언트에게 보내는 단계, 필요에 따라 CA의 Certificate도 전송
- 메시지를 모두 보냈다는 의미의 메시지
- 클라이언트 측에서 서버의 공개키로 암호화한 것을 서버에 전송
- 성공적으로 공유했다는 메시지 확인
- 모든 메시지를 협의한 알고리즘, 키를 이용하여 암호화하겠다는 선언
- 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를 구하기 어렵다 어쩌고저쩌고 하는데....
암튼! 훌륭하니깐 많이 쓰이는 것 같다
- 처음에 공개값을 공유
- 이후 각자의 비밀 값과 혼합 후 혼합 값을 공유
- 그다음 각자 비밀값과 혼합하면 공통의 암호키인 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