파일, 데이터베이스, 메모리 등에 중요한 데이터를 저장할 때 암호화가 필요하다.
인터넷과 같은 통신 채널로 중요한 정보를 보낼 때 암호화가 필요하다.
데이터 저장 과정에서 신경 써야 하는 것이 세 가지가 있다.
중요한 정보를 지키려고 할 때, 정보가 유출되더라도 공격자가 이를 읽지 못하게 하려면 암호화해야 한다.
아무나 못 들어오게 현관에 자물쇠를 설치했는데, 자물쇠가 조금만 건드렸더니 금방 망가진다면 무용지물일 것이다. 마찬가지로 암호화 알고리즘도 안전한 알고리즘이어야 한다.
길이가 짧을수록 보안성이 낮은 암호가 될 것이다.
인터넷과 같은 통신 채널로 민감한 정보를 보낼 때, SSL/TLS 라는 프로토콜을 이용해 기밀성을 지킬 수 있다.
통신 채널을 통해 주민등록번호와 같은 민감한 정보를 서버에게 보내야 한다고 생각해보자. 그러면 중간에 공격자가 이 정보를 가로채거나 엿보지 않게 하고 싶을 것이다. 그래서 해당 정보를 암호화해서 전송하는 방법을 고안해냈고, 대칭키(비밀키) 를 이용해 수신자와 송신자만 데이터를 볼 수 있도록 하는 기술이 바로 SSL/TLS라는 보안용 프로토콜이다.
클라이언트가 서버에게 중요한 정보를 보내고자 한다. 이때 둘이 정해야 하는 것을 생각해보자. 클라이언트는 어떤 암호화 알고리즘을 사용할 수 있는지, 그중에서 무슨 알고리즘을 선택하는 것이 좋을지, 그리고 그 알고리즘을 수행하기 위해 필요한 공개키나 대칭키(비밀키) 등이 무엇인지 등이 논의되어야 할 것이다. 이를 수행하는 것이 바로 SSL Handshake 이다.
참고로 그 구체적인 과정은 해당 사이트에 자세히 설명되어 있다.
대표적인 SSL/TLS의 예시로 HTTPS의 사용이 있다.