02 - Engenharia de Software II - Segurança de Software

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 25

CENTRO UNIVERSITÁRIO FARIAS BRITO

Curso: Ciência da Computação

Engenharia
de
Software II
Prof. Dr. HELANO MATOS
UNIDADE – 02
Segurança de Software
Segurança de Software
1. Motivação
A Segurança dos sistemas é muito importante pelos seguintes
motivos:

o As falhas de sistema afetam um grande número de pessoas

o Sistemas não confiáveis podem provocar perda de informação

o Os usuários rejeitam os sistemas não confiáveis, não seguros ou


desprotegidos

o Os custos da falha de sistema podem ser enormes

3
Segurança de Software
1. Motivação
Ao projetar um sistema confiável, deve-se considerar:

❑ Falha de hardware

❑ Falha de software

❑ Falha humana/operacional

4
Segurança de Software

2. Propriedades da Segurança de Software (Sommerville)

©Ian Sommerville Software Engineering, 10th edition. 5


Segurança de Software
2. Outras Propriedades da Segurança de Software (Sommerville)
VI. Reparabilidade. O transtorno causado pela falha pode ser minimizado
se o sistema puder ser reparado rapidamente. O software de código
aberto torna isso mais fácil o seu reparo, mas o reuso dos componentes
pode dificultar.
VII.Manutenibilidade. O software manutenível é aquele que pode ser
adaptado para lidar com os novos requisitos e no qual há baixa
probabilidade de que as mudanças feitas introduzam novos erros no
sistema.
VIII.Tolerância ao erro. Os erros de entrada do usuário devem ser evitados
e tolerados. Quando ocorrerem erros do usuário, o sistema deve, na
medida do possível, detectá-los e corrigi-los automaticamente ou solicitar
ao usuário que forneça os dados novamente.

6
Segurança de Software
2. Outras Propriedades da Segurança de Software (Sommerville)
IX. Redundância. Significa que uma capacidade de reserva está incluída em
um sistema e que pode ser utilizada se parte desse sistema falhar.
X. Diversidade. Significa que componentes redundantes do sistema são de
tipos diferentes, aumentando assim as chances de que eles não venham a
falhar exatamente da mesma maneira.

Diferença entre Redundância e Diversidade:


✓ Para proteger nossos lares, usamos mais de uma tranca (redundância) e
elas costumam ser de tipos diferentes (diversidade).
✓ O hardware e o software de controle de voo dos aviões como Airbus e
Boeing são ambos diversos e redundantes.

7
Segurança de Software
3. Sistemas Sociotécnicos

▪ Sistemas Sociotécnicos incluem elementos não técnicos, como pessoas,


processos e regulamentos; e elementos técnicos, como hardware, software
e outros equipamentos acessórios.

▪ A segurança do sistema é influenciada por todos os elementos em um


sistema sociotécnico — hardware, software, pessoas e organizações.

▪ Exemplo: Software das estações meteorológicas

8
Segurança de Software
3. Sistemas Sociotécnicos (Composição)

Sistema
Sociotécnico

Hardware Software Pessoas Organizações

9
Segurança de Software
4. Processos de software confiáveis (Atributos)
▪ Auditável: O processo deve ser compreensível para pessoas que não
sejam participantes do processo, que podem conferir se os padrões do
processo estão sendo seguidos e fazer sugestões para a melhoria do
processo.
▪ Diverso: O processo deve incluir atividades de verificação e validação
redundantes e diversas.
▪ Documentável: O processo deve ter um modelo definido que estabeleça
suas atividades e a documentação que deve ser produzida durante essas
atividades.
▪ Robusto: O processo deve ser capaz de se recuperar de falhas de
atividades individuais.
▪ Padronizado: O processo deve disponibilizar um conjunto geral de
padrões de desenvolvimento de software, abrangendo sua produção e sua
documentação.
10
Segurança de Software
5. Métodos Formais

Definições:
Métodos Formais
São abordagens matemáticas para o desenvolvimento de software.

❑ Métodos de desenvolvimento em que o software é modelado usando


construtos matemáticos formais, como predicados e conjuntos.

❑ A transformação formal converte esse modelo em código.

❑ São utilizados principalmente na especificação e no desenvolvimento de


sistemas críticos.
Sistema Crítico
É um sistema de computador cuja falha pode resultar em perdas econômicas,
humanas ou ambientais significativas. 11
Segurança de Software
5. Métodos Formais
Exemplos Práticos:

➢ Sistemas de caldeiras industriais

➢ Sistemas de usinas nucleares

➢ Sistemas de controle de trens e metrôs

➢ Sistemas de controle de voo

➢ Sistemas de pagamentos (PIX, cartão de débito, TED)

➢ Sistema de verificação de drivers (hardware, software básico, etc.)

12
Segurança de Software
5. Métodos Formais
Principais Técnicas:
➢ Z
➢ VDM
➢ CSP
➢ Redes de Petri
Esboço formal para uma a
➢ Larc bomba de insulina

➢ OBJ
➢ Lotos

13
Segurança de Software
6. Projeto de Software Seguro
Diretrizes

❖ Basear as decisões de segurança em uma política explicita. Em princípio,


todos os aspectos da política de segurança da informação devem estar
refletidos nos requisitos do sistema.

❖ Usar a defesa em profundidade. Não se deve contar com um único


mecanismo para garantir a segurança da informação; em vez disso,
várias técnicas diferentes devem ser empregadas.

❖ Falhar com segurança. Quando o sistema falha, procedimentos de


contingência devem ser usados.

14
Segurança de Software
6. Projeto de Software Seguro
Diretrizes

❖ Balancear segurança da informação e usabilidade. É necessário verificar


quais usuários estão autorizados a usar o sistema e se eles estão agindo
em concordância com as políticas de segurança da informação.

❖ Registrar as ações do usuário. Deve-se manter um registro (log) das


ações dos usuários.

15
Segurança de Software
6. Projeto de Software Seguro
Diretrizes

❖ Compartimentalizar seus ativos. Os usuários só devem ter acesso às


informações das quais necessitam para o seu trabalho, em vez de a
todas as informações em um sistema.

❖ Usar redundância e diversidade para diminuir o risco. Manter mais de


uma versão do software e dos dados em um sistema, bem como usar
diferentes tecnologias.

16
Segurança de Software
6. Projeto de Software Seguro
Diretrizes

❖ Projetar para a implantação. Instalar o software nos computadores nos


quais ele será executado e configurar os parâmetros do software para
refletir o ambiente de execução e as preferências do usuário do sistema.

❖ Projetar para a recuperação. É preciso pensar a respeito de como se


recuperar de possíveis falhas e restaurar o sistema para um estado
operacional seguro.

17
Segurança de Software
6. Projeto de Software Seguro
Boas práticas:

✓ Limitar a visibilidade das informações em um programa

✓ Conferir a validade de todas as entradas

✓ Fornecer tratamento para todas as exceções

✓ Minimizar o uso de construtos propensos a erro

✓ Fornecer capacidade de reinicialização

✓ Incluir tempos de espera (timeouts) quando invocar componentes


externos

✓ Dar nomes a todas as constantes que representam valores do mundo real18


Segurança de Software
7. Engenharia de Resiliência
❖ A resiliência de um sistema é um julgamento de quão bem esse sistema
pode manter a continuidade de seus serviços críticos na presença de
eventos disruptivos, como falha de equipamentos e ciberataques.

❖ Ou seja, um sistema resiliente é aquele que consegue operar com sucesso


quando alguns dos pressupostos fundamentais definidos por seus
projetistas deixam de valer.

19
Segurança de Software
7. Engenharia de Resiliência
A essência da resiliência é manter a disponibilidade dos serviços críticos.
Consequentemente, deve-se conhecer:

➢ Os serviços do sistema que são mais críticos para um negócio

➢ A qualidade mínima do serviço que deve ser mantida

➢ Como esses serviços poderiam ser comprometidos

➢ Como esses serviços podem ser protegidos

➢ Como se recuperar rapidamente se os serviços ficarem indisponíveis

20
Segurança de Software
7. Engenharia de Resiliência
Plano de resiliência à ciberataques:

©Ian Sommerville Software Engineering, 10th edition. 21


Segurança de Software
7. Engenharia de Resiliência
Etapas das atividades de resiliência:

©Ian Sommerville Software Engineering, 10th edition. 22


Segurança de Software
8. Ferramentas de Segurança de software
Existem várias ferramentas de segurança de software disponíveis,
incluindo:

✓ Firewalls: bloqueia o acesso não autorizado à rede.

✓ Antivírus: detecta e remove software malicioso.

✓ Gerenciadores de senhas: armazena senhas de forma segura e gera


senhas fortes.

✓ Proteção de dados: criptografa arquivos e dados sensíveis.

✓ Ferramentas de verificação de vulnerabilidades: identifica vulnerabilidades


no software e fornece recomendações para corrigi-las.
23
Segurança de Software
8. Ferramentas de Segurança de software

✓ Autenticação de dois fatores: adiciona uma camada extra de segurança às


senhas.

✓ Sistemas de detecção de intrusão (IDS): monitora a rede e alerta sobre


atividades suspeitas.

✓ Software de gerenciamento de acesso (SAM): controla quem tem acesso a


quais recursos.

✓ Software de gerenciamento de configuração (CMS): gerencia e monitora


as configurações de segurança de todos os dispositivos na rede.

Mais ferramentas na disciplina de Segurança da Informação !


24
Segurança de Software

Contatos

www.linkedin.com/in/professorhelano

25

Você também pode gostar