Logo

보안 및 개인 정보 보호 백서(개요)제4장

4장 인증, 권한 부여 및 접근 제어

이 장에서는 FileBolt의 ID 모델, 토큰 계층 및 액세스 제어 경계를 정의합니다. 업로드 및 다운로드에서는 단기 액세스 토큰(서버 측 세션, 조회 기반, 만료, 범위 지정)을 사용하여 암호화 텍스트 및 매니페스트 액세스를 제어합니다. 보낸 사람 관리 작업은 클라이언트에 저장된 장기 로그인 토큰을 사용합니다. 시스템은 취소를 지원해야 하며 감사 데이터는 보낸 사람에게만 표시되어야 합니다(MUST).

4.0 요약

  • 단기 액세스 토큰: 게이트 암호문/매니페스트 액세스; 서버측 세션(조회) transferId에 바인딩해야 합니다. 범위를 지정해야 합니다. 만료되어야 합니다.
  • 장기 로그인 토큰: 발신자 관리(삭제/취소/감사)에 사용됩니다. 클라이언트에 저장됩니다. 수신자가 암호문에 액세스하기 위해 사용하면 안 됩니다.
  • 키 및 인증 분리: 토큰은 암호문 액세스만 제어합니다. 암호 해독 기능은 URL 조각의 CEK에서 나옵니다(5장 참조).

4.1 아이덴티티 모델

  • 이 시스템은 발신자 관리를 위한 유료 사용자 신원 모델을 지원합니다.
  • 발신자 로그인은 일회성 매직 링크를 사용할 수 있습니다. 클라이언트는 인증에 성공한 후 오랫동안 지속되는 로그인 토큰을 저장합니다.
  • 수신자는 기본 다운로드를 위한 계정이 필요하지 않습니다(UX 문서 참조). 액세스는 링크/토큰으로 제어됩니다.

4.2 인증 모델 및 토큰 레이어

두 가지 토큰 유형이 엄격한 책임 분리와 함께 사용됩니다.

  1. 단기 액세스 토큰(세션/조회): 암호문 업로드/다운로드 및 매니페스트 읽기 transferId에 바인딩해야 합니다. 만료되어야 합니다. 작업 범위를 지정해야 합니다.
  2. 장기 로그인 토큰: 발신자 관리 작업을 위해 복호화 기능을 부여해서는 안 됩니다.

4.2.2 범위 예

  • upload_chunk: 특정 transferId에 대한 암호문 청크를 업로드합니다.
  • read_manifest: 특정 transferId에 대한 매니페스트를 읽습니다.
  • download_chunk: 특정 transferId에 대한 암호문 청크를 다운로드합니다.

4.3 업로드 승인

  • 업로드 API는 암호문을 수락하기 전에 토큰 범위와 transferId 바인딩을 검증해야 합니다.
  • 청크 업로드는 (transferId, fileId, ChunkIndex)별로 멱등적이어야 합니다.
  • 유효하지 않은 토큰 또는 불일치의 경우 시스템은 실패 시 종료되어야 합니다.

4.4 다운로드 승인

  • 매니페스트 및 암호문 액세스에는 유효하고 범위가 지정된 토큰이 필요해야 합니다. 토큰은 시간 제한이 있어야 합니다.
  • 수신자는 바인딩된 transferId 외부의 청크에 액세스하거나 다른 전송을 열거할 수 있어서는 안 됩니다.
  • 재개 가능성을 손상시키지 않고 남용 방지(7장 참조)를 위해 속도 제한을 적용할 수 있습니다.

4.5 철회 및 조기 무효화

  • 발신자는 전송을 취소할 수 있어야 합니다. 취소하면 후속 액세스에 토큰을 사용할 수 없게 만들어야 합니다.
  • 해지는 가능한 경우 암호문에 대한 정리/TTL 가속을 트리거해야 합니다(SHOULD).
  • 수신자 UX는 취소/만료 상태와 다음 단계(발신자에게 문의)를 명확하게 표시해야 합니다.

4.6 감사 및 권한 격리

  • 전송 증거(다운로드, 개수)는 기본적으로 발신자에게만 표시되어야 합니다(MUST).
  • 감사 API는 발신자 인증을 요구해야 하며 수신자 액세스 토큰으로부터 격리되어야 합니다.

4.7 로깅 및 민감한 데이터 최소화

  • 로그에는 URL 조각, CEK 또는 파생 가능한 키 자료가 포함되어서는 안 됩니다.
  • 로그는 개인 데이터를 최소화해야 하며 보안 관련 이벤트(토큰 오류, 취소, 속도 제한)에 초점을 맞춰야 합니다.
  • 오류 메시지는 실행 가능해야 하지만 비밀을 유출해서는 안 됩니다.

4.8 관련 청구 ID