8장 개인정보 보호 및 영지식 설계
이 장에서는 FileBolt의 영지식 모델에서 개인정보 보호의 경계를 명확히 설명합니다. 비밀 정보가 존재하는 위치(클라이언트에만 존재), 서버가 관찰하는 정보(최소한의 메타데이터), 그리고 키 자료가 유출되지 않도록 탐색/리퍼러 동작을 제어하는 방법을 다룹니다.
8.1 영지식 경계
- 암호화/복호화와 CEK 생성은 클라이언트에서만 이루어집니다.
- 서버는 암호문과 공개 매개변수만 처리하며, CEK를 알아내서는 안 됩니다(MUST NOT).
- 링크 공유가 곧 접근 권한(capability)의 경계입니다. 프래그먼트를 포함한 전체 링크를 가진 사람은 누구나 복호화할 수 있습니다.
8.2 서버가 볼 수 있는 것
- 운영 메타데이터: transferId, 청크 수, 크기, 타임스탬프, 토큰 검증 이벤트
- 활성화한 경우, 보낸 사람을 위한 최소한의 전달 확인 정보(다운로드 횟수/상태)
- 로그나 분석 데이터에 프래그먼트/CEK를 포함해서는 안 되며(MUST NOT), 꼭 필요한 경우가 아니라면 원본 파일 이름도 저장하지 않아야 합니다.
8.3 URL 프래그먼트 및 리퍼러 처리
- CEK 자료는 반드시(MUST) URL 프래그먼트(
#)에 두어야 하며, 프래그먼트는 HTTP 요청에서 서버로 전송되지 않습니다. - 페이지는 URL이 제3자에게 유출되지 않도록 엄격한 리퍼러 정책을 사용하는 것이 좋습니다(SHOULD).
- 클라이언트는 우발적인 유출을 줄이기 위해 프래그먼트를 파싱한 뒤 주소 표시줄을 비울 수 있습니다(MAY, UX에 따라 다름).
8.4 보낸 사람 감사 정보의 프라이버시 경계(받는 사람에게 표시되지 않음)
- 전송에 대한 감사/분석 데이터는 기본적으로 보낸 사람에게만 표시됩니다.
- 받는 사람 페이지는 보낸 사람 전용 분석 엔드포인트나 토큰을 노출해서는 안 됩니다(MUST NOT).
8.5 사용자 모범 사례
- 공유 링크를 공개된 장소에 붙여넣지 마세요. 전체 링크는 접근 권한(capability) 그 자체로 취급하세요.
- 침해되었을 가능성이 있는 기기나 신뢰할 수 없는 확장 프로그램이 설치된 환경에서는 링크를 열지 마세요.
- 링크를 비밀로 유지하는 것 이상의 접근 제어가 필요하다면 비밀번호나 제한 기능을 사용하세요.
8.6 관련 클레임 ID
- 공식 매핑은 부록: 클레임 ID를 참조하세요.