HTTP, HTTPS

서동수·2022년 7월 30일
0

HTTP

Hyper Text Transfer Protocol

클라이언트 / 서버 모델에서 데이터를 주고 받기 위한 프로토콜!
인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용한다.

 TCP / IP 위에서 작동하고 상태를 가지지 않는 Stateless 프로토콜이다.
 이미지에서 보이듯이 Method, Path, Version, Header, Body	로 구성된다.
 
 그렇지만 암호화 되지 않은 평문으로 데이터를 전송하기 때문에 제 3자가 정보를 조회할 수 있기에
 거의 모든 도메인에서 사용하지 않는다.
 

HTTPS

Hyper Text Transfer Protocol Secure

Http에 데이터 암화가 추가된 프로토콜!
기본적으로 443번 포트를 사용한다.

대칭 키 암호화 , 비대칭 키 암호화

Https는 대칭 키 암호화, 비대칭 키 암호화 방식을 모두 사용한다.

대칭 키 암호화
1. 클라이언트, 서버가 동일한 키를 사용해서 암호화, 복호화를 한다.
2. 키 노출시 매우 위험, 속도는 매우 빠르다.

비대칭 키 암호화
1. 공개 키, 개인 키 이렇게 쌍으로 구성되어 있으며 암호화, 복호화 하는데 사용함
// 공개 키: 공개 가능한 키
// 개인 키: 나만 아는 키

// 공개 키 암호화: 공개 키로 암호화시 개인 키로만 복호화 가능 
				-> 나만 볼 수 있음
                
// 개인 키 암호화: 개인 키로 암호화시 공개 키로만 복호화 가능 
				-> 내가 인증한 정보이기 때문에 신뢰성 보장
                
2. 키 노출시 대칭보다는 안전하지만, 속도가 느리다.

Https 연결 과정

클라이언트, 서버간에 세켠 키를 교환한다.
세션 키는 데이터를 암호화 하기 위해 사용되는 대칭 키
빠른 연산 속도를 위해 데이터 교환에는 대칭 키인 세션 키를 만든다.

해당 세션 키를 클라이언트, 서버가 교환하기 위해 비대칭 키가 사용되는데
이 후 연결이 성립된 이후에는 대칭 키인 세션 키로 빠른 연산 속도를 가져갈 수 있는 것이다.

1. 클라이언트 -> 서버로 연결 요청
2. 서버는 공개 키를 브라우저에게 넘김
3. 브라우저는 공개 키 유효성을 검사하고 세션 키 발급
4. 브라우저 세션 키 보관, 서버의 공개 키로 세션 키를 암호화 후 서버에 전송
5. 서버는 개인 키로 암호화 된 세션 키를 복호화 -> 세션 키를 얻음
6. 클라이언트, 서버는 동일한 세션 키를 공유하게 되고 데이터 전달시 세션 키로 암호, 복호화 진행

SSL

Secure Sockets Layer
암호화 기반 인터넷 보아 프로토콜!
현재 사용 중인 TLS의 전신!
SSL / TLS를 사용하는 웹사이트의 URL에는 Https가 있다.

1. 통신 내용이 노출, 변경되는 것을 방지
2. 클라이언트가 접속하는 서버가 신뢰할 수 있는지 확인 가능
3. SSL 통신에 사용할 공개키를 클라이언트에 제공한다.
profile
devLog

0개의 댓글