VIII - Sistemas Operacionais - Conceitos e Mecanismos

62
Sistemas Operacionais: Conceitos e Mecanismos VIII - Aspectos de Segurança Prof. Carlos Alberto Maziero DAInf UTFPR http:  // dainf.ct.utfpr.edu.br  / maziero 2 de junho de 2013 Este texto está licenciado sob a Licença  Attribution-NonCommercial-ShareAlike 3.0 Unported da  Creative Commons (CC). Em resumo, você deve creditar a obra d a forma especicada pelo autor ou licenciante (mas não de maneira que sugira que estes concedem qualquer aval a você ou ao seu uso da obra). Você não pode usar esta obra para ns comerciais. Se você alterar, transformar ou criar com base nesta obra, você poderá distribuir a obra resultante apenas sob a mesma licença, ou sob uma licença similar à presente. Para ver uma cópia desta licença, visite  http://creativec ommons.org/licen ses/by-nc-sa/3.0/ . Este texto foi produzido usando exclusivamente software livre: Sistema Operacional  GNU  / Linux (distri-  buições  Fedora e Ubuntu), compilador de texto L A T E X 2 ε , gerenciador de referências  BibTeX , editor gráco Inkscape, criadores de grácos  GNUPlot e GraphViz e processador PS  / PDF GhostScript, entre outros.

Transcript of VIII - Sistemas Operacionais - Conceitos e Mecanismos

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    Sistemas Operacionais: Conceitos e Mecanismos

    VIII - Aspectos de Segurana

    Prof. Carlos Alberto MazieroDAInf UTFPR

    http://dainf.ct.utfpr.edu.br/maziero

    2 de junho de 2013

    Este texto est licenciado sob a LicenaAttribution-NonCommercial-ShareAlike 3.0 Unportedda CreativeCommons(CC). Em resumo, voc deve creditar a obra da forma especificada pelo autor ou licenciante (masno de maneira que sugira que estes concedem qualquer aval a voc ou ao seu uso da obra). Voc nopode usar esta obra para fins comerciais. Se voc alterar, transformar ou criar com base nesta obra, vocpoder distribuir a obra resultante apenas sob a mesma licena, ou sob uma licena similar presente.Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/3.0/.

    Este texto foi produzido usando exclusivamente software livre: Sistema OperacionalGNU/Linux(distri-

    buiesFedoraeUbuntu), compilador de textoLATEX 2, gerenciador de refernciasBibTeX, editor grficoInkscape, criadores de grficosGNUPloteGraphVize processador PS/PDFGhostScript, entre outros.

    http://creativecommons.org/licenses/by-nc-sa/3.0/http://creativecommons.org/licenses/by-nc-sa/3.0/http://creativecommons.org/licenses/by-nc-sa/3.0/
  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : SUMRIO

    Sumrio

    1 Introduo 4

    2 Conceitos bsicos 42.1 Propriedades e princpios de segurana . . . . . . . . . . . . . . . . . . . 52.2 Ameaas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Vulnerabilidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Ataques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5 Malwares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Infraestrutura de segurana . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3 Fundamentos de criptografia 14

    3.1 Cifragem e decifragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 Criptografia simtrica e assimtrica. . . . . . . . . . . . . . . . . . . . . . 153.3 Resumo criptogrfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Assinatura digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.5 Certificado de chave pblica. . . . . . . . . . . . . . . . . . . . . . . . . . 20

    4 Autenticao 224.1 Usurios e grupos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.2 Tcnicas de autenticao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3 Senhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    4.4 Senhas descartveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.5 Tcnicas biomtricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.6 Desafio-resposta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.7 Certificados de autenticao . . . . . . . . . . . . . . . . . . . . . . . . . . 284.8 Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.9 Infra-estruturas de autenticao. . . . . . . . . . . . . . . . . . . . . . . . 31

    5 Controle de acesso 335.1 Polticas, modelos e mecanismos de controle de acesso . . . . . . . . . . 335.2 Polticas discricionrias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.2.1 Matriz de controle de acesso . . . . . . . . . . . . . . . . . . . . . 35

    5.2.2 Tabela de autorizaes . . . . . . . . . . . . . . . . . . . . . . . . . 375.2.3 Listas de controle de acesso . . . . . . . . . . . . . . . . . . . . . . 375.2.4 Listas de capacidades . . . . . . . . . . . . . . . . . . . . . . . . . 39

    5.3 Polticas obrigatrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.3.1 Modelo de Bell-LaPadula . . . . . . . . . . . . . . . . . . . . . . . 405.3.2 Modelo de Biba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.3.3 Categorias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    5.4 Polticas baseadas em domnios e tipos. . . . . . . . . . . . . . . . . . . . 425.5 Polticas baseadas em papis . . . . . . . . . . . . . . . . . . . . . . . . . 435.6 Mecanismos de controle de acesso . . . . . . . . . . . . . . . . . . . . . . 45

    5.6.1 Infra-estrutura bsica. . . . . . . . . . . . . . . . . . . . . . . . . . 455.6.2 Controle de acesso em UNIX . . . . . . . . . . . . . . . . . . . . . 46

    2

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : SUMRIO

    5.6.3 Controle de acesso em Windows . . . . . . . . . . . . . . . . . . . 485.6.4 Outros mecanismos . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5.7 Mudana de privilgios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 Auditoria 54

    6.1 Coleta de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546.2 Anlise de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576.3 Auditoria preventiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    3

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Introduo

    Resumo

    Este mdulo trata dos principais aspectos de segurana envolvidos na construo

    e utilizao de um sistema operacional. Inicialmente so apresentados conceitosbsicos de segurana e criptografia; em seguida, so descritos aspectos conceituais emecanismos relacionados autenticao de usurios, controle de acesso a recursose servios, integridade e privacidade do sistema operacional, das aplicaes e dosdados armazenados. Grande parte dos tpicos de segurana apresentados nestecaptulo no so exclusivos de sistemas operacionais, mas se aplicam a sistemas decomputao em geral.

    1 Introduo

    A segurana de um sistema de computao diz respeito garantia de algumaspropriedades fundamentais associadas s informaes e recursos presentes nessesistema. Por informao, compreende-se todos os recursos disponveis no sistema,como registros de bancos de dados, arquivos, reas de memria, portas de entrada/sada,conexes de rede, configuraes, etc.

    Em Portugus, a palavra segurana abrange muitos significados distintos e porvezes conflitantes. Em Ingls, as palavras security, safety e reliability permitemdefinir mais precisamente os diversos aspectos da segurana: a palavra security serelaciona a ameaas intencionais, como intruses, ataques e roubo de informaes; apalavra safety se relaciona a problemas que possam ser causados pelo sistema aos seus

    usurios ou ao ambiente, como erros de programao que possam provocar acidentes;por fim, o termo reliability usado para indicar sistemas confiveis, construdos paratolerar erros de software, de hardware ou dos usurios [Avizienis et al., 2004]. Nestecaptulo sero considerados somente os aspectos de segurana relacionados palavrainglesa security, ou seja, a proteo contra ameaas intencionais.

    Este captulo trata dos principais aspectos de segurana envolvidos na construoe operao de um sistema operacional. A primeira parte do captulo apresentadaconceitos bsicos de segurana, como as propriedades e princpios de segurana,ameaas, vulnerabilidades e ataques tpicos em sistemas operacionais, concluindocom uma descrio da infra-estrutura de segurana tpica de um sistema operacional.

    A seguir, apresentada uma introduo criptografia. Na sequncia, so descritosaspectos conceituais e mecanismos relacionados autenticao de usurios, controlede acesso a recursos e integridade do sistema. Tambm so apresentados os principaisconceitos relativos ao registro de dados de operao para fins de auditoria. Grande partedos tpicos de segurana apresentados neste captulo no so exclusivos de sistemasoperacionais, mas se aplicam a sistemas de computao em geral.

    2 Conceitos bsicos

    Nesta seo so apresentados alguns conceitos fundamentais, importantes para oestuda da segurana de sistemas computacionais. Em particular, so enumeradas aspropriedades que caracterizam a segurana de um sistema, so definidos os principais

    4

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Propriedades e princpios de segurana

    termos em uso na rea, e so apresentados os principais elementos que compe aarquitetura de segurana de um sistema.

    2.1 Propriedades e princpios de segurana

    A segurana de um sistema de computao pode ser expressa atravs de algumaspropriedades fundamentais [Amoroso, 1994]:

    Confidencialidade: os recursos presentes no sistema s podem ser consultados porusurios devidamente autorizados a isso;

    Integridade : os recursos do sistema s podem ser modificados ou destrudos pelosusurios autorizados a efetuar tais operaes;

    Disponibilidade : os recursos devem estar disponveis para os usurios que tiveremdireito de us-los, a qualquer momento.

    Alm destas, outras propriedades importantes esto geralmente associadas segu-rana de um sistema:

    Autenticidade : todas as entidades do sistema so autnticas ou genunas; em outraspalavras, os dados associados a essas entidades so verdadeiros e correspondems informaes do mundo real que elas representam, como as identidades dosusurios, a origem dos dados de um arquivo, etc.;

    Irretratabilidade : Todas as aes realizadas no sistema so conhecidas e no podemser escondidas ou negadas por seus autores; esta propriedade tambm conhecidacomoirrefutabilidadeouno-repudiao.

    funo do sistema operacional garantir a manuteno das propriedades de se-gurana para todos os recursos sob sua responsabilidade. Essas propriedades podemestar sujeitas a violaes decorrentes de erros de software ou humanos, praticadas porindivduos mal-intencionados (maliciosos), internos ou externos ao sistema.

    Alm das tcnicas usuais de engenharia de software para a produo de sistemas

    corretos, a construo de sistemas computacionais seguros pautada por uma srie deprincpios especficos, relativos tanto construo do sistema quanto ao comportamentodos usurios e dos atacantes. Alguns dos princpios mais relevantes, compilados apartir de [Saltzer and Schroeder, 1975,Lichtenstein, 1997,Pfleeger and Pfleeger, 2006],so indicados a seguir:

    Privilgio mnimo : todos os usurios e programas devem operar com o mnimopossvel de privilgios ou permisses de acesso. Dessa forma, os danos provocadospor erros ou aes maliciosas intencionais sero minimizados.

    Mediao completa : todos os acessos a recursos, tanto diretos quanto indiretos, devem

    ser verificados pelos mecanismos de segurana. Eles devem estar dispostos deforma a ser impossvel contorn-los.

    5

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Propriedades e princpios de segurana

    Default seguro : o mecanismo de segurana deve identificar claramente os acessospermitidos; caso um certo acesso no seja explicitamente permitido, ele deve ser

    negado. Este princpio impede que acessos inicialmente no-previstos no projetodo sistema sejam inadvertidamente autorizados.

    Economia de mecanismo : o projeto de um sistema de proteo deve ser pequenoe simples, para que possa ser facilmente e profundamente analisado, testado evalidado.

    Separao de privilgios : sistemas de proteo baseados em mais de um controle somais robustos, pois se o atacante conseguir burlar um dos controles, mesmo assimno ter acesso ao recurso. Um exemplo tpico o uso de mais de uma forma deautenticao para acesso ao sistema (como um carto e uma senha, nos sistemas

    bancrios).Compartilhamento mnimo : mecanismos compartilhados entre usurios so fontes

    potenciais de problemas de segurana, devido possibilidade de fluxos de infor-mao imprevistos entre usurios. Por isso, o uso de mecanismos compartilhadosdeve ser minimizado, sobretudo se envolver reas de memria compartilhadas.Por exemplo, caso uma certa funcionalidade do sistema operacional possa serimplementada como chamada ao ncleo ou como funo de biblioteca, deve-sepreferir esta ltima forma, pois envolve menos compartilhamento.

    Projeto aberto : a robustez do mecanismo de proteo no deve depender da ignorncia

    dos atacantes; ao invs disso, o projeto deve ser pblico e aberto, dependendosomente do segredo de poucos itens, como listas de senhas ou chaves criptogrficas.Um projeto aberto tambm torna possvel a avaliao por terceiros independentes,provendo confirmao adicional da segurana do mecanismo.

    Proteo adequada : cada recurso computacional deve ter um nvel de proteocoerente com seu valor intrnseco. Por exemplo, o nvel de proteo requeridoem um servidor Web de servios bancrio bem distinto daquele de um terminalpblico de acesso Internet.

    Facilidade de uso : o uso dos mecanismos de segurana deve ser fcil e intuitivo, caso

    contrrio eles sero evitados pelos usurios.

    Eficincia : os mecanismos de segurana devem ser eficientes no uso dos recursoscomputacionais, de forma a no afetar significativamente o desempenho do sistemaou as atividades de seus usurios.

    Elo mais fraco : a segurana do sistema limitada pela segurana de seu elementomais vulnervel, seja ele o sistema operacional, as aplicaes, a conexo de redeou o prprio usurio.

    Esses princpios devem pautar a construo, configurao e operao de qualquer

    sistema computacional com requisitos de segurana. A imensa maioria dos problemasde segurana dos sistemas atuais provm da no-observao desses princpios.

    6

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Ameaas

    2.2 Ameaas

    Como ameaa, pode ser considerada qualquer ao que coloque em risco as pro-priedades de segurana do sistema descritas na seo anterior. Alguns exemplos deameaas s propriedades bsicas de segurana seriam:

    Ameaas confidencialidade: um processo vasculhar as reas de memria de outrosprocessos, arquivos de outros usurios, trfego de rede nas interfaces locais oureas do ncleo do sistema, buscando dados sensveis como nmeros de carto decrdito, senhas, e-mails privados, etc.;

    Ameaas integridade: um processo alterar as senhas de outros usurios, instalarprogramas,driversou mdulos de ncleo maliciosos, visando obter o controle do

    sistema, roubar informaes ou impedir o acesso de outros usurios; Ameaas disponibilidade: um usurio alocar para si todos os recursos do sistema,

    como a memria, o processador ou o espao em disco, para impedir que outrosusurios possam utiliz-lo.

    Obviamente, para cada ameaa possvel, devem existir estruturas no sistema ope-racional que impeam sua ocorrncia, como controles de acesso s reas de memriae arquivos, quotas de uso de memria e processador, verificao de autenticidade dedriverse outros softwares, etc.

    As ameaas podem ou no se concretizar, dependendo da existncia e da correo

    dos mecanismos construdos para evit-las ou impedi-las. As ameaas podem se tornarrealidade medida em que existam vulnerabilidades que permitam sua ocorrncia.

    2.3 Vulnerabilidades

    Uma vulnerabilidade um defeito ou problema presente na especificao, im-plementao, configurao ou operao de um software ou sistema, que possa serexplorado para violar as propriedades de segurana do mesmo. Alguns exemplos devulnerabilidades so descritos a seguir:

    um erro de programao no servio de compartilhamento de arquivos, que permitaa usurios externos o acesso a outros arquivos do computador local, alm daquelescompartilhados;

    uma conta de usurio sem senha, ou com uma senha pr-definida pelo fabricante,que permita a usurios no-autorizados acessar o sistema;

    ausncia de quotas de disco, permitindo a um nico usurio alocar todo o espaoem disco para si e assim impedir os demais usurios de usar o sistema.

    A grande maioria das vulnerabilidades ocorre devido a erros de programao, como,por exemplo, no verificar a conformidade dos dados recebidos de um usurio ou da rede.Em um exemplo clssico, o processo servidor de impressolpd, usado em alguns UNIX,pode ser instrudo a imprimir um arquivo e a seguir apag-lo, o que til para imprimir

    7

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Vulnerabilidades

    arquivos temporrios. Esse processo executa com permisses administrativas poisprecisa acessar a porta de entrada/sada da impressora, o que lhe confere acesso a todos

    os arquivos do sistema. Por um erro de programao, uma verso antiga do processolpdno verificava corretamente as permisses do usurio sobre o arquivo a imprimir;assim, um usurio malicioso podia pedir a impresso (e o apagamento) de arquivos dosistema. Em outro exemplo clssico, uma verso antiga do servidor HTTP MicrosoftIIS no verificava adequadamente os pedidos dos clientes; por exemplo, um clienteque solicitasse a URL http://www.servidor.com/../../../../windows/system.ini,receberia como resultado o contedo do arquivo de sistemasystem.ini, ao invs de terseu pedido recusado.

    Uma classe especial de vulnerabilidades decorrentes de erros de programao so oschamados estouros debuffere de pilha (buffer/stack overflows). Nesse erro, o programa

    escreve em reas de memria indevidamente, com resultados imprevisveis, comomostra o exemplo a seguir e o resultado de sua execuo:

    1 #include

    2 #include

    3

    4 int i, j, buffer[20], k; // declara buffer[0] a buffer[19]

    5

    6 int main()

    7 {

    8 i = j = k = 0 ;

    9

    10 for (i = 0; i buffer-overflow

    3 i: 21

    4 j: 35005211

    5 k: 0

    Pode-se observar que os valores i = 21 e k= 0 so os previstos, mas o valor davariveljmudou misteriosamente de 0 para 35005211. Isso ocorreu porque, ao acessara posiobuffer[20], o programa extrapolou o tamanho do vetor e escreveu na reade memria sucessiva1, que pertence varivel j. Esse tipo de erro muito frequenteem linguagens como C e C++, que no verificam os limites de alocao das variveis

    1As variveis no so alocadas na memria necessariamente na ordem em que so declaradas no

    cdigo-fonte. A ordem de alocao das variveis varia com o compilador usado e depende de vriosfatores, como a arquitetura do processador, estratgias de otimizao de cdigo, etc.

    8

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Ataques

    durante a execuo. O erro de estouro de pilha similar a este, mas envolve variveisalocadas na pilha usada para o controle de execuo de funes.

    Se a rea de memria invadida pelo estouro de buffercontiver cdigo executvel,o processo pode ter erros de execuo e ser abortado. A pior situao ocorre quandoos dados a escrever nobufferso lidos do terminal ou recebidos atravs da rede: casoo atacante conhea a organizao da memria do processo, ele pode escrever inseririnstrues executveis na rea de memria invadida, mudando o comportamento doprocesso ou abortando-o. Caso obufferesteja dentro do ncleo, o que ocorre emdriverse no suporte a protocolos de rede como o TCP/IP, um estouro debufferpode travar osistema ou permitir acessos indevidos a recursos. Um bom exemplo o famosoPing ofDeath[Pfleeger and Pfleeger, 2006], no qual um pacote de rede no protocolo ICMP, comum contedo especfico, podia paralisar computadores na rede local.

    Alm dos estouros de buffer e pilha, h uma srie de outros erros de programao e deconfigurao que podem constituir vulnerabilidades, como o uso descuidado das stringsde formatao de operaes de entrada/sada em linguagens como C e C++ e condiesde disputa na manipulao de arquivos compartilhados. Uma explicao mais detalhadadesses erros e de suas implicaes pode ser encontrada em [Pfleeger and Pfleeger, 2006].

    2.4 Ataques

    Um ataque o ato de utilizar (ou explorar) uma vulnerabilidade para violar umapropriedade de segurana do sistema. De acordo com [Pfleeger and Pfleeger, 2006],existem basicamente quatro tipos de ataques, representados na Figura1:

    Interrupo : consiste em impedir o fluxo normal das informaes ou acessos; umataque disponibilidade do sistema;

    Interceptao : consiste em obter acesso indevido a um fluxo de informaes, semnecessariamente modific-las; um ataque confidencialidade;

    Modificao : consiste em modificar de forma indevida informaes ou partes dosistema, violando sua integridade;

    Fabricao : consiste em produzir informaes falsas ou introduzir mdulos ou com-

    ponentes maliciosos no sistema; um ataque autenticidade.

    Existem ataquespassivos, que visam capturar informaes confidenciais, e ataquesativos, que visam introduzir modificaes no sistema para beneficiar o atacante ouimpedir seu uso pelos usurios vlidos. Alm disso, os ataques a um sistema operacionalpodem ser locais, quando executados por usurios vlidos do sistema, ou remotos,quando so realizados atravs da rede, sem fazer uso de uma conta de usurio local. Umprograma especialmente construdo para explorar uma determinada vulnerabilidadede sistema e realizar um ataque denominadoexploit.

    A maioria dos ataques a sistemas operacionais visa aumentar o poder do atacante

    dentro do sistema, o que denominadoelevao de privilgios(privilege escalation). Essesataques geralmente exploram vulnerabilidades em programas do sistema (que executam

    9

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Ataques

    Figura 1: Tipos bsicos de ataques (inspirado em [Pfleeger and Pfleeger, 2006]).

    com mais privilgios), ou do prprio ncleo, atravs de chamadas de sistema, parareceber os privilgios do administrador.

    Por outro lado, os ataques de negao de servios (DoS Denial of Service) visamprejudicar a disponibilidade do sistema, impedindo que os usurios vlidos do sistemapossam utiliz-lo, ou seja, que o sistema execute suas funes. Esse tipo de ataque muito comum em ambientes de rede, com a inteno de impedir o acesso a servidoresWeb, DNS e de e-mail. Em um sistema operacional, ataques de negao de serviopodem ser feitos com o objetivo de consumir todos os recursos locais, como processador,memria, arquivos abertos, sockets de rede ou semforos, dificultando ou mesmoimpedindo o uso desses recursos pelos demais usurios.

    O antigo ataquefork bombdos sistemas UNIX um exemplo trivial de ataque DoSlocal: ao executar, o processo atacante se reproduz rapidamente, usando a chamada de

    sistemafork(vide cdigo a seguir). Cada processo filho continua executando o mesmocdigo do processo pai, criando novos processos filhos, e assim sucessivamente. Emconsequncia, a tabela de processos do sistema rapidamente preenchida, impedindo acriao de processos pelos demais usurios. Alm disso, o grande nmero de processossolicitando chamadas de sistema mantm o ncleo ocupado, impedindo os a execuodos demais processos.

    1 #include

    2

    3 int main()

    4 {

    5 while (1) // lao infinito

    6 fork() ; // reproduz o processo

    7 }

    10

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Malwares

    Ataques similares ao fork bomb podem ser construdos para outros recursos dosistema operacional, como memria, descritores de arquivos abertos,socketsde rede e

    espao em disco. Cabe ao sistema operacional impor limites mximos (quotas) de usode recursos para cada usurio e definir mecanismos para detectar e conter processosexcessivamente gulosos.

    Recentemente tm ganho ateno os ataques confidencialidade, que visam roubarinformaes sigilosas dos usurios. Com o aumento do uso da Internet para operaesfinanceiras, como acesso a sistemas bancrios e servios de compras online, o sistemaoperacional e os navegadores manipulam informaes sensveis, como nmeros decartes de crdito, senhas de acesso a contas bancrias e outras informaes pessoais.Programas construdos com a finalidade especfica de realizar esse tipo de ataque sodenominadosspyware.

    Deve ficar clara a distino entre ataquese incidentes de segurana. Um incidentede segurana qualquer fato intencional ou acidental que comprometa uma daspropriedades de segurana do sistema. A intruso de um sistema ou um ataque denegao de servios so considerados incidentes de segurana, assim como o vazamentoacidental de informaes confidenciais.

    2.5 Malwares

    Denomina-se genericamentemalwaretodo programa cuja inteno realizar ativi-dades ilcitas, como realizar ataques, roubar informaes ou dissimular a presena deintrusos em um sistema. Existe uma grande diversidade demalwares, destinados smais diversas finalidades [Shirey, 2000,Pfleeger and Pfleeger, 2006], como:

    Vrus : um vrus de computador um trecho de cdigo que se infiltra em programasexecutveis existentes no sistema operacional, usando-os como suporte para suaexecuo e replicao2. Quando um programa infectado executado, o vrustambm se executa, infectando outros executveis e eventualmente executandooutras aes danosas. Alguns tipos de vrus so programados usando macros deaplicaes complexas, como editores de texto, e usam os arquivos de dados dessasaplicaes como suporte. Outros tipos de vrus usam o cdigo de inicializaodos discos e outras mdias como suporte de execuo.

    Worm : ao contrrio de um vrus, um verme um programa autnomo, que sepropaga sem infectar outros programas. A maioria dos vermes se propagaexplorando vulnerabilidades nos servios de rede, que os permitam invadir einstalar-se em sistemas remotos. Alguns vermes usam o sistema de e-mail comovetor de propagao, enquanto outros usam mecanismos de auto-execuo demdias removveis (comopendrives) como mecanismo de propagao. Uma vezinstalado em um sistema, o verme pode instalarspywaresou outros programasnocivos.

    2De forma anloga, um vrus biolgico precisa de uma clula hospedeira, pois usa o material celular

    como suporte para sua existncia e replicao.

    11

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Malwares

    Trojan horse : deformaanlogaaopersonagemdamitologiagrega,umcavalodeTriacomputacional um programa com duas funcionalidades: uma funcionalidade

    lcita conhecida de seu usurio e outra ilcita, executada sem que o usurio aperceba. Muitos cavalos de Tria so usados como vetores para a instalao deoutrosmalwares. Um exemplo clssico o famosoHappy New Year 99, distribudoatravs de e-mails, que usava uma animao de fogos de artifcio como fachadapara a propagao de um verme. Para convencer o usurio a executar o cavalo deTria podem ser usadas tcnicas deengenharia social[Mitnick and Simon, 2002].

    Exploit : um programa escrito para explorar vulnerabilidades conhecidas, como provade conceito ou como parte de um ataque. Os exploitspodem estar incorporados aoutrosmalwares(como vermes etrojans) ou constiturem ferramentas autnomas,usadas em ataques manuais.

    Packet sniffer : um farejador de pacotes captura pacotes de rede do prprio compu-tador ou da rede local, analisando-os em busca de informaes sensveis comosenhas e dados bancrios. A criptografia (Seo3) resolve parcialmente esseproblema, embora umsnifferna mquina local possa capturar os dados antes quesejam cifrados, ou depois de decifrados.

    Keylogger : software dedicado a capturar e analisar as informaes digitadas pelousurio na mquina local, sem seu conhecimento. Essas informaes podem sertransferidas a um computador remoto periodicamente ou em tempo real, atravsda rede.

    Rootkit : um conjunto de programas destinado a ocultar a presena de um intrusono sistema operacional. Como princpio de funcionamento, orootkitmodificaos mecanismos do sistema operacional que mostram os processos em execuo,arquivos nos discos, portas e conexes de rede, etc., para ocultar o intruso. Osrootkitsmais simples substituem utilitrios do sistema, como ps (lista de processos),ls(arquivos),netstat(conexes de rede) e outros, por verses adulteradas queno mostrem os arquivos, processos e conexes de rede do intruso. Verses maiselaboradas derootkitssubstituem bibliotecas do sistema operacional ou modificampartes do prprio ncleo, o que torna complexa sua deteco e remoo.

    Backdoor : uma porta dos fundos um programa que facilita a entrada posteriordo atacante em um sistema j invadido. Geralmente a porta dos fundos criadaatravs um processo servidor de conexes remotas (usando SSH, telnet ou umprotocolo ad-hoc). Muitosbackdoorsso instalados a partir detrojans, vermes ourootkits.

    Deve-se ter em mente que h na mdia e na literatura muita confuso em relao nomenclatura demalwares; alm disso, muitosmalwarestm vrias funcionalidades e seencaixam em mais de uma categoria. Esta seo teve como objetivo dar uma definiotecnicamente precisa de cada categoria, sem a preocupao de mapear os exemplos reais

    nessas categorias.

    12

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Infraestrutura de segurana

    2.6 Infraestrutura de segurana

    De forma genrica, o conjunto de todos os elementos de hardware e software conside-rados crticos para a segurana de um sistema so denominadosBase ComputacionalConfivel (TCB Trusted Computing Base) ou ncleo de segurana (security kernel).Fazem parte da TCB todos os elementos do sistema cuja falha possa representar umrisco sua segurana. Os elementos tpicos de uma base de computao confivelincluem os mecanismos de proteo do hardware (tabelas de pginas/segmentos, modousurio/ncleo do processador, instrues privilegiadas, etc.) e os diversos subsistemasdo sistema operacional que visam garantir as propriedades bsicas de segurana, comoo controle de acesso aos arquivos, acesso s portas de rede, etc.

    O sistema operacional emprega vrias tcnicas complementares para garantir asegurana de um sistema operacional. Essas tcnicas esto classificadas nas seguintes

    grandes reas:

    Autenticao : conjunto de tcnicas usadas para identificar inequivocamente usuriose recursos em um sistema; podem ir de simples pares login/senhaat esquemassofisticados de biometria ou certificados criptogrficos. No processo bsico deautenticao, um usurio externo se identifica para o sistema atravs de umprocedimento de autenticao; no caso da autenticao ser bem sucedida, aberta umasesso, na qual so criados uma ou mais entidades (processos,threads,transaes, etc.) para representar aquele usurio dentro do sistema.

    Controle de acesso : tcnicas usadas para definir quais aes so permitidas e quaisso negadas no sistema; para cada usurio do sistema, devem ser definidas regrasdescrevendo as aes que este pode realizar no sistema, ou seja, que recursoseste pode acessar e sob que condies. Normalmente, essas regras so definidasatravs de umapoltica de controle de acesso, que imposta a todos os acessos que osusurios efetuam sobre os recursos do sistema.

    Auditoria : tcnicas usadas para manter um registro das atividades efetuadas nosistema, visando a contabilizao de uso dos recursos, a anlise posterior desituaes de uso indevido ou a identificao de comportamento suspeitos.

    A Figura2ilustra alguns dos conceitos vistos at agora. Nessa figura, as partesindicadas em cinza e os mecanismos utilizados para implement-las constituem a basede computao confivel do sistema.

    Sob uma tica mais ampla, a base de computao confivel de um sistema informticocompreende muitos fatores alm do sistema operacional em si. A manuteno daspropriedades de segurana depende do funcionamento correto de todos os elementosdo sistema, do hardware ao usurio final.

    O hardware fornece vrias funcionalidades essenciais para a proteo do sistema:os mecanismos de memria virtual permitem isolar o ncleo e os processos entre si; omecanismo de interrupo de software prov uma interface controlada de acesso ao

    ncleo; os nveis de execuo do processador permitem restringir as instrues e asportas de entrada sada acessveis aos diversos softwares que compem o sistema; alm

    13

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Fundamentos de criptografia

    Figura 2: Base de computao confivel de um sistema operacional.

    disso, muitos tipos de hardware permitem impedir operaes de escrita ou execuo decdigo em certas reas de memria.

    No nvel do sistema operacional surgem os processos isolados entre si, as contas deusurios, os mecanismos de autenticao e controle de acesso e os registros de auditoria.Em paralelo com o sistema operacional esto os utilitrios de segurana, como anti-vrus,verificadores de integridade, detectores de intruso, entre outros.

    As linguagens de programao tambm desempenham um papel importante nessecontexto, pois muitos problemas de segurana tm origem em erros de programao.O controle estrito de ndices em vetores, a restrio do uso de ponteiros e a limitaode escopo de nomes para variveis e funes so exemplos de aspectos importantespara a segurana de um programa. Por fim, as aplicaes tambm tm responsabilidadeem relao segurana, no sentido de ter implementaes corretas e validar todos os

    dados manipulados. Isso particularmente importante em aplicaes multi-usurios(como sistemas corporativos e sistemas Web) e processos privilegiados que recebamrequisies de usurios ou da rede (servidores de impresso, de DNS, etc.).

    3 Fundamentos de criptografia

    As tcnicas criptogrficas so extensivamente usadas na segurana de sistemas, paragarantir a confidencialidade e integridade dos dados. Alm disso, elas desempenhamum papel importante na autenticao de usurios e recursos. O termo criptografiaprovm das palavras gregaskryptos(oculto, secreto) e graphos(escrever). Assim, a

    criptografia foi criada para codificar informaes, de forma que somente as pessoasautorizadas pudessem ter acesso ao seu contedo.

    14

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Cifragem e decifragem

    Alguns conceitos fundamentais para compreender as tcnicas criptogrficas so: otexto aberto, que a mensagem ou informao a ocultar; otexto cifrado, que a informao

    codificada; ocifrador, mecanismo responsvel por cifrar/decifrar as informaes, e aschaves, necessrias para poder cifrar ou decifrar as informaes [Menezes et al., 1996].

    3.1 Cifragem e decifragem

    Uma das mais antigas tcnicas criptogrficas conhecidas o cifrador de Csar, usadopelo imperador romano Jlio Csar para se comunicar com seus generais. O algoritmousado nesse cifrador bem simples: cada caractere do texto aberto substitudo pelok-simo caractere sucessivo no alfabeto. Assim, considerandok=2, a letra A seriasubstituda pela letra C, a letra R pela T, e assim por diante. Usando esse

    algoritmo, a mensagem secreta Reunir todos os generais para o ataque seria cifradada seguinte forma:

    mensagem aberta: Reunir todos os generais para o ataquemensagem cifrada comk=1: Sfvojs upept pt hfofsbjt qbsb p bubrvfmensagem cifrada comk=2: Tgwpkt vqfqu qu igpgtcku rctc q cvcswgmensagem cifrada comk=3: Uhxqlu wrgrv rv jhqhudlv sdud r dwdtxh

    Para decifrar uma mensagem no cifrador de Csar, necessrio conhecer a mensagemcifrada e o valor de kutilizado para cifrar a mensagem, que denominado chavecriptogrfica. Caso essa chaveno seja conhecida, possvel tentar quebrar a mensagem

    cifrada testando todas as chaves possveis, o que conhecido como anlise exaustivaou de fora bruta. No caso do cifrador de Csar a anlise exaustiva trivial, pois hsomente 26 valores possveis para a chave k.

    O nmero de chaves possveis para um algoritmo de cifragem conhecido comoo seu espao de chaves. De acordo com princpios enunciados pelo criptgrafo Au-guste Kerckhoffs em 1883, o segredo de uma tcnica criptogrfica no deve residirno algoritmo em si, mas no espao de chaves que ele prov. Seguindo esses princ-pios, a criptografia moderna se baseia em algoritmos pblicos, bem avaliados pelacomunidade cientfica, para os quais o espao de chaves muito grande, tornandoinvivel qualquer anlise exaustiva. Por exemplo, o algoritmo de criptografia AES

    (Advanced Encryption Standard) adotado como padro pelo governo americano, usandochaves de 128 bits, oferece um espao de chaves com 2128 possibilidades, ou seja,340.282.366.920.938.463.463.374.607.431.768.211.456 chaves diferentes... Se pudssemosanalisar um bilho de chaves por segundo, ainda assim seriam necessrios 10 sextilhesde anos para testar todas as chaves possveis!

    No restante do texto, a operao de cifragem de um contedo xusando uma chavekser representada por {x}ke a decifragem de um contedoxusando uma chavekserrepresentada por {x}1

    k .

    3.2 Criptografia simtrica e assimtrica

    De acordo com o tipo de chave utilizada, os algoritmos de criptografia se dividemem dois grandes grupos:algoritmos simtricosealgoritmos assimtricos. Nosalgoritmos

    15

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Criptografia simtrica e assimtrica

    simtricos, a mesma chave kusada para cifrar a informao deve ser usada paradecifr-la. Essa propriedade pode ser expressa em termos matemticos:

    { { x }k}1k =x k

    =k

    O cifrador de Csar um exemplo tpico de cifrador simtrico: se usarmosk=2para cifrar um texto, teremos de usark=2 para decifr-lo. Os algoritmos simtricosmais conhecidos e usados atualmente so o DES (Data Encryption Standard) e o AES(Advanced Encryption Standard).

    Os algoritmos simtricos so muito teis para a cifragem de dados em um sistemalocal, como documentos ou arquivos em um disco rgido. Todavia, se a informaocifrada tiver de ser enviada a outro usurio, a chave criptogrfica usada ter de serinformada a ele de alguma forma segura (de forma a preservar seu segredo). A Figura3

    ilustra o funcionamento bsico de um sistema de criptografia simtrica.

    Figura 3: Criptografia simtrica.

    Por outro lado, osalgoritmos assimtricosse caracterizam pelo uso de um par dechaves complementares: umachave pblicakpe umachave privadakv. Uma informaocifrada com uso de uma chave pblica s poder ser decifrada atravs da chave privadacorrespondente, e vice-versa. Considerando um usuriou com suas chaves pblicakp(u) e privadakv(u), temos:

    { { x }kp(u)}1k = x k= kv(u)

    { { x }kv(u)}1k = x k= kp(u)

    Essas duas chaves esto fortemente relacionadas: para cada chave pblica h umanica chave privada correspondente, e vice-versa. Todavia, no possvel calcular

    16

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Criptografia simtrica e assimtrica

    uma das chaves a partir da outra. Como o prprio nome diz, geralmente as chavespblicas so amplamente conhecidas e divulgadas (por exemplo, em uma pgina Web

    ou um repositrio de chaves pblicas), enquanto as chaves privadas correspondentesso mantidas em segredo por seus proprietrios. Alguns algoritmos assimtricos bemconhecidos so o RSA (Rivest-Shamir-Adleman) e o algoritmo deDiffie-Hellman. A Figura4ilustra o funcionamento da criptografia assimtrica.

    Figura 4: Criptografia assimtrica.

    Um exemplo de uso da criptografia assimtrica mostrado na Figura5. Nele, ausuria Alice deseja enviar um documento cifrado ao usurio Beto3. Para tal, Alice

    busca a chave pblica de Beto previamente divulgada em um chaveiro pblico (quepode ser um servidor Web, por exemplo) e a usa para cifrar o documento que serenviado a Beto. Somente Beto poder decifrar esse documento, pois s ele possui achave privada correspondente chave pblica usada para cifr-lo. Outros usuriospodero at ter acesso ao documento cifrado, mas no conseguiro decifr-lo.

    A criptografia assimtrica tambm pode ser usada para identificar a autoria deum documento. Por exemplo, se Alice criar um documento e cifr-lo com sua chaveprivada, qualquer usurio que tiver acesso ao documento poder decifr-lo e l-lo, poisa chave pblica de Alice est publicamente acessvel. Todavia, o fato do documentopoder ser decifrado usando a chave pblica de Alice significa que ela a autora legtimado mesmo, pois s ela teria acesso chave privada que foi usada para cifr-lo. Essemecanismo usado na criao das assinaturas digitais(Seo3.4).

    Embora mais versteis, os algoritmos de cifragem assimtricos costumam exigirmuito mais processamento que os algoritmos simtricos equivalentes. Por isso, muitas

    3Textos em ingls habitualmente usam os nomes Alice, Bob, Carol e Dave para explicar algoritmos eprotocolos criptogrficos, em substituio s letras A, B, C e D. Neste texto usaremos a mesma abordagem,mas com nomes em portugus.

    17

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Resumo criptogrfico

    Figura 5: Exemplo de uso da criptografia assimtrica.

    vezes ambos so usados em associao. Por exemplo, os protocolos de rede seguros

    baseados em TLS (Transport Layer Security), como o SSH e HTTPS, usam criptografiaassimtrica somente durante o incio de cada conexo, para negociar uma chave simtricacomum entre os dois computadores que se comunicam. Essa chave simtrica, chamadachave de sesso, ento usada para cifrar/decifrar os dados trocados entre os doiscomputadores durante aquela conexo, sendo descartada quando a sesso encerra.

    3.3 Resumo criptogrfico

    Umresumo criptogrfico(cryptographic hash) [Menezes et al., 1996] uma funo quegera uma sequncia de bytes de tamanho pequeno e fixo (algumas dezenas ou centenas

    de bytes) a partir de um conjunto de dados de tamanho varivel aplicado como entrada.Os resumos criptogrficos so frequentemente usados para identificar unicamente umarquivo ou outra informao digital, ou para atestar sua integridade: caso o contedode um documento digital seja modificado, seu resumo tambm ser alterado.

    Em termos matemticos, os resumos criptogrficos so um tipo defuno unidirecional(one-way function). Uma funo f(x) chamada unidirecional quando seu clculo direto(y= f(x)) simples, mas o clculo de sua inversa (x= f1(y)) impossvel ou invivelem termos computacionais. Um exemplo clssico de funo unidirecional a fatoraodo produto de dois nmeros primos grandes: considere a funo f(p, q)= p q, ondep e q so inteiros primos. Calcular y = f(p, q) simples e rpido, mesmo se p e q

    18

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Assinatura digital

    forem grandes; entretanto, fatorizarypara obter de volta os primos pe qpode sercomputacionalmente invivel, se ytiver muitos dgitos4.

    Idealmente, uma funo de resumo criptogrfico deve gerar sempre a mesma sadapara a mesma entrada, e sadas diferentes para entradas diferentes. No entanto, comoo nmero de bytes do resumo pequeno, podem ocorrer colises. Uma coliso ocorrequando duas entradas distintas x e x geram o mesmo valor de resumo (hash(x) =hash(x) para x x). Obviamente, bons algoritmos de resumo buscam minimizaressa possibilidade. Outras propriedades desejveis dos resumos criptogrficos so oespalhamento, em que uma modificao em um trecho especfico dos dados de entradagera modificaes em partes diversas do resumo, e a sensibilidade, em que uma pequenamodificao nos dados de entrada pode gerar grandes mudanas no resumo.

    Os algoritmos de resumo criptogrfico mais conhecidos e utilizados atualmente

    so o MD5 e o SHA1 [Menezes et al., 1996]. No Linux, os comandosmd5sum

    esha1sum

    permitem calcular respectivamente os resumos MD5 e SHA1 de arquivos comuns:

    1 maziero:~> md5sum *

    2 62ec3f9ff87f4409925a582120a40131 header.tex

    3 0920785a312bd88668930f761de740bf main.pdf

    4 45acbba4b57317f3395c011fbd43d68d main.tex

    5 6c332adb037265a2019077e09a024d0c main.tex~

    6

    7 maziero:~> sha1sum *

    8 742c437692369ace4bf0661a8fe5741f03ecb31a header.tex

    9

    9f9f52f48b75fd2f12fa297bdd5e1b13769a3139 main.pdf10 d6973a71e5c30d0c05d762e9bc26bb073d377a0b main.tex

    11 cf1670f22910da3b9abf06821e44b4ad7efb5460 main.tex~

    3.4 Assinatura digital

    Os mecanismos de criptografia assimtrica e resumos criptogrficos previamenteapresentados permitem efetuar a assinatura digital de documentos eletrnicos. Aassinatura digital uma forma de verificar a autoria e integridade de um documento,sendo por isso o mecanismo bsico utilizado na construo dos certificados digitais,

    amplamente empregados para a autenticao de servidores na Internet.Em termos gerais, a assinatura digital de um documento um resumo digital domesmo, cifrado usando a chave privada de seu autor (ou de quem o est assinando).Sendo um documentodemitido pelo usuriou, sua assinatura digitals(d,u) definidapor

    s(d,u) = {hash(d)}kv(u)

    ondehash(x) uma funo de resumo criptogrfico conhecida, {x}kindica a cifragem dexusando uma chavekekv(u) a chave privada do usurio u. Para verificar a validade daassinatura, basta calcular novamente o resumor =hash(d) e compar-lo com o resumoobtido da assinatura, decifrada usando a chave pblica deu(r = {s}1

    kp(u)). Se ambos

    4Em 2005, um grupo de pesquisadores alemes fatorizou um inteiro com 200 dgitos, usando 80processadores Opteron calculando durante mais de de cinco meses.

    19

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Certificado de chave pblica

    forem iguais (r =r), o documento foi realmente assinado porue est ntegro, ou seja,no foi modificado desde queuo assinou [Menezes et al., 1996].

    A Figura6ilustra o processo de assinatura digital e verificao de um documento.Os passos do processo so:

    1. Alice divulga sua chave pblicakpaem um repositrio acessvel publicamente;

    2. Alice calcula o resumo digitalrdo documentoda ser assinado;

    3. Alice cifra o resumor usando sua chave privada kva, obtendo uma assinaturadigitals;

    4. A assinaturase o documento originald, em conjunto, constituem o documento

    assinado por Alice: [d, s];5. Beto obtm o documento assinado por Alice ([d, s], comd =des =sse ambos

    estiverem ntegros);

    6. Beto recalcula o resumo digital r = hash(d) do documento, usando o mesmoalgoritmo empregado por Alice;

    7. Beto obtm a chave pblica kpade Alice e a usa para decifrar a assinaturas dodocumento, obtendo um resumor (r =rsesfoi realmente cifrado com a chavekvae se s =s) ;

    8. Beto compara o resumor do documento com o resumor obtido da assinaturadigital; se ambos forem iguais (r =r), o documento foi assinado por Alice e estntegro, assim como sua assinatura.

    3.5 Certificado de chave pblica

    A identificao confivel do proprietrio de uma chave pblica fundamentalpara o funcionamento correto das tcnicas de criptografia assimtrica e de assinaturadigital. Uma chave pblica composta por uma mera sequncia de bytes que no

    permite a identificao direta de seu proprietrio. Por isso, torna-se necessria umaestrutura complementar para fazer essa identificao. A associao entre chavespblicas e seus respectivos proprietrios realizada atravs doscertificados digitais. Umcertificado digital um documento digital assinado, composto das seguintes partes[Menezes et al., 1996]:

    A chave pblica do proprietrio do certificado;

    Identidade do proprietrio do certificado (nome, endereo, e-mail, URL, nmeroIP e/ou outras informaes que permitam identific-lo unicamente)5;

    5

    Deve-se ressaltar que um certificado pode pertencer a um usurio humano, a um sistema computaci-onal ou qualquer mdulo de software que precise ser identificado de forma inequvoca.

    20

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Certificado de chave pblica

    Figura 6: Assinatura e verificao de uma assinatura digital.

    Outras informaes, como perodo de validade do certificado, algoritmos decriptografia e resumos preferidos ou suportados, etc.;

    Uma ou mais assinaturas digitais do contedo, emitidas por entidades considera-das confiveis pelos usurios dos certificados.

    Dessa forma, um certificado digital amarra uma identidade a uma chave pblica.Para verificar a validade de um certificado, basta usar as chaves pblicas das entidadesque o assinaram. Existem vrios tipos de certificados digitais com seus formatose contedos prprios, sendo os certificados PGP e X.509 aqueles mais difundidos[Mollin, 2000].

    Todo certificado deve ser assinado por alguma entidade considerada confivelpelos usurios do sistema. Essas entidades so normalmente denominadas AutoridadesCertificadoras(AC ou CA Certification Authorities). Como as chaves pblicas das ACsdevem ser usadas para verificar a validade de um certificado, surge um problema:como garantir que uma chave pblica realmente pertence a uma dada autoridadecertificadora? A soluo simples: basta criar um certificado para essa AC, assinadopor outra AC ainda mais confivel. Dessa forma, pode-se construir uma estruturahierrquica de certificao, na qual a AC de ordem mais elevada (denominada AC raiz)assina os certificados de outras ACs, e assim sucessivamente, at chegar aos certificadosdos usurios e demais entidades do sistema. Uma estrutura de certificao se chamaInfra-estrutura de Chaves Pblicas(ICP ou PKI -Public-Key Infrastructure). Em uma ICP

    convencional (hierrquica), a chave pblica da AC raiz deve ser conhecida de todos e considerada ntegra [Mollin, 2000].

    21

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Autenticao

    Figura 7: Infra-estrutura de chaves pblicas hierrquica.

    4 Autenticao

    O objetivo da autenticao consiste em identificar as diversas entidades de umsistema computacional. Atravs da autenticao, o usurio interessado em acessar osistema comprova que ele/a realmente quem afirma ser. Para tal podem ser usadasvrias tcnicas, sendo as mais relevantes apresentadas nesta seo.

    Inicialmente, a autenticao visava apenas identificar usurios, para garantir quesomente usurios devidamente credenciados teriam acesso ao sistema. Atualmente, em

    muitas circunstncias tambm necessrio o oposto, ou seja, identificar o sistema parao usurio, ou mesmo sistemas entre si. Por exemplo, quando um usurio acessa umservio bancrio via Internet, deseja ter certeza de que o sistema acessado realmenteaquele do banco desejado, e no um sistema falso, construdo para roubar seus dados

    bancrios. Outro exemplo ocorre durante a instalao de componentes de softwarecomodrivers: o sistema operacional deve assegurar-se que o software a ser instaladoprovm de uma fonte confivel e no foi corrompido por algum contedo malicioso.

    4.1 Usurios e grupos

    A autenticao geralmente o primeiro passo no acesso de um usurio a um sistemacomputacional. Caso a autenticao do usurio tenha sucesso, so criados processos

    22

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Tcnicas de autenticao

    para represent-lo dentro do sistema. Esses processos interagem com o usurio atravsda interface e executam as aes desejadas por ele dentro do sistema, ou seja, agem em

    nome do usurio. A presena de um ou mais processos agindo em nome de um usuriodentro do sistema denominada umasesso de usurio(user sessionouworking session). Asesso de usurio inicia imediatamente aps a autenticao do usurio (loginoulogon)e termina quando seu ltimo processo encerrado, na desconexo (logoutou logoff).Um sistema operacional servidor oudesktoptpico suporta vrias sesses de usuriossimultaneamente.

    A fim de permitir a implementao das tcnicas de controle de acesso e auditoria,cada processo deve ser associado a seu respectivo usurio atravs de umidentificador deusurio(UID -User IDentifier), geralmente um nmero inteiro usado como chave em umatabela de usurios cadastrados (como o arquivo/etc/passwddos sistemas UNIX). O

    identificador de usurio usado pelo sistema operacional para definir o proprietrio decada entidade e recurso conhecido: processo, arquivo, rea de memria, semforo, etc. habitual tambm classificar os usurios em grupos, comoprofessores,alunos,contabilidade,engenharia, etc. Cada grupo identificado atravs de um identificador de grupo(GID- Group IDentifier). A organizao dos grupos de usurios pode ser hierrquica ouarbitrria. O conjunto de informaes que relaciona um processo ao seu usurio e grupo geralmente denominadocredenciais do processo.

    Normalmente, somente usurios devidamente autenticados podem ter acesso aosrecursos de um sistema. Todavia, alguns recursos podem estar disponveis abertamente,como o caso de pastas de arquivos pblicas em rede e pginas em um servidorWeb pblico. Nestes casos, assume-se a existncia de um usurio fictcio convidado(guest,nobody,anonymousou outros), ao qual so associados todos os acessos externosno-autenticados e para o qual so definidas polticas de segurana especficas.

    4.2 Tcnicas de autenticao

    As tcnicas usadas para a autenticao de um usurio podem ser classificadas emtrs grandes grupos:

    SYK Something You Know (algo que voc sabe): estas tcnicas de autenticaoso baseadas em informaes conhecidas pelo usurio, como seu nome de logine

    sua senha. So consideradas tcnicas de autenticao fracas, pois a informaonecessria para a autenticao pode ser facilmente comunicada a outras pessoas,ou mesmo roubada.

    SYH Something You Have (algo que voc tem): so tcnicas que se baseiam naposse de alguma informao mais complexa, como um certificado digital ou umachave criptogrfica, ou algum dispositivo material, como um smartcard, um cartomagntico, um cdigo de barras, etc. Embora sejam mais robustas que as tcnicasSYK, estas tcnicas tambm tm seus pontos fracos, pois dispositivos materiais,como cartes, tambm podem ser roubados ou copiados.

    SYA Something You Are (algo que voc ): se baseiam em caractersticas intrinse-camente associadas ao usurio, como seus dados biomtricos: impresso digital,

    23

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Senhas

    padro da ris, timbre de voz, etc. So tcnicas mais complexas de implementar,mas so potencialmente mais robustas que as anteriores.

    Muitos sistemas implementam somente a autenticao por login/senha (SYK). Siste-mas mais recentes tm suporte a tcnicas SYH atravs desmartcardsou a tcnicas SYAusando biometria, como os sensores de impresso digital. Alguns servios de rede,como HTTP e SSH, tambm podem usar autenticao pelo endereo IP do cliente (SYA)ou atravs de certificados digitais (SYH).

    Sistemas computacionais com fortes requisitos de segurana geralmente implemen-tam mais de uma tcnica de autenticao, o que chamado de autenticao multi-fator.Por exemplo, um sistema militar pode exigir senha e reconhecimento de ris para oacesso de seus usurios, enquanto um sistema bancrio pode exigir uma senha e o cartoemitido pelo banco. Essas tcnicas tambm podem ser usadas de forma gradativa: uma

    autenticao bsica solicitada para o usurio acessar o sistema e executar servios sim-ples (como consultar o saldo de uma conta bancria); se ele solicitar aes consideradascrticas (como fazer transferncias de dinheiro para outras contas), o sistema pode exigirmais uma autenticao, usando outra tcnica.

    4.3 Senhas

    A grande maioria dos sistemas operacionais de propsito geral implementam atcnica de autenticao SYK baseada em login/senha. Na autenticao por senha, ousurio informa ao sistema seu identificador de usurio (nome delogin) e sua senha,

    que normalmente uma sequncia de caracteres memorizada por ele. O sistema entocompara a senha informada pelo usurio com a senha previamente registrada para ele:se ambas forem iguais, o acesso consentido.

    A autenticao por senha simples mas muito frgil, pois implica no armazenamentodas senhas em aberto no sistema, em um arquivo ou base de dados. Caso o arquivoou base seja exposto devido a algum erro ou descuido, as senhas dos usurios estarovisveis. Para evitar o risco de exposio indevida das senhas, so usadas funesunidirecionais para armazen-las, como os resumos criptogrficos (Seo3.3).

    A autenticao por senhas usando um resumo criptogrfico bem simples: aoregistrar a senhasde um novo usurio, o sistema calcula seu resumo (r= hash(s)), e o

    armazena. Mais tarde, quando esse usurio solicitar sua autenticao, ele informar umasenhas; o sistema ento calcular novamente seu resumor =hash(s) e ir compar-loao resumo previamente armazenado (r =r). Se ambos forem iguais, a senha informadapelo usurio considerada autntica e o acesso do usurio ao sistema permitido.Com essa estratgia, as senhas no precisam ser armazenadas em aberto no sistema,aumentando sua segurana.

    Casoumintrusotenhaacessoaosresumosdassenhasdosusurios,elenoconseguircalcular de volta as senhas originais (pois o resumo foi calculado por uma funounidirecional), mas pode tentar obter as senhas indiretamente, atravs doataque dodicionrio. Nesse ataque, o invasor usa o algoritmo de resumo para cifrar palavrasconhecidas ou combinaes delas, comparando os resumo obtidos com aqueles presentesno arquivo de senhas. Caso detecte algum resumo coincidente, ter encontrado a senhacorrespondente. O ataque do dicionrio permite encontrar senhas consideradas fracas,

    24

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Senhas descartveis

    por serem muito curtas ou baseadas em palavras conhecidas. Por isso, muitos sistemasoperacionais definem polticas rgidas para as senhas, impedindo o registro de senhas

    bvias ou muito curtas e restringindo o acesso ao repositrio dos resumos de senhas.

    4.4 Senhas descartveis

    Um problema importante relacionado autenticao por senhas reside no risco deroubo da senhas. Por ser uma informao esttica, caso uma senha seja roubada, omalfeitor poder us-la enquanto o roubo no for percebido e a senha substituda. Paraevitar esse problema, so propostas tcnicas de senhas descartveis (OTP - One-TimePasswords). Como o nome diz, uma senha descartvel s pode ser usada uma nica vez,perdendo sua validade aps esse uso. O usurio deve ento ter em mos uma lista de

    senhas pr-definidas, ou uma forma de ger-las quando necessrio. H vrias formasde se produzir e usar senhas descartveis, entre elas:

    Armazenar uma lista sequencial de senhas (ou seus resumos) no sistema e forneceressa lista ao usurio, em papel ou outro suporte. Quando uma senha for usadacom sucesso, o usurio e o sistema a eliminam de suas respectivas listas.

    Uma variante da lista de senhas conhecida como algoritmo OTP de Lam-port [Menezes et al., 1996]. Ele consiste em criar uma sequncia de senhass0, s1, s2, , sn com s0 aleatrio e si = hash(si1) i > 0, sendo hash(x) uma fun-o de resumo criptogrfico conhecida. O valor desn informado ao servidor

    previamente. Ao acessar o servidor, o cliente informa o valor desn1. O servidorpode ento comparar hash(sn1) com o valor desn previamente informado: seforem iguais, o cliente est autenticado e ambos podem descartarsn. O servidorarmazena sn1para validar a prxima autenticao, e assim sucessivamente. Umintruso que conseguir capturar uma senhasino poder us-la mais tarde, poisno conseguir calcularsi1 =hash1(si).

    Gerar senhas temporrias sob demanda, atravs de um dispositivo ou softwareexterno usado pelo cliente; as senhas temporrias podem ser geradas por umalgoritmo de resumo que combine uma senha pr-definida com a data/horriocorrente. Dessa forma, cliente e servidor podem calcular a senha temporria de

    forma independente. Como o tempo uma informao importante nesta tcnica,o dispositivo ou software gerador de senhas do cliente deve estar sincronizadocom o relgio do servidor. Dispositivos OTP como o mostrado na Figura8sofrequentemente usados em sistemas deInternet Banking.

    4.5 Tcnicas biomtricas

    A biometria (biometrics) consiste em usar caractersticas fsicas ou comportamentaisde um indivduo, como suas impresses digitais ou seu timbre de voz, para identific-lo unicamente perante o sistema. Diversas caractersticas podem ser usadas para aautenticao biomtrica; no entanto, elas devem obedecer a um conjunto de princpios

    bsicos [Jain et al., 2004]:

    25

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Tcnicas biomtricas

    Figura 8: Um dispositivo gerador de senhas descartveis.

    Universalidade: a caracterstica biomtrica deve estar presente em todos os indiv-duos que possam vir a ser autenticados;

    Singularidade(ou unicidade): dois indivduos quaisquer devem apresentar valoresdistintos para a caracterstica em questo;

    Permanncia: a caracterstica no deve mudar ao longo do tempo, ou ao menosno deve mudar de forma abrupta;

    Mensurabilidade: a caracterstica em questo deve ser facilmente mensurvel em

    termos quantitativos.

    As caractersticas biomtricas usadas em autenticao podem serfsicasoucomporta-mentais. Como caractersticas fsicas so consideradas, por exemplo, o DNA, a geometriadas mos, do rosto ou das orelhas, impresses digitais, o padro da ris (padres naparte colorida do olho) ou da retina (padres de vasos sanguneos no fundo do olho).Como caractersticas comportamentais so consideradas a assinatura, o padro de voz ea dinmica de digitao (intervalos de tempo entre teclas digitadas), por exemplo.

    Os sistemas mais populares de autenticao biomtrica atualmente so os baseadosem impresses digitais e no padro de ris. Esses sistemas so considerados confiveis,

    por apresentarem taxas de erro relativamente baixas, custo de implantao/operaobaixo e facilidade de coleta dos dados biomtricos. A Figura 9 apresenta algunsexemplosde caractersticas biomtricas empregadas nos sistemas atuais.

    Um sistema biomtrico tpico composto de um sensor, responsvel por capturardados biomtricos de uma pessoa; umextrator de caractersticas, que processa os dadosdo sensor para extrair suas caractersticas mais relevantes; umcomparador, cuja funo comparar as caractersticas extradas do indivduo sob anlise com dados previamentearmazenados, e umbanco de dadoscontendo as caractersticas biomtricas dos usuriosregistrados no sistema [Jain et al., 2004]. O sistema pode funcionar de dois modos: nomodo de autenticao, ele verifica se as caractersticas biomtricas de um indivduo(previamente identificado por algum outro mtodo, como login/senha, carto, etc.)correspondem s suas caractersticas biomtricas previamente armazenadas. Destaforma, a biometria funciona como uma autenticao complementar. No modo de

    26

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Desafio-resposta

    Figura 9: Exemplo de caractersticas biomtricas.

    identificao, o sistema biomtrico visa identificar o indivduo a quem correspondem

    as caractersticas biomtricas coletadas pelo sensor, dentre todos aqueles presentes nobanco de dados. A Figura10mostra os principais elementos de um sistema biomtricotpico.

    Figura 10: Um sistema biomtrico tpico.

    4.6 Desafio-resposta

    Em algumas situaes o uso de senhas indesejvel, pois sua exposio indevida

    pode comprometer a segurana do sistema. Um exemplo disso so os servios via rede:caso o trfego de rede possa ser capturado por um intruso, este ter acesso s senhastransmitidas entre o cliente e o servidor. Uma tcnica interessante para resolver esseproblema so os protocolos dedesafio-resposta.

    A tcnica de desafio-resposta se baseia sobre um segredospreviamente definidoentre o cliente e o servidor (ou o usurio e o sistema), que pode ser uma senha ouuma chave criptogrfica, e um algoritmo de cifragem ou resumo hash(x), tambmpreviamente definido. No incio da autenticao, o servidor escolhe um valor aleatriode o envia ao cliente, como umdesafio. O cliente recebe esse desafio, o concatena comseu segredos, calcula o resumo da concatenao e a devolve ao servidor, como resposta

    (r= hash(s + d)). O servidor executa a mesma operao de seu lado, usando o valor dosegredo armazenado localmente (s) e compara o resultado obtidor =hash(s + d) com

    27

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Certificados de autenticao

    a respostarfornecida pelo cliente. Se ambos os resultados forem iguais, os segredos soiguais (r =r s = s) e o cliente considerado autntico. A Figura11apresenta os

    passos desse algoritmo.

    Figura 11: Autenticao por desafio-resposta.A estratgia de desafio-resposta robusta, porque o segredo snunca exposto fora

    do cliente nem do servidor; alm disso, como o desafio d aleatrio e a resposta cifrada, intrusos que eventualmente conseguirem capturardourno podero utiliz-lospara se autenticar nem para descobrirs. Variantes dessa tcnica so usadas em vriosprotocolos de rede.

    4.7 Certificados de autenticao

    Uma forma cada vez mais frequente de autenticao envolve o uso de certificadosdigitais. Conforme apresentado na Seo3.5,um certificado digital um documentoassinado digitalmente, atravs de tcnicas de criptografia assimtrica e resumo cripto-grfico. Os padres de certificados PGP e X.509 definem certificados de autenticao (oude identidade), cujo objetivo identificar entidades atravs de suas chaves pblicas. Umcertificado de autenticao conforme o padro X.509 contm as seguintes informaes[Mollin, 2000]:

    Nmero de verso do padro X.509 usado no certificado;

    Chave pblica do proprietrio do certificado e indicao do algoritmo de cripto-

    grafia ao qual ela est associada e eventuais parmetros; Nmero serial nico, definido pelo emissor do certificado (quem o assinou);

    28

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Kerberos

    Identificao detalhada do proprietrio do certificado, definida de acordo comnormas do padro X.509;

    Perodo de validade do certificado (datas de incio e final de validade);

    Identificao da Autoridade Certificadora que emitiu/assinou o certificado;

    Assinatura digital do certificado e indicao do algoritmo usado na assinatura eeventuais parmetros;

    Oscertificadosdigitaissooprincipalmecanismousadoparaverificaraautenticidadede servios acessveis atravs da Internet, como bancos e comrcio eletrnico. Nessecaso, eles so usados para autenticar os sistemas para os usurios. No entanto, cada

    vez mais frequente o uso de certificados para autenticar os prprios usurios. Nessecaso, umsmartcardou um dispositivo USB contendo o certificado conectado ao sistemapara permitir a autenticao do usurio.

    4.8 Kerberos

    O sistema de autenticao Kerberos foi proposto pelo MIT nos anos 80[Neuman and Tso, 1994]. Hoje, esse sistema utilizado para centralizar a auten-ticao de rede em vrios sistemas operacionais, como Windows, Solaris, MacOS X eLinux. O sistema Kerberos se baseia na noo detickets, que so obtidos pelos clientes

    junto a um servio de autenticao e podem ser usados para acessar os demais serviosda rede. Os tickets so cifrados usando criptografia simtrica DES e tm validadelimitada, para aumentar sua segurana.

    Os principais componentes de um sistema Kerberos so o Servio de Autenticao(AS -Authentication Service), o Servio de Concesso de Tickets (TGS -Ticket GrantingService), a base de chaves, os clientes e os servios de rede que os clientes podemacessar. Juntos, o AS e o TGS constituem oCentro de Distribuio de Chaves(KDC -KeyDistribution Center). O funcionamento bsico do sistema Kerberos, ilustrado na Figura12, relativamente simples: o cliente se autentica junto ao AS (passo 1) e obtm um ticketde acesso ao servio de tickets TGS (passo 2). A seguir, solicita ao TGS um ticket deacesso ao servidor desejado (passos 3 e 4). Com esse novo ticket, ele pode se autenticar

    junto ao servidor desejado e solicitar servios (passos 5 e 6).No Kerberos, cada clientecpossui uma chave secretakcregistrada no servidor de

    autenticao AS. Da mesma forma, cada servidorstambm tem sua chaveksregistradano AS. As chaves so simtricas, usando cifragem DES, e somente so conhecidas porseus respectivos proprietrios e pelo AS. Os seguintes passos detalham o funcionamentodo Kerberos verso 5 [Neuman and Tso, 1994]:

    1. Uma mquina clientecdesejando acessar um determinado servidorsenvia umasolicitao de autenticao ao servio de autenticao (AS); essa mensagem m1contm sua identidade (c), a identidade do servio desejado (tgs), um prazo de

    validade solicitado (ts) e um nmero aleatrio (n1) que ser usado para verificar sea resposta do AS corresponde ao pedido efetuado:

    29

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Kerberos

    Figura 12: Viso geral do servio Kerberos.

    m1 =[c tgs ts n1]

    2. A resposta do AS (mensagemm2) contm duas partes: a primeira parte contma chave de sesso a ser usada na comunicao com o TGS (k

    c

    tgs) e o nmero

    aleatrion1, ambos cifrados com a chave do clientekcregistrada no AS; a segundaparte um ticket cifrado com a chave do TGS (ktgs), contendo a identidade docliente (c), o prazo de validade do ticket concedido pelo AS (tv) e uma chave desessokctgs, a ser usada na interao com o TGS:

    m2 =[{kctgs n1}kc Tctgs] ondeTctgs ={c tv k ctgs}ktgs

    O ticketTctgsfornecido pelo AS para permitir o acesso ao TGS chamado TGT(Ticket Granting Ticket), e possui um prazo de validade limitado (geralmente de

    algumas horas). Ao receberm2, o cliente tem acesso chave de sesso kctgse aoticket TGT. Todavia, esse ticket cifrado com a chave ktgse portanto somente oTGS poder abr-lo.

    3. A seguir, o cliente envia uma solicitao ao TGS (mensagemm3) para obter umticket de acesso ao servidor desejados. Essa solicitao contm a identidade docliente (c) e a data atual (t), ambos cifrados com a chave de sessokctgs, o ticketTGT recebido emm2, a identidade do servidorse um nmero aleatrion2:

    m3 =[{c t}kctgs Tctgs s n2]

    4. Aps verificar a validade do ticket TGT, o TGS devolve ao cliente uma mensagemm4contendo a chave de sessokcsa ser usada no acesso ao servidorse o nmero

    30

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Infra-estruturas de autenticao

    aleatrion2informado emm3, ambos cifrados com a chave de sessokctgs, e umticketTcscifrado, que deve ser apresentado ao servidor s:

    m4 =[{kcs n}kctgs Tcs] ondeTcs ={c tv k cs}ks

    5. O cliente usa a chave de sesso kcse o ticket Tcs para se autenticar junto aoservidor satravs da mensagemm5. Essa mensagem contm a identidade docliente (c) e a data atual (t), ambos cifrados com a chave de sesso kcs, o ticketTcsrecebido emm4e o pedido de servio ao servidor (request), que dependente daaplicao:

    m5=

    [{c t

    }kcs Tcs request]

    6. Ao receberm5, o servidorsdecifra o ticketTcspara obter a chave de sessokcsea usa para decifrar a primeira parte da mensagem e confirmar a identidade docliente. Feito isso, o servidor pode atender a solicitao e responder ao cliente,cifrando sua resposta com a chave de sesso kcs:

    m6 =[{reply}kcs]

    Enquanto o ticket de servioTcsfor vlido, o cliente pode enviar solicitaes ao

    servidor sem a necessidade de se reautenticar. Da mesma forma, enquanto o ticketTctgsfor vlido, o cliente pode solicitar tickets de acesso a outros servidores sem precisar sereautenticar. Pode-se observar que em nenhum momento as chaves de sessokctgsekcscircularam em aberto atravs da rede. Alm disso, a presena de prazos de validade paraas chaves permite minimizar os riscos de uma eventual captura da chave. Informaesmais detalhadas sobre o funcionamento do protocolo Kerberos 5 podem ser encontradasem [Neuman et al., 2005].

    4.9 Infra-estruturas de autenticao

    A autenticao um procedimento necessrio em vrios servios de um sistemacomputacional, que vo de simples sesses de terminal em modo texto a servios derede, como e-mail, bancos de dados e terminais grficos remotos. Historicamente, cadaforma de acesso ao sistema possua seus prprios mecanismos de autenticao, comsuas prprias regras e informaes. Essa situao dificultava a criao de novos servios,pois estes deveriam tambm definir seus prprios mtodos de autenticao. Alm disso,a existncia de vrios mecanismos de autenticao desconexos prejudicava a experinciado usurio e dificultava a gerncia do sistema.

    Para resolver esse problema, foram propostas infra-estruturas de autenticao (authen-tication frameworks) que unificam as tcnicas de autenticao, oferecem uma interface

    de programao homognea e usam as mesmas informaes (pareslogin/senha, dadosbiomtricos, certificados, etc.). Assim, as informaes de autenticao so coerentes

    31

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Infra-estruturas de autenticao

    entre os diversos servios, novas tcnicas de autenticao podem ser automaticamenteusadas por todos os servios e, sobretudo, a criao de novos servios simplificada.

    A viso genrica de uma infra-estrutura de autenticao apresentada na Figura13.Nela, os vrios mecanismos disponveis de autenticao so oferecidos s aplicaesatravs de uma interface de programao (API) padronizada. As principais infra-estruturas de autenticao em uso nos sistemas operacionais atuais so:

    PAM (Pluggable Authentication Modules): proposto inicialmente para o sistema Solaris,foi depois adotado em vrios outros sistema UNIX, como FreeBSD, NetBSD,MacOS X e Linux;

    XSSO (X/Open Single Sign-On): uma tentativa de extenso e padronizao do sistemaPAM, ainda pouco utilizada;

    BSD Auth : usada no sistema operacional OpenBSD; cada mtodo de autenticao implementado como um processo separado, respeitando o princpio do privilgiomnimo (vide Seo5.1);

    NSS (Name Services Switch): infra-estrutura usada em sistemas UNIX para definir asbases de dados a usar para vrios servios do sistema operacional, inclusive aautenticao;

    GSSAPI (Generic Security Services API): padro de API para acesso a servios desegurana, como autenticao, confidencialidade e integridade de dados;

    SSPI (Security Support Provider Interface): variante proprietria da GSSAPI, especficapara plataformas Windows.

    Figura 13: Estrutura genrica de uma infra-estrutura de autenticao.

    32

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Controle de acesso

    5 Controle de acesso

    Em um sistema computacional, o controle de acesso consiste em mediar cadasolicitao de acesso de um usurio autenticado a um recurso ou dado mantidopelo sistema, para determinar se aquela solicitao deve ser autorizada ou negada[Samarati and De Capitani di Vimercati, 2001]. Praticamente todos os recursos de umsistema operacional tpico esto submetidos a um controle de acesso, como arquivos,reas de memria, semforos, portas de rede, dispositivos de entrada/sada, etc. Halguns conceitos importantes para a compreenso do controle de acesso, como polticas,modelos e mecanismos. Esses conceitos sero estudados nesta seo.

    Em controle de acesso, habitual classificar as entidades de um sistema em doisgrupos: os sujeitos e os objetos. Sujeitos so todas aquelas entidades que exercemum papel ativo no sistema, como processos,threadsou transaes. Normalmente umsujeito opera em nome de um usurio, que pode ser um ser humano ou outro sistemacomputacional externo. Objetos so as entidades passivas utilizadas pelos sujeitos,como arquivos, reas de memria ou registros em um banco de dados. Em algunscasos, um sujeito pode ser visto como objeto por outro sujeito (por exemplo, quandoum sujeito deve enviar uma mensagem a outro sujeito). Tanto sujeitos quanto objetospodem ser organizados em grupos e hierarquias, para facilitar a gerncia da segurana.

    5.1 Polticas, modelos e mecanismos de controle de acesso

    Umapoltica de controle de acesso uma viso abstrata das possibilidades de acessoa recursos (objetos) pelos usurios (sujeitos) de um sistema. Essa poltica consiste

    basicamente de um conjunto de regras definindo os acessos possveis aos recursos dosistema e eventuais condies necessrias para permitir cada acesso. Por exemplo, asregras a seguir poderiam constituir parte da poltica de segurana de um sistema deinformaes mdicas:

    Mdicos podem consultar os pronturios de seus pacientes;

    Mdicos podem modificar os pronturios de seus pacientes enquanto estes estive-rem internados;

    O supervisor geral pode consultar os pronturios de todos os pacientes;

    Enfermeiros podem consultar apenas os pronturios dos pacientes de sua seo esomente durante seu perodo de turno;

    Assistentes no podem consultar pronturios;

    Pronturios de pacientes de planos de sade privados podem ser consultados peloresponsvel pelo respectivo plano de sade no hospital;

    Pacientes podem consultar seus prprios pronturios (aceitar no mximo 30

    pacientes simultneos).

    33

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Polticas, modelos e mecanismos de controle de acesso

    As regras ou definies individuais de uma poltica so denominadas autorizaes.Uma poltica de controle de acesso pode ter autorizaes baseadas em identidades

    (como sujeitos e objetos) ou em outrosatributos(como idade, sexo, tipo, preo, etc.); asautorizaes podem serindividuais(a sujeitos) oucoletivas(a grupos); tambm podemexistir autorizaespositivas(permitindo o acesso) ounegativas(negando o acesso);por fim, uma poltica pode ter autorizaes dependentes decondies externas(como otempo ou a carga do sistema). Alm da poltica de acesso aos objetos, tambm deveser definida umapoltica administrativa, que define quem pode modificar/gerenciar aspolticas vigentes no sistema [Samarati and De Capitani di Vimercati, 2001].

    O conjunto de autorizaes de uma poltica deve ser ao mesmo tempo completo,cobrindo todas as possibilidades de acesso que vierem a ocorrer no sistema, econsistente,sem regras conflitantes entre si (por exemplo, uma regra que permita um acesso e

    outra que negue esse mesmo acesso). Alm disso, toda poltica deve buscar respeitar oprincpio do privilgio mnimo[Saltzer and Schroeder, 1975], segundo o qual um usurionunca deve receber mais autorizaes que aquelas que necessita para cumprir suatarefa. A construo e validao de polticas de controle de acesso um tema complexo,que est fora do escopo deste texto, sendo melhor descrito em [di Vimercati et al., 2005,di Vimercati et al., 2007].

    As polticas de controle de acesso definem de forma abstrata como os sujeitospodem acessar os objetos do sistema. Existem muitas formas de se definir umapoltica, que podem ser classificadas em quatro grandes classes: polticasdiscricion-rias, polticasobrigatrias, polticasbaseadas em domniose polticasbaseadas em papis[Samarati and De Capitani di Vimercati, 2001]. As prximas sees apresentam commais detalhe cada uma dessas classes de polticas.

    Geralmente a descrio de uma poltica de controle de acesso muito abstrata einformal. Para sua implementao em um sistema real, ela precisa ser descrita de umaforma precisa, atravs de ummodelo de controle de acesso. Um modelo de controle deacesso uma representao lgica ou matemtica da poltica, de forma a facilitar suaimplementao e permitir a anlise de eventuais erros. Em um modelo de controlede acesso, as autorizaes de uma poltica so definidas como relaes lgicas entreatributos do sujeito(como seus identificadores de usurio e grupo) atributos do objeto(como seu caminho de acesso ou seu proprietrio) e eventuais condies externas (comoo horrio ou a carga do sistema). Nas prximas sees, para cada classe de polticas de

    controle de acesso apresentada sero discutidos alguns modelos aplicveis mesma.Por fim, os mecanismos de controle de acesso so as estruturas necessrias imple-

    mentao de um determinado modelo em um sistema real. Como bem sabido, de fundamental importncia a separao entre polticas e mecanismos, para permitira substituio ou modificao de polticas de controle de acesso de um sistema semincorrer em custos de modificao de sua implementao. Assim, um mecanismo decontrole de acesso ideal deveria ser capaz de suportar qualquer poltica de controle deacesso.

    34

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Polticas discricionrias

    5.2 Polticas discricionrias

    As polticas discricionrias (DAC - Discretionary Access Control) se baseiam naatribuio de permisses de forma individualizada, ou seja, pode-se claramente conceder(ou negar) a um sujeito especficosa permisso de executar a aoasobre um objetoespecficoo. Em sua forma mais simples, as regras de uma poltica discricionria tm aforma s, o,+a ou s, o,a, para respectivamente autorizar ou negar a ao ado sujeitossobre o objetoo(tambm podem ser definidas regras para grupos de usurios e/ou deobjetos devidamente identificados). Por exemplo:

    O usurioBetopode ler e escrever arquivos em /home/beto

    Usurios do grupo adminpodem ler os arquivos em/suporte

    O responsvel pela administrao das permisses de acesso a um objeto pode ser oseu proprietrio ou um administrador central. A definio de quem estabelece as regrasda poltica de controle de acesso inerente a uma poltica administrativa, independenteda poltica de controle de acesso em si6.

    5.2.1 Matriz de controle de acesso

    O modelo matemtico mais simples e conveniente para representar polticas discrici-onrias aMatriz de Controle de Acesso, proposta em [Lampson, 1971]. Nesse modelo, asautorizaes so dispostas em uma matriz, cujas linhas correspondem aos sujeitos do

    sistema e cujas colunas correspondem aos objetos. Em termos formais, considerandoum conjunto de sujeitos S ={s1, s2, . . . , sm}, um conjunto de objetos O ={o1, o2, . . . , on} eum conjunto de aes possveis sobre os objetos A ={a1, a2, . . . , ap}, cada elementoMi jda matriz de controle de acesso um sub-conjunto (que pode ser vazio) do conjunto deaes possveis, que define as aes que si S pode efetuar sobreoj O:

    si S,oj O,Mi j A

    Por exemplo, considerando um conjunto de sujeitos S = {Alice,Beto,Carol,Davi},um conjunto de objetos O = {f ile1,file2,program1, socket1} e um conjunto de aes

    A ={read,write, execute, remove}, podemos ter uma matriz de controle de acesso como aapresentada na Tabela1.Apesar de simples, o modelo de matriz de controle de acesso suficientemente

    flexvel para suportar polticas administrativas. Por exemplo, considerando uma polticaadministrativa baseada na noo de proprietrio do recurso, poder-se-ia considerarque que cada objeto possui um ou mais proprietrios (owner), e que os sujeitos podemmodificar as entradas da matriz de acesso relativas aos objetos que possuem. Umamatriz de controle de acesso com essa poltica administrativa apresentada na Tabela2.

    6Muitas polticas de controle de acesso discricionrias so baseadas na noo de que cada recursodo sistema possui um proprietrio, que decide quem pode acessar o recurso. Isso ocorre por exemplo

    nos sistemas de arquivos, onde as permisses de acesso a cada arquivo ou diretrio so definidas pelorespectivo proprietrio. Contudo, a noo de proprietrio de um recurso no essencial para aconstruo de polticas discricionrias[Shirey, 2000].

    35

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Matriz de controle de acesso

    f ile1 file2 program1 socket1Alice read read execute write

    write writeremove

    Beto read read readwrite write

    removeCarol read execute read

    write

    Davi read append read readappend

    Tabela 1: Uma matriz de controle de acesso

    f ile1 file2 program1 socket1Alice read read execute write

    write writeremoveowner

    Beto read read readwrite write owner

    removeowner

    Carol read execute readwrite

    Davi read write read readwriteowner

    Tabela 2: Uma matriz de controle de acesso com poltica administrativa

    36

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Tabela de autorizaes

    Embora seja um bom modelo conceitual, a matriz de acesso inadequada paraimplementao. Em um sistema real, com milhares de sujeitos e milhes de objetos,

    essa matriz pode se tornar gigantesca e consumir muito espao. Como em um sistemareal cada sujeito tem seu acesso limitado a um pequeno grupo de objetos (e vice-versa),a matriz de acesso geralmente esparsa, ou seja, contm muitas clulas vazias. Assim,algumas tcnicas simples podem ser usadas para implementar esse modelo, comoas tabelas de autorizaes, as listas de controle de acesso e as listas de capacidades[Samarati and De Capitani di Vimercati, 2001], explicadas a seguir.

    5.2.2 Tabela de autorizaes

    Na abordagem conhecida comoTabela de Autorizaes, as entradas no-vazias damatriz so relacionadas em uma tabela com trs colunas: sujeitos,objetoseaes, ondecada tupla da tabela corresponde a uma autorizao. Esta abordagem muito utilizadaem sistemas gerenciadores de bancos de dados (DBMS -Database Management Systems),devido sua facilidade de implementao e consulta nesse tipo de ambiente. A Tabela3mostra como ficaria a matriz de controle de acesso da Tabela2sob a forma de umatabela de autorizaes.

    5.2.3 Listas de controle de acesso

    Outra abordagem usual aLista de Controle de Acesso. Nesta abordagem, paracada objeto definida uma lista de controle de acesso (ACL -Access Control List), que

    contm a relao de sujeitos que podem acess-lo, com suas respectivas permisses.Cada lista de controle de acesso corresponde a uma coluna da matriz de controle deacesso. Como exemplo, as listas de controle de acesso relativas matriz de controle deacesso da Tabela2seriam:

    ACL(f ile1) ={ Alice: (read,write, remove, owner),Beto: (read,write),Davi: (read) }

    ACL(f ile2) ={ Alice: (read,write),Beto: (read,write, remove, owner),Carol: (read),Davi: (write) }

    ACL(program1) ={ Alice: (execute),Beto: (read, owner),Carol: (execute),Davi: (read) }

    ACL(socket1) ={ Alice: (write),

    Carol: (read,write),Davi: (read,write, owner) }

    37

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Listas de controle de acesso

    Sujeito Objeto Ao

    Alice file1 readAlice file1 writeAlice file1 removeAlice file1 ownerAlice file2 readAlice file2 writeAlice program1 executeAlice socket1 writeBeto file1 readBeto file1 writeBeto file2 readBeto file2 writeBeto file2 removeBeto file2 ownerBeto program1 readBeto socket1 ownerCarol file2 readCarol program1 executeCarol socket1 readCarol socket1 writeDavi file1 readDavi file2 writeDavi program1 readDavi socket1 readDavi socket1 writeDavi socket1 owner

    Tabela 3: Tabela de autorizaes

    38

  • 5/27/2018 VIII - Sistemas Operacionais - Conceitos e Mecanismos

    c Carlos Maziero : Listas de capacidades

    Esta forma de implementao a mais frequentemente usada em sistemas opera-cionais, por ser simples de implementar e bastante robusta. Por exemplo, o sistemade arquivos associa uma ACL a cada arquivo ou diretrio, para indicar quem so ossujeitos autorizados a acess-lo. Em geral, somente o proprietrio do arquivo podemodificar sua ACL, para incluir ou remover permisses de acesso.

    5.2.4 Listas de capacidades

    Uma terceira abordagem possvel para a implementao da matriz de controle deacesso aLista de Capacidades(CL -Capability List), ou seja, uma lista de objetos queum dado sujeito pode acessar e suas respectivas permisses sobre os mesmos. Cada

    lista de capacidades corresponde a uma linha da matriz de acesso. Como exemplo, aslistas de capacidades correspondentes matriz de controle de acesso da Tabela2seriam:

    CL(Alice) ={ file1: (read,write, remove, owner),f ile2: (read,write),program1: (execute),socket1: (write) }

    CL(Beto) ={ file1: (read,write),

    f ile2: (read,write, remove, owner),program1: (read, owner) }

    CL(Carol) ={ file2: (read),program1