많은 분들이 혼란스러워 하는 주제입니다.
SSL = Secure Sockets layer
TLS = Transport Layer Security
SSH = Secure Shell
SSL은 원래 HTTP를 보안하기 위해 넷스케이프에서 처음 만든 프로토콜입니다. 브라우저 주소창에서 https로 시작하는 URL에 접속하는 경우 SSL 연결을 통해 HTTP 프로토콜로 통신하게 됩니다.
TLS는 SSL 3.0에서 갈라져 나온 IETF 프로토콜 표준입니다. RFC 2248로 문서화 되어있습니다. TLS는 SSH Transport와 User Authentication 프로토콜과 유사한 목적과 기능을 가지고 있습니다. TLS는 암호화를 통해 기밀성과 무결성을 보장하는 양방향 바이트스트림을 제공합니다. 인증은 선택사항입니다. 아래 링크를 참조하시기 바랍니다.
http://www.ietf.org/rfc/rfc2246.txt
SSH와 TLS의 주요 차이점은 아래와 같습니다:
- TLS 서버 인증은 선택사항입니다. 서로 신원을 밝히지 않고 통신할 수 있습니다. 대신 이렇게 하는 경우 MITM (man-in-the-middle) 공격에 취약합니다. SSH-TRANS의 경우에는 서버 인증이 필수적입니다. (물론 클라이언트 쪽에서 서버가 제공한 서버 공개키를 검증하지 않을 수는 있습니다.)
- TLS에서는 클라이언트와 서버 모두 X.509 공개키 인증서를 사용합니다. 이것 때문에 SSH에서 키 생성하고 관리하는 것에 비하면 쓰기가 좀 번거롭습니다. PKI를 사용해야 하지만, 대신에 확장성 있는 키 관리 기능을 제공한다는 이점이 있습니다.
- TLS는 SSH처럼 다양한 클라이언트 인증 옵션을 제공하지 않습니다. 오로지 공개키만 사용 가능합니다.
- TLS는 다른 SSH 컴포넌트가 제공하는 부가적인 기능을 가지고 있지 않습니다. SSH Connection Protocol (SSH-CONN)은 하부의 SSH-TRANS 연결을 이용해서 어플리케이션에 대한 여러 개의 논리적인 데이터 채널을 제공하고, 원격 프로그램 실행 지원, 터미널 관리, TCP 연결 터널링, 흐름 제어 등이 가능합니다만, TLS는 이런 기능을 지원하지 않습니다.




