💡SSL(TLS) 구조
→ TCP 위에서 동작
→ 헤더와 페이로드로 구성된 record라는 자체 단위를 가짐
→ 네 개의 record 타입: user data, handshake message, alerts, change cipher spec
➕ alerts protocol
fatal: 예상못한 메세지, mac이 깨졌을 때, 압축해제 실패, handshake 실패
warning: 인증서 없음, 인증서 유효기간 만료, 인증서 폐지
➕ SSL record 프로토콜 작업
→ 이렇게 작업된 프로토콜을 TCP 이용하여 전송
❓과정
1. client: 통신 원하는 서버에게 자신이 지원 가능한 암호들과 랜덤 숫자 R1 전송
2. server: client가 보낸 암호들 중에서 사용할 암호(공개키/대칭키/해시 한 쌍 RSA_AES_SHA256
가장 많이 사용) 선택하고 랜덤 숫자 R2 전송
3. client: 랜덤 숫자 s 생성하여 server의 공개키로 암호화한 값, 여태까지 주고 받은 패킷들을 hash한 값을 server에게 전달. f(s, R1, R2) 암호화 하여 키 생성
4. server: 전달 받은→암호를 복호화 하여 s 얻고, f(s, R1, R2) 암호화 하여 키 생성
→ 클라이언트-서버 동일한 키 생성. 길게 생성된 키를 6부분으로 나누어서 4개의 대칭키와 2개의 IV로 사용
References:
https://velog.io/@saseungmin/SSLTLS-%EB%B3%B4%EC%95%88