일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빅분기 실기
- 워게임
- wireshark
- ubuntu
- error
- nmcli
- 빅데이터 분석기사 실기
- 보안뉴스
- 인프런
- mariadb
- 빅데이터 분석기사
- Dreamhack.io
- ios frida
- centos7
- pandas
- AWS
- tcache
- Cloud
- pwnable
- 빅데이터분석기사 실기
- dreamhack
- AWS Cloud
- 빅데이터분석기사
- 풀이
- Python
- 클라우드
- Linux
- VS Code 오류
- [EduAtoZ]
- FSB
- Today
- Total
0netw0m1ra
SSL/TLS 통신과정 본문
<SSL/TLS 통신시 주고받는 메시지>
① 먼저 데이터를 주고 받기 전, TCP 3 way handshake 과정을 통해 연결을 맺는다.
② client에서 Client_ID, Client_Rand, ciphersuite 목록을 server에게 전송한다.
③ server에서는 ciphersuite의 목록 중에서 자신이 사용할 ciphersuite을 하나 선택하여 알려주고, S_ID, S_Rand를 함께 전송한다.
-> ciphersuite 예시 : TLS_RSA_WITH_AES_256_CBC_SHA256
그 후, client와 sever는 각각 자신의 공개키와 개인키를 생성한다.
④ Server 인증서, Server Key Exchange, Certificate Request, Server Hello Done 은 선택사항이다.
이 단계에서 server가 client에게 인증서를 보내면 ⑤단계에서 client가 인증서가 CA에 의해 발급되었는지 확인하고 서버를 인증하게 된다.
인증서를 통해 공개키를 상대방에게 전달하게 되는데 이때, 인증서가 없을 경우를 대비하여 보내지는 것이 Server Key Exchange이다. 인증서가 없으면 Server Key Exchange를 통해 server의 공개키를 보내게 되는 것이다.
⑤ Client_Rand와 Server_Rand를 이용하여 premaster secret을 생성한다. 후에 master key로 사용된다.
server의 공개키(CA에 의해 공개된 인증서의 공개키)를 이용해 암호화 하여 전송한다.
⑥ Client Certificate는 선택사항이고, 나머지 항목과 함께 전송한다.
위 ④와 같은 방법으로 client의 공개키도 전송하게 되는 것이다.
⑦ server에서는 개인키를 이용하여 premaster secret을 얻을 수 있게 되고, ⑥과정에서 전송된 인증서를 통해 client를 인증할 수 있다.
⑧ 협상한 암호명세를 이후부터 적용하고, 변경함을 알리고 협상완료를 알린다.
⑨ 협상한 암호명세를 이후부터 적용하고, 변경함을 알리고 협상완료를 마친다.
⑩ ②~⑨로 완성된 premaster-> master -> session key 를 통해 session key(대칭키)로 암호화 복호화를 수행하여 데이터를 통신한다.
'나홀로 스터디' 카테고리의 다른 글
[앱분석] Android Frida 설치 및 사용법 (0) | 2021.11.03 |
---|---|
JEB2 오류 해결 (0) | 2021.09.26 |
빅엔디안 VS 리틀엔디안 (0) | 2021.07.12 |
스택프레임(StackFrame) - BOF, RTL Attack (0) | 2021.07.04 |
checksec.sh 설치 및 사용법 (0) | 2021.06.12 |