Conceptual, uma potencialidade é como a fileira de uma matriz do controle de acesso. Cada assunto associou com ela um jogo dos pares, com cada par que contem um objeto e um jogo das direitas. O assunto associado com esta lista pode alcançar o objeto nomeado em algumas das maneiras indicadas pelas direitas nomeadas. Mais formalmente:
Deixe O ser o jogo dos objetos, e R o jogo das direitas, de um sistema. Uma lista c da potencialidade é um jogo dos pares c = {(o, r): o incluído em O, em r incluídos em R}. Deixe o tampão ser uma função que determine a lista c da potencialidade associada com um assunto particular s. A interpretação do cap(s) da lista da potencialidade = {(oi, ri): 1 < = i < = n} é que s sujeito pode alcançar o oi se usando para a direita no ri.
Nós abreviamos da "a lista potencialidade" como a C-Lista.
As potencialidades encapsulate a identidade do objeto. Quando um processo apresenta uma potencialidade em nome de um usuário, o sistema operando-se examina a potencialidade para determinar o objeto e o acesso a que o processo é intitulado. Isto reflete como os capabiliies para a gerência da memória trabalham; a posição do objeto na memória encapsulated na potencialidade. Sem uma potencialidade, o processo não pode nomear o objeto em uma maneira que lhe dê o acesso desejado.
| EXEMPLO: Para abrir uma lima de UNIX, um processo dá o nome da lima à semente. A semente obtem o número do inode da lima resolvendo o nome com a hierarquia da lima. Uma vez que o inode é obtido, o sistema determina se o acesso pedido for concedido usando as permissões do controle de acesso. Se o acesso for concedido, o sistema operando-se retorna uma potencialidade chamada um descriptor de lima. A potencialidade está limitada firmemente ao objeto da lima, assim mesmo se a lima é suprimida e uma lima nova com o mesmo nome está criada, o descriptor de lima consulta ainda à lima precedente. |
Os "codewords" de Iliffe são similares às potencialidades. as "potencialidades" são uma maneira controlar o acesso aos objetos na memória ou armazenamento secundário. Fabry generalizou esta idéia executar dirigir-se potencialidade-baseado.
A arquitetura das potencialidades é mais interessante do que aquela de listas do controle de acesso. O Access Control List e a identidade process estão sob o controle do sistema operando-se. Na ausência das falhas, os processos do usuário podem mudá-las somente invocando os serviços de sistema operando-se. Entretanto, um processo deve identificar uma potencialidade a fim usá-la, assim que o processo deve ter algum controle sobre as potencialidades. Se o processo puder forjar uma potencialidade e então a usar, os controles de acesso falham.
Três mecanismos são usados proteger potencialidades: Tag, memória protegida, e cryptography.
Uma arquitetura etiquetada tem um jogo dos bocados associados com cada palavra da ferragem. O Tag tem dois estados: o jogo e unset. Se o Tag for ajustado, um processo ordinário pode ler mas não modificar a palavra. Se o Tag for unset, um processo ordinário pode ler e modificar a palavra. Mais mais, um processo ordinário não pode mudar o estado do Tag; o processador deve estar em uma modalidade privilegiada a fazer assim.
| EXEMPLO: O B5700 usou uma arquitetura etiquetada (embora não usou potencialidades como mecanismos da proteção). O campo do Tag consistiu em três bocados e indicou como a arquitetura devia tratar a palavra (ponteiro, descriptor, tipo, e assim por diante). |
Mais comum é usar os bocados da proteção associados com a paginação ou a segmentação. Todas as potencialidades são armazenadas em uma página (segmento) que o processo possa ler mas não alterar. Isto não requer nenhuma ferragem special-purpose à excepção daquele usado pelo esquema da gerência da memória. Mas o processo deve reference potencialidades indiretamente, geralmente através dos ponteiros, melhor que diretamente.
| EXEMPLO: O sistema do TAMPÃO não permitiu que os processos modificassem o segmento em que configuração das instruções. Armazenou também potencialidades neste segmento. Instruções e potencialidades separadas da cerca um registo. |
Uma terceira alternativa deve usar o cryptography. O objetivo dos Tag e da proteção da memória é impedir que as potencialidades estejam alteradas. Isto é akin a verificar da integridade. As somas de controle cryptographic são um outro mecanismo para verificar a integridade da informação. Cada potencialidade tem uma soma de controle cryptographic associada com ela, e a soma de controle enciphered digital usando um cryptosystem cuja a chave seja sabida ao sistema se operando.
Quando o processo apresentar uma potencialidade ao sistema se operando, os primeiros recomputes que do sistema a soma de controle cryptographic associou com a potencialidade. Então enciphers a soma de controle usando a chave cryptographic e compara-a com essa armazenada na potencialidade, ou decifra-a a soma de controle fornecida com a potencialidade e compara-a com a soma de controle computada. Se combinarem, a potencialidade é unaltered. If.not, a potencialidade é rejeitada.
| EXEMPLO: O sistema da amiba é um sistema distribuído que use potencialidades nomear objetos. Na criação, uma potencialidade que corresponde ao objeto é retornada. Para usar o objeto, o programa apresenta a potencialidade correspondente. A potencialidade codifica o nome do objeto (24 bocados), do usuário que o criaram (48 bocados), e das direitas (8 bocados) em uma quantidade 128-bit. Inicialmente, todas as direitas são giradas sobre. Os últimos 48 bocados são usados como um campo da verificação. Este é um número aleatório selecionado no tempo da criação. (porque a potencialidade é dada ao proprietário do objeto, o proprietário pode livremente modificar as direitas sem perigo.) O número é armazenado em uma tabela que corresponde ao usuário que criou o objeto, assim que sempre que a potencialidade é apresentada a esse usuário, verifica que o número aleatório está correto. Um atacante necessitaria saber o número aleatório a fim poder forjar uma potencialidade. Entretanto, como notas de Tanenbaum, o sistema é vulnerável se uma potencialidade for divulgada. |
A abilidade de copí potencialidades implica a abilidade de dar direitas. Para impedir que os processos dêem indiscriminately direitas ausentes, uma bandeira da cópia é associada com as potencialidades. Um processo não pode copí uma potencialidade a um outro processo a menos que a bandeira da cópia for ajustada. Se o processo copí a potencialidade, a bandeira da cópia pode ser desligada (na discreção do processo ou da semente).
EXEMPLO: A amiba usa um esquema interessante. Não controla direitas de copi. Entretanto, os usos a que aquelas direitas copí podem ser postos seja restrito. Suponha desejos matt do usuário para permitir que o holly do usuário leia um objeto que possui. Passa sua potencialidade para esse objeto ao usuário e pede uma potencialidade restrita para a leitura. O usuário cría uma potencialidade nova para o objeto mas com somente a direita lida girada sobre. O campo das direitas é agora todos os 0 à exceção do bocado lido, que é um 1. Isto é xor'ed com a verificação aleatória e a entrada a uma função cryptographic da mistura. A saída é o número aleatório novo para esta potencialidade. A potencialidade restrita é passada então para trás a matt, que a dá ao holly. Quando o holly usa a potencialidade, o usuário anota que ao menos um bocado no campo das direitas é 0. Faz exame do campo das direitas, ele dos xor com o número aleatório da potencialidade original (armazenada em suas tabelas), e hashes o resultado. Se a mistura resultante combinar o número aleatório na potencialidade, a potencialidade é válida; se não, não é. |
O amplification é o aumento dos privilégios. A idéia da programação modular, e especial de tipos de dados abstratos, requer que as direitas que um processo tem sobre um objeto estejam amplificadas.
Para compreender porque, considere o seguinte tipo de dados abstrato para um contador.
contador do módulo; ctr increment(var da entrada do procedimento: inteiro); comece o ctr: = ctr + 1; extremidade; getval(ctr da entrada da função: inteiro); comece getval: = ctr; extremidade; ctr clear(var da entrada do procedimento: inteiro); comece o ctr: = 0; extremidade; extremidade.
Suponha que x está declarado para ser um contador. As réguas de tipos de dados abstratos concedem que objeto a ser alcançado somente pelo módulo contrário. Assim, inicialmente a potencialidade para x conteria a direita invocar o módulo contrário somente. Mas quando o objeto é passado ao módulo contrário, o processo deve agora poder ler e escrever a esse objeto. Daqui, a potencialidade deve ser amplificada temporariamente quando o contador do módulo for ativo.
| EXEMPLO: O HYDRA seminal do sistema usou moldes do amplification amplificar direitas de uns processos. É associado com cada procedimento no módulo um molde que adicione direitas às potencialidades como necessitadas. Para o exemplo, o molde para o procedimento getval adicionaria direitas lidas quando o procedimento era ativo. O molde para o procedimento do incremento adicionaria lido e escreveria direitas. |
| EXEMPLO: O sistema do iAPX 432 de Intel executa um mecanismo similar na ferragem. Seus do "descriptors acesso" correspondem às potencialidades. Três bocados na potencialidade controlam várias funções do sistema. Um do amplification destes controles dos bocados das direitas. Quando um tipo de dados abstrato módulo é construído, os bocados da permissão do tipo controle objetam (que define o tipo de dados) estão ajustados às permissões que o procedimento necessita. Quando o procedimento é chamado, o sistema verifica o bocado do amplification. Se for ajustado, as direitas no tipo objeto do controle são or'ed com as direitas no descriptor do objeto que está sendo passado. Esta combinação define as direitas disponíveis ao procedimento. |
Em um sistema da potencialidade, revogar o acesso a um objeto requer que todas as potencialidades que concedem o acesso a esse objeto estejam revogadas. Conceptual, cada processo podia ser verificado, e as potencialidades ser suprimido. O custo de tal operação seria inaceitável, entretanto, assim que os métodos alternativos são usados.
O mecanismo o mais simples é ação indireta. Defina um ou mais tabela global do objeto. Neste esquema, cada objeto tem uma entrada correspondente em uma tabela. As potencialidades não nomeiam o objeto diretamente; nomeiam a entrada na tabela que corresponde ao objeto.
Este esquema tem diversas vantagens. Primeiramente, para revogar potencialidades, a entrada na tabela global do objeto invalidated. Todas as referências obterão uma entrada inválida da tabela e serão rejeitadas então. Em segundo, se somente algumas das potencialidades deverem ser revogadas, o objeto pode ter entradas múltiplas, cada uma que correspondem a um jogo diferente das direitas ou um grupo diferente dos usuários.
| EXEMPLO: Usos da amiba essencialmente este esquema. Para revogar uma potencialidade, o proprietário do objeto pede que a mudança do usuário o número aleatório e emite uma potencialidade nova. Isto invalidates todas as potencialidades existentes. |
Um mecanismo alternativo da revogação usa o tipo de dados abstrato gerentes. É incluído com cada tipo de dados abstrato um procedimento da revogação. Quando o acesso deve ser revogado, o tipo gerente simpy disallows uns acessos mais adicionais pelo assunto cujas as direitas estão sendo revogadas. Isto não afeta métodos alternativos de alcançar os objetos subjacentes os tipos de dados abstratos. Para o exemplo, alcance a uma lima pode ser revogado, mas esta técnica não obstruiria o acesso aos segmentos subjacentes através de um tipo alternativo gerente. O sistema SCP3 usou esta técnica.
Duas perguntas underlie o uso de controles de acesso:
Dado um assunto, que objetos pode alcançar, e como?
Dado um objeto, que assuntos podem alcançá-lo, e como?
Na teoria, as listas ou as potencialidades do controle de acesso podem responder a estas perguntas. Para a primeira pergunta, as potencialidades são as mais simples; lista justa os elementos da C-Lista associada do assunto. Para a segunda pergunta, ACLs são os mais simples; lista justa os elementos do Access Control List do objeto. Em um sistema de ACL-based, responder à primeira pergunta requer todos os objetos ser feito a varredura. O sistema extrai todas as entradas do ACL associadas com o assunto na pergunta. Em um sistema potencialidade-baseado, responder à segunda pergunta requer todos os assuntos ser feito a varredura. O sistema extrai todas as potencialidades associadas com o objeto na pergunta.
Karger e Herbert speculate que a diferença prática em responder à segunda pergunta é a razão mais listas do controle de acesso do uso dos sistemas do que potencialidades. Esta pergunta é feita mais frequentemente do que o primeiro. Porque o foco da resposta do incident desloca de "quem alcançou o objeto" para incluir "que outro fêz esse acesso sujeito," os sistemas potencialidade-baseados podem tornar-se mais comuns.
Online: 284 users browsing the articles directory
![]() . |