Esempio di implementazione di Bell-LaPadula

5

Attualmente sto studiando il modello Bell-LaPadula e ho bisogno di fare un'implementazione come esempio.

Capisco come funziona il modello, ma ho difficoltà ad implementarlo in un linguaggio di programmazione (ad esempio Java). Considero di avere le seguenti classificazioni:

  • Limitato,
  • Riservato,
  • Segreto,
  • Top Secret

e le seguenti categorie:

  • Tenente,
  • Colonnello,
  • Capitano,
  • Tenente generale,
  • Generale.

Come rappresento il reticolo?

    
posta user1019710 05.11.2011 - 14:11
fonte

3 risposte

8

Sospetto che tu sia un po 'confuso su come funziona Bell-Lapadula, e in particolare su come funzionano le categorie in Bell-Lapadula.

  • Le classificazioni sono necessariamente ordinate. Nel tuo esempio, abbiamo Limitato < Riservato < Segreto < Segretissimo. Fin qui, tutto bene.

  • Le categorie sono, in generale, non ordinate. Spesso sono un set, senza ordini tra loro. Sono usati per la compartimentazione e sono ortogonali alla classificazione. Un compartimento viene utilizzato per limitare ulteriormente la diffusione a un gruppo di individui con necessità di conoscenza. Esempi di compartimenti (categorie) potrebbero essere GAMMA (intercettazione delle comunicazioni sovietiche), RUFF (immagini ottenute via satellite) o somesuch. Ad esempio, l'insieme di categorie potrebbe essere {GAMMA, RUFF}, senza ordini impliciti tra GAMMA e RUFF.

Un documento potrebbe essere timbrato, ad es. Top Secret GAMMA RUFF. Per consentire a qualcuno di leggere questo documento, è necessario sia l'autorizzazione Top Secret, sia la necessità di essere autorizzati ad accedere al materiale nel compartimento GAMMA e ad accedere al materiale nel compartimento RUFF. In generale, per leggere alcuni documenti, la tua autorizzazione deve essere almeno pari alla classificazione e devi essere membro di ogni compartimento (categoria) con il quale il documento è etichettato.

Così, in pratica, i compartimenti non sarebbero mai truppa come tenente. Il tuo esempio non ha senso.

Con questo background, ogni documento / elemento di dati è etichettato come segue:

  • Ha una classificazione.

  • Ha una serie di categorie (compartimenti).

Puoi rappresentare la classificazione come suggerisce @Jeff Ferland. Per rappresentare l'insieme di categorie, devi modificare il suggerimento di @ Jeff e memorizzare una serie di categorie.

La parte più interessante non è la rappresentazione delle etichette; la parte più interessante è capire come confrontare due etichette. Se un documento ha l'etichetta L e una persona ha l'etichetta L ', dovrebbe essere permesso alla persona di leggere il documento? Per verificare di aver compreso il modello Bell-Lapadula, ti suggerisco di codificare questo controllo, ad esempio. Non ho intenzione di dirti come si fa. Stai chiedendo dei compiti, quindi dovresti farlo tu stesso: sarà una buona esperienza di apprendimento per te.

    
risposta data 07.11.2011 - 08:22
fonte
6
[Restricted, Confidential, Secret, Top Secret] => [0, 1, 2, 3] //constants
[Lieutenant, Colonel, Captain, Lieutenant General, General] => [0, 1, 2, 3, 4] //constants

Imposta questo in una classe statica simile a come funzionano Math.MAX_INT e altri ... Classification.RESTRICTED restituirà 0. Ciò semplifica la lettura dal punto di vista di un programmatore.

Il modo in cui ti rapportano le categorie dipende da te. I tuoi test di lettura / scrittura sono semplici "è questo valore più basso / più alto di user.getClassification() ( user.setClassficiation(Classification.SECRET) )" (o dovunque lo posizioni).

Le categorie non sono specificate in Bell-LaPadula, quindi dovrai suggerire come intendi usarle o capire come metterlo in relazione poiché presumo che una classifica non sia direttamente correlata ad una spazio.

    
risposta data 05.11.2011 - 16:34
fonte
4

Il modo semplice per ricordare il modello Bell-LaPadula è: Nessuna lettura, nessuna annotazione.

Una classificazione è l'etichetta e controlla se il soggetto (persona) può leggere l'oggetto (documento, file, ecc.). Per questo esempio ignorerò i compartimenti.

Consente di creare quattro persone: Alice, Bob, Charlie, Diana ed Eve. Ora diamo a ciascuno un laebl: Alice è riservata, Bob è limitato, Charlie è confidenziale, Diana è segreta, Eva è il segreto. Ogni persona crea un documento e quando crea un documento il documento ottiene la stessa etichetta della persona che lo ha creato. Alice crea il documento A, Bob crea il documento B, Charlie crea il documento C, Diana crea il documento D e Eva crea il documento E.

Ora puoi creare una semplice tabella che mostra cosa succede quando qualcuno prova a leggere un documento.

Per la lettura:

        | Doc A | Doc B | Doc C | Doc D | Doc E |
-------------------------------------------------
Alice   | allow | deny  | deny  | deny  | deny  |
Bob     | allow | allow | deny  | deny  | deny  | 
Charlie | allow | allow | allow | deny  | deny  | 
Diana   | allow | allow | allow | allow | deny  | 
Eve     | allow | allow | allow | allow | allow | 
    
risposta data 07.11.2011 - 07:56
fonte