카테고리 없음

http / https

리꾸엘메 2022. 6. 20. 14:55

url에서 확인할 수 있는 http/https는 서버와 클라이언트가 어떤 방식으로 통신할 것인지 말해주는 protocol(규칙)의 종류

 

1. http 

 

- HyperText Transfer Protocol의 약자로 하이퍼텍스트를 전송하기 위한 규칙이다. 

- 하이퍼텍스트? 기존 텍스트(책, 신문 등)의 개념을 뛰어넘은 비선형적인 텍스트라는 의미에서 사용되는 용어이다. 

- http는 클라이언트의 요청(request)과 서버의 응답(response)으로 이루어지며, 보통 80번 포트를 사용한다. 

- 포트? 각 프로토콜이 연결되는데 사용하는 통로 번호

 

http요청의 구성:

 

- 메써드, 경로, 버전이 명시되어 있는 스타트 라인

- 리퀘스트의 추가 정보를 담고 있는 헤더

- 요청 내용을 담고 있는 바디

http의 특징:

 

- 클라이언트 서버구조

클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 보내는 구조

- stateless한 프로토콜

요청이나 응답의 내용을 저장하지 않는다. 

 

  1. 암호화 기능 없음
    단순 text형식으로 주고받기 때문에, 중간에서 누군가가 신호를 가로챈다면 내용이 그대로 노출된다.
  2. 신뢰할 수 있는 사이트인지 확인 불가
    통신하려는 사이트를 따로 확인하는 작업이 없어 다른 사이트가 통신하려는 사이트로 위장 가능
  3. 통신 내용 변경 가능
    요청을 보낸 곳과 받은 곳의 리소스가 정확히 일치하는지 확인할 수 없다.
    누군가가 중간에 데이터를 악의적으로 변조한다면 정확한 데이터를 주고받을 수 없게됨

2. https 

 

- HTTPS의 s는 secure를 의미한다.  HTTP의 일반적인 통신에 SSL이나 TLS프로토콜을 더해 데이터를 암호화

- 로그인이나 결제화면에 주로 사용 

- 서버와의 통신 전 ssl에 의한 핸드 셰이킹 과정이 추가

 

대칭키, 비대칭키:

대칭키 암호화
  • 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
  • 키가 노출되면 매우 위험하지만 연산 속도가 빠름
비대칭키 암호화
  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느림

 

HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 얻고 있다.

HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환한다. 여기서 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어진다.

즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용되는 것이다.

 

무엇을 써야 하나?

 

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, HTTPS는 안전하게 데이터를 주고받을 수 있다. 하지만 HTTPS를 이용하면 암호화/복호화의 과정이 필요하기 때문에 HTTP보다 속도가 느리다. (물론 오늘날에는 거의 차이를 못느낄 정도이다.) 또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생하다.

그렇다면 언제 HTTP를 쓰고, 언제 HTTPS를 쓰는 것이 좋겠는가?

개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 된다.

 

 


http버전: https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP

 

HTTP의 진화 - HTTP | MDN

HTTP는 월드 와이드 웹에 내재된 프로토콜입니다. Tim Berners-Lee에 의해 1989년부터 1991년에 발명된 HTTP는, 본래의 단순함의 대부분을 지키면서 확장성 위에서 만들어지도록, 많은 수정을 거쳐왔습

developer.mozilla.org

https : https://blog.naver.com/skinfosec2000/222135874222

 

웹사이트 보안을 위한 방법, SSL이란? (feat. SSL과 HTTPS의 차이)

안녕하세요! 알기 쉽게 풀어쓴 보안 '알풀보'입니다. '알풀보'는 어려운 보안 용어와 ...

blog.naver.com