SSL/TLS

암호화

용어

저장된 데이터 보호(Encryption At Rest)

데이터를 저장할 때 암호화 하고 필요할 때 복호화해서 사용 하는 방식으로 디스크에 저장 된 데이터를 암호화 하는 것이 특징이다.

주로 하나의 물리적인 기기에 보안을 적용하기 위해 사용 되며, 키 파일 혹은 암호를 사용 하여 암호화/복호화를 할 수 있음

image

전송중 데이터 보호(Encryption At Transit)

데이터의 전송 중 암호화를 적용 하여 데이터가 전송 도중에 탈취 당하지 않도록 보호 하는 방식이다. 주로 여러 시스템 / 기기 간에 보안을 적용하기 위해 사용 됨

image

대칭키 암호화(Symmetric Encryption)

image

비대칭키 암호화(Asymmetric Encryption)

image

위 사진 처럼 데이터를 도중에 탈취 하기 위해 감청 하는 사람이 공개 키를 얻었다고 복호화 할 수 있는 것이 아니다. 하지만, 서버와 클라이언트는 비밀 키를 알고 있기 때문에 비밀 키를 통해 복호화가 가능한 암호화 방식이다.

💡

💡 비대칭키 암호화만 사용 하면 모든 데이터에 대해 보안 걱정은 없지 않을까?

비대칭키 암호화는 연산 속도가 비교적 느리기 때문에 모든 데이터에 대해 적용 하게 된다면 우리의 웹 페이지에서 데이터를 보낼 때 마다 기다리는 시간이 증가 할 것이다.

그렇기 때문에 비대칭키 암호화는 중요한 키 파일 이라든가 중요한 정보를 보낼 때만 사용 되고 그 외에는 비교적 연산이 빠른 대칭키 암호화로 중간에 데이터가 탈취 당하지 않도록 암호화가 적용 된다.

그 대표적 예로 HTTPS 통신이 그러한 방식으로 데이터를 전송한다.

암호화 서명(Signing)

image

위 AWS S3 서비스를 이용 해보면 사용자에게 PreSignedURL을 제공한다. 이 URL은 사용자가 읽을 수 있는 권한을 보장 받은 서명을 통해 접근이 가능하도록 설정 되어, 실제 사용자가 데이터를 읽을 수 있는 방식이다.

SSL/TLS

SSL/TLS 정의 및 과정

간략하게 알아보는 3단계 과정

  1. Cipher Suites 교환

Cipher Suites란 TLS에서 활용하는 보안 알고리즘들을 가르킨다.

클라이언트는 서버에게 “SSL/TLS 버전, 지원하는 Cipher Suites 목록, 기타 정보”를 제공

서버는 클라이언트에게 “SSL/TLS버전, 선택한 Cipher Suites, 인증서, 기타 정보”를 제공 하게 되며 서로 정보를 교환 함

  1. 인증

인증서를 발급 받기 위해 “CA”라는 믿을 수 있는 인증 기관에서 CA 공개 키와 CA 비밀키를 하나씩 생성 하고 모두에게 공개 키를 읽을 수 있도록 한다.

서버는 클라이언트에게 자신의 신원을 확인 할 수 있는 정보를 알려주기 위해 별도의 공개 키와 비밀 키를 만들고 공개 키에 여러가지 정보를 담은 뒤 CA 기관에게 인증서를 발급 받는다.

서버가 클라이언트에게 인증서 정보를 주고 클라이언트는 해당 인증서 정보를 CA 기관에서 공개 한 공개 키로 인증서를 복호화 하여 읽고 그 정보를 바탕으로 서버를 신뢰 하고 통신을 할 수 있다.

image

서버를 신뢰 한 뒤로 부터는 공개 키와 비밀 키를 공유 하고 있기 때문에 서로 데이터를 통신 할 때 키를 기반으로 암호화, 복호화를 거쳐 통신하게 된다.