기술(IT)

전송계층의 보안기술 TLS(Transport Layer Security)

2019. 11. 6.
728x90

TLS(Transport Layer Security)는 컴퓨터 네트워크를 통해 통신 보안을 제공하도록 설계된 암호화 프로토콜이다. 몇 가지 버전의 프로토콜은 웹 검색, 이메일, 인스턴트 메시징 및 VoIP와 같은 애플리케이션에서 광범위하게 사용되고 있다. 웹사이트들은 그들의 서버와 웹 브라우저 사이의 모든 통신을 보호하기 위해 TLS를 사용할 수 있다. TLS 프로토콜은 주로 둘 이상의 통신 컴퓨터 응용 프로그램 사이에 프라이버시와 데이터 무결성을 제공하는 것을 목표로 한다. TLS에 의해 보안되는 경우, 클라이언트와 서버 사이의 연결은 다음 속성 중 하나 이상을 가져야 한다. TLS는 키 교환, 데이터 암호화 및 메시지 무결성 인증을 위한 다양한 방법을 지원한다. 결과적으로, TLS의 보안 구성은 많은 구성 가능한 매개변수를 포함하며, 모든 선택이 위의 목록에 설명된 모든 개인 정보 관련 속성을 제공하는 것은 아니다.전송된 데이터를 암호화하는 데 대칭 암호화가 사용되기 때문에 연결은 비공개이다. 이 대칭 암호화를 위한 키는 각 연결에 대해 고유하게 생성되며, 세션 시작 시 협상된 공유 비밀에 기초한다. 서버와 클라이언트는 데이터의 첫 번째 바이트가 전송되기 전에 사용할 암호화 알고리즘과 암호화 키의 세부사항을 협상한다. 공유 비밀의 교섭은 안전과 신뢰성이 있다. 통신 당사자의 신원은 공개키 암호화를 통해 인증할 수 있다. 이 인증은 선택적으로 만들 수 있지만 일반적으로 적어도 당사자 중 한 명에게 필요하다. 전송되는 각 메시지에는 전송 중 감지되지 않은 데이터 손실이나 변경을 방지하기 위해 메시지 인증 코드를 사용한 메시지 무결성 검사가 포함되기 때문에 연결이 신뢰할 수 있다. 위의 속성 외에도, TLS의 신중한 구성은 과거 TLS 통신의 암호를 해독하는 데 향후 암호화 키의 어떠한 공개도 사용할 수 없도록 하여 전방 비밀 보호와 같은 추가적인 프라이버시 관련 속성을 제공할 수 있다. TLS가 제공하고자 하는 통신 보안의 측면을 전복하려는 시도가 있었으며, 이러한 보안 위협을 해결하기 위해 프로토콜이 여러 차례 개정되었다. 웹 브라우저 개발자들도 이러한 취약성이 발견된 후 잠재적인 보안 취약점을 방어하기 위해 제품을 수정했다.

TLS 프로토콜은 TLS 레코드 및 TLS 핸드셰이크 프로토콜의 두 계층으로 구성된다.
클라이언트-서버 애플리케이션은 도청과 변조를 방지하도록 설계된 방법으로 네트워크를 통해 통신하기 위해 TLS 프로토콜을 사용한다.애플리케이션은 TLS(또는 SSL)와 함께 또는 없이 통신할 수 있기 때문에 클라이언트는 TLS 연결 설정을 서버에 표시할 필요가 있다. 이를 달성하는 주요 방법 중 하나는 TLS 연결을 위해 다른 포트 번호를 사용하는 것이다. 또 다른 메커니즘은 클라이언트가 TLS로 연결을 전환하기 위해 서버에 프로토콜별 요청을 하는 것이다. 예를 들어, 메일 및 뉴스 프로토콜을 사용할 때 STARTTLS 요청을 하는 것이다.클라이언트와 서버는 일단 TLS를 사용하기로 합의하고 핸드셰이킹 절차를 사용하여 상태 저장 연결을 협상한다. 프로토콜은 비대칭 암호로 핸드셰이크를 사용하여 암호 설정뿐만 아니라 대칭 암호로 추가 통신이 암호화되는 세션별 공유 키도 설정한다. 이 핸드셰이크 동안 클라이언트와 서버는 연결 보안을 설정하는 데 사용되는 다양한 매개변수에 동의한다. 핸드셰이크는 클라이언트가 보안 연결을 요청하는 TLS 사용 서버에 연결하고 클라이언트가 지원되는 암호 집합의 목록을 제시할 때 시작된다. 이 리스트에서 서버는 암호와 해시함수를 선택하는데, 그 또한 클라이언트에 그 결정을 지원하고 통지한다.  인증서에는 서버 이름, 인증서의 신뢰성을 증명하는 신뢰할 수 있는 CA(인증 기관) 및 서버의 공용 암호화 키가 포함되어 있다. 클라이언트는 계속 진행하기 전에 인증서의 유효성을 확인한다. 서버의 공용 키로 임의 번호를 암호화하여 결과를 서버에 전송한 다음, 양 당사자는 임의 번호를 사용하여 세션 동안 데이터의 후속 암호화 및 암호 해독을 위한 고유한 세션 키를 생성한다. 

TLS와 SSL은 OSI 모델 또는 TCP/IP 모델의 어떤 단일 계층에도 깔끔하게 맞지 않는다. TLS는 일부 신뢰할 수 있는 전송 프로토콜 위에서 실행하며, 이는 전송 계층 위에 있음을 의미한다. 일반적으로 프레젠테이션 계층의 기능인 상위 계층에 대한 암호화를 제공한다. 단, TLS를 사용하는 어플리케이션은 TLS 핸드셰이크를 개시하고 교환 인증서의 취급에 대해 적극적으로 제어해야 함에도 불구하고 일반적으로 TLS를 전송 계층인 것처럼 사용한다. 이렇게 하면 핸드셰이크가 종료되고 연결이 닫힐 때까지 세션 키로 암호화되고 해독되는 보안 연결이 시작된다. 위의 단계 중 하나라도 실패하면 TLS 핸드셰이크가 실패하고 연결이 생성되지 않는다. TLS는 일반적으로 인증서의 신뢰성을 확립하기 위해 신뢰할 수 있는 제3자 인증 기관에 의존한다. 신뢰는 보통 사용자 에이전트 소프트웨어와 함께 배포되는 인증서 목록에 고정되며, 의존자가 수정할 수 있다. 액티브 TLS 인증서를 감시하는 넷크래프트에 따르면, 시장 선도적인 인증기관은 조사 개시 이후이었다.  X.509 인증서 선택 결과, 인증기관과 그 소유자 사이의 관계를 검증하는 것은 물론, 인증서의 유효성을 생성, 서명, 관리하기 위해서는 인증기관과 공개키 인프라가 필요하다. 이는 신뢰의 웹을 통해 신원을 확인하는 것보다 더 편리할 수 있지만, 

LIST

댓글

추천 글