기존 세션 방식은 서버 부하를 나누기 위해 로드 밸런싱을 할 때 문제가 발생한다. 서버는 자신에게 클라이언트의 세션 정보가 있을 때만 동일한 클라이언트인지 인식할 수 있다.
그런데 로드 밸런싱에 의해 클라이언트가 다른 서버로 접속해야 한다고 하자. 그러면 해당 서버는 클라이언트의 세션 정보가 없기 때문에 같은 클라이언트인지 알 수가 없다.
그래서 클라이언트한테 다시 로그인을 요청하게 되는데, 클라이언트 입장에선 분명히 동일한 서비스에 로그인을 했는데도 불구하고 또다시 로그인을 해야하는 불쾌함을 겪게 된다.
C : 기밀성 I : 무결성, A : 가용성
통신 도중에 중간 공격자가 문서를 가로챘다고 하자. 이 때 “기밀성”이 깨지게 된다.
그리고 그 중간 공격자가 문서 내용을 위조하게 되면 “무결성”이 깨지게 된다.
이러한 문서가 수신자에게 도달하게 되면 “가용성”이 깨지게 된다.
문서를 암호화하는 열쇠와 해당 문서가 누구로부터 왔는지를 보장할 수 있어야 CIA를 지킬 수 있다.
위 문제를 해결하기 위해 RSA 알고리즘을 활용한다.
A→B로 문서를 보낸다고 가정하자. 문서를 보내기 전 B의 공개키로 문서를 암호화한다. 그리고 문서를 보낼 때 암호화한 문서를 A의 개인키로 다시 암호화한다.
그리고 문서를 받은 B는 A의 공개키로 복호화한다. (A가 보낸 것인지 “인증”할 수 있다.) 그러면 암호화된 문서가 나오는데, B의 공개키로 암호화되있으므로 B자신의 개인키를 이용하여 복호화하면 원문을 얻을 수 있다.