HTTP(Hyper Text Transfer Protocol)이란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
이다.
비연결성 프로토콜
이다. 클라이언트가 이전에 요청한 내용을 기억하고 있지 않다.응용프로토콜(application protocol)
이다.Cookie, Session
을 사용한다.요청/응답(request, response)
방식으로 동작한다.HTTP는 웹을 지탱하는 심플한 기술이지만 치명적인 단점이 있다. 브라우저와 웹서버가 통신함에 있어서 주고 받는 데이터가 암호화 되지 않고 생 날것 그대로 전송되어진다는 점이다.
HTTP는 인터넷이라는 바다를 지나 웹서버와 브라우저가 통신하므로 그 중간 어딘가에서 해커가 중간 통로를 도청하게 된다면 날 것 그대로의 중요한 정보들을 탈취할 수 있다. 만약 이러한 데이터가 로그인 기능에서 사용하는 아이디 비밀번호 등의 데이터라면 치명적일 수 있다. 뿐만 아니라 정상적인 데이터를 중간에서 악의적으로 변조시킬 수도 있다.
HTTPS
에 SSL
이 첨가된 방식으로 주고 받는 정보가 암호화되어 보안성이 강화된 방식이다. 443 port를 사용한다.
공개키 암호화 방식
인증서와 CA(Certificate authority)
SSL을 적용하기 위해서는 인증서가 필요하다.
인증서 내용에는 서비스의 정보(CA, 도메인등)
, 서버 측의 공개키
가 있다.
이 인증서를 발급해주는 기업을 CA
라고 한다. 인증서가 보안에 관련된 것인 만큼 이 CA는 영향력있고 신뢰할수 있는 기업에서만 가능하다.
그리고 우리의 브라우저는 CA리스트를 미리 가지고 있다. CA목록에 있는 기업을 공인된 CA
라고 하며 목록에 없는 기업을 사설CA
라고 한다.
전자서명(공개키방식)
을 이용해 인증서를 제작하고 웹서버로 인증서를 발급한다.대칭키
를 암호화 해서 웹서버에 전달한다.대칭키를 이용하는 이유
공개키 방식보다 속도가 빠르다. 하지만 대칭키를 바로 전달할 경우 중간에 탈취당할 경우가 생긴다. 그래서 위 방식대로 암호화해서 전달하게 되면 탈취당할 위험이 적어진다.