사진을 숨겨 주는 앱은 많은데, 날짜도 순서도 설명도 없는 이유
Reddit의 r/iPhoneApps에 한 사람이 올린 글에서 시작했습니다. KeepSafe 같은 사진 금고를 쓰고 있는데 세 가지가 아쉽다는 이야기였습니다. 사진에 날짜가 보이지 않고, 원하는 순서로 늘어놓을 수 없고, 사진마다 설명을 적을 수 없다는 것. 금고라는 이름이 붙은 앱 대부분이 “숨긴다”까지만 해 주고, 그 안에 들어간 사진을 다시 읽을 수 있게 만드는 일에는 관심이 없었습니다. 웹에 있는 대안 하나(“photo vault studio”류 사이트)는 영어뿐이었습니다.
볼트패드는 그 세 칸을 채우는 금고입니다. 사진은 EXIF에 적힌 촬영 날짜를 그대로 보여 주고, 타일은 손가락으로 끌어 내가 정한 자리에 남고, 항목마다 하고 싶은 말을 적을 수 있습니다. 그러면서도 금고가 해야 할 일 — 잠그고, 암호화하고, 기기 밖으로 내보내지 않는 일 — 을 먼저 합니다. 계정도, 서버도, 업로드도 없습니다.
볼트패드가 하는 일
처음 열면 PIN이나 비밀번호를 정합니다. 그 PIN 자체는 어디에도 저장되지 않습니다. 브라우저의 Web Crypto가 PBKDF2-SHA-256으로 PIN에서 AES-GCM 키를 만들고, 그 키로 사진·동영상·썸네일은 물론 캡션·날짜·앨범·순서가 담긴 메타데이터 기록까지 이 기기에서 암호화합니다. 잠긴 상태에서는 아무것도 보이지 않습니다. 썸네일도, 캡션도, 날짜도.
잠금이 풀리면 격자가 나옵니다. 타일마다 날짜 칩이 붙고, 위쪽에서 전체·사진·동영상·즐겨찾기·앨범 보기를 고르고, 타일 크기는 작게·보통·크게 중에 정합니다. 타일을 누르면 상세 화면에서 원본 크기로 보거나 동영상을 재생하고, 이전·다음으로 넘기고, 날짜와 그 출처를 확인하고, 설명을 쓰고, 앨범을 고르고, 즐겨찾기로 표시하고, 원본을 내보내거나 삭제합니다.
사용법
- PIN이나 비밀번호를 정합니다. 숫자 몇 자리도 되고, 긴 문장도 됩니다. 이 PIN은 저장되지 않고 복구 수단도 없으니, 기억할 수 있는 것으로 정하세요.
- ‘가져오기’로 이 기기의 사진과 동영상을 고릅니다. 파일 선택 창에서 여러 개를 한 번에 고를 수 있습니다. 원본은 바이트 그대로, 파일당 200MB까지 들어갑니다. 가져오는 동안 암호화가 진행되니 큰 동영상은 잠시 기다려 주세요.
- 격자에서 타일 크기(작게·보통·크게)와 보기(전체·사진·동영상·즐겨찾기·앨범)를 고릅니다. 정렬은 ‘내 순서’가 기본이고, ‘날짜순(최신 먼저)’은 순서를 건드리지 않는 보기일 뿐입니다.
- ‘정렬 모드’를 켜면 타일을 마우스나 손가락으로 끌어 옮기고, 화살표 버튼으로 한 칸씩, 맨 앞으로, 맨 뒤로 보낼 수 있습니다. 앨범 보기 안에서 정렬해도 보이지 않는 항목의 자리는 흐트러지지 않습니다.
- 타일을 눌러 상세로 들어가면 설명을 적습니다. 항목당 2000자까지, 쓰는 대로 저장됩니다. 날짜가 마음에 들지 않으면 직접 지정하고, 언제든 자동으로 읽은 날짜로 되돌릴 수 있습니다.
- 앨범은 만들고 이름을 바꾸고 지울 수 있습니다. 앨범을 지워도 그 안의 사진은 남습니다. 즐겨찾기는 상세 화면의 별 하나로 켜고 끕니다.
- 자동 잠금 시간은 30초·1·2·5·10분 또는 “내가 잠글 때만” 중에 고릅니다. 기본은 2분입니다. 앱이 배경으로 넘어가는 순간 화면은 바로 흐려집니다.
- 설정에서 ‘JSON 내보내기’로 금고 전체를 파일 하나에 담아 두세요. 새 브라우저나 재설치 후에는 ‘JSON 가져오기’로 되살립니다. 폰을 잃었을 때의 답은 이 파일뿐입니다.
빠져 있던 세 가지: 날짜, 순서, 설명
- 날짜. JPEG 사진에서는 EXIF의 DateTimeOriginal을 읽습니다. 없으면 DateTimeDigitized, 그다음 IFD0의 DateTime을 봅니다. EXIF가 아예 없으면 파일의 수정 시각을, 그것도 없으면 가져온 시각을 씁니다. 격자의 칩에는 날짜가, 상세 화면에는 그 날짜가 어디서 왔는지가 적힙니다. 동영상에는 EXIF가 없으므로 파일 시각을 씁니다.
- 순서. ‘정렬 모드’에서 타일을 끌거나 화살표로 옮기면 그 자리가 그대로 저장됩니다. 앱이 마음대로 다시 정렬하지 않습니다. ‘날짜순(최신 먼저)’은 언제든 볼 수 있는 보기이고, 그 보기를 켜도 내 순서는 지워지지 않습니다. 앨범 안에서도 같은 방식으로 정렬합니다.
- 설명. 상세 화면의 입력란에 항목마다 2000자까지 적을 수 있고, 타이핑하는 대로 저장되어 따로 ‘저장’을 누를 필요가 없습니다. 언제 어디서 찍었는지, 누구와 있었는지, 이 사진을 왜 남겼는지 — 몇 년 뒤의 자신이 읽을 문장을 남겨 두는 자리입니다.
무엇이 이 기기에 남고, 무엇이 암호화되나
전부 남고, 전부 암호화됩니다. PIN에서 PBKDF2-SHA-256으로 키를 만들고, 그 키로 원본 파일, 썸네일, 그리고 캡션·날짜·앨범·순서가 들어 있는 메타데이터 기록을 AES-GCM으로 암호화합니다. 이 모든 일이 브라우저의 Web Crypto로, 이 기기 안에서 일어납니다. 서버가 없고, 계정이 없고, 동기화가 없고, 어떤 파일도 기기 밖으로 나가지 않습니다. 도구 화면에 광고가 없고, 인앱 결제도 구독도 없습니다.
잠금은 두 방향으로 지킵니다. 틀린 PIN을 넣으면 다음 시도까지 기다리는 시간이 1초, 2초, 4초… 하는 식으로 최대 60초까지 늘어납니다. 그리고 손을 놓고 있으면 정해 둔 시간(기본 2분) 뒤에 스스로 잠기고, 앱이 배경으로 넘어가는 순간 화면이 흐려집니다. 잠긴 동안에는 썸네일도 캡션도 날짜도 보이지 않습니다.
백업, PIN 변경, 초기화
- ‘JSON 내보내기’는 금고 전체를 파일 하나로 내려받습니다. 그 파일은 지금의 PIN으로 암호화된 상태 그대로입니다. 저장된 모습을 그대로 옮기는 것이라, 파일을 열어도 사진은 보이지 않습니다.
- ‘JSON 가져오기’는 먼저 그 백업의 PIN을 묻습니다. 그다음 ‘합치기’(같은 id의 항목은 교체되고 나머지는 그대로)와 ‘바꾸기’ 중에 고릅니다.
- ‘PIN 변경’은 새 PIN으로 모든 파일을 다시 암호화합니다. 항목이 많으면 시간이 걸립니다.
- ‘금고 초기화’는 확인 단어를 직접 입력해야 실행되고, PIN을 포함한 모든 것을 지웁니다. PIN을 잊었을 때 남은 길은 이것뿐입니다.
- 상세 화면의 ‘원본 내보내기’는 그 항목의 원본 파일을 그대로 내려받습니다. 브라우저가 지원하면 공유 시트로도 보낼 수 있습니다.
솔직한 한계
- 암호화는 브라우저 저장소에 우연히 닿는 접근을 막아 줍니다. 잠금이 풀린 상태에서 기기나 OS 자체가 장악된 상황까지 막아 주지는 못합니다.
- 금고는 이 브라우저 프로필의 저장소에 있습니다. 사이트 데이터를 지우면 금고도 함께 사라집니다. JSON 백업을 따로 보관해 두세요.
- HEIC 사진은 브라우저가 디코딩할 수 있는 환경에서만 썸네일이 만들어집니다. 그렇지 않은 곳에서도 원본은 그대로 보관됩니다.
- 큰 동영상은 가져올 때 암호화에 시간이 걸립니다. 파일당 한계는 200MB입니다.
- PIN은 저장되지 않으므로 복구할 수 없습니다. 잊으면 금고를 초기화하는 것 말고는 방법이 없습니다.
PIN을 잊으면 어떻게 되나요?
되돌릴 방법이 없습니다. PIN은 어디에도 저장되지 않고, 키는 PIN에서만 만들어집니다. 메일로 재설정 링크를 보낼 서버도, 답을 아는 사람도 없습니다. 남은 선택은 금고를 초기화하고 처음부터 다시 시작하는 것뿐입니다. 그래서 기억할 수 있는 PIN을 고르고, JSON 백업을 만들어 두는 일이 중요합니다.
사진이 정말 이 기기에만 있나요?
네. 가져온 파일은 브라우저 저장소에 암호화되어 들어가고, 어디로도 업로드되지 않습니다. 서버가 없으니 보낼 곳도 없습니다. 계정도 동기화도 없어서 다른 기기에서 같은 금고가 열리는 일도 없습니다. 기기를 옮기고 싶다면 JSON 백업 파일을 직접 옮기는 것이 유일한 방법이고, 그 파일도 PIN으로 암호화된 상태입니다.
사진 날짜는 어디서 오나요?
JPEG 사진이라면 EXIF의 DateTimeOriginal, 즉 카메라가 셔터를 누른 순간을 기록한 값을 먼저 읽습니다. 그 칸이 비어 있으면 DateTimeDigitized를, 그다음 IFD0의 DateTime을 봅니다. EXIF가 없는 사진과 모든 동영상은 파일의 수정 시각을 쓰고, 그것마저 없으면 가져온 시각이 됩니다. 상세 화면에는 그 날짜가 어느 출처에서 왔는지 적혀 있으므로, 맞지 않으면 직접 날짜를 지정하고 나중에 자동 값으로 되돌릴 수 있습니다.
내가 정한 순서가 나중에 흐트러지지 않나요?
아니요. ‘내 순서’가 기본 정렬이고, 정렬 모드에서 옮긴 자리는 저장되어 그대로 유지됩니다. 새 사진을 가져와도 기존 자리가 바뀌지 않고, ‘날짜순(최신 먼저)’은 순서를 고쳐 쓰지 않는 보기일 뿐이라 끄면 원래 배치로 돌아옵니다. 앨범 보기 안에서 정렬해도 그 앨범에 속하지 않은 항목들의 상대적인 자리는 그대로입니다.
동영상도 넣을 수 있나요? 크기 제한은요?
네. 사진과 동영상을 같은 방식으로 가져오고, 상세 화면에서 바로 재생합니다. 파일당 200MB까지, 원본은 바이트 그대로 보관되므로 화질이 줄어들지 않습니다. 큰 동영상은 가져올 때 암호화에 시간이 걸리니 그 화면을 잠시 열어 둔 채로 기다려 주세요. 동영상에는 EXIF 촬영 날짜가 없어서 파일 시각을 쓰고, 필요하면 날짜를 직접 지정하면 됩니다.
업데이트가 나를 잠그거나 데이터를 지우나요?
아니요. “업데이트 필요” 화면은 없습니다. 새 버전은 다음에 페이지를 열 때 조용히 바뀌고, 이전 버전이 저장한 사진·동영상·설명·순서는 같은 PIN으로 그대로 열립니다. 데이터를 지우는 것은 ‘금고 초기화’뿐이고, 그것도 확인 단어를 직접 입력해야 실행됩니다.
무료인가요? 광고·계정·결제는요?
전부 무료입니다. 항목 수 제한도, 앨범 잠금도, “프로에서만 되는 동영상” 같은 것도 없습니다. 도구 화면에 광고 없음, 계정 없음, 로그인 없음, 동기화 없음, 인앱 결제 없음, 구독 없음. 안드로이드와 웹 어느 브라우저에서든 열리고, “홈 화면에 추가”로 설치하면 오프라인에서도 그대로 동작합니다. 하고 싶은 말이 있으면 이 페이지의 ‘피드백 보내기’를 눌러 주세요.
