Fenton `s Data Mark Machine


  Share  
|


Fenton maakte een abstracte machine die de Data Mark Machine te bestuderen behandeling van impliciete stromen tijdens uitvoering. Elke variabele in deze machine had een bijbehorende veiligheid klasse, of tag. Fenton ook een tag voor het programma counter (PC).

De opname van de PC toegestaan Fenton te impliciete stromen als expliciete stromen te behandelen, omdat de takken zijn slechts opdrachten op de pc. Hij definieerde de semantiek van de Data Mark Machine. In de volgende bespreking, sla betekent dat de instructie niet is uitgevoerd, push (x, x) betekent om aan te dringen de variabele x en de beveiliging ervan klasse x het programma op stapel, en pop (x, x) middelen om de hoogste waarde en pop veiligheid klasse uit het programma stack en deze toewijzen aan x en x, respectievelijk.

Fenton gedefinieerd vijf instructies. De relaties tussen de uitvoering van de instructies en de klassen van de variabelen zijn als volgt.

  1. De aanwas instructie

    x: = x + 1 

    is gelijk aan

    als PC <= x dan x: = x + 1; anders overslaan 

  2. De voorwaardelijke instructie

    als x = 0 then goto n else x: = x 1 

    is gelijk aan

    als x = 0 dan (push (PC, PC); PC = lub (PC, x); PC: = n;) else (if PC <= x dan (x: = x 1;)) else overslaan 

    Deze takken, en duwt de PC en zijn veiligheid klasse op het programma stack. (Zoals gebruikelijk, de PC is zo verhoogd dat wanneer het is uitgeklapt, de instructie na de if-statement wordt uitgevoerd.) Deze vangt de PC met informatie van x (in het bijzonder, dat x 0), terwijl na de goto.

  3. Het rendement

    terug 

    is gelijk aan

    pop (PC, PC); 

    Dit geeft de controle op de verklaring na de laatste if-statement. Omdat de stroom van de controle zou zijn aangekomen bij deze verklaring, de PC niet meer bevat informatie over x, en de oude klasse kan worden hersteld.

  4. De tak instructie

    Als 'x = 0 then goto n else x: = x 1 

    is gelijk aan

    als x = 0 dan (if x <= PC dan (PC: = n;) else overslaan) else (if PC <= x dan (x: = x 1;)) else overslaan 

    Deze takken zonder de PC op de stack. Als de tak optreedt, de PC is in een hogere klasse dan de veiligheid van de voorwaardelijke variabele x, dus het toevoegen van informatie van x naar de PC heeft geen invloed op de veiligheid van de PC klas.

  5. De instructie halt

    halt 

    is gelijk aan

    als programma stapel leeg dan halt uitvoering 

    Het programma stapel leeg is zorgt ervoor dat de gebruiker niet kan informatie te verkrijgen door te kijken naar het programma stapel nadat het programma is stopgezet (bijvoorbeeld om vast te stellen die, als verklaring voor de laatste keer genomen).

Voorbeeld: Neem het volgende programma, waarin x aanvankelijk bevat 0 of 1.

1. als x = 0 then goto 4 else x: = x 1 2. als z = 0 then goto 6 anders z: = z 1 3. stoppen 4. z: = z + 1 5. terug 6. y: = y + 1 7. terug 

Dit programma kopieert de waarde van x naar y. Stel dat x = 1 in eerste instantie. De volgende tabel toont de inhoud van het geheugen, de veiligheid klasse van de PC bij elke stap, en de bijbehorende certificering controleren.

x y z PC PC stack certificering controleren
1 0 0 1 Laag  
0 0 0 2 Laag Laag <= x
0 0 0 6 x (3, Low)  
0 1 0 7 x (3, Low) PC <= y
0 1 0 3 Laag  

Machine Fenton's handvatten fouten door het negeren van hen. Stel dat in het programma hierboven, y <= x. Toen op de vijfde stap, de certificering controleren mislukt (omdat PC = x). Dus de opdracht is overgeslagen, en aan het einde y = 0, ongeacht de waarde van x. Maar als de machine verslagen fouten, de foutmelding het informeren van de gebruiker van de mislukking van de certificering controleren betekent dat het programma heeft geprobeerd naar stap 6 uit te voeren. Het kon dit alleen doen als het de vestiging in stap 2 had genomen, wat betekent dat z = 0. Als z = 0, dan is de else tak van de verklaring van 1 kon niet zijn genomen, wat betekent dat x = 0 aanvankelijk.

Om te voorkomen dat dit soort van aftrek, blijft machine Fenton's uitvoeren in het gezicht van fouten, maar negeert de verklaring die zou leiden tot de schending. Deze voldoet aan de eisen. Gestopt het programma, of het maken van een uitzondering zichtbaar voor de gebruiker, zou ook leiden tot informatie te stromen tegen beleid.

Het probleem met de rapportage van fouten is dat een gebruiker met lagere klaring dan de informatie die de fout veroorzaakt kan de informatie afleiden uit de wetenschap dat er een fout is geweest. Als de fout is ingelogd op een zodanige wijze dat de vermeldingen in het logboek, en de actie van houtkap, alleen zichtbaar zijn voor degenen die voldoende ruimte, dan is geen schending van het beleid plaatsvindt. Maar als de goedkeuring van de gebruiker voldoende hoog is, dan kan de gebruiker zien de fout zonder een schending van het beleid. Zo kan de fout zijn aangemeld voor de systeembeheerder (of een andere passende gebruiker), zelfs als het niet kan worden weergegeven aan de gebruiker die het programma draait. Soortgelijke opmerkingen gelden voor elke uitzondering actie, zoals abnormale beëindiging.

een artikel afkomstig van Fred Foster


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions