이번 강의에서는
암호화 작동 방식을 잘 모르신다면
상위 레벨에서 어떻게 작동하는지 자세히 알려드리려 합니다
먼저 TLS 또는 SSL이라고 하는
전송 중 암호화에 대해 이야기 해보겠습니다
TLS는 SSL의 최신 버전입니다
그래서 저희가 알고 있는 것은 데이터를 전송하기 전에
데이터가 암호화된다는 것입니다
전송 받은 후에 해독이 될 것입니다
이건 네트워크를 통한
클라이언트와 서버 간의 통신을 위한 것인데
앞으로 일어날 일은
데이터 암호화를 위해
TLS 인증서가 사용됩니다
웹사이트에 접속할 때 표시되는 것이며
HTTPS라고 표시되어 있는데 여러분과 서버 간의 연결이
TLS 인증서를 사용하여
암호화 된다는 의미입니다
전송 중 암호화를 왜 원할까요?
왜냐하면 네트워크를 통해, 때로는 공용 네트워크를 통해
데이터를 전송하고
데이터는 다양한 서버를 돌아다니기 때문입니다
저희는 중간 서버가 데이터를 수신하고
서버로 보내는 패키지를 관찰하는
MITM을 원하지 않습니다
따라서 저희는 HTTPS나 TLS 혹은 SSL을 원하고
이는 대상 서버만이 저희가 보내는 암호화된 데이터를
해독할 수 있다는 것을 알고 있는 경우입니다
예를 들어보면
클라이언트와 서버가 있는데
사용자 이름과 비밀번호를 제공해
서버에 안전하게 로그인하고 싶습니다
하지만 대상 서버만 이를 수신할 수 있기를 원합니다
그래서 사용자 이름과 비밀번호를 확보한 다음
클라이언트 측에 TLS 암호화를
자동으로 적용하겠습니다
데이터는 암호화되어 네트워크를 통해 전송됩니다
그래서 보다시피 서버 간 데이터 해독은 불가능하고
대상 서버만 TLS 해독 메커니즘을 사용해
해당 패키지를 해독한 다음
사용자 이름과
비밀번호를 보냈는지 확인할 수 있습니다
따라서 저희는 안전하게 로그인했다고 말할 수 있습니다
여기까지가 전송 중 암호화였습니다
다음은 서버 측 유휴 암호화에 관해 얘기하겠습니다
데이터는 서버에 수신된 후
암호화되어 안전하게
저장된다는 것입니다
그런 다음 클라이언트에게
다시 전송되기 전에 해독됩니다
키 덕분에 암호화된 형식으로 저장되며
해당 키는 일반적으로 데이터 키입니다
암호화와 해독을 위해 이런 키를
관리하는 것은
어디에선가 관리가 되어야 하고
서버가 이러한 키에 접근할 수 있어야 합니다
예를 들어 Amazon S3와 같은
서비스를 살펴보겠습니다
HTTP(S)를 통해 객체를 보내고 있으며
전송 중 암호화도 HTTP(S)로 보내고 있을 수 있습니다
그래서 서비스는 저희 객체를 수신하지만 해독됩니다
서비스는 데이터 키를 사용할 수 있고
데이터 키와 해독된 객체를 사용하여
유휴 객체를 암호화 할 수 있습니다
그런 다음 해당 객체를 클라이언트에게 다시 보낼 때
암호화된 객체와 데이터 키를 함께 사용해
암호를 해독합니다
이렇게 저희는 해독된 형태의 객체를 가지게 되고
그 객체는 다시 HTTPS로 클라이언트에
다시 보내질 것입니다
그렇게 저희는 해독된 객체를 받았습니다
이 경우에서 볼 수 있듯이
서버 측 암호화가 있는데
모든 암호화와 해독이
서버에서 발생하기 때문입니다
마지막으로 클라이언트측 암호화에 대해 설명해드리겠습니다
이번에는
클라이언트 측에서 암호화되고 해독 됩니다
그리고 이 경우 서버는 데이터를 해독할 수 없어야 하는데
서버를 신뢰하지 않기 때문입니다
따라서 이를 위해 저희는 이 메커니즘에 암호화를
활용할 수 있습니다
그럼 예를 들어보겠습니다
클라이언트에는 객체가 있고
이번에는 데이터 키가 클라이언트측입니다
암호화 후에는 암호화된 객체를 받습니다
암호화된 객체는 안전하게 FTP 서버
Amazon S3, EBS volumes 등에 전송될 수 있습니다
그리고 암호화된 형태로 저장됩니다
따라서 전체 서버는 데이터 내용을 해독할 수 없습니다
콘텐츠를 검색할 때는
암호화된 객체를 직접 검색합니다
그리고 여전히 데이터 키 클라이언트 측에 접근할 수 있는 경우
암호 해독 메커니즘을 실행하면
해독된 객체를 다시 받을 수 있습니다
이상으로 Cloud에서 볼 수 있는 세 가지
암호화 메커니즘입니다
마음에 드셨으면 좋겠고
다음 강의에서 뵙겠습니다