1일 1개념정리 (24년 8월~12월)/네트워크, 클라우드

1일1개 (96) - 데이터 보따리에 싸서 던지기

poetDeveloper 2024. 12. 4. 23:58

1일 1개념정리 24.08.09.금 ~ 

 

큰 결정에 큰 동기가 따르지 않을 때도 있다. 하지만 큰 결심이 따라야 이뤄낼 수 있다.

무조건 무조건 1일 1개의 개념 정리하기 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!


#96. http , https

우리는 신경을 안쓰겠지만, 우리가 들어가는 웹사이트는 항상 https를 달고 www로 시작한다. 여기서 말하는 https는 무엇이고, http와는 어떤 차이가 있는지 알아보자.

 

HTTP ( = HyperText Transfer Protocol)

초기에 만들어진 인터넷 프로토콜이다. 데이터가 암호화되지 않고 평문으로 전송되어 스니핑(데이터 탈취) 문제가 있으며, 중간자 공격 등도 가능해 보안 취약점이 많다. 주로 보안이 중요하지 않은 환경에서만 가능하고, 요즘엔 http로 된 사이트에 들어가려고만 해도 차단당하기도 한다. 80번 port를 사용한다.

 

HTTPS ( = http Secure)

http에 보안 기능을 추가한 프로토콜이다. SSL/TLS 방식으로 데이터를 암호화하고, 서버 인증서를 통해 신뢰성을 검증한다. 로그인, 결제 등 민감한 정보를 주고받는다면 반드시 이 환경에서 진행되어야 하고, 기본적으로 443 port를 사용한다.

 

정리

  http https
보안 평문 전송 (암호화 없음) 데이터 암호화 (SSL/TLS 사용)
포트 번호 80 443
인증 서버 인증 없음 서버 인증서로 인증
사용 사례 보안이 중요하지 않은 데이터 전송 보안이 중요한 데이터 전송
속도 빠름 (암호화가 없으므로) 약간 느림 (암호화 오버헤드)

SSL/TLS란?

앞서 간략히 말했듯, 데이터 암호화 방식이다. 하나씩 알아보자.

 

(1) SSL ( = Secure Sockets Layer)

데이터를 안전하게 전송하기 위해 개발된 초기 암호화 프로토콜. 현재는 더 안전한 TLS로 대체되었지만, 관습적으로 "SSL"이라는 용어가 널리 사용되기도 한다.

 

(2) TLS ( = Transport Layer Security)

SSL의 개선 버전으로, 보안성과 성능이 향상됐다. HTTPS에서 사용하는 프로토콜은 실제로 TLS이다.

 

(3) SSL/TLS의 주요 기능

  1. 암호화 : 데이터를 암호화하여 중간에서 데이터를 훔쳐볼 수 없도록 보호한다. 대칭키(전송 속도 빠름)와 공개키(전송 속도 느리지만 더 안전함)를 활용한다.
  2. 인증 : 서버가 신뢰할 수 있는 기관( = CA, Certificate Authority)에서 발급받은 인증서를 사용하여 클라이언트에게 자신을 인증( = 나 안전한 사람이에요)한다. 그럼 클라이언트는 인증서를 검증하여 신뢰할만한 서버인지 확인한다.
  3. 무결성 : 데이터가 전송 중에 변경되지 않았음을 보장한다.

 

(4) SSL/TLS 작동 방식

  1. 클라이언트(브라우저)와 서버가 연결을 시도.
  2. 서버는 자신의 인증서를 클라이언트에 보냄.
  3. 클라이언트는 인증서를 확인하여 서버가 신뢰할 수 있는지 검증.
  4. 대칭키 암호화를 위한 키 교환(공개키 방식) 수행.
  5. 이후, 대칭키를 사용해 암호화된 통신 진행.

 

로컬에서 개발할 땐 왜 HTTP로 뜨나요 ?

나도 의문이었다. 왜 로컬은 https로 안뜨고 http라고 뜰까 ? 사실 간단한 이유였다. 다음 내용을 보자.

  1. 보안 필요성 낮음 : 로컬 환경에서는 "인터넷을 통한 데이터 전송"이 이루어지지 않으므로 암호화가 필요하지 않다. 즉, 내가 보내고 내가 받는 방식이라서 보안이 중요하지 않다. ( = 우리집에서 벽보고 공놀이하기)
  2. SSL 인증서 발급 문제 : 만약 굳이 굳이 로컬에서도 HTTPS를 사용하려면 유효한 SSL 인증서가 필요하지만, 로컬 개발 환경에서는 실제 도메인이 없기 때문에 인증서를 발급받기 어렵다.
  3. 속도와 편의성 : SSL/TLS를 설정하면 추가적인 작업( = 인증서 설치, 브라우저 신뢰 설정 등)이 필요해 개발 속도가 오히려 느려진다. 작업 테스트는 로컬에서 빠르게 진행하며 구현에 초점을 맞추는 게 낫다는 것이다.

 

  1.  
반응형