▶︎ HTTP란 ?
HTTP(Hyper Text Transfer Protocol)은 서버와 클라이언트간에 데이터를 주고 받는 프로토콜이다. HTTP는 텍스트, 이미지, 영상 등 거의 모든 형태의 데이터를 전송할 수 있다. HTTP는 Client와 Server간 자원을 주고 받을 때 쓰는 통신규약이다. 하지만 HTTP는 암호화 되지 않은 통신이기 때문에 보안에 취약하다. 또한 정보 교환 상대를 확인하지 않기때문에 위장이 가능하고, 상황에따라 데이터 변조가 가능하다. 이러한 취약점이 있기때문에 비밀번호나 민감한 개인정보등을 주고 받으면 원치않는 제 3자가 정보를 엿볼수 있다. 이를 해결하기 위해서 HTTPS가 등장한다.
▶︎ HTTPS란 ?
HTTPS는 안전한 통신을 위해서 정보를 암호화한 방식이다. HTTP는 알아볼 수 있는 평문 즉, 암호화되지 않은 데이터라면 HTTPS는 평문을 암호화하고 암호화된 내용을 상대에 전달하고 상대는 이를 복호화하여 암호화전의 평문을 확인하는 방식이다.
HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(Secure Sockets Layer) 프로토콜을 이용하여 웹브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약이다.
- HTTPS는 http 메세지(text)를 암호화하는 것이다.
- HTTPS의 S가 Secure Socket, 보안 통신망을 의미한다.
- HTTPS의 암호화 원리를 간단히 하면 대칭키, 비대칭키를 모두 사용한다.
실제로는 이 두 방법을 혼합해서 사용한다.
공개키는 네트워크를 통해 공유된 파일들을 공개됐다고 보면 좋을것같다.
▶︎ 대칭키, 비대칭키란?
여기서는 간단히 설명을 하고 더 자세한내용은 아래 링크에서 확인할 수 있다.

☑️ 대칭키와 비대칭키 방식을 같이사용하는법은 이렇다.

- A와 B는 서로 대칭키를 이용해서 안전하고 빠른 정보교환을 하려고한다. 하지만 A가 대칭키를 그대로 네트워크로 공유하게 되면 누구든 그들의 정보에 접근할 수 있게된다.(암호화 안된 데이터를 공유하는건 유출된다고 가정)

- A가 가지고 있는 대칭키를 안전하게 받기 위해서 B는 비대칭키를 발급받고, 복호화할 수 있는 키는 본인이 소유하고 암호화할 수 있는 키는 네트워크를 통해 전달한다. 이때 암호화키는 공개키라고 볼 수 있다.

- A는 B에게 전달받은 암호화키로 대칭키를 암호화하고 네트워크를 통해 B에게 공유한다. 이때 암호화된 대칭키는 복호화키를 가지고 있는 B이외에는 접근할 수 없기때문에 안전하다.

- B는 암호화된 대칭키를 받고 본인이 가지고 있는 복호화키로 이를 해독해서 대칭키를 가질 수 있다. 이로써 A와 B는 유출없이 대칭키를 네트워크를 통해 주고 받을 수 있다. 이후에는 서로 원하는 데이터를 대칭키로 암호화해서 데이터를 교환 할 것이다.
▶︎ HTTPS 동작 과정
HTTPS는 위에서 설명한것처럼 대칭키와 비대칭키를 모두 사용해서 빠른 연산속도와 안정성을 모두 얻는 방법을 이용한다. HTTPS 연결과정에서 서버와 클라이언트 간에 세션키를 교환하는데, 여기서 세션키는 주고 받을 데이터를 암호화하는데 사용될 대칭키이다. 데이터 간의 교환에는 빠른 연산속도가 필요하기때문에 세션키를 이용해서 암호화하는데 이를 서버와 클라이언트에게 안전히 주고 받기 위해 사용되는것이 비대칭키이다. 서로 세션키를 안전하게 암호화해서 공유한뒤 빠른 데이터 교환에 세션키를 이용한다.
