HTTP프로토콜로 운용되는 서버에 SSL을 적용해보며 암호화를 찍먹했는데, 조금이나마 뇌에 잔상을 남기기 위해 간단하게 정리해 놓기로 했다.
1. 대칭키 암호화
- 한 쌍의 동일한 키로 암호화, 복호화를 하는 방식
- 장점: 빠르고 쉽다.
- 단점: 누군가 클라이언트의 대칭키를 훔치면, 주고받는 요청을 가로채 복호화하여 데이터를 조작할수도 있다.
2. 비대칭키 암호화
- 한 쌍의 다른 키로 암호화, 복호화를 하는 방식
- 공개키(Public Key)와 개인키(Private key) 로 이루어져 있다. 공개키는 누구나 얻을 수 있지만 개인키는 자신만 가지고 있다.
- PKI(Public Key Infrastructure)는 비대칭키로 암호화를 하는 기술인데, 크게 두 가지 방법이 있다.
- 첫번째는, 클라이언트가 서버에게 받은 공개키를 사용하여 데이터를 암호화하고, 서버에게 전송하면 서버가 개인키로 데이터를 복호화하는 방법이다.
- 두번째는, 서버에서 직접 개인키로 데이터를 암호화해 클라이언트에게 전송하면 클라이언트가 공개키로 데이터를 복호화하는 방법이다. 공개키는 누구나 얻을 수 있기 때문에 누구라도 내용을 알 수 있지만, 이런짓을 하는 이유는 서버가, 데이터를 암호화한 주체가 자신이라는 사실을 증명할때 쓰이는 방법이라고 한다.
- 장점: 중간에서 누군가 데이터를 가로채더라도 개인키를 가진 서버만 데이터를 복호화할 수 있기 때문에 안전하다.
- 단점: 대칭키에 비해 상대적으로 복잡하기 때문에 리소스를 많이 잡아먹고 느리다.