It's easy, if you try
[보안] SSL의 동작 방법 본문
SSL의 동작 방법
생활코딩에서 SSL의 동작 방법을 읽으며 내가 이해하기 쉬우려고 정리하였다.
더 정확하고 자세한 정보를 알고 싶거나 HTTPS와 암호화 방법에 대한 사전지식이 없다면 아래 링크를 참고 !
[ 출처: https://opentutorials.org/course/228/4894 ]
1. 악수 (handshake)
실제 데이터를 주고 받기 전 client와 server가 나누는 일종의 인사
이 과정을 통해 서로 상대방이 존재하는지, 데이터를 주고 받기 위해 어떤 방법을 사용할지 파악한다.
-
client hello
-
client측에서 생성한 랜덤 데이터
-
client가 지원하는 암호화 방식들
-
세션 아이디
-
-
server hello
-
server 측에서 생성한 랜덤 데이터
-
server가 선택한 client의 암호화 방식
-
인증서
-
-
client는 server의 인증서가 CA에 의해서 발급된 것인지 확인하기 위해 client에 내장된 CA 리스트를 확인
-
client에 내장된 CA의 공개키를 이용하여 인증서 복호화 -> 복호화에 성공했다면 인증서는 CA의 개인키로 암호화된 문서임이 암시적으로 보증된다.
-
-
client는 client 랜덤 데이터 + server 랜덤 데이터 = pre master secret 생성
-
client가 server의 공개키를 이용하여 pre master secret값을 암호화하여 server에 전달 (공개키 방식)
-
server는 비공개키를 이용하여 pre master secret값을 복호화 한 후 master secret값으로 만듬 (공개키 방식)
-
master secret은 session key를 생성한다.
-
이 session key 값을 이용하여 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 한 후에 주고 받는다.
-
-
client와 server는 핸드쉐이크 단계의 종료를 서로에게 알림
2. 세션
실제로 서버와 클라이언트가 데이터를 주고 받는 단계
이 단계에서 정보를 상대방에 전송하기 전 session key 값을 이용하여 대칭키 방식으로 암호화 한다.
-
대칭키 방식을 사용하는 이유
공개키 방식의 많은 컴퓨터 파워 사용, 공개키 사용시 많은 접속이 몰려 서버의 비용 증가
-
SSL이 대칭키와 공개키를 조합해서 사용하는 이유
대칭키를 상대에게 전송할 때 암호화 되지 않은 인터넷을 통해서 키를 전송하는 것이 위험하기 때문.
따라서, 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는다.
3. 세션종료
데이터의 전송이 끝나면 SSL 통신이 끝났음을 서로에게 알려준다. 이 때 통신에서 사용한 대칭키인 session key를 폐기한다.
최초 발행 날짜: 2020-08-08 23:32:00
'etc.' 카테고리의 다른 글
[Infra] 리눅스 머신 구하기 (0) | 2021.06.29 |
---|---|
[Mac OS] 이클립스(Eclipse) An error has occurred. See the log file: .metadata/.log. 오류 해결법 (1) | 2021.04.28 |