안녕하세요. 학생개발자입니다. 이번에는 SSL을 알아보려 합니다. SSL은 Secure Sockets Layer약자입니다.
즉 말 그대로 보안 소켓 레이어입니다. SSL은 사용자와 웹 서버간의 통신을 암호화합니다.
현제는 SSL명칭이 바뀌어서 TLS로 명칭이 변경되었습니다. TLS는 Transport Layer Security의 약자로
전송 계층 보안이라는 뜻입니다. TLS규격은 현제 TLS1.3이 표준 규격으로 최근에 지정되었습니다.
위 이미지는 제가 운영중인 사이트입니다. 저는 웹 표준을 준수하는 TLS1.3규격을 사용합니다.
저는 클라우드플레어의 인증서를 사용하는것을 확인할 수 있습니다.
여기서 TLS1.3이란 무었일까요?
TLS1.3은 기존 TLS1.2에서 가능했었던 정적 RSA 키 교환을 폐지 해서 '아웃오브밴드(out-of-band)'를 불가능 하게 됩니다.
다시 말해, 네트워크 트래픽의 메인 플로우에 위치하지 않은 도구로 패킷을 검사하고 해독할 수 없게 되었습니다.
시스템을 정지시킬 수 있는 레이턴시(지연) 없이 다양한 검사 도구를 활용할 수 없게 된 점과 고객 경험을 모니터링하고,
침입 및 악성코드를 탐지하기 힘들게 된것은 단점이지만, 데이터센터 어디에서나 패킷을 추적해 암호화를 해독할 수 없게 되므로
데이터센터를 해킹을 통한 아웃오브밴드 방식으로 비밀키를 해독할 없게 되어 더욱 보안성이 향상되었습니다.
쉽게 설명하자면 정적 RSA 키 쿄환은 안전하지 못하다는 문제가 있기 때문에 TLS 1.3에서 폐지된 것입니다.
관리자가 네트워크 모니터링에 사용하는 '아웃오브밴드' 해독 기능이 개방된 인터넷으로 패킷을 스누핑하는 데 악용될 수 있습니다.
이러한 문제는 특정사용자의 인터넷의 활동 내역을 모두 들여다 볼 수 있는 문제점입니다.
또한 RSA 키 메카니즘에는 로봇 공격(ROBOT attack)과 키 도용(key theft) 같은 취약점도 존재합니다.
하지만 프라이빗 키를 인터넷이 아닌 데이터센터 내부에서 사용하면, 해커는 데이터센터에 침입해 패킷과 RSA 프라이빗 키를
모두 훔쳐야 취약점을 악용할 수 있었으나 TLS1.3을 사용하면 해당 취약점을 통한 위협을 최소화 할 수 있습니다.
이를 해결하기 위해 IETF(Internet Engineering Task Force)는 TLS1.3을 전송계층보안 프로토콜
국제표준으로 지정했습니다.
TLS1.3의 장점은 웹페이지의 속도가 빨라졌습니다. 위 이미지를 보면 더욱 간소환 된것을 보실 수 있습니다.
또한 기존 TLS1.2에서는 포함되지 않았던 SNI필드 암호화가 적용되었습니다.
SNI란 서버 네임 인디케이션(Server Name Indication, SNI)의 약자입니다.
컴퓨터 네트워크 프로토콜인 TLS의 확장입니다. 클라이언트는 핸드셰이킹 과정에서 클라이언트가 어느 호스트네임에 접속하려는지를
서버로 전송합니다. 이로 인해 같은 IP 주소와 TCP 포트 번호를 가진 서버로 여러개의 인증서를 사용할 수 있게 해줌으로써,
모든 사이트가 같은 인증서를 사용하지 않아도 동일한 아이피로 여러 HTTPS 웹사이트(TLS 상에서 돌아가는 모든 서비스)를
운영할 수 있게 됩니다. 개념상으로는 HTTP/1.1의 이름 기반의 가상 호스팅(virtual hosting)과 동일하지만,
HTTPS를 위해 고안되었다. 원하는 호스트네임이 암호화되어 있지 않아서, 사용자가 어느 사이트를
이용할 수 있는지 감청할 수 있다는 문제점이 존재합니다.
TLS1.3에는 이러한 문제점을 최소화 하기위해 SNI필드 암호화를 채택하였습니다.
따라서 대한민국 정부가 진행하는 불법 사이트 차단이 불가능하게 되었습니다. SNI필드를 암호화 하면 SNI필드 패킷을 들여다 봐도
모두 암호화 되어 있어 인터넷 검열을 막을 수 있습니다. 현제 SNI필드 암호화 기능을 사용하기 위해서는 웹서버가
클라우드 플레어 DNS와 인증서를 사용해야 하며 파이어폭스 브라우저를 사용해야 합니다.
모든 웹서버와 데이터 센터가 TLS1.3규격을 적용하는 데 많은 시간이 걸릴 수 있습니다. TLS1.3 적용으로 인한
관리가 힘들어 졌기 때문에 아직 많은 데이터센터에서 적용을 꺼리는 측면이 있습니다.
하지만 보안과 프라이버시를 위해서는 TLS1.3규격을 사용하는 것이 옳다고 생각합니다.
문제점이 있는 옛것을 버리고 새로운 것으로 바꾸는 것은 당연하다고 생각합니다. 저는 "문제점이 존재하는 관습은 과감히 버리고
문제점이 패치된 것으로 빠르게 전환해야 한다"고 생각합니다.
이번 포스팅은 여기까지입니다. 앞으로도 유익한 정보, 정확한 정보를 전해드리도록 노력하겠습니다.
제 포스팅을 읽어주셔서 감사합니다.
제글의 도움이 되셨거나 좋으시다면 댓글과 공감버튼을 클릭해 주시면 감사합니다.
제 블로그가 마음에 드시다면 티스토리 이웃으로 추가버튼 또는 네이버 이웃추가(초록색)버튼을 클릭하시면 됩니다.