보안
보안
VaultWell이 안에 보관한 것을 어떻게 보호하는지 쉬운 말로 설명합니다. 보호할 수 없는 부분과 아직 하지 않은 일까지 포함해서.
누구로부터, 무엇으로부터 보호하는가
VaultWell은 대부분의 사람이 실제로 마주하는 일상적인 개인정보 위협에 맞춰 설계되었습니다.
- 누군가 휴대폰을 집어 든다. 연인, 가족, 동료, 또는 휴대폰을 주운 낯선 사람. 경로가 없으면 휴대폰 암호를 알더라도 보관함은 닫힌 채로 있습니다.
- 누군가 잠금 해제를 강요한다. 일상용 보관함이나 강요 대비 보관함을 열 수 있습니다. 다른 보관함이 있다는 것은 화면 어디에도 나타나지 않습니다.
- 누군가 앱의 파일을 복사한다. 키가 휴대폰의 보안 하드웨어에 묶여 있어, 빠른 컴퓨터에서 추측을 돌릴 수 없습니다.
- 누군가 저장된 파일을 변조한다. 암호화된 모든 조각이 인증되므로, 변경은 표시되지 않고 감지됩니다.
이미 휴대폰에 악성 코드를 설치한 공격자, 경로를 그리는 모습을 지켜보는 사람, 가진 모든 경로를 밝히도록 강요할 수 있는 사람을 막도록 설계되지는 않았습니다. 어떤 앱도 그것을 약속할 수 없습니다.
암호화가 작동하는 방식
- 경로. 벌집 위에서 그리는 칸의 순서(최소 8칸, 중복 없음)가 입력이 됩니다.
- Argon2id. 이 입력은 64 MiB 메모리와 두 번의 패스로 Argon2id를 통해 강화됩니다. 그래서 추측 한 번마다 상당한 시간과 메모리가 듭니다.
- 하드웨어 결속. 결과는 iPhone의 Secure Enclave, 또는 Android Keystore(가능한 경우 StrongBox)에 보관된 비밀과 결합됩니다. 이 비밀은 내보낼 수 없으므로 키는 내 휴대폰에서만 계산할 수 있습니다.
- 마스터 키. 각 보관함에는 무작위 256비트 마스터 키가 있으며, 경로에서 얻은 키로 암호화된 형태로만 저장됩니다.
- 청크 단위 AES-GCM. 항목은 AES-256-GCM으로 1 MiB 청크 단위로 암호화됩니다. 각 청크는 해당 항목과 위치에 묶여 있어, 청크를 바꾸거나 순서를 바꾸거나 잘라 내면 반드시 실패합니다. 미리 보기 이미지, 항목 목록, 설정도 암호화됩니다.
계정도 서버도 없습니다. 키는 휴대폰을 떠나지 않으며, 보관함의 내용은 저희에게 전송되지 않습니다.
숨겨진 보관함, 그리고 조사하는 사람이 여전히 볼 수 있는 것
화면에서 VaultWell은 아무것도 드러내지 않습니다. 잠금 화면은 벌집뿐입니다. 틀린 경로와 한 번도 쓰이지 않은 경로는 똑같아 보입니다. 보관함 목록이나 개수도 없습니다. 모든 보관함의 설정 파일은 같은 크기로 채워져 있어, 보관함의 옵션(강요 대비 보관함인지 여부 포함)을 밖에서 구별할 수 없습니다.
디스크에 대해서는 정확하게 말씀드리겠습니다. 각 보관함은 각각 암호화된 폴더로 저장됩니다. 앱의 원시 파일에 완전히 접근할 수 있는 사람(예를 들어 잠금 해제된 휴대폰의 포렌식 추출을 통해)은 그 폴더의 수와, 복구 문구가 설정된 보관함의 수를 셀 수 있습니다. 열거나 내용을 볼 수는 없지만, 보관함이 둘 이상 있다는 것은 추론할 수 있습니다. 예를 들어 미끼 항목 등으로 이를 줄일 계획이며, 바뀌면 자세한 내용을 공개하겠습니다.
화면에서는
아무것도 드러내지 않음
- 보이는 것은 벌집뿐
- 보관함 목록도 개수도 없음
- 틀린 경로는 한 번도 쓰지 않은 경로처럼 보임
원본 파일을 완전히 들여다볼 때
셀 수 있는 것
- 암호화된 보관함 폴더가 몇 개인지
- 복구 문구가 설정된 보관함이 몇 개인지
읽을 수 없는 것
- 각 보관함에 무엇이 들어 있는지
- 어느 것이 강요 대비 보관함인지
강요 대비 보관함
강요 대비 보관함이 경로로 열리면, VaultWell은 먼저 다른 모든 보관함의 키 파일과 복구 파일을 삭제하고, 그다음 그 보관함들의 폴더를 제거합니다. 키 파일이 없으면 데이터를 복호화할 수 없습니다. 그런 다음 강요 대비 보관함은 화면에 아무 메시지 없이 다른 보관함처럼 열립니다.
- 휴대폰에서의 삭제는 영구적입니다. 되돌릴 수 없습니다.
- 강요 대비 보관함을 복구 문구로 열면 아무것도 지워지지 않습니다.
- 다른 곳에 보관한 백업과 공유는 영향을 받지 않습니다.
백업과 공유
백업(.vwbackup)은 새 휴대폰에서 열려야 하므로 이전 휴대폰의 하드웨어를 사용할 수 없습니다. 대신 각 백업은 경로(설정했다면 문구도)에서 Argon2id로 얻은 키와 새로운 무작위 솔트로 보관함의 마스터 키를 잠급니다. 항목은 저장된 그대로 암호화된 상태를 유지합니다. 백업의 안전성은 경로나 문구의 강도에 달려 있으므로, 백업 파일은 남에게 보이지 않게 보관하세요.
공유(.vwshare)는 새로운 무작위 키를 사용하며, 별도의 공유 문구로 잠깁니다. 항목은 그 키로 다시 암호화되므로 받는 사람은 내 보관함의 키를 알 수 없습니다. 열기 횟수, 만료, 저장 허용 같은 제한은 서버가 없기 때문에 암호화가 아니라 앱이 적용합니다. 문구를 가진 사람이 마음먹으면 보이는 것을 복사할 수는 있습니다.
저희가 주장하지 않는 것
- 아직 완료된 감사는 없습니다. 출시 전에 독립적인 보안 감사가 계획되어 있습니다. 결과는 공개하겠습니다.
- 보이지 않는 것은 아닙니다. 위장 아이콘을 써도 앱은 휴대폰에서 보이며, 포렌식 조사로 보관함이 여러 개 있다는 사실이 드러날 수 있습니다.
- iPhone에서는 스크린샷을 막지 못합니다. VaultWell은 화면 캡처로부터 보호하지만, iOS는 앱이 스크린샷을 차단하도록 허용하지 않습니다. 스크린샷이 찍히면 VaultWell이 알려 줍니다. 화면을 사진으로 찍는 것은 어떤 앱도 막을 수 없습니다.
- 저희가 복구해 드릴 수 없습니다. 경로와 문구를 모두 잃으면 저희는 도울 수 없습니다. 저희는 그것을 가진 적이 없습니다.
문제 신고하기
보안 문제를 발견하셨다면, 먼저 비공개로 알려 주시면 감사하겠습니다. 원하시면 이름을 밝혀 감사를 전하겠습니다. 연락처는 출시 전에 추가됩니다.