Mirage Vault 보안: 사진을 보호하는 방법
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으로 봉인됩니다. 청크마다 새로운 논스를 쓰고, 청크를 해당 파일, 위치, 마지막 청크인지 여부에 묶는 인증 데이터를 사용합니다. 변경되거나, 잘리거나, 바꿔치기된 청크는 복호화되지 않고 감지됩니다.
형식에 관한 그 밖의 사실: 디스크의 파일 이름은 무작위 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에서 작동하는 키는 복구 문구뿐입니다.


무엇을 누가 검토했는가
컨테이너 형식과 앱 계층은 2026-10-31에 검토되었습니다. 코드 검토, 다른 검토자의 형식 재검토, 그리고 동시성, 변조, 퍼징, 평문 유출 검사를 포함한 스트레스 테스트 타깃을 사용했습니다(패키지의 테스트 71개가 Thread Sanitizer 환경에서도 모두 통과). 파일 암호화는 비트 반전, 무작위 변형, 모든 경계에서의 잘림, 파일 간 청크 바꿔치기에도 견뎠으며, 잘못된 평문이 반환된 적은 한 번도 없습니다. 발견된 문제는 금고 및 슬롯 로직과 iCloud 백업에 있었고, 치명적 등급과 높음 등급의 문제는 당일 수정되었습니다. 감사 문서에는 각 문제와 처리 상태가 기록되어 있습니다.
컨테이너 형식과 키를 정의하는 MirageCrypto 모듈은 GitHub에 공개할 수 있도록 독립된 패키지로 작성되었습니다. 공개되면 이 페이지에서 링크할 예정입니다.
앱 소개 한 문단, 아이콘, 보도용 스크린샷은 프레스 키트에 있습니다.
보안 페이지
- 사진 금고 앱은 안전한가요? 믿기 전에 확인할 7가지
암호화된 금고와 PIN 화면이 달린 숨김 폴더를 구별하는 7가지 확인 항목.
- 계산기 금고 앱은 안전한가요? 위장이 지켜 주는 것과 지켜 주지 못하는 것
계산기 위장의 실제 가치, 그 뒤에서 확인할 것, 그리고 다른 앱을 흉내 내지 않고 숨는 Mirage의 방식.