Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 SO I - 9 1 SO I - 9 Capítulo 9. Segurança Segurança: garantia de que dados/arquivos não podem ser lidos/alterados por pessoas sem autorização. Inclui questões técnicas, administrativas, legais e políticas. 9.1 Ambiente de Segurança 9.1.1 Ameaças Sistemas computacionais possuem 3 metas gerais, sendo que a cada uma corresponde uma ameaça específica: Meta Ameaça Confidencialidade de dados Esposição de dados Integridade de dados Alteração de dados Disponibilidade do sistema Negação de serviço Confidencialidade de dados significa que o dono de um conjunto de dados deve ter garantias de que seus dados não serão expostos a pessoas não autorizadas. O sistema deve prover mecanismos que permitam ao dono indicar quem tem acesso aos seus dados e de que modo. Integridade de dados significa que pessoas não autorizadas não podem alterar o conjunto de dados do usuário, incluindo modificação, exclusão e inclusão de dados. Disponibilidade do sistema significa que ninguém pode criar distúrbios para tornar o sistema inacessível. Outra questão importante diz respeito à privacidade. Privacidade significa proteger o indivíduo do mau-uso de informações sobre ele. P. ex.: O governo tem direito de montar dossiês sobre vigaristas e sonegadores? A polícia tem direito a verificar qualquer informação sobre qualquer um para deter o crime organizado? O que acontece se essas atitudes conflitam com os direitos individuais? 9.1.2 Invasores A maioria das pessoas são bacanas, educadas e obedecem a lei sem questionar. Então, por que se preocupar com segurança? Porque há umas poucas que não são tão bacanas nem tão educadas, e muito menos seguem regras de boa conduta. Entre essas, algumas causam problemas por interesse comercial próprio. Pessoas que “metem o nariz onde não são chamadas” são chamadas de invasores, adversários, etc. Há 2 tipos de invasores: Passivos: que só querem ler o conteúdo de arquivos; Ativos: que querem modificar certos conteúdos. Algumas das categorias mais comuns: 2 SO I - 9 2 SO I - 9 Leitura casual por usuários não técnicos: é da natureza humana xeretar coisas se não houver barreiras que as impeçam. P. ex.: alguns sistemas Unix tem o padrão de criar arquivos abertos para leitura pública. Ataques por pessoas internas: alguns estudantes, programadores, operadores e outras pessoas de conhecimento técnico algumas vezes consideram como um desafio pessoal conseguir acessar determinadas informações. Além de conhecimento, possuem tempo suficiente para o esforço. Tentativas determinadas de fazer dinheiro: p. ex. Alguns programadores de bancos podem tentar roubar dinheiro do banco para quem eles trabalham. Truncar centavos quando se deveria arredondar, sangrar contas não usadas a anos, chantagem tipo “paguem ou eu vou destruir todos os registros”. Espionagem comercial ou militar: competidores podem tentar roubar planos, projetos, idéias, tecnologia, circuitos, etc. Isso pode envolver cooptação de funcionários, escuta, antenas que captam radiação eletromagnética de computadores, etc. Existe uma outra categoria representada pelos virus. Um virus está mais para um terrorista enquanto nos outros casos temos alguém com um fim determinado. 9.1.3 Perdas de dados acidentais Causas possíveis de perdas de dados: Atos de Deus: fogo, inundações, terremotos, guerras, até ratos que roem fitas ou disquetes; Erros de hardware/software: malfuncionamento da CPU, erros em discos ou fitas, erros de transmissão, erros de programação, etc.; Erros humanos: entrada de dados incorretos, erro de montagem de discos ou fitas, execução de programas errados, perda de discos ou fitas, etc.. Para todos esses problemas, em geral os backups resolvem. 9.2 Criptografia básica Conceito: transformação de informações de forma que ela não possa ser entendida por ninguém, exceto o destinatário, que possui os meios de reverter a transformação. Grupos que tem usado e contribuído para a criptografia: Militares; Diplomatas; Memorialistas; Amantes. Antes dos computadores, a principal restrição da criptografia era a habilidade dos responsáveis em fazer as transformações sobre a informação, muitas vezes no próprio campo de batalha. Considere: P: texto a ser cifrado; C: texto cifrado; E(): função (chave) de criptografia; D(): função (chave) de descriptografia. 3 SO I - 9 3 SO I - 9 Então: P E(P) C D(C) P Criptoanálise: arte de quebrar cifras. Criptografia: arte de estabelecer cifras. Criptologia: criptoanálise + criptografia. Regra fundamental: o criptoanalista sabe como o método de criptografia funciona. É impraticável substituir o método em uso toda vez que ele for quebrado. Complicação: O criptoanalista pode ter uma idéia de parte do texto cifrado. Ex.: uma comunicação cliente-servidor pode iniciar com o texto "PLEASE LOGIN". Com amostras do texto cifrado, a tarefa de quebrar um código é mais fácil. Ele pode usar o método conhecido, supor chaves e cifrar amostras de texto. Depois, ele pode comparar as amostras com o texto cifrado a ser quebrado. Objetivo: garantir que o sistema é inquebrável mesmo se o oponente consiga encriptar quantidades não conhecidas de texto. Exemplos de métodos de criptografia: 1) Cifras de substituição: Neste método, cada letra (ou grupo) é substituída por outra (outro); O exemplo mais antigo que se conhece é atribuído a Júlio César (Cifra de César); A D, B E, C F, ..., Z C. Ex.: Gisele JLVHOH; Variação: em vez de 3, usar um valor k qualquer; K chave! Este método é conhecido como Substituição Monoalfabética: Ao alfabeto do texto de entrada, corresponde um único alfabeto de substituição. Dificuldade deste método: 26! Método de quebra: Idêntico aos quebra-cabeças de revistas especializadas. 4 SO I - 9 4 SO I - 9 O B A L D Ã O É O 1 2 3 4 5 3 1 6 1 B G A S Ã O A M I G O 2 7 3 8 3 1 3 9 10 7 1 S E S Ó C I O S 8 6 8 1 11 10 1 8 2) Cifras Polialfabéticas: Usa múltiplos alfabetos para tornar a quebra mais difícil; O sistema usa uma matriz com 26 alfabetos: ABCDEFGHIJKLMNOPQRSTUVWXYZ BCDEFGHIJKLMNOPQRSTUVWXYZA CDEFGHIJKLMNOPQRSTUVWXYZAB DEFGHIJKLMNOPQRSTUVWXYZABC Etc. O sistema tem uma chave, que é um texto colocado sobre o texto a ser cifrado: BACADABACADABACADABACADABACA OBALDAOEOBGASAOAMIGOSESOCIOS As letras da chave indicam o alfabeto a ser usado. Com ele, substitui-se a letra correspondente: PBCLGAPEQBJATAQAPIHOUEVODIQS Método de quebra: Tentar adivinhar o tamanho da chave; 1º, assume-se um valor k qualquer; Depois, arruma-se o texto em linhas, k letras por linha; Neste caso, cada coluna foi cifrada com o mesmo monoalfabeto; Verifica-se qual é a distribuição das letras - em inglês, o caracter mais comum tem 13%, o 2 º tem 9%, etc. Se a distribuição não corresponde, tenta-se outro tamanho de chave. Na Revolução Francesa, houve um caso de uma aristocrata que tramou contra o governo revolucionário. Para cifrar suas mensagens, ela usou um sistema de substituição de letras por símbolos (uma simples substituição monoalfabética): O sistema foi descoberto e a mulher foi decapitada! 3) Cifras de Transposição Considere a frase: Please, transfer one million dollars to my Swiss bank account six two two. Digamos que a chave seja MEGABUCK: 5 SO I - 9 5 SO I - 9 M E G A B U C K 7 4 5 1 2 8 3 6 P L E A S E T R A N S F E R O N E M I L L I O N D O L L A R S T O M Y S W I S S B A N K A C C O U N T S I X T W O T W O A B C D Texto cifrado: AFLLSKSO SELAWAIA TOOSSCTC LNMOMANT ESILYNTW RNNTSOWD PAEDOBUO ERIRICXB 4) Algoritmos de chave pública Nos algoritmos de chave secreta, o maior problema é a distribuição das chaves entre os pares! Diffie e Hellman (1976) mostraram que é possível usar um método que elimina a necessidade de confiança entre as partes; Ele é baseado no produto de 2 números primos muito grandes (maiores que 10 100 ); Determinar os fatores primos exige tanta computação que na prática é impossível! Funcionamento: A pessoa que quer receber mensagens cifradas cria 1 par de chaves, Ke e Kd, e mantém Kd secreta; Ke é tornada pública para qualquer pessoa que queira mandar uma mensagem cifrada para a 1 ª ; Por sua vez, E e D são funções conhecidas e one-way – funções do tipo f(X) = Y em que, conhecendo-se Y é extremamente difícil (ou impossível) descobrir X. Processo de envio de uma mensagem: B toma a chave pública de A e faz C = E(Ke, M); A recebe C e faz M = D(Kd, C). Dos algoritmos de chave pública, um dos mais conhecidos é o RSA (Rivest, Shamir e Adelman, 1978). Para encontrar um par de chaves e, d: Escolher 2 números primos muito grandes, P e Q, da ordem de 10 100 ; N = P x Q; Z = (P – 1) x (Q – 1); d = número primo relativo a Z; Ex.: P = 13 e Q = 17 N = 221, Z = 192, d = 5 Para encontrar e, resolver a equação e x d = 1 mod 192: Considerando a série 1, Z+1, 2Z+1, 3Z+1, ...; e x d é o menor elemento da série que é divisível por d. Ex.: série = 1, 193, 385, ... 385 é divisível por d = 5 e = 385/5 = 77 6 SO I - 9 6 SO I - 9 Tamanho do bloco: k bits, onde 2k < N; na prática, k [256, 512]. Ex.: k = 7 27 = 128 (28 = 256) Função para cifrar uma mensagem M: C = E(e, N, M) = M e mod N Ex.: M 77 mod 221 Função para decifrar C: M = D(d, N, C) = C d mod N Ex.: C 5 mod 221 Rivest et al. provaram que E e D são mutuamente inversos: E(D(X)) = D(E(X)); Para todos os valores de P na faixa 0 P N! Conclusão: Ke = <e, N> Kd = <d, N> 9.3 Falhas famosas de segurança 9.3.1 UNIX Comando lpr: imprime um arquivo: Tem uma opção de remover o arquivo após a impressão; Nas 1as versões do Unix, era possível imprimir e remover o arquivo de passwords! Link do arquivo de senhas com um arquivo core: Arquivo onde a memória de um programa é salvo após um erro grave; Nesse caso, uma falha de programa que gere um dump grava esse conteúdo no início do arquivo de passwords; Construindo uma estrutura apropriada no programa, é possível escrever o conteúdo certo para obter algum privilégio! Comando MKDIR nomedir: Esse comando 1o cria um I-node para o diretório (comando MKNOD) e depois acerta o owner; Num sistema lento, era possível para o usuário remover o I-node criado e fazer um link para o arquivo de senhas com o nome de nomedir; Quando o sistema completava a operação, alterava o owner do arquivo de senhas para o usuário. 9.3.2 MULTICS Sistema voltado para aplicações timesharing (com ótima segurança). Atendimento a aplicações batch foi introduzido para satisfazer solicitações de interessados (segurança péssima – opção introduzida como quebra-galho). Uma aplicação batch pode gravar arquivos em áreas de outros usuários; Alguém pode alterar um editor de textos para roubar arquivos de outros; 7 SO I - 9 7 SO I - 9 Uma aplicação grava o editor alterado na área de outro usuário; Quando este usar o editor, sem saber estará passando seus arquivos para o ladrão. Obs.: este é o precursor dos Trojan Horses! 9.3.3 TENEX Sistema operacional do DEC-10; Suporta paginação; Permite associar falhas em processos (ex.: page faults) com funções definidas pelo usuário; Usa passwords para proteger arquivos; Os programas precisam fornecer a password correta para acessar um arquivo; O SO verifica passwords um caracter por vez; Quando há um problema, o SO reporta imediatamente – caso um caracter esteja correto, verifica o próximo; Para quebrar uma senha, o invasor posiciona a password como pode ser visto na figura. Nesse caso, quando o invasor tenta abrir o arquivo da vítima, o sistema verifica a password um caracter por vez; Se o 1o caracter estiver errado, o sistema reporta “Invalid Password”; Nesse caso, o invasor tenta o próximo caracter; Eventualmente ele acertará! 1 a página (mem) 2 a página (ausente) Se estiver certo, o sistema tentará o próximo caracter; Como a password está na fronteira de 2 páginas e a 2a não está presente, o processo ganha um page fault; Nesse caso, o invasor desloca a password um caracter para cima na 1 a página, trazendo um caracter da 2 a página; O processo é repetido até que a password seja quebrada! 9.3.4 OS/360 Permite processamento em paralelo com I/O; É possível disparar uma leitura de fita sobre uma área e rodar um processo para ler um arquivo; Para a leitura, é preciso fazer uma chamada passando um ponteiro com o nome do arquivo e outro com a password; O sistema 1o verifica a password e determina se está correta ou não; Nesse meio tempo, a fita termina seu I/O e carrega os dados pedidos sobre o ponteiro do nome do arquivo passado para a chamada de sistema; Em seguida, o SO verifica qual o arquivo que deve ser acessado e usa um nome para o qual não foi passado uma password. A A A A A A A 8 SO I - 9 8 SO I - 9 9.3.5 Internet Worm A grande violação de segurança de todos os tempos: Iniciou na noite de 2/11/1988; O estudante de graduação Robert Tappan Morris, da universidade de Cornell, liberou um programa Worm na Internet; Esse programa derrubou milhares de computadores em universidades, corporações e laboratórios por todo o mundo até ser identificado e removido! Hoje ainda há uma controvérsia se esse programa foi completamente desativado!!! Como isso foi acontecer? Naquele ano, Morris descobriu 2 falhas graves de segurança no Unix de Berkeley; Com elas, ele obteve acesso não autorizado a várias máquinas por toda Internet; Morris escreveu um programa auto-replicante que explorava essas falhas; Depois de ativado, esse programa atingiu todas as máquinas que conseguiu acessar; Ainda não há certeza se a noite de 2/11/88 foi apenas um teste ou se era o programa definitivo; A própria motivação de Morris até hoje é desconhecida! Funcionamento do Worm: Basicamente, era constituído por 2 programas: Bootstrap: programa de 99 linhas escrito em C (l1.c); Era compilado e executado no sistema sob ataque; Ao rodar, o programa se conectava com a máquina de onde veio, fazia o download do Worm e executava-o! Worm: Preocupava-se em esconder sua existência; Verificava as tabelas de roteamento da máquina procurando pelos próximos hosts e tentava enviar o bootstrap para elas! Métodos de Infecção: Método 1: O Worm tentava executar um shell remoto com o comando rsh; Se estivesse habilitado, o próprio shell podia fazer o download do Worm! Método 2: Programa Finger! Ex.: finger nome@site ! Em cada site BSD, um daemon finger fica executando para atender requisições de outras máquinas; O Worm chamava o finger passando como parâmetro um string de 536 bytes! Esse string causava um overflow no buffer do daemon finger e sobrescrevia sua pilha! Quando o daemon fazia um retorno do procedimento de tratamento do string, ele não voltava para main! Nesse caso, o retorno era para uma função dentro do string de 536 bytes! Este procedimento tentava executar /bin/sh; Se conseguisse, o Worm tinha um shell na máquina atacada! 9 SO I - 9 9 SO I - 9 Método 3: Bug no sendmail! Permitia ao Worm passar um e-mail com o bootstrap e permitir sua execução. Objetivo: Tentar quebrar passwords dos usuários! Para esse fim, tudo que Morris precisava fazer era perguntar ao seu pai! Ele era especialista em segurança da NSA; Em 1979, o pai de Morris publicou um artigo junto com Ken Thompson sobre quebra de códigos!!! Cada password quebrada permitia ao Worm se logar em qualquer sistema que aceitasse aquele usuário! Nas máquinas infectadas: Cada vez que o Worm chegava numa máquina, verificava se já estava presente; Se estivesse, a cópia encerrava, exceto a cada 7 vezes!!! Isso provavelmente foi feito para evitar que um administrador colocasse sua própria versão do Worm para enganar o ataque! Esta característica fez com que os Worms se proliferassem até derrubar todos os sistemas infectados! Se Morris tivesse tirado essa característica de seu programa, provavelmente o Worm teria permanecido muito tempo sem ser detectado! Como Morris foi achado? Um de seus amigos deu uma entrevista para John Markoff, repórter de computação do New York Times; Este amigo disse que o Worm não era danoso, tudo havia sido um acidente e o autor sentia muito! Durante a entrevista, o amigo disse que o login do autor era rtm; Para achar o login, bastou dar finger em algumas máquinas e o culpado foi identificado; A história toda foi publicada no dia seguinte em 1a página, mesmo com o resultado da eleição presidencial 3 dias antes! Desenlace: Morris foi a julgamento; Foi sentenciado em US$ 10.000,00, 3 anos de condicional e 400 horas de serviço comunitário; As custas legais ficaram em US$ 150.000,00!!! Há dúvidas quanto a Morris: se estudante brilhante e ingênuo ou criminoso! 9.3.6 Kevin Mitnick Kevin Mitnick é o hacker (na verdade, cracker) mais famoso de todos os tempos. Criador da “engenharia social” (ou, pelo menos, primeiro a utilizá-la em larga escala com sucesso), ainda adolescente conseguiu obter senhas e informações confidenciais de diversas empresas. As técnicas que ele usava eram variadas, mas em geral consistiam de truques para enganar as pessoas para que entregassem os dados que ele queria. Em entrevistas para a televisão, revelou que vasculhava o lixo de grandes corporações. Disse que chegou a encontrar manuais de protótipos e produtos recém lançados no mercado. Usando esse material, descobriu falhas que conseguiu explorar em seus ataques. 10 SO I - 9 10 SO I - 9 Supunha-se que ele havia sido o modelo usado no filme Wargames (1984), mas os diretores negaram. Foi preso a primeira vez em 1987 por invadir a SCO. Conseguiu apenas 3 anos de condicional. No ano seguinte, porém, um amigo entregou que ele estava usando computadores para “hacking”. Foi preso por violação da condicional e por ter invadido a DEC e roubado códigos fontes. Seu advogado conseguiu convencer o tribunal que Kevin tinha uma compulsão por computadores e precisava, na verdade, de acompanhamento profissional. Ainda assim, recebeu uma pena de um ano de detenção. Mas um detalhe ajudou a levar sua fama para as alturas. A promotoria conseguiu convencer o juiz que Kevin era um elemento perigoso e que poderia invadir sistemas usando apenas sua voz e um telefone. Como resultado, ficou preso sob severas restrições, passando cerca de 8 meses na solitária. As condições eram tão ruins que ele começou a desenvolver problemas mentais. Solto em 1989, tentou vários trabalhos diferentes, até que conseguiu um emprego como ajudante de um detetive particular. Com isso, foi introduzido no submundo do crime. Não demorou até que o FBI estivesse atraz dele de novo. Para não ser preso, decidiu se tornar um fugitivo. Chegou a fazer parte da lista de Mais Procurados no Mundo depois que um jornalista do NYT, John Markoff, fez uma série de artigos sobre ele, sua suposta capacidade e o risco que ele representava para a sociedade. Nesses artigos, na maioria de primeira página, Kevin era tratado como elemento perigoso, mortal, “unstoppable” . Durante sua fuga, continuou invadindo sistemas. Adotou identidades falsas e mudava constantemente de lugar, perambulando pelos Estados Unidos. Em 1995, finalmente, foi preso pelo FBI na Carolina do Norte. Em uma das vans usadas em sua cassada estava John Markoff, que ajudava o FBI nas investigações. A ética dessa empreitada é questionada até hoje. A figura central na prisão de Kevin foi um investigador particular chamado Tsutomo Shimomura, cujos computadores supostamente Kevin invadiu. Aparentemente, nunca foi provado e há dúvidas sobre isso. Usando equipamentos de rastreamento, Shimomura conseguiu determinar de onde Kevin estava fazendo suas ligações. Há alegações de problemas éticos também com Shimomura. Seu caso na justiça ganhou ainda mais notoriedade quando se descobriu que o FBI incentivou empresas vítimas de Kevin a entrar com reclamações de prejuízos de milhões de dólares que incluiam softwares originais que ele teria copiado, mais o custo de todo o hardware usado em seu desenvolvimento, além de salários e prédios. Surpreendentemente, Kevin e seus advogados não puderam ver várias das provas contra ele. Os jornais publicavam matérias e matérias sobre seus crimes, sua mente arquicriminosa e os danos que teria causado, na maioria das vezes baseados no artigos de Markoff. Enquanto as autoridades levantavam provas contra ele, passou 4 anos preso sem ser acusado. Isso se tornou um dos maiores casos de abuso do sistema prisional dos tempos modernos. 11 SO I - 9 11 SO I - 9 Quando finalmente, foi a julgamento, declarou-se culpado. Recebeu uma pena de 5 anos, usando os 4 que já tinha passado preso. Quando foi solto, o acordo da condicional era extremamente rígido: ele estava proibido de fazer qualquer uso de computadores. Por vários anos, Kevin não poderia ter computadores em casa, não poderia usar qualquer programa, receber ou mandar e-mails, nem tocar num teclado. Para contar sua versão da história, escreveu um livro em co-autoria, chamado The Art of Deception, usando uma máquina de escrever manual. Quando venceu a proibição de acesso à Internet, ele foi num programa de televisão ao vivo para usar a Internet pela primeira vez depois da prisão. Acessou então um blog de sua namorada. Markoff e Shimomura escreveram um livro, Takedown, e venderam os direitos para um filme (Takedown também) para a Miramax. Segundo muitas pessoas, tanto o livro como o filme não são fiéis aos fatos. Shimomura é conhecido por não ser muito honesto. No filme, ocorre um encontro entre os dois quando Kevin está preso. Na vida real, nunca aconteceu. Dizem que, pelo livro e pelo filme, Markoff recebeu um milhão de dólares. Atualmente, Kevin trabalha como consultor de segurança e tem sua própria empresa, Defensive Thinking (defensivethinking.com). Ataques genéricos à segurança Fraquezas em geral: Muitos sistemas não limpam áreas de memória, discos e fitas. Para ver seu conteúdo, basta criar arquivos alocando áreas sem gravar ou alocar memória dinâmica e verificar o conteúdo; Pode-se tentar fazer coisas imprevistas: Sys calls ilegais; Chamadas legais mas com parâmetros ilegais; Chamadas legais com parâmetros legais mas não razoáveis; Iniciar o login e teclar <CTRL>-C ou BREAK (em alguns sistemas, o programa que verifica as passwords é derrubado e o login é considerado bem sucedido; Modificar estruturas usadas para acessar recursos do sistema (em alguns casos, o SO altera dados na área do usuário – modificar esses valores pode causar confusão); Escrever um programa que simula a tela de login; Procurar nos manuais observações do tipo “Não faça X ...”. Então, tente tantas variantes de X quantas puder; Convencer programadores do sistema a alterar elementos de segurança no código do SO; Em último caso, convide a secretária do CPD para sair. Em geral, ela tem acesso a todo tipo de informação, recebe um salário baixo e é suscetível à cantadas românticas baratas! Vírus! 4.4.5 Princípios de projeto para a segurança A especificação do sistema deve ser pública. Assumir que um intruso não conhece o sistema é apenas uma ilusão; 12 SO I - 9 12 SO I - 9 O default deve ser “sem acesso”. Erros em que o acesso autorizado é recusado são comunicados mais rapidamente que acessos não autorizados permitidos; Sempre verificar a autoridade corrente! O sistema deve verificar o acesso e não permissões! P. ex.: um sistema verifica a permissão quando um arquivo é aberto e não depois. Alguém pode manter um arquivo aberto por semanas e continuar acessando os dados mesmo depois de perder o direito; Dar a cada processo o mínimo de privilégio possível. Ex.: se um editor só tem o direito de acessar o arquivo que vai editar, um trojan horse não poderá causar muito dano (proteção de granularidade fina); O esquema de proteção deve ser simples, uniforme, construído nas camadas mais baixas do sistema. Segurança não é uma característica add-on! Psicologicamente aceitável! Se a proteção requer muito trabalho dos usuários, eles não usarão! 4.4.6 Autenticação de usuários Passwords Fácil de burlar; Morris & Thompson, 1979 (estudo sobre vários sistemas Unix): Lista de passwords comuns (nomes, ruas, cidades, palavras invertidas, cachorros, gatos, etc.); Cada password da lista foi encriptada e comparada com o arquivo de senhas; Cerca de 86% das passwords estavam na lista!!! Proposta de solução: Além da senha, usar um número de n bits; Esse número é concatenado com a senha antes da criptografia; Agora, além da palavra da senha é preciso saber o número; Para cada senha da lista, é preciso fazer 2n strings! Técnica usada no Unix (n = 12). Passwords one-time: O usuário deve manter um livro de senhas; Cada login usa a próxima senha do livro; Se um intruso descobrir uma senha, ela não terá mais utilidade; É claro, não se pode perder o livro! (militares) Considerações importantes: A senha não pode ser mostrada enquanto o usuário digita; O sistema não pode armazenar a senha descriptografada. Variações da idéia de password: 1. O sistema faz perguntas ao usuário: Para cada usuário, é mantida uma longa lista de perguntas criptografadas; No login, o computador pergunta uma delas aleatoriamente e verifica a resposta. 2. Desafio: O usuário escolhe algoritmos matemáticos variados, cada um para um momento (manhã, tarde, noite, dia da semana, dia do mês, etc.); Quando o usuário faz o login, o sistema usa o algoritmo daquele período e apresenta um valor; O usuário aplica o algoritmo e digita a resposta certa; 13 SO I - 9 13 SO I - 9 Ex.: função x2 – sistema apresenta 7 – usuário responde 49. Identificação física Ex.: cartão magnético Cartão associado com senha; Características físicas: Impressão digital; Voz; Análise de assinatura; Análise do movimento e pressão da caneta; Tamanho dos dedos; Íris do olho; Amostra de urina!!! Amostra de sangue!!! Alguns desses itens podem ser 100% seguros, mas o método precisa ser psicologicamente aceitável! Além disso, é preciso considerar possíveis falhas: Um intruso pode arrancar o dedo de alguém para entrar num sistema; Para o tamanho dos dedos, pode-se levar a mão da pessoa; O intruso pode falsificar a assinatura; O olho? Seqüestro, obrigando a vítima a ceder amostras de substâncias corporais! 9.6 Mecanismos de Proteção Separação entre política e mecanismo: Política: que dados devem ser protegidos de quem; Mecanismo: como o sistema garante a execução da política. 9.6.1 Domínios de proteção Tipos de recursos (objetos) a serem protegidos: Hardware: CPU, memória, terminais, discos, etc. Software: processos, arquivos, bancos de dados, semáforos, etc. Cada objeto tem um nome único e possui um conjunto de operações. Necessidades: Método para proibir os processos de acessar objetos sem autorização; Restringir o conjunto de operações para um conjunto daquelas possíveis. Domínio: Conjunto de pares (objeto, direitos); Direitos especifica quais operações podem ser realizadas sobre aquele objeto; Em cada instante, os processos executam em algum domínio de proteção; Cada processo pode acessar um conjunto determinado de objetos; Para cada um, só pode realizar determinadas operações. 14 SO I - 9 14 SO I - 9 Matriz de proteção: Domí nio Arq 1 Arq 2 Arq 3 Arq 4 Arq 5 Arq 6 Prn 1 Plotter 2 1 R RW 2 R RWX RW W 3 RWX W W Domínio 1 Domínio 2 Domínio 3 Quais objetos pertencem a qual domínio? 9.6.2 Listas de Controle de Acesso Na prática, uma ACL é um sistema de controle por objeto, ou a representação da matriz de proteção por colunas. 9.6.3 Capabilities Capabilities é um sistema de proteção em que a matriz é acessada por linha. Cada processo, associado ao seu usuário, recebe um conjunto de direitos que ele pode exercer durante a sua execução. File1 [R] File2 [RW] File3 [R] File4 [RWX] Prn1 [W] File5 [RWX] Plotter1 [W] 15 SO I - 9 15 SO I - 9 O interessante nas capacilities é que elas são objetos também, podendo ser apontadas por outras capabilities. Isso facilita a implementação de subdomínios. 9.7 Sistemas Confiáveis Em todo o mundo, estima-se que as perdas causados por virus e problemas de segurança em geral passam de 1 trilhão de dólares por ano. Basicamente, essa soma é “gasta” em recuperação de problemas, reconstrução de dados e perdas comerciais decorrentes. Temos duas questões principais, relacionadas com esse estado de coisas: É possível construir um sistema computacional seguro? Se sim, por que isso não é feito? A resposta à primeira questão é SIM. O método de construção de sistemas seguros é conhecido a décadas. Responder a 2 a . pergunta já é mais complicado. Há duas razões principais: Os sistemas atuais são inseguros, mas os usuários convivem com isso por outros motivos. o Ex. Suponha que a Microsoft lance um SO que seja à prova de virus, mas não roda aplicações Windows anteriores – dificilmente alguém migraria para o novo produto. A única forma de construir um sistema seguro é mantê-lo simples. Opções e recursos de utilização são inimigos da simplicidade. o Os projetistas acreditam que o que os usuários querem são mais opções e recursos. Isso significa mais complexidade, mais código, mais erros e mais problemas de segurança. 2 exemplos interessantes. O primeiro sistema de email enviava mensagens como textos ASCII. Era um sistema completamente seguro. Então, apareceu a idéia de expandir os recursos do sistema para enviar outros tipos de documentos, como arquivos Word. Textos do Word podem conter macros, que são programas feitos por alguém. Ler um texto desses significa executar no seu sistema programas escritos por outra pessoa, possibilitando falhas de segurança. Pergunta: os usuários pediram que o sistema de email de documentos passivos ganhasse o recurso de transportar programas? Provavelmente não. Mas os projetistas acharam que isso era interessante, independente dos problemas que pudesse ter. Outro exemplo: páginas WEB. No começo, as páginas eram escritas em texto simples HTML. O máximo que alguém podia fazer era provocar um estouro de buffer usando HTML ilegal. Agora, as páginas podem carregar applets e scripts. Isso tem gerado problemas de segurança um depois do outro. Quando as páginas eram estáticas, os usuários pediram que elas tivessem recursos dinâmicos com problemas de segurança? Dificilmente! 16 SO I - 9 16 SO I - 9 Anexo Cuidado ao acessar os sites dos bancos. Algum tipo de trojan ou vírus pode estar instalado em sua máquina. Ao acessar o internet Banking pela primeira vez após iniciar a máquina, pode surgir uma nova caixa pedindo novamente seus dados e senhas. Conforme ilustrado nas figuras anexas. Observem com atenção, pois esta tela é personalizada para cada banco e só aparece depois de efetuar o logon no site, quando vc já está em ambiente "seguro". No Itaú só aparece depois que vc iniciar a navegação em uma das áreas do site (extratos, transferências....) Se vc digitar os dados nesta tela, o sistema envia um e-mail com seus dados, sem deixar nenhum rastro (log) de que isso aconteceu. Só percebí isso pois o norton fez uma varredura na mensagem que estava sendo enviada. Caso vc já tenha caído nessa, ALTERE todas as suas senhas imediatamente. ATENÇÃO: Por enquanto (23/01/04) não é possível detectar o problema através de nenhum antivirus ou utilitário de remoção de Spyware. 17 SO I - 9 17 SO I - 9 18 SO I - 9 18 SO I - 9