Mirage Vault 보안: 사진을 보호하는 방법

2026년 11월 9일 업데이트앱 소스 코드와 2026-10-31 보안 감사에서 가져온 사실

Mirage Vault는 모든 사진을 iPhone 자체에서 파일마다 무작위 키를 사용해 AES-256-GCM으로 암호화하고, 금고 키를 Secure Enclave로 잠급니다. 계정도 서버도 없습니다. 패턴, Face ID, 복구 문구가 유일한 진입 방법이며, 파일을 복사해 가도 다른 곳에서 추측으로 열어낼 수 없습니다.

누가 들여다보고, 무엇을 얻는가

각 행은 들여다볼 수 있는 사람 한 명과, 그 사람이 Mirage Vault에서 얻는 것, 그리고 나를 보호하는 수단을 나타냅니다.

누가보이는 것보호 수단
홈 화면을 힐끗 보거나 어깨 너머로 보는 사람평범한 아이콘. 잠금 화면은 앱 이름도 격자도 없는 빈 모래색 화면패턴 격자는 손가락 아래에서만 나타나고 손가락을 떼면 사라짐. 앱 전환기에는 빈 스냅샷이 표시됨
잠금 해제된 iPhone을 손에 든 사람금고의 빈 잠금 화면Face ID 또는 패턴. 5번 틀리면 30초 대기 시간이 시작되어 최대 1시간까지 두 배씩 늘어남. 앱을 떠날 때 잠금, 엎어 놓으면 잠금
iPhone 암호를 아는 사람같은 빈 잠금 화면금고에 자체 키가 있음. iPhone 암호로는 열리지 않고, 금고의 Face ID는 등록된 얼굴에 묶여 있음. iPhone에 새 얼굴을 추가하면 금고의 Face ID가 꺼지며, 패턴으로 잠금을 해제하고 다시 켤 때까지 꺼진 상태로 유지됨
파일이나 iCloud 백업의 사본을 가진 사람무작위 이름이 붙은 무작위처럼 보이는 데이터파일별 키를 사용하는 AES-256-GCM. 금고 키는 복사할 수 없는 Secure Enclave 키로 래핑되므로 오프라인에서 패턴을 추측할 수 없음. 백업은 8개 단어로 된 복구 문구로만 열림
잠금 해제를 강요하는 사람내가 보여 주기로 한 금고두 번째 패턴 뒤의 가짜 금고와 Wipe Key: 그 자리에서 진짜 금고의 키를 지우고 대신 가짜 금고를 여는 패턴(둘 다 Mirage Pro). Face ID는 Mirage가 열리는 즉시 진짜 금고를 열기 때문에 두 기능 모두 Face ID를 꺼야 함
Mirage 또는 Mirage에 요청하는 누구든아무것도 없음: 계정도, 서버도, 키의 사본도 없음복구 문구는 한 번만 표시되고 저장되지 않음. Mirage 측에서 이 문구를 묻는 일은 절대 없음

Mirage Vault 암호화의 실제 구성

요약이 아니라 앱 소스 코드에 있는 매개변수 그대로입니다.

  • 패턴 또는 PIN은 최소 600,000회 반복하는 PBKDF2-HMAC-SHA256을 거치며, iPhone에서 최소 250ms가 걸리도록 조정됩니다. 그 결과가 금고 키 자체가 되는 일은 없습니다.
  • Secure Enclave가 그 결과를 래핑합니다. Secure Enclave의 P-256 키를 사용하는 ECIES입니다. 개인 키는 Secure Enclave 안에서 생성되어 밖으로 읽어 낼 수 없으므로, 파일과 키체인을 복사해도 다른 기기에서 패턴을 시도하기에는 부족합니다.
  • 금고 키(금고마다 무작위 256비트)는 올바른 패턴, Face ID 또는 복구 문구를 거친 후에만, 그리고 메모리 안에서만 래핑 해제됩니다.
  • 각 파일에는 금고 키로 래핑된 고유한 무작위 키가 있습니다. 사진, 비디오, 메모, 스캔, 썸네일, 미리 보기는 모두 별도의 객체입니다.
  • 각 파일은 1 MiB 청크 단위로 AES-256-GCM으로 봉인됩니다. 청크마다 새로운 논스를 쓰고, 청크를 해당 파일, 위치, 마지막 청크인지 여부에 묶는 인증 데이터를 사용합니다. 변경되거나, 잘리거나, 바꿔치기된 청크는 복호화되지 않고 감지됩니다.
256비트
금고 키, 금고마다 무작위
≥ 600,000
PBKDF2-HMAC-SHA256 반복 횟수
1 MiB
암호화 청크당
0
서버, 계정, 추적기

형식에 관한 그 밖의 사실: 디스크의 파일 이름은 무작위 128비트 식별자이며, 컨테이너는 NSFileProtectionComplete로 보호되고 기기 백업에서 제외됩니다. 헤더에는 길이가 같은 키 슬롯 8개가 있고 사용하지 않는 슬롯은 무작위 바이트로 채워지므로, 슬롯으로는 가짜 금고나 Wipe Key의 존재 여부가 드러나지 않습니다. 다만 포렌식 분석을 하면 색인 파일에서 두 번째 금고의 흔적이 보일 수 있으며, 이는 앱 감사에서 아직 해결되지 않은 항목입니다. Face ID는 현재 등록된 얼굴로 생성된 별도의 Secure Enclave 키를 사용하며, iPhone 암호로 대체되지 않습니다. 동영상은 복호화된 임시 파일 없이 암호화된 리소스 로더를 통해 청크 단위로 재생됩니다. 침입 기록은 금고가 잠겨 있는 동안 HPKE(P-256, HKDF-SHA256, AES-256-GCM)로 봉인되므로, 나중에 진짜 금고의 키로만 열 수 있습니다.

백업 및 복구

암호화된 iCloud 백업은 모든 사용자에게 무료이며 기본적으로 켜져 있습니다. 같은 암호화 객체를 사용자 본인의 iCloud 계정에 있는 비공개 데이터베이스에 업로드하며, Apple에는 암호문만 보이고 Mirage에는 아무것도 보이지 않습니다. 백업은 복구 문구로만 열립니다. 복구 문구는 BIP-39 목록의 단어 8개(88비트)이며, 한 번만 표시되고 저장되지 않습니다. 다른 모든 키는 키를 만든 iPhone의 Secure Enclave에 묶여 있으므로, 다른 iPhone에서 작동하는 키는 복구 문구뿐입니다.

Mirage Vault의 복구 문구 화면: 번호가 붙은 8개 단어와 종이에 적어 두라는 알림 3개Mirage Vault의 복구 문구 화면: 번호가 붙은 8개 단어와 종이에 적어 두라는 알림 3개
단어 8개, 한 번만 표시. Mirage는 이 단어를 다시 보여 줄 수도, 재설정할 수도 없습니다.

무엇을 누가 검토했는가

컨테이너 형식과 앱 계층은 2026-10-31에 검토되었습니다. 코드 검토, 다른 검토자의 형식 재검토, 그리고 동시성, 변조, 퍼징, 평문 유출 검사를 포함한 스트레스 테스트 타깃을 사용했습니다(패키지의 테스트 71개가 Thread Sanitizer 환경에서도 모두 통과). 파일 암호화는 비트 반전, 무작위 변형, 모든 경계에서의 잘림, 파일 간 청크 바꿔치기에도 견뎠으며, 잘못된 평문이 반환된 적은 한 번도 없습니다. 발견된 문제는 금고 및 슬롯 로직과 iCloud 백업에 있었고, 치명적 등급과 높음 등급의 문제는 당일 수정되었습니다. 감사 문서에는 각 문제와 처리 상태가 기록되어 있습니다.

컨테이너 형식과 키를 정의하는 MirageCrypto 모듈은 GitHub에 공개할 수 있도록 독립된 패키지로 작성되었습니다. 공개되면 이 페이지에서 링크할 예정입니다.

앱 소개 한 문단, 아이콘, 보도용 스크린샷은 프레스 키트에 있습니다.

보안 페이지

자주 묻는 질문

Mirage Vault는 암호화되나요?
네. 모든 사진, 비디오, 메모, 파일은 iPhone에서 1 MiB 청크 단위의 AES-256-GCM으로, 파일마다 고유한 무작위 키를 사용해 암호화됩니다. 썸네일과 미리 보기도 암호화됩니다. 읽을 수 있는 사본은 디스크에 기록되지 않으며, 파일 이름은 무작위 식별자입니다.
Mirage가 내 사진을 볼 수 있나요?
아니요. Mirage 계정도 Mirage 서버도 없습니다. 금고 키는 iPhone 밖으로 나가지 않고, iCloud 백업에는 사용자 본인의 iCloud 계정에 있는 암호문만 들어 있으며, 복구 문구는 한 번만 표시되고 저장되지 않습니다. Mirage의 누구도 금고를 열 수 없으며, 복구 문구를 묻는 일도 절대 없습니다.
누군가 내 iPhone에서 파일을 복사해 가면 어떻게 되나요?
무작위처럼 보이는 데이터를 얻을 뿐입니다. 데이터를 열려면 금고 키가 필요한데, 금고 키는 해당 iPhone의 Secure Enclave 안에 있는 키로 래핑되어 있습니다. 파일 사본으로 오프라인에서 패턴을 추측하는 방법은 통하지 않습니다. Secure Enclave 키를 추출할 수 없으므로 모든 추측은 기기에서 실행되어야 하며, 기기에서는 5번 틀리면 대기 시간이 시작되어 최대 1시간까지 늘어납니다.
Mirage Vault는 데이터를 수집하나요?
App Store 개인정보 보호 레이블은 ‘데이터가 수집되지 않음’입니다. 앱에는 분석 도구, 충돌 보고 서비스, 광고 SDK, 계정이 없습니다. 구입은 Apple을 통해 처리됩니다. 네트워크를 사용하는 것은 사용자 본인의 iCloud 계정으로 보내는 선택적 암호화 iCloud 백업뿐입니다.
암호화 코드는 공개되어 있나요?
컨테이너 형식과 키를 정의하는 MirageCrypto 모듈은 GitHub에 공개할 수 있도록 작성되었습니다. 공개되기 전까지 이 페이지는 나중에 누구나 공개된 모듈과 대조해 주장을 확인할 수 있을 만큼 자세히 형식을 설명합니다.