쿠키와 세션을 사용하는 이유는
HTTP의 특징인 비연결성, 무상태(connectionless, stateless) 때문이다.
비연결성(connectionless)이란?
HTTP는 TCP/IP 기반의 애플리케이션 계층에서 구현되어지는 응용프로그램이다.
이 때문에 TCP가 전송이 끝나면 연결이 끊어지듯이 HTTP도 서로 전송이 끝나면 끊어집니다.
이를 비연결성(connectionless)이라고 합니다.
무상태(stateless)란?
통신이 끝나면 연결을 유지하지않는 특징이다.
비연결성에 의해 연결이 끊어진 순간 클라이언트와 서버의 통신이 끝나며
상태정보를 유지하지 않는다.
HTTP(Hyper Text Transfer Protocol) 와 HTTPS(Hyper Text Transfer Protocol Secure)의 차이는 이름에서 알 수 있듯이
HTTP에서 데이터 암호화(Secure)가 추가된 프로토콜이 HTTPS이다.
HTTP는 암호화가 되어있지 않은 평문 데이터를 전송하기 때문에
누군가 패킷을 훔쳐보는 스니핑(Sniffing)에 취약하였지만
HTTPS는 SSL/TLS를 이용해서 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화 + 서버인증을 통해 보안을 강화 시켰다.
SSL(Secure Socket Layer) 과 TLS(Transport Layer Socket) 는 얼핏 보면 다르게 보이지만
단순하게 SSL의 향상된 버전이 TLS이다.
1999년에 IETF가 SSL 3.1을 발표했는데,
이것이 TLS 버전 1.0 이었다. 즉 SSL과 TLS는 같다.
TLS는 보안방식 중 대칭키와 비대칭키를 혼용해서 사용한다.
대칭키란?
암호화와 복호화를 하나의 대칭키를 사용하는 방식이다.
예를들어 1111이란 키 하나로 암호화를 했다면
복호화 역시 1111로 할 수 있다.
대칭키암호화의 경우에는 서로 키를 공유해야 하기에
대칭키를 전달하는 과정에서 해킹을 당할 위험이 있다는 것이다.
비대칭키란?
공개키와 개인키를 이용해 암,복호화가 가능한 기술로
대표적인것으로는 RSA가 있으며 공개키로 암호화를 하지않고
개인키로 암호화를 한뒤에 공개키로 복호화가 가능하다는 점이있다.
예를들면 나와 상대방은 각자 공개된 키가 있고
자신만 아는 개인키가 있다.
상대방의 공개키가 1111이라면
1111로 암호화를 해서 상대방에게 보내고 상대방이 이를 자신의 개인키로 복호화하여
내용을 확인 할 수 있는 방식이다.
이메일이라는 공개키로 전달을 하면 상대방이 ID와 PASSWORD를 입력해야 그 내용을 볼수있는것과 같은 이치이다.