모든 글

Senvra가 비밀번호를 바꿀 때 모든 파일을 다시 암호화하지 않는 이유

Senvra의 비밀번호, Space Access Key, 마스터 키 래핑, 로컬 암호화 경계를 설명합니다.

Senvra암호화프라이버시Access Key비밀번호
Senvra가 비밀번호를 바꿀 때 모든 파일을 다시 암호화하지 않는 이유

짧게 말하면, Senvra는 사용자가 입력한 비밀번호를 사진, 동영상, 파일, 노트를 직접 암호화하는 키로 쓰지 않습니다.

개인 공간이 만들어질 때 Senvra는 먼저 무작위 공간 마스터 키를 생성합니다. 비밀번호와 Space Access Key는 그 마스터 키를 여는 두 개의 독립적인 경로입니다. 보호된 콘텐츠는 공간 키와 항목 키 체계 아래에 남아 있기 때문에, 비밀번호를 바꿀 때는 비밀번호 래퍼만 교체하면 되고 이미 암호화된 모든 파일을 다시 쓸 필요가 없습니다.

Senvra의 보안 설계를 볼 때 중요한 것은 단순히 “암호화를 한다”는 사실만이 아닙니다. 키가 어떻게 분리되어 있는지, 비밀번호를 바꿀 때 실제로 무엇이 바뀌는지, 복구의 경계가 어디에 있는지가 중요합니다. 더 넓은 로컬 우선 모델은 Senvra 제품 가이드에서도 볼 수 있습니다.

비밀번호는 파일 키가 아니다

단순한 사진 보관 앱이라면 사용자 비밀번호를 너무 직접적으로 사용할 수도 있습니다. 하지만 이는 좋은 설계가 아닙니다. 사람이 기억할 수 있는 비밀번호는 일반적으로 무작위 암호화 키보다 엔트로피가 낮고, 각 파일의 장기 직접 키로 쓰기에 적합하지 않습니다.

Senvra는 다른 구조를 사용합니다.

  1. 각 개인 공간에는 무작위 256-bit 마스터 키가 생성됩니다.
  2. 입력된 비밀번호는 공간별 salt와 결합되고 PBKDF2-HMAC-SHA256으로 스트레칭됩니다. 현재 프로덕션 파라미터는 600,000회 반복을 사용합니다.
  3. 파생된 비밀번호 키는 마스터 키를 감싼 암호화 래퍼를 여는 데 사용됩니다.
  4. 잠금 해제 후 마스터 키는 암호화된 공간 정보와 항목 키 체계에 접근할 수 있게 합니다.

이 구분이 중요합니다. 비밀번호는 공간 키를 여는 권한 자료이지, 모든 암호화 객체에 복사되는 장기 파일 키가 아닙니다.

흐름도 다이어그램 준비 중

좌우로 밀어 전체 다이어그램 보기

다이어그램 원본 보기
flowchart LR
    P[입력한 비밀번호] --> KDF[PBKDF2-HMAC-SHA256 + 공간 salt]
    AK[Space Access Key] --> HKDF[HKDF-SHA256 + Access Key salt]
    KDF --> PW[비밀번호 래퍼]
    HKDF --> RW[복구 래퍼]
    PW --> MK[256-bit 공간 마스터 키]
    RW --> MK
    MK --> IK[항목 키와 암호화된 공간 상태]
    IK --> DATA[AES-256-GCM으로 보호되는 미디어, 메타데이터, 썸네일]

Space Access Key의 역할

Space Access Key는 비밀번호 힌트가 아닙니다. 해당 개인 공간을 위해 독립적으로 생성되는 무작위 복구 자료입니다. Senvra에서는 휴대폰 밖의 안전한 장소에 보관하기 쉽도록 그룹화된 16진수 텍스트로 표시됩니다.

내부적으로 Space Access Key는 비밀번호와 다른 파생 경로를 사용합니다. 같은 마스터 키를 감싸는 또 다른 암호화 래퍼를 열 수 있습니다. 이를 통해 Senvra가 서버 측 비밀번호 재설정 시스템을 운영하거나 사용자의 키를 대신 보관하지 않아도, 사용자는 직접 관리하는 복구 경로를 가질 수 있습니다.

그래서 Space Access Key는 잊어버린 비밀번호를 재설정하는 데에도 사용할 수 있습니다. 유효한 Access Key가 남아 있다면 Senvra는 복구 래퍼를 통해 공간 마스터 키를 열고, 새 비밀번호를 위한 새 래퍼를 만들 수 있습니다.

실제로 콘텐츠를 보호하는 것

공간 마스터 키는 개인 공간의 경계를 정의합니다. 개별 보호 항목은 그 경계 아래에서 다시 암호화된 키 자료를 사용합니다. 큰 미디어 파일은 제한된 크기의 청크로 나뉘고, 각 청크는 AES-256-GCM 인증 암호화로 봉인됩니다. 메타데이터와 썸네일도 평문 부가 정보로 남지 않고 보호됩니다.

인증 암호화가 중요한 이유는 바이트를 숨기는 것만으로는 충분하지 않기 때문입니다. 앱은 변조, 잘림, 청크 순서 변경, 암호문이 잘못된 문맥으로 옮겨지는 상황도 거부해야 합니다. Senvra는 보호 데이터를 원래의 공간, 항목, 메타데이터 역할 또는 청크 순서에 묶어 검증 경계를 명확히 합니다.

비밀번호 변경이 빠른 이유

개인 공간의 비밀번호를 바꿀 때 Senvra는 먼저 현재 권한으로 기존 마스터 키를 열 수 있는지 확인합니다. 그다음 새 비밀번호와 새 salt에서 새 비밀번호 래핑 키를 파생하고, 같은 마스터 키를 새 비밀번호 래퍼로 다시 봉인한 뒤 갱신된 자격 증명 정보를 커밋합니다.

암호화된 미디어 파일을 하나씩 복호화해서 다시 쓸 필요는 없습니다. 아래에 있는 공간 키와 항목 키가 바뀌지 않았기 때문입니다. 바뀌는 것은 비밀번호 래퍼이지 콘텐츠 암호화 계층이 아닙니다.

이것이 잘 설계된 많은 암호화 시스템이 key wrapping을 사용하는 실용적인 이유입니다. 사람이 사용하는 자격 증명은 교체할 수 있어야 하지만, 그때마다 모든 대용량 객체를 다시 작성할 필요는 없습니다.

이 설계가 주장하지 않는 것

이 설계는 비밀번호 교체를 실용적으로 만들고 복구를 사용자 통제 아래에 두기 위한 것입니다. 다만 모든 상황에서 완전한 안전을 보장한다는 의미는 아닙니다.

기기나 운영체제가 침해된 경우, 잠금 해제 중 비밀번호를 누군가가 본 경우, 사용자가 파일을 다른 앱으로 내보낸 경우, 또는 비밀번호와 Space Access Key를 모두 잃어버린 경우는 단순한 암호화 약속을 넘어서는 영역입니다. Senvra는 개인 공간을 위한 서버 측 복구 백도어를 보관하지 않습니다.

더 정확한 약속은 이렇습니다. 개인 콘텐츠는 로컬에서 처리되고, 독립적인 키와 인증 암호화로 보호되며, 복구는 사용자가 직접 관리하는 자격 증명에만 의존합니다.

MonoWare에서

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

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

뉴스레터

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