HTTPS란 무엇인가?

Jemin·2023년 7월 20일
0

Computer Science

목록 보기
26/31
post-thumbnail

HTTPS의 개념

HTTPS는 HyperText Transfer Protocol Secure의 약자로, 웹 통신 프로토콜인 HTTP의 보안 버전을 의미한다. 데이터의 안전한 전송을 위해 사용되며, 웹 사이트와 웹 브라우저 간의 통신을 암호화하여 보호한다.

HTTPS는 대칭키 암호화와 공개키 암호화를 조합하여 작동한다. SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작한다.

SSL & TLS

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)은 네트워크 통신에서 보안을 제공하기 위해 사용되는 암호화 프로토콜이다.

SSL은 웹의 초기 보안 프로토콜로 개발되었으며, 데이터의 기밀성과 무결성을 보호하기 위해 사용된다. 그러나 SSL은 취약점이 발견되고 개선이 필요하다는 점에서 뒤이어 TLS로 대체되었다.

TLS는 SSL의 후속 버전으로서, 보다 안전하고 강력한 암호화 기능을 제공한다. 데이터 기밀성, 무결성, 신원 인증을 보호하기 위해 사용된다. 현재의 보안 표준으로 간주되며, TLS 1.2와 TLS 1.3이 가장 널리 사용되는 버전이다.

TLS는 다양한 암호화 알고리즘과 키 교환 방법을 지원하여 클라이언트와 서버 간의 안전한 통신을 가능하게 한다. TLS는 주로 HTTPS를 통해 웹 사이트의 보안 연결을 제공하는 데 사용되지만, 다른 프로토콜 및 응용 프로그램에서도 사용될 수 있다.

SSL과 TLS는 네트워크 통신에서 데이터 보안과 프라이버시를 강화하는 데 중요한 역할을 한다. 안전한 온라인 통신을 위해 웹 사이트 및 서비스는 SSL 또는 TLS를 구현하여 사용자의 데이터를 보호해야 한다.

암호화 방식

공개키 암호화 방식과 공개키의 느리다는 단점을 보완한 대칭키 암호화 방식을 함께 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

공개키 방식

공개키 방식(Asymmetric Key Cryptography)은 데이터를 안전하게 전송하고 인증하는 데 사용된다. 이 방식은 두 개의 서로 다른 키를 사용하여 데이터를 암호화하고 복호화하는 방법을 기반으로 한다. 이 두 개의 키는 공개키(public key)와 개인키(private key)라고 불린다.

공개키란
공개키는 누구나 볼 수 있고, 누구나 사용할 수 있는 키다. 데이터를 암호화하는 데 사용되며, 암호화된 데이터는 해당 공개 키로만 해독할 수 있다.

개인키란
개인키는 공개되면 안되는 비밀 키로서 소유자만 알고 있어야 한다. 개인키는 보안이 매우 중요하며, 타인과 공유해서는 안된다.

공개키 방식에서는 데이터 송신자는 수신자의 공개키를 사용하여 데이터를 암호화하여 전송한다. 이 암호화된 데이터는 수신자의 개인키로만 해독할 수 있기 때문에 안전하게 전송된다.

수신자는 자신의 개인키를 사용하여 암호화된 데이터를 해독하여 원래의 평문 데이터를 얻을 수 있다.

  • 공개키로 암호화를 하면 개인키로 복호화할 수 있다.

  • 개인키로 암호화를 하면 공개키로 복호화할 수 있다.

대칭키 방식

대칭키 방식(Symmetric Key Cryptography)은 데이터를 암호화하고 복호화하는 데 동일한 키를 사용하는 방식이다. 이 방식은 데이터를 암호화하는데 사용되는 키와 데이터를 복호화하는데 사용되는 키가 동일하므로, 암호화와 복호화에 동일한 비밀키가 사용된다.

암호화와 복호화에 동일한 키가 사용되기 때문에 키의 보안 관리가 매우 종요하다. 키가 노출되면 제 3자가 쉽게 데이터를 해독할 수 있으므로 키의 안전한 보관이 필요하다.

  • 동일한 키로 암호화, 복호화가 가능하다.

  • 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음에 사용할 때는 다른 키가 사용되기 때문에 안전하다.

  • 공개키보다 빠르게 통신할 수 있다.

대칭키 방식은 암호화 알고리즘과 복호화 알고리즘이 동일하므로 간단하고 빠른 처리 속도를 제공한다. 하지만 보안 키 관리와 키 교환 문제로 인해 특히 보안성이 요구되는 경우 대칭 키 방식을 적절히 사용하기 어려울 수 있다. 이러한 경우에는 공개 키 방식과 함께 사용하여 보다 안전하고 효율적인 보안을 제공하는 경우가 많다.

HTTPS 동작 과정

  1. 사이트(서버)는 공개키와 개인키를 만들고, 신뢰할 수 있는 인증 기관(CA)에 자신의 사이트 정보와 공개키를 인증 요청한다.

  2. 인증 기관은 사이트가 제출한 정보를 검증하고, 인증 기관의 개인키로 사이트에서 제출한 정보를 암호화해서 인증서를 제작한다.

  3. 제작된 인증서를 사이트에 발급한다.

  4. 인증 기관은 웹 브라우저에게 자신의 공개키를 제공한다.

  5. 사용자가 사이트에 접속을 요청한다.

  6. 사이트는 인증 기관에서 발급받은 인증서를 사용자에게 전달한다.

  7. 사용자는 4.에서 인증 기관에게 받은 공개키로 인증서를 검증한다.

  8. 인증서를 해독하여 사이트의 정보와 서버의 공개키를 획득한다.

  9. 획득한 사이트 공개키로 대칭키를 암호화하여 전송한다.

  10. 전송 받은 데이터를 사이트 개인키로 해독하여 사이트도 대칭키를 획득한다.

  11. 안전하게 전달된 대칭키를 사용하여 암호화된 정보를 주고 받을 수 있게 된다.

HTTPS의 장단점

  • HTTPS는 웹사이트의 무결성을 보호해준다. 웹 사이트와 사용자 브라우저 사이의 통신을 침입자가 건드리지 못하도록 한다.

  • 가벼운 웹 서핑이라면 HTTP도 상관없지만, 사용자의 정보를 웹 서버와 주고 받아야하는 경우라면 HTTP는 정보 유출의 위험성을 갖게 된다. HTTPS는 침입자가 웹사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지함으로써 보안을 강화해준다.

  • getUserMedia()를 통한 사진 촬영이나 오디오 녹음, 프로그레시브 웹 앱과 같은 강력한 웹 플랫폼 신기능들은 실행하려면 사용자의 명시적인 권한 허락을 필요로 한다. 지오로케이션 API와 같은 오래된 API들도 실행할 때 권한이 필요하도록 업데이트되고 있는데, HTTPS는 이러한 새 기능과 업데이트된 API에 대한 권한 허락을 가능하게 한다.

  • 네이버, 다음은 물론이고 구글 역시 검색 엔진 최적화(SEO: Search Engine Optimization) 관련 내용을 HTTPS 웹사이트에 대해서 적용하고 있다. 즉, 키워드 검색 시 상위 노출되는 기준 중 하나가 보안 요소이다.

  • 모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있다. 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용한다.

  • HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다. 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.

참고
HTTPS란? (동작방식, 장단점)
HTTPS란 무엇인가? / TLS(=SSL) 공개키 암호화

profile
경험은 일어난 무엇이 아니라, 그 일어난 일로 무엇을 하느냐이다.

2개의 댓글

comment-user-thumbnail
2023년 7월 20일

잘 봤습니다. 좋은 글 감사합니다.

1개의 답글