O uso das canaletas secretas compartilhou de recursos como trajetos de uma comunicação. Isto requer compartilhar do espaço ou compartilhar do tempo.
Uma canaleta secreta do armazenamento usa um atributo do recurso compartilhado. Uma canaleta secreta do sincronismo usa um relacionamento temporal ou requisitando entre acessos a um recurso compartilhado.
Uma canaleta secreta do sincronismo é definida geralmente nos termos de um pulso de disparo real-time ou de um temporizador, mas os relacionamentos temporal não usam às vezes nenhuns. Requisitar dos eventos implica um relacionamento tempo-baseado que envolva nem um pulso de disparo real-time nem um temporizador.
Uma segunda propriedade distingue entre uma canaleta secreta a que somente o remetente e o receptor tenham o acesso e uma canaleta secreta que outra tenha o acesso a também.
Uma canaleta secreta silenciosa é uma canaleta secreta que use um recurso disponível ao remetente e ao receptor somente. Uma canaleta secreta ruidosa é uma canaleta secreta que use um recurso disponível aos assuntos à excepção do remetente e do receptor, as.well.as ao remetente e o receptor.
A diferença entre estes dois tipos de canaletas encontra-se na necessidade filtrar para fora a informação estranha. Toda a informação que o receptor obtiver de uma canaleta silenciosa vem do remetente. Entretanto, em uma canaleta ruidosa, a informação do remetente é misturada com a informação sem sentido, ou o ruído, de outras entidades usando o recurso. Uma canaleta secreta ruidosa requer um protocolo minimizar esta interferência.
As propriedades chaves das canaletas secretas são existência e largura de faixa. A existência diz-nos que há uma canaleta ao longo de que a informação pode ser transmitida. A largura de faixa diz-nos como ràpidamente a informação pode ser emitida. A análise da canaleta secreta estabelece ambas as propriedades. Então as canaletas podem ser eliminadas ou suas larguras de faixa podem ser reduzidas.
As canaletas secretas requerem compartilhar. A maneira em que o recurso é compartilhado controla que os assuntos podem emitir e receber a informação usando esse recurso compartilhado. Os métodos de deteção começam com esta observação.
Porras e Kemmerer planejaram uma aproximação a representar as violações da segurança que saltam da aplicação de árvores de falha. Modelam o fluxo da informação através dos recursos compartilhados com uma árvore. Os trajetos do fluxo são identificados nesta estrutura. O analista determina se cada fluxo é legitimate ou secreto.
Uma árvore secreta do fluxo é uma respresentação tree-structured da seqüência das operações que movem a informação de um processo para outro. Consiste em cinco tipos de nós.
Os símbolos do objetivo especificam os estados que devem existir para que a informação flua. Há diversos tais estados:
Um objetivo da modificação é alcançado quando um atributo é modificado.
Um objetivo do recognition é alcançado quando uma modificação de um atributo é detectada.
Um objetivo direto do recognition é alcançado quando um assunto pode detectar a modificação de um atributo referencing o diretamente ou chamando uma função que retornos ele.
Um objetivo inferred do recognition é alcançado quando um assunto pode detectar a modificação de um atributo sem referencing o diretamente e sem chamar uma função que references o atributo diretamente. Para o exemplo, o assunto pode chamar uma função que execute uma de duas computações dependendo do valor do atributo na pergunta.
Inferred-através do objetivo é alcançado quando a informação é passada de um atributo a outros atributos usando uma operação primitiva especificada (tal como uma chamada do sistema).
Um objetivo do reconheç-novo-estado é alcançado quando um atributo que esteja modificado quando a informação estêve passada usando o é especificado pelo inferred-através do objetivo. O valor não necessita ser determinado, mas o fato que o atributo estêve modificado deve ser determinado.
Um símbolo da operação é um símbolo que represente uma operação primitiva. Os símbolos da operação podem variar entre sistemas se tiverem operações primitivas diferentes.
Um símbolo da falha indica que a informação não pode ser emitida ao longo do trajeto em que se encontra. Significa que o objetivo a que é unido não pode ser encontrado com.
E símbolo é um objetivo que seja alcançado quando ambos a seguinte preensão para todas as crianças:
Se a criança for um objetivo, a seguir o objetivo está alcançado.
A criança é uma operação.
Ou símbolo é um objetivo que seja alcançado quando qualquer uma das seguintes preensões para algumas crianças:
Se a criança for um objetivo, a seguir o objetivo está alcançado.
A criança é uma operação.
Construir a árvore é um processo three-step. Para fazer as etapas concreto, nós apresentamos um jogo simples das operações e perguntamos então se puderem criar uma canaleta secreta.
EXEMPLO: Considere um sistema de lima em que cada lima tem três atributos. Os atributos booleanos travaram e isopen são verdadeiros quando a lima é locked ou aberta, respectivamente, e é falsa de outra maneira. O terceiro atributo, inuse, é um jogo que contenha o processo ID de cada processo que tem a lima aberta. O read_access(p da função, f) é verdadeiro se o processo p ler direitas sobre a lima f, e o empty(s) é verdadeiro se o jogo s não tiver nenhum membro. Os retornos aleatórios um da função de seus argumentos escolhidos em aleatório. As seguintes operações são definidas.
(* trave a lima se não for locked e não aberta *) (* indique de outra maneira que está travada retornando falso *) procedimento Lockfile(f: lima): booleano; comece if.not f.locked e empty(f.inuse) então f.locked: = rectifique; extremidade; (* destrave a lima *) procedimento Unlockfile(f: lima); comece se f.locked então f.locked: = falso; extremidade; (* diga se a lima é locked *) função Filelocked(f: lima): booleano; comece Filelocked: = f.locked; extremidade; (* abra a lima se não for locked e *) (* o processo tem a direita ler a lima *) procedimento Openfile(f: lima); comece if.not f.locked e read_access(process_id, f) então (* adicione o processo ID ao inuse ajustado *) f.inuse = f.inuse + process_id; extremidade; (* se o processo puder ler a lima, a palavra se *) (* a lima está aberta, se não retorna um valor em aleatório *) função Fileopened(f: lima): booleano; comece if.not o read_access(process_id, f) então Fileopened: = random(true, falsos); Fileopened outro: = não isempty(f.inuse); extremidade
Supondo que os processos não estão permitidos se comunicar com o um outro, o leitor é convidado tentar encontrar uma canaleta secreta do armazenamento.
A primeira etapa em construir uma árvore secreta do fluxo é determinar o que atribua (se algum) a referência primitiva das operações, modifica, e retorna.
EXEMPLO: As funções no exemplo precedente afetam atributos da lima em maneiras diferentes, como segue.
| Lockfile | Unlockfile | Filelocked | Openfile | Fileopened | |
| referência | locked, inuse | locked | locked | locked, inuse | inuse |
| modifique | locked | Ø | Ø | inuse | Ø |
| retorno | Ø | Ø | locked | Ø | inuse |
O Ø do símbolo significa que nenhum atributo está afetado na maneira especificada.
A segunda etapa começa com o objetivo de posicionar uma canaleta secreta do armazenamento que use algum atributo. O analista constrói a árvore secreta do fluxo. O tipo de objetivo controla a construção, como segue.
O objetivo topmost requer que o atributo esteja modificado e que a modificação esteja reconhecida. Daqui, tem uma criança (e símbolo), que tem por sua vez duas crianças (um símbolo do objetivo da modificação e um símbolo do objetivo do recognition).
Um objetivo da modificação requer alguma operação primitiva modificar o atributo. Daqui, tem um ou a criança, que têm um símbolo da operação da criança por a operação para todas as operações que modificam o atributo.
Um objetivo do recognition requer que um assunto diretamente reconhece ou infer uma mudança em um atributo. Tem ou o símbolo como sua criança. Ou símbolo tem duas crianças, uma um símbolo direto do objetivo do recognition e a outra um símbolo inferred do objetivo do recognition.
Um objetivo direto do recognition requer que um acesso da operação o atributo. Como o objetivo da modificação, tem um ou a criança, e essa criança tem por sua vez um símbolo da operação da criança para cada operação que retorna o atributo. Se nenhuma operação retornar o atributo, um símbolo da falha está unido.
Um objetivo inferred do recognition requer que a modificação inferred na base de uma ou de mais outra atributos. Daqui, tem uma criança, ou símbolo, que têm uma criança inferred-através do símbolo para cada operação que references um atributo e que modifica algum atributo (possivelmente mesmo que referenced).
Inferred-através do objetivo requer que o valor do atributo inferred através de alguma operação e de um recognition do estado novo do atributo resultando dessa operação. Daqui, tem uma criança (e símbolo), que tem duas crianças (um símbolo da operação que representa a operação primitiva se usou extrair o inference e um símbolo do objetivo do reconheç-novo-estado).
Um objetivo do reconheç-novo-estado requer que o valor do atributo inferred através de alguma operação e de um recognition do estado novo do atributo resultando dessa operação. O último requer um objetivo do recognition para o atributo. Assim, o nó da criança do símbolo do objetivo do reconheç-novo-estado é ou símbolo, e para cada atributo permitir o inference da modificação do atributo na pergunta, ou no símbolo tem uma criança do símbolo do objetivo do recognition.
A construção da árvore termina quando todos os trajetos através da árvore terminam em um símbolo da operação ou em um símbolo da falha. Porque a construção é recursive, o analista pode encontrar um laço na construção da árvore. Se isto acontecer, um parâmetro chamado repeat define o número das épocas que o trajeto pode ser atravessado. Isto coloca um limite superior no tamanho da árvore.
O modelo compartilhado da matriz do recurso e as árvores secretas do fluxo saltam da idéia de examinar recursos compartilhados para a modificação e as operações de referência, e ambos podem ser usados em algum ponto dentro do ciclo de vida do desenvolvimento do software. Uma vantagem de árvores secretas do fluxo sobre o modelo de SRM é que o anterior identifica seqüências explícitas das operações que fazem com que a informação flua de um processo a outro. O último identifica as canaletas melhor que as seqüências das operações. Nas comparações que envolvem operações do acesso do sistema de lima e o alvo seguro do Ada, o método secreto da árvore do fluxo identificou seqüências das operações que correspondem às canaletas secretas do armazenamento encontradas pelo método de SRM e pelo método do noninterference, assim como um não encontrado pelos outros dois.
As canaletas secretas fazem saber à informação variando o uso de recursos compartilhados. Uma maneira óbvia eliminar todas as canaletas secretas deve reque processos indicar que recursos necessitem antes que execução e forneçam estes recursos em tal maneira que somente o processo pode os alcançar. Isto inclui o runtime, e quando o runtime indicado é alcançado, o processo é terminado e os recursos são liberados. Os recursos remanescem alocados para o runtime cheio mesmo se o processo termina mais cedo. Se não, um segundo processo poderia infer a informação do sincronismo da liberação dos recursos (acesso including ao processador central). Esta estratégia executa eficazmente a idéia de Lampson da isolação total, mas é geralmente unworkable na prática.
Uma aproximação alternativa deve obscurecer a quantidade de recursos que um processo usa. Um processo de recepção não pode determinar que quantidade de uso do recurso é attributable ao remetente e que quantidade é attributable ao obfuscation. Isto pode ser feito em duas maneiras. Primeiramente, os recursos devotados a cada processo podem ser feitos uniformes. Este é um variant da isolação, porque cada processo começa a mesma quantidade de recursos e não pode dizer se um segundo processo está alcançando o recurso medindo o sincronismo ou a quantidade de recursos disponíveis. Essencialmente, o sistema elimina irregularidades significativas no alocamento e no uso de recurso. Em segundo, um sistema pode injetar o randomness no alocamento e no uso dos recursos. O objetivo é fazer à canaleta secreta ruidoso e mandar o ruído dominar a canaleta. Isto não fecha a canaleta secreta (porque existe ainda) mas rende-a inútil.
Ambas estas técnicas afetam a eficiência. Atribuindo alocamentos fixos e confinando o uso recursos waste. Reparar as fatias do tempo no sistema de KVM significa que o processador central será não utilizado (ou executará um processo inativo) quando uma outra máquina virtual poderia funcionar um processo non-inativo. Aumentar a probabilidade dos abortos no sistema seguro multilevel da base de dados abortará algumas transações que cometeriam normalmente, aumentando o número previsto das tentativas ao update a base de dados. Se o fechamento da canaleta secreta ou limitar da largura de faixa compensam adequadamente para a perda na eficiência é uma decisão de política.
Um dispositivo sabido como uma bomba é a base de diversas técnicas para derrotar as canaletas secretas.
Online: 396 users browsing the articles directory
|
|