2018.01.12

'웹 보안의 시작' TLS의 정의와 1.3 업그레이드가 시급한 이유

Josh Fruhlinger | CSO
SSL 프로토콜과 그 후손 격인 TLS는 웹의 초기 시절부터 현재까지 인터넷 상거래를 가능케 하는 암호화와 보안 기능을 제공해 왔다. 지난 수십 년간 점점 더 교묘해지는 공격을 방어하기 위해 이들 프로토콜 역시 계속해서 업데이트됐다.



TLS의 차기 버전인 TLS 1.3이 곧 확정된다. 웹사이트 운영자라면 누구나 업그레이드 해야 한다. 사이버 범죄자가 기존 보안 기술을 따라잡고 있기 때문이다.

SSL이란
SSL은 보안 소켓 계층(Secure Sockets Layer)의 약자다. 1990년대 중반 당시 가장 널리 사용되던 웹 브라우저를 만든 넷스케이프(Netscape)에서 개발한 프로토콜의 원래 이름이었다. SSL 1.0은 일반에 공개된 적이 없고 SSL 2.0에는 심각한 결함이 있었다. 1996년에 공개된 SSL 3.0은 전면적으로 수정돼 다음 버전이 나올 수 있는 기반을 마련했다.

TLS란
1999년 공개된 차기 버전 프로토콜은 국제 인터넷 표준화 기구(IETF)에 의해 표준화되고 전송 계층 보안(Transport Layer Security)의 약자인 TLS라는 새로운 이름을 얻었다. TLS 사양서에 명시된 것처럼 TLS와 SSL 3.0 사이의 차이점은 그다지 크지 않다. 따라서 TLS와 SSL은 별개의 비교 대상으로 취급되지 않는다. 지속적으로 업데이트 되는 일련의 프로토콜을 형성해 'SSL/TLS'로 뭉뚱그리는 경우가 많다.

TLS 프로토콜은 모든 종류의 인터넷 트래픽을 암호화한다. 예를 들어 웹 트래픽이라면, 브라우저 상의 주소 URL이 “https”로 시작하면 TLS를 통해 연결된 것이다. 또한 자물쇠 표시는 연결이 안전함을 나타낸다. TLS는 인터넷 이외에 이메일, 유즈넷(Usenet) 등에서도 사용할 수 있다.

TLS의 작동 방식
인터넷을 통해 안전하게 통신하려면 암호화가 필요하다. 만일 데이터가 암호화되지 않으면 누구나 패킷을 들여다 보고 기밀 정보를 읽을 수 있다. 가장 안전한 암호화 방법은 ‘비대칭 암호화’다. 제대로 작동하려면 2개의 암호 키(대개 엄청나게 큰 숫자로 이루어졌다)가 필요하다. 하나는 공용 키이고 다른 하나는 개인 키다.

여기에 관련된 수학 개념은 복잡한데 간단히 말하면 공용 키는 데이터 ‘암호화’에 사용되고 ‘복호화’하에는 개인 키가 필요하다. 2개의 키는 무작위 시도로는 역엔지니어링하기 어려운 복잡한 수학 공식에 의해 서로 연결돼 있다. 비유하자면 공용 키는 전면에 넣을 수 있는 구멍이 있는 잠겨진 우편함에 대한 정보이고 개인 키는 그 우편함을 열 수 있는 키라고 생각하면 된다. 우편함의 장소를 아는 사람이라면 누구나 메시지를 안에 넣을 수 있지만 누군가 그 메시지를 읽으려면 개인 키가 필요하다.

비대칭 암호화에는 이와 같은 어려운 문제가 수반되기 때문에 컴퓨팅 자원이 많이 소요된다. 통신 세션에서 모든 정보를 암호화하면 감당이 안돼 컴퓨터와 연결이 서서히 중단될 정도이다. TLS는 이 문제를 해결하기 위해 통신 세션이 맨 처음 시작할 때만 비대칭 암호화를 사용한다. 그 이후부터는 패킷 암호화에 서버와 클라이언트가 사용할 하나의 ‘세션 키’에 합의하기 위해 양쪽이 나누는 대화를 암호화하는 것이다. 공유된 키를 사용하는 암호화를 ‘대칭 암호화’라고 한다. 비대칭 암호화에 비해 컴퓨터 자원 소모가 덜하다. 해당 세션 키는 비대칭 암호 작성 방식을 이용해 설정되었기 때문에 그렇지 않은 경우에 비해 통신 세션 전체가 훨씬 더 안전하다.

해당 세션 키가 합의되는 프로세스의 명칭은 악수를 의미하는 핸드셰이크(handshake)이다. 2대의 통신 컴퓨터가 서로 소개하는 순간이기 때문이다. 핸드셰이크는 TLS 프로토콜의 핵심이다.

TLS 핸드셰이크 프로세스
TLS 핸드셰이크 프로세스는 꽤 복잡하다. 프로토콜은 여러 개의 변형을 허용한다. 주요 작동 방식은 다음과 같다.

1. 클라이언트가 서버에 접속해 안전한 연결을 요청한다. 서버는 사용할 줄 아는 암호화 스위트(cipher suite) 목록으로 응답한다(암호화 스위트란 암호화된 연결을 만드는 알고리즘 툴킷이다). 클라이언트는 이 목록과 자신이 지원하는 암호화 스위트 목록을 비교해 한 가지 암호화 스위트를 선택한 후 이를 서버와 클라이언트 모두에서 사용할 것임을 서버에 알려 준다.

2. 이제 서버는 ‘디지털 인증서’를 제공한다. 디지털 인증서란 서버의 신원을 확인해 주는 외부 인증 기관이 발급한 전자 문서이다. 인증서에서 가장 중요한 정보는 서버의 공용 암호 키이다. 클라이언트는 인증서의 진위를 확인한다.

3. 서버의 공용 키를 사용해 클라이언트와 서버는 세션 나머지 기간 동안 양쪽에서 통신 내용 암호화에 사용할 세션 키를 설정한다. 이를 위한 기법은 여러 가지다. 클라이언트는 공용 키를 사용해 임의의 숫자를 암호화한 후 서버로 보내 복호화하게 한 다음 양쪽이 해당 숫자를 이용해 세션 키를 설정할 수 있다. 혹은 양쪽이 ‘디피-헬먼 키 교환(Diffie-Hellman key exchange)’이라는 것을 이용해 세션 키를 설정하는 방법도 있다.


이름에서 알 수 있듯이 세션 키는 중간에 끊어지지 않는 하나의 통신 세션 중에만 유효하다. 클라이언트와 서버 간의 통신이 네트워크 문제 또는 너무 오래 진행된 클라이언트의 유휴 상태 등으로 중단되면 통신이 재설정될 때 새로운 핸드셰이크를 통해 새 세션 키를 설정해야 한다. 더 자세한 내용은 SSL.com을 참고하면 된다.


TLS 1.2와 그 취약성
TLS 1.2는 가장 최신 프로토콜 규정이지만 나온 지 몇 년 됐다. TLS 1.2 덕분에 통신에 사용할 수 있는 새로운 암호화 옵션이 많이 늘었다. 그러나 프로토콜의 일부 이전 버전과 마찬가지로, 구형 컴퓨터 지원을 위해 구형 암호화 기술을 지원하는 과정에서 취약점에 노출되고 말았다. 시간이 지날수록 컴퓨팅 자원이 저렴해지고 있고 구형 기술이 더 취약해진 것이다.

특히, TLS 1.2는 소위 '중간자(MITM)' 공격이라는 것에 약점을 갖고 있다. 중간자 공격이란 해커가 통신 중 패킷을 가로채 읽거나 변경한 후에 전송하는 행위를 말한다. TLS 1.2는 POODLE, SLOTH, DROWN 공격에도 노출돼 있다. 이들 문제 가운데 많은 수는 지난 2년 동안에 발견된 프로토콜 업데이트에 대한 요구가 커지고 있다.

TLS 1.3
다행히도 구원자가 조만간 등장할 것으로 보인다. TLS 프로토콜 버전 1.3은 현재 초안 형태지만 곧 확정될 예정이다. 그러면 구형 암호 시스템에 대한 지원을 중단해 현재의 많은 보안 취약점을 해결할 수 있다. 만일 어느 한 쪽이 1.3 승인 목록 상의 신형 암호화 시스템을 사용할 수 없다면 연결에 다시 TLS 1.2이 사용된다. 이른바 하위 호환성이다. 그러나 중간자 공격이 패킷 염탐을 위해 강제로 1.2를 사용하려고 시도하면 이는 탐지돼 연결이 중단된다.

1.2보다 구형인 TLS 버전을 사용 중인 서버가 아직 많다. 원조 SSL 프로토콜을 사용하는 서버도 있다. 이러한 서버는 당장 업그레이드하되 중간은 건너뛰고 초안 1.3 사양으로 업그레이드하는 것이 좋다.

TLS 크라임웨어
TLS과 보안에 관해 마지막으로 주의를 당부할 것은 착한 사람들만 TLS를 사용하는 것은 아니라는 점이다! 많은 사이버 범죄자가 희생자의 컴퓨터에 악성코드를 설치한 후 자신들 서버와의 명령 통제(C&C) 트래픽 암호화에 TLS를 사용한다. 그러면 보통의 상태가 뒤집혀 버리기 때문에 사이버 범죄 희생자는 트래픽 복호화 방법을 찾아 나서게 된다.

이런 종류의 암호화 공격에 대처할 수 있는 기법이 여러가지 있다. 예를 들면, 암호화된 트래픽에 관한 네트워크 메타데이터를 사용해 암호화된 트래픽을 실제로 읽지 않고도 공격자가 무엇을 하고 있는지 감을 잡을 수 있다. ciokr@idg.co.kr
2018.01.12

'웹 보안의 시작' TLS의 정의와 1.3 업그레이드가 시급한 이유

Josh Fruhlinger | CSO
SSL 프로토콜과 그 후손 격인 TLS는 웹의 초기 시절부터 현재까지 인터넷 상거래를 가능케 하는 암호화와 보안 기능을 제공해 왔다. 지난 수십 년간 점점 더 교묘해지는 공격을 방어하기 위해 이들 프로토콜 역시 계속해서 업데이트됐다.



TLS의 차기 버전인 TLS 1.3이 곧 확정된다. 웹사이트 운영자라면 누구나 업그레이드 해야 한다. 사이버 범죄자가 기존 보안 기술을 따라잡고 있기 때문이다.

SSL이란
SSL은 보안 소켓 계층(Secure Sockets Layer)의 약자다. 1990년대 중반 당시 가장 널리 사용되던 웹 브라우저를 만든 넷스케이프(Netscape)에서 개발한 프로토콜의 원래 이름이었다. SSL 1.0은 일반에 공개된 적이 없고 SSL 2.0에는 심각한 결함이 있었다. 1996년에 공개된 SSL 3.0은 전면적으로 수정돼 다음 버전이 나올 수 있는 기반을 마련했다.

TLS란
1999년 공개된 차기 버전 프로토콜은 국제 인터넷 표준화 기구(IETF)에 의해 표준화되고 전송 계층 보안(Transport Layer Security)의 약자인 TLS라는 새로운 이름을 얻었다. TLS 사양서에 명시된 것처럼 TLS와 SSL 3.0 사이의 차이점은 그다지 크지 않다. 따라서 TLS와 SSL은 별개의 비교 대상으로 취급되지 않는다. 지속적으로 업데이트 되는 일련의 프로토콜을 형성해 'SSL/TLS'로 뭉뚱그리는 경우가 많다.

TLS 프로토콜은 모든 종류의 인터넷 트래픽을 암호화한다. 예를 들어 웹 트래픽이라면, 브라우저 상의 주소 URL이 “https”로 시작하면 TLS를 통해 연결된 것이다. 또한 자물쇠 표시는 연결이 안전함을 나타낸다. TLS는 인터넷 이외에 이메일, 유즈넷(Usenet) 등에서도 사용할 수 있다.

TLS의 작동 방식
인터넷을 통해 안전하게 통신하려면 암호화가 필요하다. 만일 데이터가 암호화되지 않으면 누구나 패킷을 들여다 보고 기밀 정보를 읽을 수 있다. 가장 안전한 암호화 방법은 ‘비대칭 암호화’다. 제대로 작동하려면 2개의 암호 키(대개 엄청나게 큰 숫자로 이루어졌다)가 필요하다. 하나는 공용 키이고 다른 하나는 개인 키다.

여기에 관련된 수학 개념은 복잡한데 간단히 말하면 공용 키는 데이터 ‘암호화’에 사용되고 ‘복호화’하에는 개인 키가 필요하다. 2개의 키는 무작위 시도로는 역엔지니어링하기 어려운 복잡한 수학 공식에 의해 서로 연결돼 있다. 비유하자면 공용 키는 전면에 넣을 수 있는 구멍이 있는 잠겨진 우편함에 대한 정보이고 개인 키는 그 우편함을 열 수 있는 키라고 생각하면 된다. 우편함의 장소를 아는 사람이라면 누구나 메시지를 안에 넣을 수 있지만 누군가 그 메시지를 읽으려면 개인 키가 필요하다.

비대칭 암호화에는 이와 같은 어려운 문제가 수반되기 때문에 컴퓨팅 자원이 많이 소요된다. 통신 세션에서 모든 정보를 암호화하면 감당이 안돼 컴퓨터와 연결이 서서히 중단될 정도이다. TLS는 이 문제를 해결하기 위해 통신 세션이 맨 처음 시작할 때만 비대칭 암호화를 사용한다. 그 이후부터는 패킷 암호화에 서버와 클라이언트가 사용할 하나의 ‘세션 키’에 합의하기 위해 양쪽이 나누는 대화를 암호화하는 것이다. 공유된 키를 사용하는 암호화를 ‘대칭 암호화’라고 한다. 비대칭 암호화에 비해 컴퓨터 자원 소모가 덜하다. 해당 세션 키는 비대칭 암호 작성 방식을 이용해 설정되었기 때문에 그렇지 않은 경우에 비해 통신 세션 전체가 훨씬 더 안전하다.

해당 세션 키가 합의되는 프로세스의 명칭은 악수를 의미하는 핸드셰이크(handshake)이다. 2대의 통신 컴퓨터가 서로 소개하는 순간이기 때문이다. 핸드셰이크는 TLS 프로토콜의 핵심이다.

TLS 핸드셰이크 프로세스
TLS 핸드셰이크 프로세스는 꽤 복잡하다. 프로토콜은 여러 개의 변형을 허용한다. 주요 작동 방식은 다음과 같다.

1. 클라이언트가 서버에 접속해 안전한 연결을 요청한다. 서버는 사용할 줄 아는 암호화 스위트(cipher suite) 목록으로 응답한다(암호화 스위트란 암호화된 연결을 만드는 알고리즘 툴킷이다). 클라이언트는 이 목록과 자신이 지원하는 암호화 스위트 목록을 비교해 한 가지 암호화 스위트를 선택한 후 이를 서버와 클라이언트 모두에서 사용할 것임을 서버에 알려 준다.

2. 이제 서버는 ‘디지털 인증서’를 제공한다. 디지털 인증서란 서버의 신원을 확인해 주는 외부 인증 기관이 발급한 전자 문서이다. 인증서에서 가장 중요한 정보는 서버의 공용 암호 키이다. 클라이언트는 인증서의 진위를 확인한다.

3. 서버의 공용 키를 사용해 클라이언트와 서버는 세션 나머지 기간 동안 양쪽에서 통신 내용 암호화에 사용할 세션 키를 설정한다. 이를 위한 기법은 여러 가지다. 클라이언트는 공용 키를 사용해 임의의 숫자를 암호화한 후 서버로 보내 복호화하게 한 다음 양쪽이 해당 숫자를 이용해 세션 키를 설정할 수 있다. 혹은 양쪽이 ‘디피-헬먼 키 교환(Diffie-Hellman key exchange)’이라는 것을 이용해 세션 키를 설정하는 방법도 있다.


이름에서 알 수 있듯이 세션 키는 중간에 끊어지지 않는 하나의 통신 세션 중에만 유효하다. 클라이언트와 서버 간의 통신이 네트워크 문제 또는 너무 오래 진행된 클라이언트의 유휴 상태 등으로 중단되면 통신이 재설정될 때 새로운 핸드셰이크를 통해 새 세션 키를 설정해야 한다. 더 자세한 내용은 SSL.com을 참고하면 된다.


TLS 1.2와 그 취약성
TLS 1.2는 가장 최신 프로토콜 규정이지만 나온 지 몇 년 됐다. TLS 1.2 덕분에 통신에 사용할 수 있는 새로운 암호화 옵션이 많이 늘었다. 그러나 프로토콜의 일부 이전 버전과 마찬가지로, 구형 컴퓨터 지원을 위해 구형 암호화 기술을 지원하는 과정에서 취약점에 노출되고 말았다. 시간이 지날수록 컴퓨팅 자원이 저렴해지고 있고 구형 기술이 더 취약해진 것이다.

특히, TLS 1.2는 소위 '중간자(MITM)' 공격이라는 것에 약점을 갖고 있다. 중간자 공격이란 해커가 통신 중 패킷을 가로채 읽거나 변경한 후에 전송하는 행위를 말한다. TLS 1.2는 POODLE, SLOTH, DROWN 공격에도 노출돼 있다. 이들 문제 가운데 많은 수는 지난 2년 동안에 발견된 프로토콜 업데이트에 대한 요구가 커지고 있다.

TLS 1.3
다행히도 구원자가 조만간 등장할 것으로 보인다. TLS 프로토콜 버전 1.3은 현재 초안 형태지만 곧 확정될 예정이다. 그러면 구형 암호 시스템에 대한 지원을 중단해 현재의 많은 보안 취약점을 해결할 수 있다. 만일 어느 한 쪽이 1.3 승인 목록 상의 신형 암호화 시스템을 사용할 수 없다면 연결에 다시 TLS 1.2이 사용된다. 이른바 하위 호환성이다. 그러나 중간자 공격이 패킷 염탐을 위해 강제로 1.2를 사용하려고 시도하면 이는 탐지돼 연결이 중단된다.

1.2보다 구형인 TLS 버전을 사용 중인 서버가 아직 많다. 원조 SSL 프로토콜을 사용하는 서버도 있다. 이러한 서버는 당장 업그레이드하되 중간은 건너뛰고 초안 1.3 사양으로 업그레이드하는 것이 좋다.

TLS 크라임웨어
TLS과 보안에 관해 마지막으로 주의를 당부할 것은 착한 사람들만 TLS를 사용하는 것은 아니라는 점이다! 많은 사이버 범죄자가 희생자의 컴퓨터에 악성코드를 설치한 후 자신들 서버와의 명령 통제(C&C) 트래픽 암호화에 TLS를 사용한다. 그러면 보통의 상태가 뒤집혀 버리기 때문에 사이버 범죄 희생자는 트래픽 복호화 방법을 찾아 나서게 된다.

이런 종류의 암호화 공격에 대처할 수 있는 기법이 여러가지 있다. 예를 들면, 암호화된 트래픽에 관한 네트워크 메타데이터를 사용해 암호화된 트래픽을 실제로 읽지 않고도 공격자가 무엇을 하고 있는지 감을 잡을 수 있다. ciokr@idg.co.kr
X