Aller au contenu principal

Modèle d'intégrité Biba : Pas de lecture descendante, pas d'écriture ascendante

Qu'est-ce que le modèle Biba ?​

Le modèle Biba (1975) impose l'intégrité : les sujets et les objets ont des niveaux d'intégrité. Règles : pas de lecture descendante (ne pas lire des données d'intégrité inférieure), pas d'écriture ascendante (ne pas écrire vers des données d'intégrité supérieure). Ainsi, les données de haute intégrité ne peuvent pas être corrompues par des sources d'intégrité inférieure.

Modèle​

[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)

Policy​

Habituellement pas de règles p ; le matcher implémente Biba à partir des niveaux de la requête :

  • Pas de lecture descendante (Propriété d'intégrité simple) : Les sujets ne peuvent pas lire des objets ayant un niveau d'intégrité inférieur
  • Pas d'écriture ascendante (Propriété d'intégrité étoile) : Les sujets ne peuvent pas écrire vers des objets ayant un niveau d'intégrité supérieur

Principes fondamentaux​

L'approche « lire vers le haut, écrire vers le bas » de Biba inverse le modèle Bell-LaPadula « lire vers le bas, écrire vers le haut ». Cela garantit :

  1. Protection de l'intégrité des données : Empêche la corruption des données de haute intégrité par des sources d'intégrité inférieure
  2. Flux d'information contrôlé : Limite les écritures aux flux allant uniquement des niveaux d'intégrité supérieurs vers les inférieurs
  3. Préservation de la confiance : Maintient la fiabilité des données à chaque niveau d'intégrité

Exemples​

Exemples de requêtes​

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

Niveaux d'intégrité​

Biba représente les niveaux d'intégrité comme des entiers où les valeurs plus élevées indiquent une intégrité plus grande :

  • Niveau 1 : Intégrité faible (données publiques, contenu généré par les utilisateurs)
  • Niveau 2 : Intégrité moyenne (données vérifiées, sources fiables)
  • Niveau 3 : Intégrité élevée (données système, contenu administratif)
  • Niveau 4 : Intégrité critique (politiques de sécurité, configuration du système)

Cas d'utilisation​

Applications courantes du modèle Biba :

  • Systèmes financiers nécessitant une exactitude des données
  • Gestion des dossiers médicaux
  • Systèmes de bases de données nécessitant une intégrité des données
  • Environnements où la prévention de la corruption des données prime sur la prévention de la divulgation
  • Systèmes où l'exactitude et la fiabilité de l'information sont critiques

Notes d'implémentation​

  • Impose un contrôle d'accès obligatoire (MAC) axé sur l'intégrité
  • Les administrateurs système attribuent des niveaux d'intégrité en fonction de la fiabilité des données
  • Les décisions d'accès dépendent des niveaux d'intégrité plutôt que de l'identité de l'utilisateur
  • Empêche la corruption des données grâce à des opérations de lecture/écriture contrôlées
  • Contrairement à Bell-LaPadula, la plupart des implémentations de Biba utilisent peu de niveaux d'intégrité

Comparaison avec Bell-LaPadula​

AspectBell-LaPadulaBiba
Focus principalConfidentialitéIntégrité
Règle de lectureNo Read UpNo Read Down
Règle d'écritureNo Write DownNo Write Up
Phrase"Read down, write up""Read up, write down"

FAQ​

Que signifie "no read down, no write up" ? Un sujet ne peut pas lire des données ayant un niveau d'intégrité inférieur au sien (no read down), et ne peut pas écrire dans des données ayant un niveau d'intégrité supérieur (no write up). Ces deux règles empêchent les données de faible intégrité de contaminer les données de haute intégrité.

Quelle est la différence entre Biba et Bell-LaPadula ? Bell-LaPadula protège la confidentialité avec "no read up, no write down" ; Biba protège l'intégrité avec les règles inversées. Le tableau ci-dessus les compare.

Casbin propose-t-il un modèle Biba ? Casbin ne dispose pas d'un modèle intégré nommé Biba. Vous l'écrivez comme un matcher sur les niveaux d'intégrité, comme indiqué sur cette page ; la même approche fonctionne dans tout portage de Casbin.

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