SSL/TLS

허성재's avatar
Sep 20, 2024
SSL/TLS
SSL(보안 소켓 계층)과 TLS(전송 계층 보안)은 암호화된 통신을 제공하는 프로토콜로, 주로 웹 브라우저와 서버 간의 데이터 전송을 보호하는 데 사용됩니다. 두 프로토콜은 유사하지만, TLS가 SSL의 진화된 형태로 더 안전하고 현대적인 방식을 채택하고 있습니다. 이제 두 프로토콜이 어떻게 동작하는지 자세히 살펴보겠습니다.

1. SSL/TLS 통신 과정

SSL과 TLS 모두 크게 네 단계로 나뉘는 핸드셰이크(Handshake) 과정을 통해 안전한 연결을 설정합니다. 이 과정은 클라이언트(예: 웹 브라우저)와 서버 간에 주고받는 정보들을 암호화하기 위한 키를 교환하고 서로를 인증하는 절차를 포함합니다.

핸드셰이크(Handshake) 과정

1.1. 클라이언트 헬로우(Client Hello)

  • 클라이언트가 서버에 접속 요청을 보냅니다.
  • 이때 클라이언트는 사용할 수 있는 암호화 방식(암호 스위트) 목록과 SSL/TLS 버전을 제시하고, 랜덤 값을 함께 보냅니다.

1.2. 서버 헬로우(Server Hello)

  • 서버는 클라이언트가 보낸 정보를 바탕으로 사용할 암호화 방식SSL/TLS 버전을 선택한 뒤, 이를 클라이언트에게 알려줍니다.
  • 서버는 자신이 인증된 기관에서 발급받은 디지털 인증서를 클라이언트에게 보냅니다. 이 인증서에는 서버의 공개 키가 포함되어 있습니다.
  • 서버 역시 클라이언트에게 랜덤 값을 보냅니다.

1.3. 키 교환(Key Exchange) 및 인증

  • 클라이언트는 서버의 인증서를 검증한 후, 서버의 공개 키를 사용해 **프리마스터 시크릿(Premaster Secret)**이라는 임시 키를 암호화해 서버로 보냅니다.
  • 서버는 자신의 비밀 키로 이 프리마스터 시크릿을 복호화합니다.
  • 이후 클라이언트와 서버는 이전에 주고받은 랜덤 값프리마스터 시크릿을 조합해 대칭키를 생성합니다. 이 대칭키는 실제 데이터 전송 시 사용됩니다.

1.4. 세션 암호화(Secure Session)

  • 양쪽이 대칭키를 생성한 후, 모든 통신은 대칭키를 사용한 대칭 암호화 방식으로 이루어집니다.
  • 대칭 암호화는 빠르고 효율적이므로 실제 데이터 전송에 적합합니다.
  • 클라이언트와 서버는 암호화된 데이터를 주고받고, 이 데이터를 통해 무결성을 확인합니다. 무결성 확인은 데이터를 주고받을 때, 중간에서 변조되었는지 체크하는 과정입니다.

2. SSL과 TLS의 차이점

2.1. 암호화 방식

  • SSL: 초기 SSL 버전에서는 취약한 암호화 방식(DES, RC4 등)을 사용했습니다. 이는 보안 문제를 일으켰고, 현재는 지원되지 않습니다.
  • TLS: TLS는 더 안전한 암호화 방식(AES, SHA 등)을 사용하며, 키 교환 방식도 더 개선되었습니다. 특히 TLS 1.2와 1.3 버전에서는 보안이 한층 더 강화되었습니다.

2.2. 핸드셰이크 과정

  • SSL 3.0과 TLS 1.0은 거의 동일한 핸드셰이크 과정을 거칩니다. 그러나 TLS 1.2와 1.3은 키 교환 방법과 암호화 알고리즘 협상 방식이 다릅니다.
  • TLS 1.3에서는 핸드셰이크 과정이 단순화되어, 속도가 빨라지고 보안성이 강화되었습니다.

2.3. 보안 기능

  • SSL: 중간자 공격(MITM)과 같은 보안 취약점들이 발견되었고, SSL 3.0은 2014년 POODLE 공격에 대한 취약성으로 더 이상 사용되지 않습니다.
  • TLS: TLS는 이러한 취약점들을 해결하기 위해 설계되었으며, 특히 TLS 1.2와 TLS 1.3에서는 공격 방어 메커니즘이 추가되었습니다. TLS 1.3에서는 불필요한 암호화 알고리즘과 약한 암호화 알고리즘이 제거되었습니다.

3. 암호화 방식

3.1. 비대칭 암호화 (RSA, DH 등)

  • 핸드셰이크 과정에서는 비대칭 암호화가 사용됩니다. 이는 클라이언트와 서버가 서로 다른 키로 암호화와 복호화를 수행하는 방식입니다.
  • 서버의 공개 키로 데이터를 암호화하고, 서버의 비밀 키로 이를 복호화합니다.

3.2. 대칭 암호화 (AES, 3DES 등)

  • 실제 데이터 전송 과정에서는 대칭 암호화가 사용됩니다. 클라이언트와 서버는 동일한 대칭키를 사용해 데이터를 암호화하고 복호화합니다.
  • 대칭 암호화는 처리 속도가 빠르기 때문에 대량의 데이터를 효율적으로 보호할 수 있습니다.

4. SSL/TLS의 역할 요약

  • 암호화: 통신 내용을 외부에서 볼 수 없도록 암호화합니다.
  • 무결성: 데이터가 중간에서 변조되지 않았는지 확인할 수 있는 기능을 제공합니다.
  • 인증: 서버와 클라이언트가 서로 신뢰할 수 있는지 인증서를 통해 확인합니다.

결론

SSL은 더 이상 사용되지 않으며, 현대 웹에서는 TLS가 표준으로 자리잡았습니다. 특히 TLS 1.2와 TLS 1.3은 더 안전하고 효율적인 방식으로, 웹 보안의 핵심 요소로 사용됩니다.
Share article

heo-gom