본문 바로가기
프로그래밍 놀이터/보안

[도서 정리] 62. TLS - 보안의 기본

by 돼지왕 왕돼지 2019. 12. 11.
반응형

62. TLS - 보안의 기본



-

TLS(Transport Layer Security) 및 그 이전 버전인 SSL(Secure Socket Layer)은 인터넷에서 통신할 때의 인증 및 통신 암호화 장치이다.

TLS 나 SSL 라고 하면 암호화의 이미지가 강하지만 실제로 암호화 통신을 하는 데 있어서 가장 먼저 중요한 것은 통신이 신뢰할 만한지를 확인하는 프로세스이다.

통신 상대가 누군가를 가장하고 있다면 암호화를 해도 결국 정보는 유출되기 때문이다.



-

TLS 는 처음에 핸드쉐이크 프로토콜이라고 해서 상대를 인증하기 위한 절차를 실행하는데, 이 절차 안에 서로의 상대가 갖고 있는 인증서를 받아 검증하는 스텝이 있다.

인증서가 신원이 맞는지는 인증서의 인증국이 보내오는 리스트와 대조함으로써 확인할 수 있다.





* TLS 의 중요성


-

TLS 이전 버전인 SSL 1.0 이나 SSL 3.0 에서는 보안상의 취약성이 있다고 알려져 있어 이 녀석들은 피하는 것이 좋다.



-

2013 년에는 오픈 소스인 SSL/TLS 구축인 OpenSSL 에 있어서 TLS 의 구축 방법 문제로 인해 한 쪽의 시스템상 메모리에서 암호화되지 않은 데이터를 참조할 수 있다는 Heartbleed 라는 취약성이 발견되었었다.



-

SSL 과 비교하여 TLS 는 보다 안전한 암호를 사용할 수 있게 되었다.

또 SSL 에 존재하던 취약성이 해결되는 등 보다 뛰어나다.





* 핸드쉐이크 프로토콜의 흐름


-

클라 : 저는 XX 라는 알고리즘을 사용할 수 있어요.

서버 : OK! 그걸로 합시다.

서버 : 우리 인증서를 보냅니다.

클라 : 인증서를 검증하고, 프리 마스터 키를 생성하여 서버의 공개키로 암호화해서 보낼께요. 그리고 프리 마스터키를 사용하여 암호화에 필요한 공통키를 생성할께요.

서버 : 프리 마스터 키를 복호화. 프리 마스터키를 사용하여 암호화에 필요한 공통키를 생성했어요. 우리도 준비가 되었어요.


통신 시작!



-

프리 마스터키는 랜덤으로 생성되는 숫자이다.

이 데이터를 서버와 클라이언트가 공유함으로써 둘 밖에 모르는 공통키를 생성할 준비를 한다.




반응형

댓글