본문으로 건너뛰기

Biba 무결성 모델: 하위 읽기 금지, 상위 쓰기 금지

Biba 모델이란 무엇인가요?​

Biba 모델(1975년)은 무결성을 강제합니다: 주체와 객체는 무결성 수준을 가집니다. 규칙: 하위 읽기 금지(더 낮은 무결성의 데이터를 읽지 않음), 상위 쓰기 금지(더 높은 무결성의 데이터에 쓰지 않음). 따라서 높은 무결성의 데이터가 더 낮은 무결성의 소스에 의해 손상될 수 없습니다.

모델​

[request_definition]
r = sub, sub_level, obj, obj_level, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = (r.act == "read" && r.sub_level <= r.obj_level) || (r.act == "write" && r.sub_level >= r.obj_level)

정책​

일반적으로 p 규칙은 없으며, matcher가 요청 수준에서 Biba를 구현합니다:

  • 하위 읽기 금지(단순 무결성 속성): 주체는 더 낮은 무결성 수준의 객체를 읽을 수 없습니다.
  • 상위 쓰기 금지(별표 무결성 속성): 주체는 더 높은 무결성 수준의 객체에 쓸 수 없습니다.

핵심 원칙​

Biba의 "상위 읽기, 하위 쓰기" 접근 방식은 Bell-LaPadula의 "하위 읽기, 상위 쓰기" 모델을 반전시킵니다. 이는 다음을 보장합니다:

  1. 데이터 무결성 보호: 더 낮은 무결성의 소스로부터 높은 무결성 데이터의 손상을 방지합니다.
  2. 제어된 정보 흐름: 쓰기가 높은 무결성 수준에서 낮은 무결성 수준으로만 흐르도록 제한합니다.
  3. 신뢰 보존: 각 무결성 수준에서 데이터의 신뢰성을 유지합니다.

예시​

요청 예시​

alice, 3, data1, 1, read # alice (level 3) reads data1 (level 1) - DENIED (No Read Down)
bob, 2, data2, 2, read # bob (level 2) reads data2 (level 2) - ALLOWED
charlie, 1, data1, 1, read # charlie (level 1) reads data1 (level 1) - ALLOWED
bob, 2, data3, 3, read # bob (level 2) reads data3 (level 3) - ALLOWED
charlie, 1, data2, 2, read # charlie (level 1) reads data2 (level 2) - ALLOWED

alice, 3, data3, 3, write # alice (level 3) writes data3 (level 3) - ALLOWED
bob, 2, data3, 3, write # bob (level 2) writes data3 (level 3) - DENIED (No Write Up)
charlie, 1, data2, 2, write # charlie (level 1) writes data2 (level 2) - DENIED (No Write Up)
alice, 3, data1, 1, write # alice (level 3) writes data1 (level 1) - ALLOWED
bob, 2, data1, 1, write # bob (level 2) writes data1 (level 1) - ALLOWED

무결성 수준​

Biba는 무결성 수준을 정수로 표현하며, 값이 높을수록 무결성이 높음을 나타냅니다:

  • 수준 1: 낮은 무결성(공개 데이터, 사용자 생성 콘텐츠)
  • 수준 2: 중간 무결성(검증된 데이터, 신뢰할 수 있는 소스)
  • 수준 3: 높은 무결성(시스템 데이터, 관리자 콘텐츠)
  • 수준 4: 중요한 무결성(보안 정책, 시스템 구성)

사용 사례​

일반적인 Biba 모델 적용 분야:

  • 데이터 정확성이 필요한 금융 시스템
  • 의료 기록 관리
  • 데이터 무결성이 필요한 데이터베이스 시스템
  • 정보 유출 방지보다 데이터 손상 방지가 더 중요한 환경
  • 정보의 정확성과 신뢰성이 중요한 시스템

구현 참고 사항​

  • 무결성(integrity)에 중점을 둔 강제 접근 제어(MAC) 적용
  • 시스템 관리자가 데이터의 신뢰성에 따라 무결성 수준을 할당합니다
  • 접근 결정은 사용자 신원이 아닌 무결성 수준에 의존합니다
  • 제어된 읽기/쓰기 작업을 통해 데이터 손상을 방지합니다
  • Bell-LaPadula와 달리 대부분의 Biba 구현은 소수의 무결성 수준을 사용합니다

Bell-LaPadula와의 비교​

항목Bell-LaPadulaBiba
주요 초점기밀성무결성
읽기 규칙상향 읽기 금지하향 읽기 금지
쓰기 규칙하향 쓰기 금지상향 쓰기 금지
표현"하향 읽기, 상향 쓰기""상향 읽기, 하향 쓰기"

FAQ​

"하향 읽기 금지, 상향 쓰기 금지"는 무엇을 의미합니까? 주체는 자신의 무결성 수준보다 낮은 데이터를 읽을 수 없으며(하향 읽기 금지), 더 높은 무결성 수준의 데이터에 쓸 수 없습니다(상향 쓰기 금지). 두 규칙 모두 낮은 무결성의 데이터가 높은 무결성의 데이터를 오염시키는 것을 방지합니다.

Biba와 Bell-LaPadula의 차이점은 무엇입니까? Bell-LaPadula는 "상향 읽기 금지, 하향 쓰기 금지"로 기밀성을 보호하고, Biba는 거울 대칭인 규칙으로 무결성을 보호합니다. 위의 표에서 이를 비교합니다.

Casbin에 Biba 모델이 내장되어 있습니까? Casbin에는 Biba라는 이름의 내장 모델이 없습니다. 이 페이지에서처럼 무결성 수준에 대한 매처(matcher)로 작성할 수 있으며, 동일한 방식이 모든 Casbin 포팅 언어에서 작동합니다.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.