Skip to content

Latest commit

 

History

History
59 lines (31 loc) · 3.42 KB

HTTPS와 SSL.md

File metadata and controls

59 lines (31 loc) · 3.42 KB

HTTPS와 SSL


HTTP(Hypertext Transfer Protocol)

HTTP 프로토콜은 Hypertext인 HTML을 전송하기 위한 통신 규약을 의미한다.
교환 방식은 복잡한 바이너리 데이터가 아닌 단순 텍스트를 통해 이뤄진다. 여기서 HTTP프로토콜의 문제가 여실히 드러난다.

만약 서버와 클라이언트간의 데이터를 누군가가 중간에서 가로챘다고 해보자. 그 데이터를 가로채 변조한다거나 악의적인 감청이 일어난다면 데이터는 단순 텍스트이기 때문에 문제가 생길 것이다.
예를 들어, 로그인을 위해서 서버로 비밀번호를 전송할 때 악의적인 감청이나 데이터의 변조등이 일어날 수 있다는 것이다.

이를 보완한 것이 HTTPS고 이를 이해하기 위해선 약간의 암호화 기법 지식이 필요하다.


암호화 기법

HTTPS를 설명하기 위해서 알아야 할 암호화 기법에는 대칭키 암호화 기법비대칭 키 암호화 기법이 있다.

대칭키 암호화 기법


대칭키 암호화 기법은 하나의 키를 가지고 암호화와 복호화가 가능한 것이다. 간단하다.

클라이언트와 서버가 암호화와 복호화 하는 방법을 모두 알고 있다면 이를 대칭키 암호화 기법이라고 보면 된다. 대칭키 암호화 기법은 암호를 주고 받는 사람들만 키 값을 알고 있다면 안전하다. 하지만 문제는 대칭키를 서로 공유하기 힘들다.

공유를 위해 만약 최초에 클라이언트에서 서버에 데이터를 전송할 때 대칭키를 같이 전송하는 과정에서 대칭키가 해커에게 탈취된다면 암호화 방식 전체를 바꿔야할 것이다.

비대칭키 암호화 기법(공개키 암호화)


비대칭키 암호화 기법은 암호화와 복호화를 하기 위한 키가 다르다는 것이다. 즉 암호화를 하는 방법과 복호화를 하는 방법이 다르기 때문에 중간에 암호화된 데이터가 탈취된다고 해도 복호화를 할 방법이 없다.


https_asymmetric_key


하지만 여기서 생각해봐야 할 것이 있는데 '서버로 전송된 데이터가 클라이언트에서 전송한 것인지, 안전한 데이터라고 확신할 수 있을까?' 라는 것이다.


HTTPS

이를 위해 우리는 SSL 인증서를 사용한다. 서버로 전송된 데이터가 안전한 데이터라는 것을 SSL 인증서를 통해 확인하는 것이다. 그리고 이 인증서를 발급해주는 민간 기관을 CA라고 하고 이 CA 리스트를 브라우저는 내부적으로 가지고 있다.
즉, 비대칭키 암호화 기법을 이용해 암호화된 데이터를 서버로 전송하는 과정에서 SSL 인증을 받은 데이터만 서버에서는 신뢰하는 것이다.

하지만 이 방식은 느릴 수 있기 때문에 대칭키 암호화와 비대칭키 암호화를 같이 사용하기도 한다.



Reference