Segurança da Informação Prof. Gleison Batista de Sousa
Ao longo do tempo e com a evolução tecnologia surgiram uma quantidade enorme de problemas desafiadores relacionados a segurança da informação. Quais problemas são esses?
Aumento do uso da Internet Aumento do registro dos incidentes de segurança (intrusos e funcionários insatisfeitos) Numerosos relatos de vulnerabilidades de softwares (inclusive os de segurança) Um sistema com alguma falha de Programação pode deixar um servidor ou toda uma rede exposta a ataques Proteção física é dificilmente concretizada
HTTPS O protocolo HTTPS nada mais é do que uma otimização do protocolo HTTP combinado com algoritmos criptografados Esses algoritmos permitem que os dados sejam transmitidos de forma que não possam ser interpretados por outro computador senão por aquele a que são destinados
Características do HTTPS Criptografia: com o auxilio de algoritmos criptografados de alta confiabilidade, os dados podem trafegar pela rede de forma ilegível Autenticidade: Com auxilio de entidades certificadoras é possível atestar se um website é verdadeiramente de um instituição e que seu conteúdo é legitimo O HTTP tem por padrão a porta 80, já o HTTPS trabalha geralmente na porta 443
Protocolo SSL SSL é um protocolo que permite a transmissão de informações através da internet de forma criptografada garantindo que a informação seja enviada, sem alterações e exclusivamente para o servidor para o qual pretende enviar Surgiu na década de 90 Desenvolvido pela Netscape Protocolo direcionado a segurança na Internet
Principais objetivos do SSL Autenticar o cliente e o servidor entre si; Garantir a integridade dos dados: Durante uma transmissão, dados não podem ser alterados (seja de forma intencional ou não); Assegurar a privacidade dos dados: As informações trocadas entre cliente e servidor devem ser protegidas de interceptação e devem ser lidas apenas pelo destinatário
SSL funcionamento O Cliente é o sistema que inicia a comunicação segura; O servidor responde ao pedido do cliente. No modo mais comum de aplicação do SSL, a navegação Web segura, o navegador (Firefox, iexplorer, Chrome, etc...) é o cliente e o site é o servidor. Estes dois papéis se aplicam a todas as aplicações que usam o SSL.
Mensagens em uma comunicação SSL Alerta Informa à outra parte de uma possível brecha na segurança ou falha de comunicação. ApplicationData Informação real que as duas partes irão trocar entre si, que é criptografada, autenticada e/ou verificada por SSL. Certificate Uma mensagem que carrega o certificado da chave pública do remetente. CertificateRequest Uma solicitação do servidor para que o cliente forneça seu certificado da chave pública.
Mensagens em uma comunicação SSL CertificateVerify Uma mensagem do cliente que verifica que ele conhece a chave privada correspondente à sua chave pública certificada. ChangeCIpherSpec Um indicador para começar a utilizar serviços de segurança acordados. ClientHello Uma mensagem do cliente indicando os serviços de segurança que ele deseja e que ele é suporta. ClientKeyExchange Uma mensagem do cliente carregando as chaves criptográficas para as comunicações.
Mensagens em uma comunicação SSL Finished Uma indicação de que todas as negociações iniciais estão completas e uma comunicação segura foi estabelecida. HelloRequest Um pedido do servidor para que o cliente inicie (Ou reinicie) o processo de negociação. ServerHello Uma mensagem do servidor indicando os serviços de segurança que serão utilizados para a comunicação vigente. ServerHelloDone Uma indicação do servidor de que ele completou todos os seus pedidos para o cliente para estabelecer a comunicação. ServerKeyExchange Uma mensagem do servidor carregando as chaves criptográficas para a comunicação.
Estabelecendo uma comunicação O cliente e o servidor negociam uma conexão segura através de uma série de passos, nos quais devem decidir os algoritmos a serem usados e gerar segredos, que são geralmente números aleatórios. Negociação dos algoritmos a serem utilizados Troca de chaves (segredos) e autenticação Encriptação autenticação de mensagens
O processo de comunicação do SSL
O processo de comunicação do SSL 1. Cliente envia a mensagem ClientHello propondo as opções de SSL. 2. O servidor responde com a mensagem ServerHello dizendo quais opções serão utilizadas naquela comunicação. 3. O Servidor envia sua chave pública. 4. O Servidor conclui sua parte da negociação. 5. O Cliente envia as informações da chave de sessão (Criptografada com a chave pública do servidor).
O processo de comunicação do SSL 6. O cliente envia a mensagem ChangeCipherSpec para ativar as opções negociadas para as mensagens seguintes. 7. Cliente envia a mensagem Finished. 8. Servidor envia a mensagem ChangeCipherSpec para ativar as opções negociadas para as mensagens seguintes. 9. Servidor envia Finished.
Protocolo TSL O protocolo TLS foi criado como o sucessor do SSL. É mais frequentemente usado como uma configuração nos programas de e-mail, mas assim como o SSL, o TLS pode ter um papel em qualquer transação cliente-servidor.
O HTTPS por ser mais robusto consome mais recursos que o HTTP, Quais os principais recursos consumidos?
Trafego de Rede: Mais Banda será consumida porque os dados são criptografados Tempo de CPU: A criptografia exige muito da CPU, inclusive do servidor que deve atender múltiplas requisições simultaneamente Utilização da Memoria: Armazenamento mais intensivo pelo uso de arquivos criptografados
Configuração do HTTPS Para se utilizar HTTPS o processo de configuração é resumido em três passos Criação das chaves SSL Criação do Certificados Configuração do Servidor WEB OBS: Para criar as chaves é necessário instalar e configurar a aplicação openssl
HASH É a nomenclatura que se da aos algoritmos de criptografia, os tipos mais comuns são o md5, sha1 e base64
MD5 É um algoritmo de um hash de 128 bits; gera uma String alfanumérica de 32 caracteres, não importa se você tá gerando o md5 de duas letras ou de um texto; O md5 gerado sempre vai ter 32 caracteres; Não pode ser decodificada;
MD5 $string = 'Professor Gleison Batista de Sousa'; $codificada = md5($string); echo "Resultado da codificação usando md5: $codificada"; Resultado: 26f72e1d18c5458e608cc3beda4a5d3d
SHA1 É praticamente idêntico ao md5, só que tem 160 bits, o que acaba criando um resultado maior: 40 caracteres alfanuméricos; Aumenta o grau de segurança; Não pode ser decodificada;
SHA1 $string = 'Professor Gleison Batista de Sousa'; $codificada = sha1($string); echo "Resultado da codificação usando sha1: $codificada" ; Resultado: c00e40fb2f847585ffd71ab79b4989010ec5cdf1
Base64 É um método para codificação dos dados para transferência na Internet; Ela é uma codificação de mão dupla, e usando uma segunda função você pode descobrir a string original de uma string codificada; Pode ser decodificada através de sua função de decodificação;
base64_encode Tem a função de codificar a string; $string = 'Professor Gleison Batista de Sousa'; $codificada = base64_encode($string); echo "Resultado da codificação usando base64: $codificada "; Resultado: UHJvZmVzc29yIEdsZWlzb24gQmF0aXN0YSBkZSBTb3VzYQ==
base64_decode Tem a função de decodificar a string; $original = base64_decode($codificada); echo "Resultado da decodificação usando base64: " ; Resultado: Professor Gleison Batista de Sousa