1. SEGURANÇA EM REDES DE COMPUTADORES 1.1 Conceitos Básicos A segurança está relacionada à necessidade de proteção contra o acesso ou manipulação, intencional ou não, de informações confidenciais por elementos não autorizados, e a utilização não autorizada do computador ou de seus dispositivos periféricos. A necessidade de proteção deve ser definida em termos das possíveis ameaças e riscos e dos objetivos de uma organização, formalizados nos termos de uma política de segurança. 1.1.1 Ameaças e Ataques Uma ameaça consiste em uma possível violação da segurança de um sistema. Algumas das principais ameaças às redes de computadores são: Destruição de informações ou de outros recursos. Modificação ou deturpação da informação. Roubo, remoção ou perda de informação ou de outros recursos. Revelação de informação. Interrupção de serviços. Ameaças Acidentais são as que não estão associadas à intenção premeditada. Ameaças Intensionais variam desde a observação dos dados com ferramentas simples de monitoramento de redes, a ataques sofisticados baseados no conhecimento do funcionamento do sistema. A realização de uma ameaça intencional configura em um ataque. Ameaças Passivas são as que, quando realizadas, não resultam em qualquer modificação nas informações contidas em um sistema, em sua operação ou em seu estado. Ameaças Ativas envolvem a alteração da informação contida no sistema, ou modificações em seu estado ou operação. Alguns dos principais ataques que podem ocorrer em um ambiente de processamento e comunicação de dados são os seguintes: Personificação (masquerade): uma entidade faz-se passar por outra. Replay: uma mensagem, ou parte dela, é interceptada, e posteriormente transmitida para produzir um efeito não autorizado. Modificação: O conteúdo de uma mensagem é alterado implicando em efeitos não autorizados sem que o sistema consiga detectar a alteração. Recusa ou Impedimento de Serviço: ocorre quando uma entidade não executa sua função apropriadamente ou atua de forma a impedir que outras entidades executem suas funções. Ataques Internos: ocorrem quando usuários legítimos comportam-se de modo não autorizado ou não esperado. Armadilhas (trapdoor): ocorre quando uma entidade do sistema é modificada para produzir efeitos não autorizados em resposta a um comando (emitido pela entidade que está atacando o sistema) ou a um evento, ou seqüência de eventos, predeterminado. Cavalo de Tróia: nesse ataque, uma entidade executa funções não autorizadas, em adição às que está autorizada a executar. Um procedimento de login modificado, que, além de sua função normal de iniciar a sessão de trabalho dos usuários, grava suas senhas em um arquivo desprotegido, é um exemplo de Cavalo de Tróia. 1.1.2 Política de Segurança Uma política de segurança é um conjunto de leis, regras e práticas que regulam como uma organização gerencia, protege e distribui suas informações e recursos. Um dado sistema é considerado seguro em relação a uma política de segurança, caso garanta o cumprimento das leis, regras e práticas definidas nessa política. Uma política de segurança deve incluir regras detalhadas definindo como as informações e recursos da organização devem ser manipulados ao longo de seu ciclo de vida, ou seja, desde o momento que passam a existir no contexto da organização até quando deixam de existir. As regras que definem uma política de segurança são funções das designações de sensibilidade, associadas aos recursos e informações (por exemplo não classificado, confidencial, secreto e ultra-secreto), do grau de autorização das entidades (indivíduos ou processos agindo sob o comando de indivíduos) e das formas de acesso suportadas por um sistema. A implementação de uma política de segurança baseia-se na aplicação de regras que limitam o acesso de uma entidade às informações e recursos, com base na comparação do seu nível de autorização relativo a essa informação ou recurso, na designação da sensibilidade da informação ou recurso e na forma de acesso empregada. Assim, a política de segurança define o que é, e o que não é permitido em termos de segurança, durante a operação de um dado sistema. A base da política de segurança é a definição do comportamento autorizado para os indivíduos que interagem com um sistema. Política de Segurança Baseada em Regras: Regras baseadas em atributos de sensibilidade genéricos; entidade com grau de segurança não classificado, confidencial, secreto ou ultra-secreto. Política de Segurança Baseada em Identidade: Regras baseadas em atributos individuos específicos; o nome ou identificador da entidade no sistema. A autorização em uma política de segurança baseada em regras normalmente apóia-se em informações sobre sensibilidade. Em um sistema seguro, os dados ou recursos devem ser marcados com rótulos de segurança que indicam o nível de sensibilidade. Os processos atuando sob o controle de indivíduos devem adquirir os rótulos de segurança apropriados, que definem o nível de autorização do indivíduo que o está controlando. As regras desse tipo de política utilizam os rótulos dos recursos e dos processos para determinar o tipo de acesso que pode ser efetuado. No caso de uma rede de computadores, os dispositivos que implementam os canais de comunicação também possuem rótulos de segurança. Nesse caso, as regras que definem a política de segurança também determinam quando é, ou não, permitindo transmitir dados nesses canais, isto é, informações sensíveis só podem ser transmitidas em canais que ofereçam o nível de segurança adequado. As políticas de segurança baseadas na identidade representam o tipo de controle de acesso mais encontrado nos computadores atuais. A base desse tipo de segurança é que um indivíduo, ou processo operando sob seu controle, pode especificar explicitamente os tipos de acesso que outros indivíduos podem ter às informações e recursos sob seu controle. O objetivo desse tipo de política é permitir a implementação de um esquema de controle de acesso que possibilite especificar o que cada indivíduo pode ler, modificar ou usar. 1.1.3 Mecanismos de Segurança Uma política de segurança pode ser implementada com a utilização de vários mecanismos. Alguns dos principais mecanismos de segurança adequados a ambientes de comunicação de dados são: Criptografia Surgiu da necessidade de se enviar informações sensíveis de meios de comunicação não confiáveis, ou seja, em meios onde não é possível garantir que um intruso não irá interceptar o fluxo de dados para leitura (intruso passivo) ou para modificá-lo (intruso ativo). A forma de contornar esse problema é utilizar um método que modifique o texto original da mensagem a ser transmitida (texto normal), gerando texto criptografado na origem, através de um processo de codificação definido por método de criptografia. O conhecimento dessa metodologia é antigo. Com o advento dos computadores ela se tornou uma parte indispensável da segurança moderna, sendo empregada no ambiente computacional para proteção dos dados de pessoas não autorizadas. Criptografia vem da palavra grega kryptos = "escondida" e graphia = "escrever". Criptografar significa transformar uma mensagem em outra ("escodendo" a mensagem original), usando para isso, funções matemáticas e uma senha especial, chamada chave. Os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as de cifras de transposição. Cifras de Substituição Cada letra ou grupo de letras é substituída por outra letra ou grupo de letras. EXEMPLO: Cada uma das 26 letras do alfabeto tem seu correspondente em outra letra. a b c d e f G h i j k l m n o p q r s t u v w x y z Q W E R T Y U I O P A S D F G H J K L Z X C V B N M Esse sistema é conhecido como substituição monoalfabética, sendo a chave o string de 26 letras correspondente ao alfabeto. Substituindo as letras da palavra "atacar" pela correspondente resultaria em "qzqeqk". Todavia em um texto pequeno, a cifra poderia ser descoberta facilmente. Pois o intruso começaria contando as letras mais freqüentes do texto cifrado e depois disso ele atribuiria a letra "a" à letra mais comum. Em seguida ele poderia verificar os trigamas e encontrar um no formato gXi, o que poderia sugerir que X poderia ser "u". Embora a criptografia moderna utilize as mesma idéias básicas da substituição tradicional, sua ênfase atual é diferente, ela tem como objetivo tornar o algoritmo complexo e emaranhado para que o intruso não seja capaz de obter qualquer sentido da mensagem. Cifras de Transposição Muda a ordem das letras. EXEMPLO: Para cifrar o texto "transferir um mil", a cifra se baseia em uma chave, que é uma palavra ou frase. Nesse exemplo é "disco". A chave servirá de apoio para enumerar as colunas. Palavra chave = "d i s c o" (2 3 5 1 4) A mensagem é escrita abaixo da chave, de 5 em 5 letras (que é a mesma quantidade de letras da chave). Palavra chave = "d i s c o" (2 3 5 1 4) trans fer i r ummil O texto é lido na vertical, conforme a ordem dessas colunas, resultando em "niitfuremsrlarm" Chave A chave consiste em um string que pode ser alterada sempre que necessário. Desse modo o algoritmo de criptografia pode ser conhecido. Quando o algoritmo se torna público, vários especialistas tentam decodificar o sistema. Se após alguns anos nenhum deles conseguirem a proeza, significa que o algoritmo é bom. Tamanho da chave O fator de trabalho para decodificar o método através de uma pesquisa no espaço da chave é exponencial em relação ao tamanho da chave. Por exemplo, uma chave com um tamanho de dois dígitos significa que existem cem possibilidades, e um tamanho de chave de seis dígitos significa um milhão de possibilidades, portanto quanto maior for a chave, maior será o fator de trabalho com que o intruso terá de lidar. Tipos de Chave O tipo de chave usada depende do tipo da criptografia usada. Existem dois tipos de criptografia: Criptografia simétrica, que usa uma chave privada. Criptografia de chave pública (assimétrica), que usa um par de chaves, conhecida como chaves pública e privada. Criptografia Simétrica Uma única chave criptografa e decriptografa os dados. Ela é relativamente pequena e rápida, contudo como desvantagem, não só o transmissor deve conhecer a chave como também o receptor. Além disso, o volume total dos dados transmitidos é limitado pelo tamanho da chave. É mais freqüentemente usada: Nas comunicações entre duas máquinas No armazenamento da informação em um disco rígido Exemplos resumidos de algoritmos que usam criptografia simétrica: Crypt –– Programa de criptografia original do Unix. O método se baseia em uma chave de comprimento variável. IDEA (International Data Encrypton Algorithm) –– O método se baseia na utilização de uma chave de 128 bits, onde blocos de texto da mensagem de entrada são alterados em uma seqüência de interações, produzindo blocos de saída. DES (Data Encrypton Standard) –– Um dos principais métodos de criptografia, baseado em chave secreta, desenvolvido pela IBM e adotado pelo governo dos EUA, como método de criptografia padrão. Algoritmo DES O DES é basicamente uma cifra de substituição que utiliza um caracter de 64 bits. Ele possui uma chave de 56 bits e seu algoritmo tem 19 estágios. O DES executa uma série de transposições, substituições, e operações de recombinação em blocos de dados de 64 bits. Inicialmente, os 64 bits de entrada sofrem uma transposição e são colocados em uma função usando tabelas estáticas de transposição e substituição (conhecidas como caixas-P e caixas-S). EXEMPLO do funcionamento de uma caixa-P: P significa "permuta", então se forem designados 8 bits de entrada "01234567" será efetuada uma transposição (que irá mudar a ordem dos números) . A saída dessa caixa-P será "36071245". EXEMPLO do funcionamento de uma caixa-S: S representa a substituição dos números por outros números. Supondo que o número 0 seja substituído por 2, o 1 por 4, o 2 por 5, o 3 por 0, o 4 por 6, o 5 por 7, o 6 por 1 e o 7 por 3. Para a entrada "01234567" a substituição resultaria em "24506713". Os estágios são parametrizados por diferentes funções da chave. A função consiste em 4 etapas, que são executadas em seqüência. 1. Primeiro é feita uma transposição de 64 bits dos dados. 2. Os 16 estágios restantes são parametrizados por diferentes funções da chave. 3. O penúltimo estágio troca os 32 bits da esquerda pelos 32 bits da direita (os 32 bits representam uma divisão dos 64 bits). 4. O último estágio é o inverso da primeira transposição. Em cada uma das 16 iterações, é utilizada uma chave específica. Antes de se iniciar o algoritmo, uma transposição de 56 bits é aplicada à chave. Antes de cada iteração, a chave é particionada em duas unidades de 28 bits, sendo que cada uma delas é roteada para a esquerda por um determinado número de bits. Em cada rodada, um subconjunto de 48 bits dos 56 bits é extraído e permutado. O algoritmo então executa a transposição final e gera 64 bits. Este algoritmo é estruturado de uma maneira que a mudança de qualquer bit de entrada surta um efeito maior em quase todos os bits de saída. Texto Normal 64 bits T R A N S P O S I Ç Ã O E S T Á G I O 1 ... E S T Á G I O ... N E S T Á G I O 16 P E R M U T A Ç Ã O T R A N S P O S I Ç Ã O Texto Criptografado 64 bits Chave de Codificação Criptografia de chave pública Nesse método as chaves de criptografia e decriptografia são diferentes. Quando uma chave criptografa um dado, a outra pode decriptografá-lo. O usuário tem duas chaves, uma chave pública que é usada por todo mundo que queira enviar mensagens a ele, e a chave privada que o usuário utiliza para decriptografar as mensagens recebidas. Aqui o usuário divulga sua chave pública para os outros, e mantém a sua chave privada em sigilo. Poderia também ser ao contrário, criptografar com chave privada e decriptografar com chave pública. Nesse caso, não existe uma questão de segurança, mas de identificação, certificando a origem do dado. Algumas desvantagens desse método é o fato dele ser lento, volumoso e as chaves não podem ser facilmente divididas. É mais freqüentemente usado para certificar a origem do dado e integridade. Exemplos resumidos de algoritmos que usam criptografia assimétrica: Diffie-Hellman –– É um método para desenvolver e trocar uma chave compartilhada sobre um canal de comunicação público utilizando transformações matemáticas. ElGamal –– É um método baseado na exponenciação e aritmética modular. RSA –– O mais importante método de criptografia assimétrico, cujo nome deriva das iniciais dos autores Rivest, Shamir e Adleman. Algoritmo RSA O RSA usa duas chaves criptográficas, uma chave pública e uma privada. A chave pública é usada para criptografar a mensagem e a chave privada é usada para decriptografar a mensagem (pode ser viceversa). A segurança desse método se baseia na dificuldade de fatorar números extensos. Segundo seus pesquisadores, a fatoração de um número de 200 dígitos requer 4 milhões de anos para ser processada; fatorar um número de 500 dígitos exige 1025 anos. Mesmo que os computadores se tornem mais velozes, muito tempo irá passar até que seja possível fatorar um número de 500 dígitos, e até lá poderão escolher a fatoração de um número ainda maior. O funcionamento do RSA: 1. São escolhidos dois números primos extensos, p e q (geralmente maiores que 10100). 2. Calcula-se n = p*q e z = (p -1)*(q -1). 3. Escolhe-se um número primo d, em relação a z. 4. Encontramos e de forma que (e*d) mod z = 1. O texto simples (uma string de bits) é dividido em blocos, de modo que cada mensagem de texto simples p fique no intervalo 0 <= p < n. Para criptografar a mensagem p é calculado C = pe mod n. Para decriptografar C, é calculado p = Cd mod n. É possível provar que, para todo p na faixa especificada, as funções de criptografia e decriptografia são inversas entre si. Para realizar a criptografia, é necessário ter e e n, ao passo que para a decriptografia, são necessários d e n. Portanto a chave pública consiste no par (e,n) e a chave privada consiste em (d,n). Se pudesse fatorar o valor de n (publicamente conhecido), seria possível então encontrar d, utilizando-se o algoritmo de Euclides, porém fatorar números extensos é extremamente difícil. EXEMPLO: Escolheremos p = 3 e q = 11 Calculando n = p*q e z = (p -1)*(q -1); n = 3*11 = 33; z = 2*10 =20; O valor escolhido como número primo, em relação a z é 7, visto que 7 e 20 não possuem fatores comuns. Desse modo d = 7. Para que a equação (e*d) mod z = 1 seja verdadeira e deverá ser um número que multiplicado por 7 mod 20 seja igual a 1. Fazendo tentativa, 1 não daria certo pois (1*7) mod 20 é diferente de 1, com 2 também não daria certo pois (2*7) mod 20 é diferente de 1. O número 3 se identifica pois (3*7) mod 20 = 1, portanto e = 3. Cálculo do transmissor Cada letra do alfabeto é representada por um número: A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J K L M N O P Q R S T U V W X Y Z 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 P p p3 Simbólico Numérico R 18 5832 A 1 1 Q 17 4913 U 21 9261 E 5 125 L 12 1728 C = p3 mod 33 24 1 29 21 26 12 Cálculo do Receptor C = p3 mod 33 24 1 29 21 26 12 C7 4586471424 1 17249876309 1801088541 8031810176 35831808 C7 mod 33 18 1 17 21 5 12 Simbólico R A Q U E L Os números escolhidos para p e q, nesse exemplo são muito pequenos (geralmente os números são maiores que 10100). Vantagens da Criptografia Proteger a informação armazenada em trânsito Deter alterações de dados Identificar pessoas Desvantagens da Criptografia Não há como prevenir que um intruso: Apague todos os seus dados, estando eles criptografados ou não. Modifique o programa para modificar a chave . Desse modo o receptor não conseguirá decriptografar com a sua chave. Acesse o seu arquivo antes dele ser criptografado. Assinatura Digital A Assinatura Digital é a versão digital da assinatura de punho em documentos físicos. A assinatura de punho é um componente que assegura que a pessoa em questão escreveu ou concordou com o documento no qual consta sua assinatura. A Assinatura Digital apresenta um grau de segurança muito superior ao de uma assinatura de punho. O destinatário de uma mensagem assinada digitalmente pode verificar se a mensagem foi realmente emitida pela pessoa cuja assinatura nela consta, ou se a mensagem não foi em algum ponto adulterada intencional ou acidentalmente depois de assinada. Mais ainda, uma Assinatura Digital que tenha sido verificada não pode ser negada; aquele que assinou digitalmente a mensagem não pode dizer mais tarde que sua assinatura digital foi falsificada. Em outras palavras, Assinaturas Digitais habilitam "autenticação" de documentos digitais, garantindo ao destinatário de uma mensagem digital tanto a identidade do remetente quanto a integridade da mensagem. Por exemplo, para personalizar uma mensagem, um determinado usuário A codifica uma mensagem utilizando sua chave secreta e a envia para o destinatário. Somente a chave pública de A permitirá a decodificação dessa mensagem. Portanto é a prova de que A enviou a mensagem. A mensagem assim pode ser decodificada por qualquer um que tenha a chave pública de A. Propriedades 1) a assinatura é autêntica: quando um usuário usa a chave pública de A para decifrar uma mensagem, ele confirma que foi A e somente A quem enviou a mensagem; 2) a assinatura não pode ser forjada: somente A conhece sua chave secreta; 3) o documento assinado não pode ser alterado: se houver qualquer alteração no texto criptografado este não poderá ser restaurado com o uso da chave pública de A; 4) a assinatura não é reutilizável: a assinatura é uma função do documento e não pode ser transferida para outro documento; 5) a assinatura não pode ser repudiada: o usuário B não precisa de nenhuma ajuda de A para reconhecer sua assinatura e A não pode negar ter assinado o documento. Compromisso de Terceiro Baseia-se no conceito de um terceiro parceiro de confiança que atesta certas propriedades da informação intercambiada entre duas entidades, como sua origem, sua integridade, ou o momento em que ela foi enviada ou recebida. Autenticação Kerberos Sistema de segurança desenvolvido pelo MIT (Massachusetts Institute of Technology) para o projeto Athena que utiliza o conceito de algoritmo de chave pública. Usado na Internet, adotado pela OSF (Open Software Foundation) como parte do DCE (Distributed Computing Environment). Vários fornecedores, como IBM, DEC, HP e Sun planejam tornar Kerberos parte de seus sistemas operacionais UNIX. Kerberos está baseado em 3 componentes para assegurar a segurança da rede: um banco de dados um servidor de autenticação um servidor garantidor de tiquetes (TGS=Ticket Granting Server) Todos os três componentes ficam em um servidor seguro que é conectado à rede. Componentes do Kerberos: O banco de dados contém todos os nomes de usuários, suas passwords, os serviços a que tem direito e as chaves de criptografia associadas. O servidor de autenticação assegura que a pessoa, requisitando um serviço é quem diz ser. O servidor garantidor de tiquetes fornece tiquetes para os usuários quando o servidor de autenticação verificar sua identidade. Para acessar uma aplicação, um usuário necessita do tiquete e uma segunda credencial, denominada autenticador que consiste do nome do usuário, o endereço IP da estação e o horário em que o pedido foi originado. Para trabalhar com Kerberos o sistema operacional do PC precisa ser modificado para processar os tiquetes e enviar autenticadores. Cada aplicação que deve ser protegida por meio do Kerberos precisa ser também modificada. Controle de Acesso Os mecanismos de controle de acesso são usados para garantir que o acesso a um recurso é limitado aos usuários devidamente autorizados. Integridade dos Dados Os mecanismos de controle de integridade atuam em dois níveis: o controle da integridade de dados isoladas e controle da integridade de uma conexão, isto é, das unidades de dados e da sequência de unidades de dados transmitidas no contexto da conexão. Enchimento de Tráfego (Traffic Padding) A geração de tráfego espúrio e o enchimento das unidades de dados fazendo com que elas apresentem um comprimento constante são formas para fornecer proteção contra a análise do tráfego. Controle do Roteamento A possibilidade de controlar o roteamento, especificando rotas preferenciais (ou obrigatórias) para a transferência de dados, pode ser utilizada para garantir que os dados sejam transmitidos em rotas fisicamente seguras ou para garantir que a informação sensível seja transportada em rotas cujos canais de comunicação forneçam os níveis apropriados de proteção. Segurança Física e do Pessoal Medidas que garantam a integridade física dos recursos de um sistema são indispensáveis para garantir a segurança do sistema como um todo. Hardware / Software de Confiança Algumas das entidades que fazem parte de um sistema devem fornecer garantias que funcionam corretamente para que se possa confiar nos mecanismos de segurança que implementem a política de segurança do sistema. Rótulos de Segurança Os recursos do sistema devem ser associados a rótulos de segurança que indicam, por exemplo, seu nível de sensibilidade. O rótulo de segurança deve ser mantido junto com os dados quando eles são transportados. Detecção e Informe de Eventos A detecção de eventos relevantes no contexto da segurança inclui a detecção de aparentes violações à segurança e deve incluir, adicionalmente, a detecção de eventos "normais", como um acesso bem-sucedido ao sistema (login). Registro de Eventos O registro de eventos que podem significar ameaças à segurança de um sistema constitui-se em um importante mecanismo de segurança, pois possibilita a detecção e investigação de possíveis violações da segurança de um sistema, além de tornar possível a realização de auditorias de segurança.