본문 바로가기
IT 개발 이야기/WebService

[HTTPS] SSL/TLS 보안 프로토콜 이해하기( TLS 1.2 / TLS 1.3 )

by 개발자 Aiden 2023. 3. 10.
반응형

SSL/TLS

안녕하세요! 이번 글에서는 인터넷 보안의 중요한 측면 중 하나인 HTTPS와 SSL/TLS 보안 프로토콜에 대해 알아보려 합니다. HTTPS는 웹 통신의 보안을 강화하는 데 사용되는 프로토콜이며, SSL/TLS는 그 기반이 되는 보안 기술입니다. 이 글에서는 HTTP와 SSL/TLS의 차이점을 비교하고, TLS 통신 과정(TLS Handshake)에 대해 자세히 설명해 드릴 것입니다. 보안이 중요한 지금, 이 기술들을 이해하고 활용할 줄 아는 것이 더욱 중요해지고 있습니다. 함께 살펴보아요!

HTTPS, SSL/TLS 보안 프로토콜 개념 이해하기


 HTTPS( HTTP over SSL/TLS, HTTP Secure )

HTTPS는 HTTP의 보안 강화된 버전으로, 일반 텍스트 대신 SSL/TLS 보안 프로토콜을 사용하여 소켓 통신 중 세션 데이터를 암호화함으로써 데이터의 적절한 보호를 보장합니다. 이로 인해 중간자 공격(Man-in-the-middle attack) 등의 보안 위협으로부터 데이터를 안전하게 보호할 수 있습니다.


HTTP( HyperText Transfer Protocol )
는 하이퍼텍스트 문서를 전송하기 위해 사용되는 프로토콜이며, 클라이언트와 서버 간의 통신에서 사용자 비밀번호나 계좌번호와 같은 개인 정보를 암호화하여 스니핑 공격에 대응할 수 있도록 보안 기능을 강화한 것이 바로 HTTPS입니다. 이를 통해 보안성이 높아진 웹 통신이 가능해집니다.

 

○ TLS( Transport Layer Security )

SSL( Secure Sockets Layer ) 3.0 표준을 기반으로 설계된 상위 버전으로, 네트워크 상에서 데이터를 안전하게 전송하기 위한 보안 프로토콜입니다. TLS는 Handshake 과정에서 클라이언트와 서버 간의 인증과 암호화를 수행하여 전송계층 종단 간 보안과 데이터 무결성을 확보합니다.


SSL 3.0 버전은 Deprecated 되었고 1999년도에 등장한 TLS 1.0부터 TLS 1.3 버전까지 많은 시간이 지났음에도 SSL 용어로 표현하는 경우가 아직도 많습니다.

HTTPS-적용예시


※ HTTP와 SSL/TLS의 차이점은?

기본적으로 OSI 계층 구조에서 HTTP는 응용 계층( Application Layer )TLS는 전송 계층( Transport Layer )으로 나뉠 수 있는데 우리가 사용하는 웹 브라우저( PC 또는 모바일 )에서 서비스 요청 시 입력된 URL( 데이터 포함 ) 정보를 서버에 요청하기 위해 전송 계층의 TCP/IP 프로토콜로 패킷 통신을 시작합니다. 이런 구조로 HTTPS 통신 시 GET/POST Method 관계없이 적용됩니다.

HTTPS는 기본적으로 TCP/IP 과정에 인증서 검증 및 대칭키 교환을 위한 Handshake 절차가 추가되었습니다. 그러나 클라이언트 단말이 해킹되었을 경우 데이터 유출이 가능하므로, E2E 암호화를 위한 추가적인 키보드 보안 제품이 존재합니다.

 

○ TLS 보안 프로토콜 버전 정보

프로토콜 연도 비고
TLS 1.0 1999 SSL 3.0 표준을 바탕으로 설계된 상위 버전으로 보안 취약점 해결
TLS 1.1 2006 암호 블록 체인 공격에 대한 방어와 IANA 등록 파라메터의 지원이 추가
TLS 1.2 2008 보안에 취약한 SHA-1 알고리즘 대신 SHA-2를 사용하도록 변경
TLS 1.3 2018 인증서 암호화 및 Handshake 과정 간소화로 인한 성능(속도) 향상

 

○ TLS 통신 과정( TLS Handshake )

TLS-Handshake


※ TLS 1.2 Handshake 과정

  1. Client는 Server에게 지원하는 암호화 알고리즘, 프로토콜 버전 및 랜덤 데이터를 전달한다.

  2. Server는 Client에게 선택한 프로토콜 버전, 암호화 알고리즘, 인증서 및 랜덤 데이터를 전달한다.

  3. Client는 인증서를 검증하고 Client와 Server가 생성한 랜덤 데이터를 조합하여 "Pre Master Secret"값 생성 후 공개키로 암호화( RSA 공개키 암호화 방식 )하여 Server에 전달한다.

  4. Server는 전달받은 암호화 데이터를 자신의 개인키로 복호화하여 "Pre Master Secret"값을 얻게 된다.
    이후 Client와 Server는 일련의 과정을 거쳐 "Pre Master Secret"값을 "Master Secret"값으로 변환하고 해당 정보로 다시 "Session Key"를 생성하게 된다.

  5. 인증된 Client와 Server는 "Session Key"를 이용한 대칭키 암호화 방식으로 데이터 송수신을 시작한다.


※ TLS 1.3 Handshake 과정

  1. Client는 Server에게 지원하는 암호화 알고리즘, 프로토콜 버전 및 랜덤 데이터 그리고 Diffie-Hellman key exchange 알고리즘으로 비밀키와 공개키 생성 후 공개키를 전달한다.

  2. Server는 Client에게 선택한 암호화 알고리즘, 프로토콜 버전 및 랜덤 데이터 그리고 Diffie-Hellman key exchange 알고리즘으로 비밀키와 공개키 생성 후 공개키를 전달한다.

    Client와 Server는 각자의 비밀키와 상대방의 공개키를 사용하여 "Pre Master Secret"값을 생성하고 서로 교환된 랜덤 데이터를 사용하여 "Pre Master Secret"값을 "Master Secret"값으로 변환한다. 이후 HMAC-SHA256 또는 HMAC-SHA384 등의 해시 함수를 사용하여 보호되며 해당 정보로 다시 "Session Key"를 생성하게 된다.

  3. 인증된 Client와 Server는 "Session Key"를 이용한 대칭키 암호화 방식으로 데이터 송수신을 시작한다.


TLS 1.2와 TLS 1.3 Handshake 과정을 간단하게 요약해 보았습니다. TLS Handshake는 클라이언트와 서버 간의 암호화된 통신을 설정하는 과정입니다. 이 과정을 통해 클라이언트와 서버는 서로 인증하고, 암호화 알고리즘과 키를 협상하여 안전한 통신을 수립합니다.


TLS 1.2와 TLS 1.3의 Handshake 과정에는 차이점이 있으며, TLS 1.3은 더 간결하고 효율적인 Handshake 과정을 제공합니다. 이를 통해 보안이 강화되고, 성능이 향상됩니다.

 

반응형

댓글


loading