ATPS de Desenvolvimento de Software Seguro
Por: caic • 2/4/2017 • Monografia • 1.267 Palavras (6 Páginas) • 306 Visualizações
[pic 1]
Faculdade de ciência e tecnologia – FACNET
Professor: Guilherme Costa
ATPS de Desenvolvimento de Software Seguro
Integrantes:
Victor Bonifácio pereira farias – 8410133183
Caic Souza Passos - 8408119661
Marcela da Silva de Souza - 6441173027
Paulo Sérgio Ferreira - 3773745621
Onofre da Silva carvalho – 9911151678
Israel Silva Alcantara - 3708636467
Brasília, 01 de Abril de 2016.
Introdução
No século XXI, umas das principais mudanças que ocorreram e ainda estão em processo são as questões de segurança de dados e informações. Atualmente com a diversificação da tecnologia e dos meios de comunicação, tornou-se bastante simples a troca de informação entre pessoas, entre empresas ou ambas. Com determinada evolução a área de segurança evoluiu drasticamente e vem sendo implantada em todos os setores.
Relatório 1: Desenvolvendo Softwares Seguros
Os sistemas de segurança estão em toda a parte e são bastante requisitados, pode-se encontrar num simples sistema da padaria ao complexo sistema de troca de informações internacionais entre grandes potencias. No mundo contemporâneo, informação é poder e deve ser tratada com máxima atenção, pois em torno desta gira uma camada de questões que podem influenciar uma empresa, uma pessoa ou uma região inteira.
Todo sistema de segurança possui cinco princípios básicos para seu desenvolvimento e execução. São estes:
- DISPONIBILIDADE;
- CONFIDENCIALIDADE;
- INTEGRIDADE;
- AUTENTICIDADE;
- NÃO REPUDIO;
A Disponibilidade garante que uma informação estará disponível para acesso no momento desejado. Diz respeito à eficácia do sistema, ao correto funcionamento da rede para que quando a informação for necessária ela poderá ser acessada. A perda da disponibilidade se dá quando se tenta acessar uma informação e não se consegue o acesso esperado. Este é um considerado com princípio básico de um sistema.
A Confidencialidade garante que a informação só será acessível por pessoas autorizadas. A principal forma de garantir a confidencialidade é por meio do controle de acesso (autenticação), já que este controle garante que o conteúdo da mensagem somente será acessado por pessoas autorizadas. A confidencialidade (privacidade) se dá justamente quando se impede que pessoas não autorizadas tenham acesso ao conteúdo da mensagem. Refere-se à proteção da informação contra a divulgação não permitida. A perda da confidencialidade se dá quando alguém não autorizado obtém acesso a recursos/informações.
A Autenticidade garante a identidade de quem está enviando a informação, ou seja, gera o não-repúdio que se dá quando há garantia de que o emissor não poderá se esquivar da autoria da mensagem (irretratabilidade). Normalmente não entre como um dos pilares da segurança da informação, mas fica aqui para fechar o mnemônico DICA.
A Integridade garante que o conteúdo da mensagem não foi alterado ou violado indevidamente. Ou seja, mede a exatidão da informação e seus métodos de modificação, manutenção, validade. Há perda da integridade quando a informação é alterada indevidamente ou quando não se pode garantir que a informação é a mais atualizada, por exemplo.
O Não-Repudio garante que a pessoa não negue ter assinado ou criado a informação, o que é muito importante, pois assim pode-se saber quem fez o envio dos dados ou informações ou quem recebeu entes arquivos.
Os cinco Princípios acima são requisitos básicos de um sistema de segurança que vai do nível mais elevado e complexo ou mais básico.
Relatório 2: Evitando Estouro de Buffer
O Buffer Overflow ocorre quando uma quantidade grande de bytes sobrepõem outros valores na memória, tais como o armazenado no registador EBP e EIP. Para resolver esse problema deve-se gerar um buffer contendo uma string qualquer (geralmente usam NOP) mais um endereço de retorno que, no caso, aponta para onde a execução do programa deve saltar e, por fim, o shellcode (códigos de máquina). Quando o valor de EIP é sobreposto, o programa desvia sua execução saltando para o código do shellcode e então o código malicioso é executado.
Para prevenir o estouro de memória um dos métodos tradicionais é verificar a quantidade de bytes que será copiado, e caso seja maior, copiaremos apenas a quantidade suportada pela variável ou pode-se utilizar alocação dinâmica de memória para que o tamanho da memória reservada para a variável seja do mesmo tamanho da string.
Ainda podemos prevenir o Buffer pverflow (COOKIES)
Cookies como são conhecidos, servem para armazenar informações que serão utilizadas em um futuro pouco distante, seja para validação ou para lembrar algo feito anteriormente.
Relatório 3: Utilizando Criptografia
$texto_criptografado = base64_encode("senha");
echo $texto_criptografado;
?>
O código acima apresenta o método de criptografia Hash Base64, bastante utilizado em PHP para codificação dos dados para transferência na Internet. Ela é uma codificação de mão dupla. Porém não é o único tipo de criptografia que pode ser utilizada em PHP e nem a mais forte. As criptografias MD5 de 128 bits e a SHA1 de 160 bits são mais fortes e também bastante utilizadas em outras linguagens. O nível de segurança de uma criptografia é medido no número de bits, ou seja, quanto mais bits forem usados, mais difícil será quebrar a criptografia na força bruta. No caso da função Hash, o nível de segurança é dado pela dificuldade de se criar colisões intencionais, evitando que haja sequência iguais para dados diferentes.
A MD5 de 128 é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321. Este protocolo e muito utilizado para integridade de arquivos e logins. Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança.Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida).
...