모든 글

Senvra가 iPhone의 개인 데이터를 보호하는 방법: 4계층 심층 방어

신뢰할 수 있는 기기, 인증 암호화, 복구 설계, 일상적인 중단 보호라는 네 계층으로 Senvra의 보호 범위와 한계를 설명합니다.

개인정보보안암호화복구iOS

개인 데이터는 보호받기 위해 먼저 휴대폰을 떠날 필요가 없습니다. 이것이 우리가 Senvra를 만든 이유입니다. Senvra는 사진, 동영상, 오디오, PDF, 파일, 노트를 보관하는 오프라인 우선 비공개 공간이며, 계정이나 Senvra 호스팅 클라우드 보관소, 자동 업로드가 필요하지 않습니다.

Senvra 보관소에는 네트워크 권한이 필요하지 않습니다. 키보드를 연 뒤 네트워크 접근, 로컬 네트워크, 셀룰러 데이터 또는 타사 키보드의 전체 접근 허용 요청이 나타나면 거부해도 됩니다. Senvra의 로컬 보관소, 잠금 해제, 입력, 탐색 기능은 계속 사용할 수 있습니다. 해당 요청은 Senvra 보관소가 아니라 iOS 또는 선택한 키보드에서 발생할 수 있습니다. 매우 민감한 내용을 입력할 때는 받아쓰기와 불필요한 클라우드 입력 기능을 끈 Apple 시스템 키보드를 사용하거나 타사 키보드의 전체 접근 허용을 끄는 것이 좋습니다. 권한 거부는 키보드 구성 요소를 통해 입력 내용이 기기 밖으로 나갈 위험을 줄이지만, 기기 보안, 키보드 출처, 명시적 내보내기 관리 자체를 대체하지는 않습니다.

하지만 "휴대폰 안에 저장됨"과 "안전함"은 같은 말이 아닙니다. 신뢰할 수 있는 보관소라면 더 어려운 질문에 답해야 합니다.

  • 누군가 비밀번호를 계속 추측하면 어떻게 되는가?
  • 백업 파일을 탈취당하면 무엇이 노출되는가?
  • 충돌, 녹화 중단, 저장 공간 부족이 발생해도 이전 데이터가 남는가?
  • 앱이 백그라운드로 이동한 뒤에도 복호화 상태가 메모리에 남는가?
  • 탈옥된 기기에서는 어떤 전제가 무너지는가?

우리의 답은 심층 방어(Defense in Depth)입니다. NIST는 사람, 기술, 운영 역량을 결합해 여러 계층에 서로 다른 장벽을 세우는 전략으로 설명합니다. Senvra에서는 이를 신뢰할 수 있는 환경, 암호화 격리, 안전한 복구 절차, 일상 사용 중 보호라는 네 계층으로 구현합니다.

Flow diagram Preparing diagram
View diagram source
flowchart TB
    A[1. 신뢰할 수 있는 환경<br/>최신 iOS, 기기 암호, 탈옥하지 않음]
    B[2. 암호화 격리<br/>독립 공간, 키, 인증된 파일]
    C[3. 안전한 절차<br/>복구, 백업, 검증, 원자적 커밋]
    D[4. 일상 사용 보호<br/>프라이버시 실드, 유휴 잠금, 빠른 닫기]
    A --> B --> C --> D
    D -. 노출 시간 축소 .-> A

어느 한 계층도 만능으로 제시하지 않습니다. 한 통제가 완벽하지 않더라도 다른 통제가 피해를 줄일 수 있다는 점이 다층 설계의 가치입니다.

첫 번째 계층: 신뢰할 수 있는 기기 환경

Senvra의 보호 모델은 지원되는 최신 iOS를 실행하고, 탈옥되지 않았으며, 기기 암호로 보호되는 iPhone을 전제로 합니다.

이 경계는 중요합니다. 탈옥은 일반 iOS 앱이 의존하는 샌드박스, 코드 서명, 프로세스 격리를 약화합니다. 운영체제 수준의 권한을 얻은 공격자는 앱의 비공개 파일을 조사하고, 실행 중인 프로세스를 계측하거나, 정상 사용을 위해 데이터가 복호화된 뒤 비밀을 가로챌 수 있습니다. 탈옥 탐지는 공격 비용을 높일 수 있지만, OWASP 역시 이러한 탐지 자체가 우회될 수 있다고 설명합니다. 완전히 침해된 운영체제에서 절대적인 안전을 약속하는 것은 정직하지 않습니다.

실질적인 기반은 단순합니다.

  1. iOS를 최신 상태로 유지합니다.
  2. 강력한 기기 암호와 Face ID를 사용합니다.
  3. 탈옥된 기기에 민감한 데이터를 보관하지 않습니다.
  4. 이미 잠금 해제된 휴대폰은 더 높은 위험 상태로 간주합니다.

Senvra 자체의 신뢰 표면도 작게 유지합니다. 보관소 콘텐츠는 기기에서 처리되고 저장됩니다. Senvra 계정, 호스팅 클라우드 보관소, 보호 콘텐츠 자동 업로드가 없습니다. 프로덕션 보관소 작업에는 네트워크 클라이언트, WebView, 로컬 네트워크 선언 또는 백그라운드 네트워크 권한이 필요하지 않습니다. 사용자가 Support를 요청할 때만 시스템 브라우저로 넘기며, 사용자가 명시적으로 내보낸 사본은 선택한 대상의 관리 범위로 이동합니다.

로컬 우선 구조가 침해를 불가능하게 만들지는 않습니다. 대신 공격자, 운영자 또는 한 번의 데이터 유출이 일괄 수집할 수 있는 중앙 Senvra 보관소 자체를 제거합니다.

두 번째 계층: 공간, 키, 파일의 격리

Senvra에서 암호화는 마케팅 배지가 아니라 역할이 분리된 키 계층입니다.

각 비공개 공간에는 무작위 256비트 마스터 키, 고유한 비밀번호 솔트, 암호화 ID가 있습니다. 비밀번호는 PBKDF2-HMAC-SHA256으로 처리되며 현재 프로덕션 매개변수는 600,000회 반복입니다. 파생 키는 모든 파일을 직접 암호화하는 대신 공간 마스터 키를 여는 데 사용됩니다.

각 보호 항목은 AES-256-GCM 인증 암호화로 저장됩니다. 인증은 내용을 숨길 뿐 아니라 변조도 감지합니다. 미디어 청크, 메타데이터, 썸네일, 키 엔벌로프, 소유 공간과 객체 ID가 인증 데이터로 묶입니다. 암호화된 구성 요소를 다른 문맥으로 옮겨도 그곳에서 유효한 데이터가 되지 않습니다.

Flow diagram Preparing diagram
View diagram source
flowchart LR
    P[공간 비밀번호] --> K[PBKDF2-HMAC-SHA256<br/>600,000회 + 고유 솔트]
    R[32바이트 액세스 키] --> H[HKDF-SHA256<br/>독립된 복구 도메인]
    K --> M[래핑된 256비트 공간 마스터 키]
    H --> M
    M --> I[독립적인 항목 키 엔벌로프]
    I --> G[AES-256-GCM 미디어 청크]
    I --> T[인증된 메타데이터와 썸네일]

하나의 비밀번호, 하나의 공간, 목록 없음

많은 보관소는 존재하는 컨테이너를 먼저 보여 주고 사용자가 하나를 선택한 뒤 비밀번호를 입력하게 합니다. 그러나 선택 화면 자체가 정보를 노출합니다. 내용은 보이지 않더라도 비공개 공간의 존재, 개수, 이름을 주변 사람이 알 수 있습니다.

Senvra는 이 흐름을 반대로 설계했습니다. 앱은 일반 Everyday 공간에서 시작하고 비공개 공간은 탐색 가능한 목록에 나타나지 않습니다. 사용자는 하나의 중립적인 입구만 보며, 입력한 비밀번호에 해당하는 공간으로 바로 이동합니다. 서로 다른 비밀번호는 서로 다른 공간을 열고 이름, 표지, 실제 개수를 먼저 노출하지 않습니다. 어깨너머 관찰, 일시적인 확인, 잠금 해제된 휴대폰을 잠깐 건네는 상황에서 다른 공간이 존재한다는 시각적 단서를 줄입니다.

이는 단순히 화면을 숨기는 기능이 아닙니다. 저장 카탈로그는 네 개의 고정 디렉터리 슬롯을 사용하고, 사용하지 않는 위치를 패딩 설명자와 파일로 채워 외형만으로 실제 공간 수를 직접 알기 어렵게 합니다. 잠금 해제 시 Senvra는 실제 비밀번호 공간을 검사하고 일치 항목을 찾자마자 반환하지 않고 동일한 수준의 파생 및 은폐 작업을 마칩니다. 잘못된 시도도 일관되게 처리되며, 세 번 실패할 때마다 대기 시간이 1분, 5분, 30분, 1시간, 24시간으로 증가합니다.

이 설계가 줄이는 것은 인터페이스와 카탈로그 메타데이터 노출입니다. "숨겨져 있으니 암호화되었다"는 뜻이 아니며, 탈옥된 기기나 전문 포렌식 분석에서 완전한 부인 가능성을 약속하지도 않습니다. 실제 콘텐츠 보호는 독립 키, 인증 암호화, 신뢰할 수 있는 기기 환경이 담당합니다.

동일한 키 계층은 항목도 서로 격리합니다. 큰 동영상은 제한된 청크 단위로 인증되며, 한 항목의 손상이 관련 없는 파일까지 신뢰하거나 폐기할 이유가 되지 않습니다. Security Center는 라이브러리를 내보내지 않고도 보호 파일을 인증하고 무결성 문제를 찾을 수 있습니다.

iOS 보호 역시 이 계층의 일부입니다. 민감한 디렉터리는 Complete File Protection을 사용하고, 기기 결합 래핑 재료는 WhenUnlockedThisDeviceOnly Keychain에 저장합니다. Senvra는 앱 수준 암호화를 더하지만, 기반 플랫폼이 중요하지 않다고 주장하지 않습니다.

세 번째 계층: 복구와 실패 과정까지 안전하게

기밀성만 있고 복구할 수 없다면 완전한 데이터 안전이 아닙니다. 사람은 비밀번호를 잊고, 기기는 고장 나며, 저장 공간은 가득 차고, 프로세스는 예상치 못하게 종료됩니다. Senvra는 이를 예외가 아니라 설계 입력으로 취급합니다.

서버 재설정이 아닌 사용자 소유 액세스 키

각 비공개 공간에는 무작위 32바이트 액세스 키를 둘 수 있습니다. 이 키는 접근 복구와 비밀번호 재설정에 사용할 수 있고, 현재 키를 확인한 뒤 교체할 수도 있습니다. Senvra에는 서버 측 비밀번호 재설정 백도어가 없습니다.

책임 경계도 명확합니다. 비밀번호와 액세스 키를 모두 잃으면 Senvra도 공간을 복호화할 수 없습니다. 액세스 키는 휴대폰 밖의 신뢰할 수 있는 위치에 보관해야 합니다.

백업에는 서로 독립된 두 자격 증명이 필요

현재 V3 휴대용 백업은 이중 자격 증명을 사용합니다.

  • 비공개 공간 백업에는 공간 액세스 키와 별도의 백업 비밀번호가 필요합니다.
  • 공개 공간 백업에는 새로 생성한 무작위 백업 키와 별도의 백업 비밀번호가 필요합니다.

백업 비밀번호는 PBKDF2-HMAC-SHA256 600,000회로 처리됩니다. 자격 증명 키와 비밀번호 파생 재료는 도메인이 분리된 HKDF로 결합됩니다. 결합 키는 무작위 아카이브 키를 인증하고 여는 데만 사용됩니다. 아카이브 본문은 시퀀스와 레코드 유형까지 인증 데이터에 결합한 독립 AES-256-GCM 프레임으로 기록됩니다.

백업 파일만, 백업 비밀번호만, 저장된 키만 가지고는 열 수 없습니다.

Flow diagram Preparing diagram
View diagram source
flowchart TB
    A[액세스 키 또는 생성된 백업 키] --> C[도메인이 분리된 키 결합]
    B[백업 비밀번호<br/>PBKDF2-HMAC-SHA256] --> C
    C --> D[무작위 아카이브 키 인증 및 언래핑]
    D --> E[AES-256-GCM으로 제한된 프레임 암호화]
    E --> F[태그, 바이트 수, 항목 다이제스트, 매니페스트 검증]
    F --> G[완전한 .senvrabackup 원자적 게시]
    F -. 실패 .-> X[거부하고 미완료 출력 삭제]

V3 외부 헤더에는 공간 이름, 항목 이름, 원본 식별자, 썸네일, 스코프 세부 정보를 두지 않습니다. 인증 프레임, 바이트 수, 항목 다이제스트, 매니페스트 다이제스트, 최종 종료 마커가 모두 일치해야 백업을 허용합니다. 가져오기는 대상 공간과 스코프가 맞는지 확인하고 출처를 기록해 같은 항목이 조용히 중복되는 것도 방지합니다.

기본 보관소는 일반 Apple 기기 백업에서 제외됩니다. Apple 복구 대상이 될 수 있는 것은 완전하고 강하게 암호화되며 익명 이름을 가진 복구 컨테이너뿐입니다. 사용자는 암호화 백업을 Files 등 자신이 관리하는 위치에 직접 저장할 수도 있습니다.

Senvra는 내용을 가져오지 않고도 백업을 Verify할 수 있습니다. 중요한 변경 뒤에 검증하고 정기적으로 복구 훈련을 실행하는 것을 권장합니다. 검증하지 않은 백업은 증거가 아니라 기대일 뿐입니다.

녹화는 마지막이 아니라 단계별로 보호하고 커밋

긴 평문 동영상을 먼저 쓰고 마지막에 암호화하면 큰 위험 구간이 생깁니다. Senvra는 녹화 세그먼트가 도착할 때 보호 데이터로 기록합니다.

녹화를 시작하기 전에 보호된 저널을 만들고 마무리 용량을 예약합니다. 수락된 각 세그먼트는 암호화되고 영구 저장소에 동기화된 뒤, 원자적으로 갱신되는 저널에 기록됩니다. 세그먼트 구조, 바이트 수, SHA-256 다이제스트가 일치해야 최종 메타데이터를 커밋하고, 검증이 끝나야 보류 디렉터리를 정식 항목 위치로 옮깁니다.

앱이 중단되면 이미 커밋된 보호 세그먼트를 다음 실행에서 발견하고 복구할 수 있습니다. 갑작스러운 전원 차단 시 하드웨어나 OS 버퍼에 남아 있던 마지막 프레임까지 항상 보존된다는 뜻은 아닙니다. 이미 암호화되고 영구 기록된 유효한 세그먼트를 장애 때문에 모두 버리지 않는다는 뜻입니다.

다른 중요한 쓰기도 같은 트랜잭션 패턴을 사용합니다. 보류 위치에 쓰고, 검증하고, 동기화한 뒤, 원자적으로 게시합니다. 미완료 작업을 완료된 데이터처럼 보여 주지 않습니다.

중요한 접근은 검증 가능한 흔적을 남김

공간 열기와 주요 민감 작업은 암호화된 추가 전용 활동 체인에 기록됩니다. 각 이벤트는 이전 이벤트와 연결되며, 독립 Keychain 앵커가 체인의 잘림, 교체, 이전 버전으로의 롤백을 감지하는 데 도움을 줍니다.

이는 실시간 침입 알림이 아니며 누가 작업했는지 입증하지도 않습니다. 대신 소유자가 중요한 접근을 확인하고 기록의 내부 일관성을 검증할 수 있는 로컬 흔적을 제공합니다.

네 번째 계층: 사람이 잊기 쉬운 순간 보호

많은 개인정보 노출은 인증에 성공한 뒤 발생합니다. 앱 전환, 전화 수신, 책상 위에 둔 휴대폰, 화면 녹화, 또는 단순한 닫기 잊음이 원인입니다. 이런 순간에 작동하려면 보안이 충분히 사용하기 쉬워야 합니다.

Senvra는 앱 수명 주기 변화를 보안 이벤트로 처리합니다.

  • 앱이 비활성화되면 프라이버시 실드가 민감한 내용을 덮고 임시 평문을 지웁니다.
  • 백그라운드로 이동하면 현재 비공개 공간을 닫고 메모리의 잠금 해제 상태를 지웁니다.
  • 기기 잠금은 보호 접근을 닫고 민감한 작업을 중단합니다.
  • 화면 캡처가 감지되면 실드를 표시하고 안전한 전환 뒤에만 콘텐츠를 다시 보여 줍니다.
  • 유휴 잠금은 30초, 1분, 2분, 5분, 15분 중에서 선택할 수 있습니다.
  • 빠른 닫기 버튼으로 즉시 일반 공간으로 돌아가며, 선택적으로 Shake to Close도 사용할 수 있습니다.
  • 앱이 비활성화되면 가져오기, 내보내기, 백업, 무결성 검사, 로컬 인덱싱 같은 장시간 작업을 취소하거나 가립니다.

iOS가 스크린샷 촬영을 알리면 Senvra도 반응하지만 한계는 분명합니다. 운영체제가 이미 저장하거나 동기화한 이미지를 iOS 앱이 확실하게 삭제할 수는 없습니다. Senvra는 보호 콘텐츠를 닫고 잠금 해제 상태를 지우지만, 이미 촬영된 이미지를 되돌린다고 주장하지 않습니다.

Face ID나 제스처는 편의 기능이며 공간의 독립 비밀번호와 복구 자격 증명에 종속됩니다. 편의 기능이 유일한 복구 경로가 되지는 않습니다.

이 모델이 주장하지 않는 것

Senvra는 다음을 주장하지 않습니다.

  • 탈옥되었거나 운영체제가 완전히 침해된 환경에서의 절대적 보호
  • 이미 잠금 해제된 휴대폰을 가진 사람이 콘텐츠를 절대 볼 수 없다는 보장
  • iOS가 저장한 스크린샷을 항상 회수할 수 있다는 보장
  • 사용자가 내보낸 평문 사본을 대상 위치에서도 통제한다는 주장
  • 원격 삭제, 자동 클라우드 동기화, 서버 지원 비밀번호 복구
  • 아직 수행되지 않은 독립적인 제3자 보안 인증

기기와 사용 가능한 모든 백업을 함께 잃은 경우의 데이터 손실도 막을 수 없습니다. 암호화, 무결성, 복구는 관련되어 있지만 서로를 대체하지는 않습니다.

실용적인 설정 체크리스트

  1. iOS를 최신으로 유지하고 기기를 탈옥하지 않습니다.
  2. 강력한 기기 암호와 Face ID를 사용합니다.
  3. 공간마다 고유한 비밀번호를 사용합니다. Senvra는 최소 12자, 16자 이상을 권장합니다.
  4. 액세스 키를 Senvra 외부와 같은 휴대폰 이외의 위치에도 보관합니다.
  5. 별도의 비밀번호로 암호화 백업을 만들고, 백업 파일과 필요한 두 자격 증명을 적절히 분리된 신뢰 위치에 보관합니다.
  6. 중요한 라이브러리 변경 뒤 Verify를 실행하고 정기적으로 복구 훈련을 합니다.
  7. 사용할 수 있는 가장 짧은 유휴 잠금 시간과 확실히 실행할 수 있는 빠른 닫기 방법을 선택합니다.
  8. 내보낸 평문 사본은 더 이상 보관소의 관리 범위가 아님을 기억합니다.

Senvra를 이렇게 만든 이유

우리는 개인정보 보호가 다른 회사의 서버로 개인 미디어를 업로드하거나, 자기 데이터에 계속 접근하기 위해 영구히 비용을 내거나, 하나의 잠금 화면만 믿는 것을 의미해서는 안 된다고 생각했습니다. Senvra는 일회성 구매이며 광고와 구독이 없습니다. 데이터 소유권과 복구 능력이 데이터 보유자에게 남아 있어야 하므로 핵심 보관소는 오프라인에서 작동합니다.

결과는 "절대 뚫리지 않는다"는 주장이 아닙니다. 신뢰할 수 있는 플랫폼, 독립된 암호 도메인, 실패를 고려한 복구, 노출을 빠르게 끝내는 상호작용이라는 명확한 장벽의 집합입니다. "휴대폰 안에서 안전하다"는 말은 신뢰할 대상이 더 적고, 한계가 솔직하며, 필요하기 전에 검증할 수 있는 복구 경로가 있다는 뜻이어야 합니다.

참고 자료

MonoWare에서

Senvra에는 이 노트의 더 많은 맥락이 있습니다.

제품 사이트를 열거나 Senvra로 필터된 노트를 계속 읽으세요.

뉴스레터

개인정보와 제품 엔지니어링 노트를 가끔 보내드립니다.