AWS

[AWS] S3 - 암호화 (Encryption)

어코링 2024. 2. 12. 15:00

S3 암호화 유형

1. 파일 업로드 / 다운로드시

SSL (Secure Circuit Layer)

Netscape라는 회사에 의해서 처음 개발되었다.

인터넷 사용시 도메인 주소 맨 앞에 HTTPS가 붙으므로 사이트는 안전하다라는 뜻

TLS (Transport Layer Security)

SSL에서 파생되었지만 SSL보다 뛰어난 보안 업데이트 된 것

2. 가만히 있을시 

SSE(Server-Side-Encryption) 

SEE-S3

S3 버켓에 저장되어 있는 모든 Object들을 그들만의 고유한 키를 가지고있다

그러나 SEE-S3는 마스터키라는 것을 가지고 있으며 일정 시간마다 키 값을 변경시킨다.

API를 접근할 때 부여받는 토큰 역시 특정 시간이 지나면 계속 바뀌는 것처럼 

마스터가가 생성한 키값은 AES 256비트로 구성되어있다.

SSE-KMS

AWS에서 일괄적으로 관리

KMS 암호화 키를 통하여 누가 언제 어떻게 암호를 풀었는지에 대한 기록이 복원되어있다. ⭢ 체계적인 관리 가능

SSE-C

사용자가 암호키를 직접 다룰수 있으며, 키값을 사용자가 변경시켜 줘야한다.

S3 암호화 과정

- PUT 요청이 생성됨 : 일반적으로 S3 파일을 업로드할 시 PUT 요청이 들어간다.

위사진은 PUT요청의 헤더

파일이름, 버켓이름, 언제 업로드 되었는지, 파일 타입 etc (그밖에 메타데이터들)

 

헤더에 x-amz-server-side-encryption-parameter

만약 파일을 S3에 업로드할 시 PUT요청에 ⭡이 들어있다면 S3는 사용자가 암호화 요청을 한 것으로 간주하고 암호화를 걸어준다.

이것은 암호화 알고리즘 중 하나이며 사용자가 S3에서 임의로 암호화 알고리즘 유형을 정해줄수 있다.

위 예시는 AES-256으로 설쟁했다고 헤더에서 확인 가능

Q. 암호화가 걸리지 않은 파일을 버켓에 못올리는 기능은 없을까?

A. 있다. 버켓 정책 설정에 설정한다.