HTTPS

이윤근·2021년 8월 2일
0

HTTPS(Hyper Text Transfer Protocol Secure Socket layer)

:HTTP 요청을 SSL 혹은 TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법

*SSL(Secure Socket Layer) : 인터넷에서 정보를 암호화해서 송수신하는 프로토콜로 국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜. 정식명칭은 TLS이다.

1)사용해야하는 이유

:HTTP보다 상대적으로 안전한 방법이고 데이터 제공자의 신원을 보장받을 수 있기 때문
-클라이언트는 데이터 제공자가 제공해준 데이터를 사용할 수 밖에 없다
-중간자 공격에 취약 (응답의 데이터를 탈취 및 변조하여 다시 전송하는 공격)

-HTTP의 단점
:웹서버가 통신함에 있어서 주고 받은 데이터가 암호화 되지 않고 생 날 것을 그대로 되어짐.그래서 이것을 보안하고자 한 것이 HTTPS이다.

-암호화
HTTPS 프로토콜은 암호화된 데이터를 주고받기 때문에 중간에 탈취되더라도 그 내용을 알아볼 수 없다.

-인증서
HTTPS 프로토콜은 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있다
브라우저는 인증서에서 해당 인증서를 발급한 CA정보를 확인하고 CA가 발급한 인증서가 아니라면 다음과 같은 화면을 뜨워준다.

2)특징

(1) Certificate(인증서)

:데이터를 제공한 서버가 정말로 데이터를 보내준 서버인지 확인하는 것
도메인 종속

클라이언트는 요청을 받는다면 서버는 인증서와 함께 응답을 전송한다. 응답을받은 클라인언트는 인증서에 작성된 도메인과응답객체에 작성된 도메인과 비교한다. 만약에 같다면 클라인어트는 데이터를 제공해준 서버를 확신을 하다는 것을 인지한다.하지만 해커가 서버인척 클라이언트인척 정보를 탈취하는 공격을 한다면 응답에서 확인한 도메인과 인증서에 도메인과 같지않아서 데이터를 보내준 서버를 확신하지 않게된다.

(2) CA(Certificate Authority)

:공인 인증서 발급 기관. 암호화시 사용되는 키를 담은 인증서를 발급하고 관리

*인증기관은 인증서를 발급 및 관리해주는 대신 비용을 받는다.

각브라우저는 각자 신뢰하는 CA의 정보를 가지고 있다. 각 브라우저는 인증서도 차이가 난다.

(3) 비대칭 키 암호화

:암호화하는 키와 복호화하는 키가 다른 것

-Public key/privite key
Public key : 모두에게 공개가능한 키
privite key : 나만 가지고 알고 있어야 하는 키

공개키 암호화: 공개키로 암호화 하면 개인키로만 복호화 할 수 있다 ->개인키는 나만 가지고 있으므로 나만 볼 수있다.
개인키 암호화: 개인키로 암호화하면 공개키로만 복호화 할 수 있다 ->공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.

-과정

3)통신과정

(1) A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급함
(2) CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청함
(3) CA 기업은 CA기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서를 생성하고, CA 기업의 개인키로 암호화하여 A기업에게 이를 제공함.
(4) A기업은 클라이언트에게 암호화된 인증서를 제공함
(5) 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어, 암호화된 인증서를 복호화함
(6) 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를 암호화하여 요청을 전송함
(7) 복호화된 인증서는 CA의 개인키로 암호화되었기 때문에, 신뢰성을 확보할 수 있고, 클라이언트는 A 기업의 공개키로 데이터를 암호화하였기 때문에 A기업만 복호화하여 원본의 데이터를 얻을 수 있다.

HTTPS는 이러한 공개키/개인키 기반의 대칭키 암호화 방식을 활용하여 안전성을 확보하고 있다.

profile
성실한코딩러

0개의 댓글