Máquina Da Marca De Dados De Fenton`s


  Share  
|


Fenton criou uma máquina abstrata chamada a máquina da marca de dados para estudar a manipulação de fluxos implícitos no tempo de execução. Cada um variável nesta máquina teve uma classe associada da segurança, ou o Tag. Fenton incluiu também um Tag para o contador de programa (PC).

O inclusion do PC permitiu que Fenton tratasse fluxos implícitos como fluxos explícitos, porque as filiais são meramente atribuições ao PC. Definiu a semântica da máquina da marca de dados. Na seguinte discussão, a faixa clara significa que a instrução não está executada, push(x, x) significa empurrar o x variável e sua classe da segurança x na pilha do programa, e pop(x, x) meios estalar o valor e a classe superiores da segurança fora da pilha do programa e atribui-los a x e a x, respectivamente.

Fenton definiu cinco instruções. Os relacionamentos entre a execução das instruções e as classes das variáveis são como segue.

  1. A instrução do incremento

    x: = x + 1  

    é equivalente a

    se PC < = x então x: = x + 1; faixa 
    clara outra  

  2. A instrução condicional

    se x = 0 então n goto x outro: = x 1  

    é equivalente a

    se x = 0 então {push(PC, PC); PC = lub(PC, 
    x); PC: = n; } mais {se PC < = x então {x: = 
    x 1; } faixa clara outra}  

    Isto ramifica, e empurra o PC e sua classe da segurança na pilha do programa. (como é costume, o PC é incrementado de modo que quando for estalado, seguir da instrução se a indicação for executada.) Isto captura o PC que contem a informação de x (especificamente, esse x é 0) ao seguir o goto.

  3. O retorno

    retorno  

    é equivalente a

    pop(PC, PC);  

    Isto retorna o controle à indicação que segue o último se indicação. Porque o fluxo do controle chegaria nesta indicação, o PC contem não mais por muito tempo a informação sobre x, e a classe velha pode ser restaurada.

  4. A instrução de filial

    se ' x = 0 então n goto x outro: = x 1  

    é equivalente a

    se x = 0 então {se x < = PC então {PC: = 
    n; } faixa clara outra} mais {se PC < = x então {x: = 
    x 1; } faixa clara outra}  

    Isto ramifica sem conservar o PC na pilha. Se a filial ocorrer, o PC está em uma classe mais elevada da segurança do que a variável condicional x, assim que adicionar a informação de x ao PC não muda a classe da segurança do PC.

  5. A instrução da parada

    parada  

    é equivalente a

    se a pilha do programa vazia parar então a 
    execução  

    A pilha do programa que está vazia assegura-se de que o usuário não possa obter a informação olhando a pilha do programa depois que o programa parou (para o exemplo, para determinar qual se a indicação for feita exame por último).

EXEMPLO: Considere o seguinte programa, em que x contem inicialmente 0 ou 1.

1. se x = 0 então 4 goto x outro: = x 1 2. 
se z = 0 então 6 goto z outro: = parada 3. 4 de z 1. 
z: = z + 1 5. retornos 6. y: = y + 1 7. 
retornos  

Este programa copíam o valor de x ao y. supõem o esse x = 1 inicialmente. A seguinte tabela mostra os índices da memória, da classe da segurança do PC em cada etapa, e da verificação correspondente da certificação.

x y z PC PC pilha verificação da certificação
1 0 0 1 Baixo
0 0 0 2 Baixo Baixo < = x
0 0 0 6 x (3, baixo)
0 1 0 7 x (3, baixo) PC < = y
0 1 0 3 Baixo

A máquina de Fenton segura erros ignorando os. Suponha isso, no programa acima, y < = x. Então na quinta etapa, a verificação da certificação falha (porque PC = x). Assim, a atribuição é saltada, e na extremidade y = 0 não obstante o valor de x. Mas se a máquina relatar erros, a mensagem de erro que informa o usuário da falha da verificação da certificação significa que o programa tentou executar etapa 6. Poderia fazer assim somente se tinha feito exame da filial em etapa 2, significar esse z = 0. Se z = 0, então a filial outra da indicação 1 não poderia ter sido feito exame, significado esse x = 0 inicialmente.

Para impedir este tipo de dedução, a máquina de Fenton continua executando na cara dos erros, mas ignora a indicação que causaria a violação. Isto satisf às exigências. Abortar o programa, ou criar uma exceção visível ao usuário, fariam com também que a informação fluísse de encontro à política.

O problema com relatório dos erros é que um usuário com afastamento mais baixo do que a informação que causa o erro pode deduzir a informação de saber que houve um erro. Se o erro for entrado tal maneira que as entradas no registro, e a ação de registrar, são visíveis somente àquelas que têm o afastamento adequado, a seguir nenhuma violação da política ocorre. Mas se o afastamento do usuário for suficientemente elevado, a seguir o usuário pode ver o erro sem uma violação da política. Assim, o erro pode ser registrado para o administrador de sistema (ou o outro usuário apropriado), mesmo se não pode ser indicado ao usuário que está funcionando o programa. Os comentários similares aplicam-se a toda a ação da exceção, tal como a terminação anormal.

este é um artigo adicionado por Fred Promover


Share  

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