HTTP, HTTPS, SSL

2020. 12. 16. 22:06잡다한 IT 정보

<HTTP>

Hypertext Transfer Protocol
Hypertext: 문서와 문서간 링크로 연결된 체계,양식 -> html
즉, html을 전송하기 위한 통신규약 => HTTP


<HTTPS>

HTTP와 유사, S는 Over Secure Socket Layer의 Secure
즉, 보안(Secure)이 강화된 HTTP
제 3자가 정보를 변조하거나 감청하기 어려움


<HTTPS vs HTTP>

HTTPS는 HTTP와 유사하지만 보안이 더 강화된 것이다.

일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것이었다.

즉, 데이터가 쉽게 도난당할 수 있다는 것이다.

HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다. 

SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.


<SSL>

HTTP와 SSL은 크게 보면 같지만 세부적으론 다르다.
HTTP와 SSL의 계층은 서로 다르다.
SSL이 더 포괄적인 개념이고 그 위에서 동작하는 서비스가 HTTP이다.
HTTP가 SSL을 이용하게되면 HTTPS가 되는 개념

<SSL vs TLS>

SSL이 TLS로 이름이 바뀌었지만 SSL이 더 잘 사용되는 명칭
즉, SSL과 TLS는 같은 말이다.

<SSL 디지털 인증서>

클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서

-이점(암호화)

 -통신내용이 공격자에게 노출되는 것을 방지
 -클라이언트의 접속하려는 서버가 신뢰할 수 있는 서버인지 판단 가능
 -통신 내용의 악의적인 변경 방지


-기능

-클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장한다.
-SSL통신에 사용할 공개키를 클라이언트에게 제공한다.


-암호화

-대칭키 

  암호화를 하는 쪽과 복호화를 하는 쪽이 동일한 키를 이용하는 암호화 기법 

-공개키(=비대칭키) 

  암호화를 하는 쪽과 복호화를 하는 쪽이 서로 다른 키를 이용하는 암호화 기법, 이러한 특징으로 공개키 방식은 2개의 키(비공개키-공개키)를 갖음 


<인증서 용어 정리>

CA(Certificate authority)

-클라이언트가 의도한 서버가 맞는지를 보장하는 역할을 하는 공인된 민간기업
ex) Symantec, Comodo 등
SSL을 통해 암오화된 통신을 제공하려는 서비스는 CA를 통해 인증서를 구입해야 함

자신이 직접 인증서를 이용할 수도 있지만 공인된 인증서는 아니기 때문에 브라우저에서 경고를 출력

<인증서 내용>

 -서비스의 정보(인증서 발급 CA, 도메인 등)
 -서버 측 공개키(공개키 내용, 암호화 방법 등)


CA에 의해 암호화 될 때 공개키 방식 사용
CA는 자신의 비공개키를 이용해 서버가 제출한 인증서를 암호화
따라서 비공개키는 절대로 유출되어서는 안됨


<SSL인증서가 서비스를 보증하는 방법>

-브라우저는 내부적으로 CA의 리스트를 미리 파악하고 있음 

-웹브라우저가 서버에 접속할 때 서버는 인증서를 제공 

-브라우저는 이 인증서를 발급한 CA가 자신이 갖고 있는 CA 리스트에 있는지 확인 

-확인 후 브라우저는 해당 CA의 공개키를 이용해 인증서를 복호화함 

-이 과정을 통해 복호화가 된다면 해당 서비스는 신뢰 할 수 있다는 것을 의미 


<SSL의 동작방법>

SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키를 혼합해서 사용 
(공개키만을 사용하기에는 컴퓨터에 너무 무리가 감 효율성을 위해 둘을 혼합) 
클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 암호화된 실제 정보 
를 복호화할 때 사용할 대칭키는 공개키 방식으로 암호화해서 클라이언트와 서버가 주고 받음 

-실제 데이터(아이디, 비번 등) : 대칭키 방식으로 암호화 
-대칭키의 키 : 공개키 

<컴퓨터와 컴퓨터간 네트워크를 통해 통신할 때의 3가지 절차>

 1. 악수(Handshake) 
 2. 전송 
 3. 세션종료 


1. 악수(Handshake) 

서버와 클라이언트가 서로 파악하는 단계 
SSL 인증서를 주고받는 단계 

더보기

1-클라이언트가 서버에 접속(Client Hello):클라이언트가 지원하는 암호화 방식과 서버간의 협상 진행 
2-서버는 Client Hello의 응답으로 Server Hello: 클라이언트가 제시한 암호화 방식 중 서버 자신이 사용할 수  
있는 적합한 방식을 선택 후 클라이언트에 전달, 인증서 전달 
3-서버가 제시한 인증서를 확인하고, 자신의 CA리스트를 확인(리스트에 없으면 경고 출력): 내장된 공개키를 통 
해 인증서 복호화 시도, 성공 시 서버는 보증(신뢰)됨

(요약)
 - 서버가 클라이언트에게 인증서 전달 
 - 클라이언트는 인증서 안에 담겨있는 공개키를 이용 랜덤으로 생성한 값을 공개키로 암호화해서 이 공개키의 비 
밀키를 갖고 있는 서버로 전송 
 - 서버는 전송된 랜덤값을 복호화한 후 서로 통신할 때 사용할 세션키를 갖게됨

2. 전송, 세션

실제로 서버와 클아이언트가 데이터를 주고 받는 단계

3. 세션종료

SSL통신이 끝났음을 서로에게 알림, 이때 세션키는 폐기됨

 

(참조 영상: 생활코딩,얄코)

'잡다한 IT 정보' 카테고리의 다른 글

META-INF, WEB-INF  (0) 2021.01.22
검색엔진최적화(SEO)  (0) 2020.12.29
객체지향 프로그래밍?  (0) 2020.11.25
좋은 도메인 고르는 TIP  (0) 2020.11.23
도메인  (0) 2020.11.23