HTTP(HyperText Transfer Protocol)는 말 그대로 하이퍼텍스트를 전송하기 위해 사용되는 통신 규약이다. 정보를 네트워크를 통해 텍스트로 주고 받게 되는데, 네트워크에서 전송 신호를 인터셉트하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. 따라서 이러한 문제를 해결하기 위해 HTTP에 S(Secure Socket)이 추가된 HTTPS가 도입되었다.
당연하게도 HTTPS는 안전하다. 서버와 브라우저 사이의 통신에 인터셉트가 일어나지 않도록, 웹사이트의 무결성을 보호해준다.
HTTPS에는 단점이 없는가?
공개키 방식과 공개키의 느리다는 단점을 보완한 대칭키 방식을 함께 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.
공개키와 비공개키를 이용하는데, 이걸 key pair라고도 한다. 둘이 쌍이라는 이야기임. 평문을 공개키로 암호문으로 만들고, 다시 복호화하기 위해서는 비공개키가 필요하다. 반대로 평문을 비공개키를 이용해서 암호문으로 만들면, 공개키로 복호화가 가능하다.
후자도 가능하지는 몰랐네.....
그렇다면 공개키 방식을 사용하는 이유는 뭘까.
공개키 방식을 사용하는 이유는 배달사고때문이다. 평문과 암호문을 나만 보면 대칭키 방식을 사용하면 된다. 하지만 특정한 상대에게 메세지를 보내야하는 경우에, key를 보내야 하는데, 이때 key가 도난당할 수 있음.
목표는 (A가 B에게 암호문과 키를 전달하여) B가 평문을 아는 것이다.
준비물은 A의 대칭키와 평문이다. 여기서 평문은 hello라고 하였다(세상 귀찮음).
목표는 위와 같이 B가 평문을 아는 것!
준비물은 B의 공개키와 비밀키와 평문이다.
여기서 A가 공개키로 평문을 암호화하였지만, A도 비밀키가 없기 때문에 복호화가 불가능하다.
공개키 방식은 보안에 취약하지 않기(?)때문에 전자서명에 사용된다.
전자서명의 목표는 B가 작성한 내용이 정말로 B가 작성했는가? 인증에 있음!
HTTP의 문제를 해결하기 위해서 HTTPS가 등장했고, 해당 알고리즘에는 공개키 방식과 대칭키 방식이 있다. 대칭키 방식에는 보안 문제가 있기 때문에 공개키 방식으로 보안 취약점을 개선!