들여다보기: 아키텍처 개요
Dropbox는 확장성 있는 보안 인프라스트럭처 전반에 걸쳐 안전한 데이터 전송, 암호화, 네트워크 구성, 애플리케이션 수준 제어 등의 다계층 보안 기능을 탑재하고 있습니다.
파일 인프라스트럭처
Dropbox 사용자는 데스크톱, 웹, 모바일 클라이언트, Dropbox와 연결된 타사 애플리케이션 등의 다양한 인터페이스를 통해 언제든지 파일과 폴더에 액세스할 수 있습니다. 각 인터페이스는 데이터를 안전하게 처리하고 보호하면서도 간편한 액세스를 제공하는 보안 설정과 기능을 갖추고 있습니다. 모든 클라이언트는 보안 서버 연결을 통해 파일로의 액세스를 제공하고, 다른 사람들과 파일을 공유하도록 지원합니다. 또한, 파일이 추가되거나, 변경되거나, 삭제되었을 때 계정에 연결된 장치를 업데이트합니다.
Dropbox 파일 인프라스트럭처는 다음과 같은 요소로 구성됩니다.
메타데이터 서버
메타데이터로 불리는 사용자 데이터에 관한 특정한 기본 정보는 Dropbox 자체 스토리지 서비스에 보관되며, 사용자 계정에 있는 데이터의 인덱스 역할을 합니다. 메타데이터에는 이메일 주소, 이름, 장치 이름 등의 기본 계정 정보와 사용자 정보가 포함됩니다. 변경내용 기록, 복구, 동기화 등의 기능을 지원하는 데 사용되는 파일 이름, 파일 유형 등의 파일 기본 정보도 메타데이터에 포함됩니다.
메타데이터 데이터베이스
파일 메타데이터는 MySQL 기반 데이터베이스 서비스에 저장되며, 필요시 샤딩과 복제를 거쳐 성능과 고가용성 요건을 충족합니다.
블록 서버
Dropbox는 기존의 암호화 기술의 한계를 뛰어넘은 자체 보안 메커니즘으로 데이터를 보호합니다. 블록 서버는 각 파일을 블록으로 나누고, 각 파일 블록을 강력한 암호로 암호화하며, 파일이 수정된 경우 변경된 블록만 동기화하는 방식으로 Dropbox 애플리케이션에 있는 파일을 처리합니다. 새로운 파일이나 기존 파일에 변경이 감지되면 Dropbox 애플리케이션은 이를 블록 서버에 통보하고, 새롭게 생성되거나 수정된 파일 블록은 처리를 거쳐 블록 스토리지 서버로 전송됩니다. 사용자에게 파일과 미리 보기를 제공할 때도 블록 서버가 사용됩니다.
블록 스토리지 서버
파일의 실제 콘텐츠는 암호화된 블록 형태로 블록 스토리지 서버에 저장됩니다. 파일의 실제 콘텐츠는 암호화된 블록 형태로 블록 스토리지 서버에 저장됩니다. Dropbox 클라이언트는 파일 콘텐츠를 전송하기 전에 파일을 블록으로 나누어 저장에 대비합니다. 블록 스토리지 서버는 내용 주소화 기억 장치(CAS) 시스템 역할을 하며 해시값을 기준으로 암호화된 개별적인 파일 블록을 불러옵니다.
미리 보기 서버
미리 보기 서버는 파일의 미리 보기를 생성하는 역할을 합니다. 미리 보기는 최종 사용자의 장치에 빠르게 표시되도록 파일 형식을 적절하게 변환한 것을 말합니다. 미리 보기 서버는 블록 스토리지 서버에서 파일 블록을 불러와 미리 보기를 생성합니다. 파일 미리 보기 요청이 전송되면 미리 보기 서버는 미리 보기 스토리지 서버에서 캐시로 저장된 미리 보기를 불러와 이것을 블록 서버로 전송합니다. 최종적으로 미리 보기는 블록 서버에서 사용자에게 전송됩니다.
미리 보기 스토리지 서버
캐시로 저장된 미리 보기는 암호화된 형태로 미리 보기 스토리지 서버에 저장됩니다.
알림 서비스
알림 서비스는 Dropbox 계정에 발생한 변경 사항을 모니터링하는 별도의 서비스로, 이 서비스로는 그 어떤 파일 데이터나 메타데이터도 저장되거나 전송되지 않습니다. 각 클라이언트는 롱 폴링 방식으로 알림 서비스에 연결을 설정한 후 대기합니다. Dropbox 파일에 변경 사항이 생기면 알림 서비스는 롱 폴링 연결을 종료해 관련 클라이언트로 변경 사항이 감지되었다는 신호를 보냅니다. 연결 종료는 클라이언트가 메타데이터 서버에 안전하게 연결되어야 파일의 변경 사항을 동기화할 수 있다는 신호입니다.
Dropbox Paper 인프라스트럭처
Dropbox 사용자는 웹, 모바일 클라이언트, Dropbox와 연결된 타사 애플리케이션을 통해 언제든지 Paper 문서에 액세스할 수 있습니다. 모든 클라이언트는 보안 서버 연결을 통해 Paper 문서로의 액세스를 제공하고, 다른 사람들과 문서를 공유하도록 지원합니다. 또한, 문서가 추가되거나, 변경되거나, 삭제되었을 때 계정에 연결된 장치를 업데이트합니다.
Dropbox Paper의 인프라스트럭처는 다음과 같은 요소로 구성됩니다.
Paper 애플리케이션 서버
Paper 애플리케이션 서버는 사용자 요청을 처리해 수정된 Paper 문서의 변경 사항을 다시 사용자에게 전송하며, 알림 서비스를 수행합니다. Paper 애플리케이션 서버가 사용자가 변경한 내용을 Paper 데이터베이스에 전송하면 이 변경 사항은 영구 저장소에 보관됩니다. Paper 애플리케이션 서버와 Paper 데이터베이스 간의 통신은 강력한 암호로 암호화됩니다.
Paper 데이터베이스
Paper 문서에 관한 특정 메타데이터와 문서에 입력된 실제 콘텐츠는 Paper 데이터베이스의 영구 저장소에서 암호화됩니다. 여기에는 댓글과 작업 등 Paper 문서에 담긴 콘텐츠뿐만 아니라 제목, 소유자, 생성 날짜, 기타 정보 등과 같은 Paper 문서에 관한 정보도 포함됩니다. Paper 데이터베이스는 필요 시 샤딩과 복제를 거쳐 성능과 고가용성 요건을 충족합니다.
메타데이터 서버
Paper는 Dropbox 인프라스트럭처 도표에 설명된 메타데이터 서버를 사용해 Paper 문서 파일 버전 기록, 공유 폴더 구성원 자격과 같은 Paper 문서 정보를 처리합니다. Dropbox는 메타데이터 서버를 직접 관리하며, 이 서버는 외부업체와 공동으로 운영하는 데이터 센터에 위치해 있습니다.
메타데이터 데이터베이스
Paper는 Dropbox 인프라스트럭처 도표에 설명된 메타데이터 데이터베이스를 사용해 공유, 권한, 폴더와 같은 Paper 문서 관련 정보를 저장합니다. Paper 문서 메타데이터는 MySQL을 지원하는 데이터베이스 서비스에 저장되며, 필요시 샤딩과 복제를 거쳐 성능과 고가용성 요건을 충족합니다.
Paper 이미지 스토리지 서버
Paper 문서에 업로드된 이미지는 Paper 이미지 스토리지 서버에 저장되고 유휴 상태에서 암호화됩니다. Paper 애플리케이션과 Paper 이미지 스토리지 서버 간의 이미지 데이터 전송은 암호화된 세션을 통해 진행됩니다.
미리 보기 서버
미리 보기 서버는 Paper 문서에 업로드된 이미지의 미리 보기와 문서에 삽입된 하이퍼링크의 미리 보기를 생성합니다. Paper 문서에 업로드된 이미지의 경우, 미리 보기 서버는 암호화된 경로를 통해 Paper 이미지 스토리지 서버에 저장된 이미지 데이터를 불러옵니다. Paper 문서에 삽입된 하이퍼링크의 경우, 미리 보기 서버는 소스 링크가 지정한 암호화를 사용해 이미지 데이터를 불러온 후 미리 보기를 생성합니다. 최종적으로 미리 보기는 블록 서버에서 사용자에게 전송됩니다.
미리 보기 스토리지 서버
Paper는 Dropbox 인프라스트럭처 도표에 설명된 동일한 미리 보기 스토리지 서버를 사용해 캐시로 저장된 이미지 미리 보기를 저장합니다. 캐시로 저장된 미리 보기 청크는 암호화된 형식으로 미리 보기 스토리지 서버에 저장됩니다.
Dropbox는 내부 보안팀과 외부 보안 전문가를 통한 네트워크 보안 테스트와 감사를 정기적으로 시행해 위험 요소와 취약점을 파악하고 이를 완화합니다. 이들은 정기적으로 애플리케이션, 네트워크, 기타 보안에 관한 테스트와 감사를 시행해 Dropbox의 백엔드 네트워크를 안전하게 유지합니다. 또한, Dropbox는 책임감 있는 공개 정책을 통해 보안 취약점 발견과 신고를 장려하고 있습니다.
데이터 센터
Dropbox의 기업 시스템과 운영 시스템은 미국 여러 지역에 위치한 외부 하청 서비스 업체 데이터 센터와 관리 서비스 공급업체에 보관되어 있습니다. 이러한 외부 서비스 공급업체는 Dropbox 인프라스트럭처가 제어할 수 없는 영역의 물리적, 환경적, 운영상 보안 제어를 담당하며, Dropbox는 외부 데이터 센터에 보관된 Dropbox 인프라스트럭처의 논리적 보안, 네트워크 보안, 애플리케이션 보안을 담당합니다.
암호화
유휴 상태의 Dropbox 파일과 Dropbox Paper 문서는 256bit 고급 암호화 표준(AES)을 통해 암호화됩니다. Dropbox는 데이터 전송 시 보안 소켓 계층(SSL)/전송 계층 보안(TLS) 프로토콜을 활용해 Dropbox 앱(현재 기준으로 데스크톱, 모바일, API 또는 웹)과 서버 사이에 전송되는 데이터를 보호하며, 128bit 이상의 고급 암호 표준(AES) 알고리즘으로 보호되는 보안 터널을 생성합니다. 마찬가지로, Paper 클라이언트(모바일, API 또는 웹)와 호스트된 서비스 간을 이동하는 데이터도 SSL/TLS를 통해 암호화됩니다.
인증서 피닝
Dropbox는 파일 동기화 및 공유 데스크톱과 모바일 클라이언트에서 인증서 고정을 사용합니다. 인증서 고정은 Dropbox 클라이언트가 공인 인증 기관으로부터 디지털 인증을 받은 서버에만 연결하도록 하는 추가 확인입니다. Dropbox는 인증서 고정을 사용해 부정한 인증 기관을 운영하는 국가 차원의 공격자들로부터 Dropbox를 보호하고, 연결을 가로챌 수 있는 로컬 악성 소프트웨어로부터 사용자를 보호합니다.
완전 순방향 비밀성
Dropbox가 제어하는 엔드포인트(데스크톱 및 모바일)와 최신 브라우저의 경우, 강력한 암호를 사용하고 완전 순방향 비밀성을 지원합니다. 완전 순방향 비밀성을 구현하여 Dropbox 인증서의 비공개 키가 과거의 인터넷 트래픽을 해독하는 데 사용될 수 없도록 했습니다. 이 방식은 모든 이전 세션에서 각 세션의 연결을 끊어 Dropbox와의 암호화된 통신을 더 강력하게 보호합니다. 또한, Dropbox는 웹에서 모든 인증 쿠키를 안전한 것으로 표시하고, HSTS(HTTP Strict Transport Security)를 활성화합니다.
키 관리
Dropbox의 키 관리 인프라스트럭처는 키에 대한 직접적인 액세스를 최소한으로 제한해 운영상·기술적·절차상 보안을 유지하도록 설계되었습니다. 암호화 키 생성, 교환, 저장은 여러 곳에 나뉘어 분산 처리됩니다.
Dropbox는 복잡성을 제거하고, 고급 제품 기능을 지원하고, 암호를 철저히 통제하기 위해 사용자를 대신해 파일 암호화 키를 관리합니다. 파일 암호화 키는 운영 시스템 인프라스트럭처 보안 제어 환경과 보안 정책을 통해 생성되고, 저장되고, 보호됩니다. 운영 시스템으로의 액세스는 고유의 SSH 키 쌍을 가진 사람으로만 제한됩니다. 보안 정책과 절차는 SSH 키로 보호됩니다. 보안 공개 키 교환 프로세스는 내부 시스템이 관리하며, 비공개 키는 안전하게 보관됩니다.
Dropbox의 제어 기능과 가시성 기능에 관한 더 자세한 정보는 Dropbox 보안 백서에서 확인할 수 있습니다.