Cryptile

Cryptile 보안 구조를 한 층씩 살펴보기

업데이트

Cryptile은 내가 그린 패턴으로 휴대폰에서 만든 키를 사용해, 모든 파일, 썸네일, 색인을 AES-256-GCM으로 암호화합니다. 계정도 서버도 없으며, 개발자는 키를 갖고 있지 않습니다.

App Store에서 Cryptile 받기

쉬운 요약은 보안 페이지에 있습니다.

무엇을 알아야 하나요?

  • 모든 키는 패턴에서 나옵니다. 패턴 없이는 읽을 수 있는 것이 아무것도 저장되지 않습니다.
  • 크기와 보관함 수는 흐려집니다. 파일은 패딩되고, 미끼 슬롯이 보관함이 몇 개인지 숨깁니다.
  • 직접 확인할 수 있습니다. 암호화 핵심부는 위협 모델, 테스트 벡터와 함께 감사용으로 공개되어 있습니다(소스 공개): github.com/jasonbrelsford/cryptile-core.

패턴은 어떻게 키가 되나요?

  1. 패턴은 격자 크기와, 그 뒤에 내가 터치한 칸을 순서대로 적은 값으로 기록됩니다.
  2. 이 값은 이 기기 전용으로 iPhone 키체인에 보관된 32바이트 기기 비밀 값과 섞입니다.
  3. 여기에 PBKDF2-HMAC-SHA512를 600,000회 실행합니다. 추측 한 번마다 그만큼의 작업이 듭니다.
  4. HKDF-SHA256이 결과를 조회 키와 래핑 키로 나눕니다.
  5. 조회 키는 보관함의 색인 파일 이름을 정합니다. 래핑 키는 그 파일을 엽니다.

색인 안에는 보관함의 무작위 256비트 마스터 키가 있습니다. HKDF는 여기서 파일, 썸네일, 색인용 하위 키를 따로 만듭니다. 어떤 키도 두 가지 용도로 쓰이지 않습니다.

파일은 어떻게 암호화되나요?

썸네일과 색인처럼 작은 항목은 AES-256-GCM과 무작위 논스로 한 덩어리로 봉인됩니다.

큰 파일은 1 MB 청크 단위의 STREAM 구조를 씁니다. 각 청크는 자체 논스를 가지며, 자신의 위치와 마지막 청크인지 여부를 기록합니다. 청크를 잘라 내거나, 순서를 바꾸거나, 바꿔 끼우면 복호화가 실패합니다.

GCM은 모든 헤더도 인증하므로, 변경된 파일은 표시되지 않고 거부됩니다.

크기와 보관함 수는 어떻게 숨기나요?

모든 작은 블롭과 모든 파일의 마지막 청크는 64 KiB의 배수로 패딩됩니다. 파일을 복사한 사람은 정확한 크기가 아니라 대략적인 크기만 봅니다.

보관함 목록은 없습니다. 앱은 진짜와 미끼를 합쳐 색인 모양의 슬롯을 최소 8개 유지하고, 쓸 때마다 미끼를 새로 만듭니다. 어느 슬롯도 가리키지 않는 패턴은 빈 보관함을 엽니다.

복구는 어떻게 작동하나요?

각 보관함에는 96비트의 무작위성을 가진 9단어 복구 문구가 있습니다. 이 문구는 문구에서 만든 키로 봉인된, 보관함의 별도 복구용 사본을 엽니다.

iCloud 백업은 암호화된 파일을 그대로 복제합니다. 기본적으로 기기 비밀 값은 백업에 들어 있지 않으므로, 백업만으로는 패턴을 추측할 수 없습니다.

무엇이 암호화되고, 무엇이 암호화되지 않나요?

암호화되는 것: 사진, 동영상, 파일, 메모, 썸네일, 이름, 폴더, 즐겨찾기, 인식된 텍스트, 사진 위치. 미끼와 무료 요금제 개수를 추적하는 작은 파일은 기기 키로 봉인됩니다.

Cryptile이 암호화하지 않는 것:

  • 설정. 자동 잠금 시간, 정렬 순서, 백업 스위치에는 비밀이 없습니다.
  • 추가되기를 기다리는 공유 항목. 보관함을 열 때까지 iOS 파일 보호 아래에 있습니다.
  • 컨테이너의 전체 크기와 쓰기 시각. 10 GB 보관함은 10 MB처럼 보이지 않습니다.
  • 내보낸 것. 사진이나 파일 앱에 저장한 사본은 보관함 밖에 있습니다.

무엇으로부터 지켜 주나요?

  • 내 키체인 없이 앱 파일을 복사한 사람. 암호문만 얻으며 패턴을 시도해 볼 수 없습니다.
  • Apple, 또는 Apple에서 일어난 유출. iCloud에는 암호문만 있고 키는 없습니다.
  • 변조. 변경되거나 순서가 바뀐 데이터는 복호화되지 않습니다.
  • 저희. 저희는 서버를 운영하지 않고 키도 갖고 있지 않으므로, 접근을 초기화할 수 없습니다.

무엇으로부터는 지켜 주지 못하나요?

  • 짧은 패턴. 패턴은 암호문보다 약합니다. 내 파일과 키체인을 가진 사람이라면, 4×4 격자의 6칸 패턴은 GPU로 몇 분 만에 풀립니다. 8칸 이상을 쓰세요.
  • 잠금이 풀린 휴대폰의 악성 코드. 보관함이 열려 있는 동안 메모리를 읽는 코드는 어떤 앱도 막을 수 없습니다.
  • 내가 그리는 모습을 지켜보는 사람. 아무도 손을 볼 수 없는 곳에서 그리세요.
  • 휴대폰과 문구를 모두 잃는 경우. 보관함은 사라집니다. 초기화는 없습니다.

Plus의 패닉 패턴은 기기 비밀 값을 파기하므로, 복원하기 전까지 휴대폰의 어떤 보관함도 열리지 않습니다.

App Store에서 Cryptile 받기