aboutsummaryrefslogtreecommitdiff
path: root/aulas/seguranca.rst
diff options
context:
space:
mode:
Diffstat (limited to 'aulas/seguranca.rst')
-rw-r--r--aulas/seguranca.rst85
1 files changed, 62 insertions, 23 deletions
diff --git a/aulas/seguranca.rst b/aulas/seguranca.rst
index aae2b36..2915480 100644
--- a/aulas/seguranca.rst
+++ b/aulas/seguranca.rst
@@ -1,27 +1,35 @@
6. Segurança e privacidade
==========================
-6.1 - Segurança começa no desenvolvimento
+6.1 - Segurança da informação
+-----------------------------
+
+* Confidencialidade.
+* Integridade.
+* Disponibilidade.
+* Autenticidade.
+
+6.2 - Segurança começa no desenvolvimento
-----------------------------------------
+* Segurança: para fins do nosso curso, é a proteção da aplicação.
+* Privacidade: proteção dos dados em poder da aplicação.
* Criptografia é só uma parte das práticas seguras.
-* Modelagem de ameaças e testes de penetração: inverta os papéis: e se você fosse o/a atacante?
-* A dificuldade de se encontrar vulnerabilidades.
-* Segurança por isolamento ajuda, mas botar a aplicação dentro de um cordão sanitário protege mais o ambiente de hospedagem do que a aplicação.
+* Obscuridade não é segurança: disclosures são saudáveis no desenvolvimento.
-6.2 - Use bibliotecas criptográficas consolidadas!
---------------------------------------------------
+6.3 - Modelagem de ameaças e auditoria
+--------------------------------------
-* Erros de implementação são grandes fontes de brechas de segurança.
-* Caso você precise implementar primitivas criptográficas no seu código, use bibliotecas existentes!
-* Encapsule as conexões das suas aplicações em canais criptografados.
-* TLS é o protocolo mais consolidado e adequado, apesar de não ser perfeito.
+* É fácil (e barato) produzir e difícil (e caro) encontrar vulnerabilidades.
+* Modelagem de ameaças (teoria) e testes de penetração (prática): inverta os papéis: e se você fosse o/a atacante?
+* Segurança por isolamento ajuda, mas botar a aplicação dentro de um cordão sanitário protege mais o ambiente de hospedagem do que a aplicação.
-6.3 - Princípio das permissões mínimas
---------------------------------------
+6.4 - Exemplo e ameaça e o princípio das permissões mínimas
+-----------------------------------------------------------
-* Comece o desenvolvimento com o mínimo de permissões necessárias para a sua aplicação e libere o acesso conforme necessário.
-* Permissões de arquivos são propriedades no sistema de arquivo!
+* Exemplo de ameaça: o(a) atacante tem permissão de escrita no código da aplicação.
+* Mitigação: forneça o mínimo de permissões necessárias para a sua aplicação e libere o acesso conforme necessário.
+* Atenção! Permissões de arquivos são propriedades no sistema de arquivo!
* Elas não são necessariamente preservadas com a cópia de arquivos entre sistemas!
Roteiro do screencast:
@@ -39,20 +47,51 @@ Roteiro do screencast:
# Mudando a posse de arquivos e pastas
chown
-6.4 - Criptografia básica
+6.5 - Criptografia básica
-------------------------
-* Assinaturas digitais.
-* Comunicação cifrada.
-* Checagem de integridade de código no git e em geral.
+* Criptografia não é tudo em segurança, porém é o requisito básico e essencial.
+* Ameaça: machine-in-the-middle.
+* Mitigação:
+ * Comunicação cifrada: HTTPS.
+ * Checagem de integridade de código no git e em geral (assinaturas e checksums).
-6.5 - Certificados x509 para SSL/TLS/HTTPS
-------------------------------------------
+6.6 - Use bibliotecas criptográficas consolidadas!
+--------------------------------------------------
-* `Let's Encrypt <https://letsencrypt.org>`_.
+* Erros de implementação são grandes fontes de brechas de segurança.
+* Caso você precise implementar primitivas criptográficas no seu código, use bibliotecas existentes!
+* Encapsule as conexões das suas aplicações em canais criptografados.
+* TLS é o protocolo mais consolidado e adequado, apesar de não ser perfeito.
+
+6.7 - HTTPS
+-----------
+
+6.7 - O que é
+~~~~~~~~~~~~~
-6.6 - Atividades
+* HTTPS: HTTP em cima de uma conexão SSL/TLS.
+* Padrão dos anos 90 e melhorado desde então.
+* Bem implementado: oferece segurança da informação num nível aceitável, porém não oferece anonimato.
+* Mal implementado: só oferece ilusão de segurança.
+* Movimento crescente para tornar HTTPS padrão em todos os sites!
+
+6.7 - Certificados para HTTPS
+-----------------------------
+
+* No HTTPS, a autenticidade é obtida usando uma "cadeia de certificação" provida por autoridades certificadoras.
+* Checagem feita no navegador.
+* É um esquema altamente vulnerável: a qualquer momento o castelo de cartas pode ruir.
+* As alternativas a esse modelo ainda são incipientes.
+
+6.8 - Atividades
----------------
-6.7 - Referências
+#. Faça um pequeno documento de modelagem de ameaças para o seu projeto. Coloque-o na forma de "ameaça/mitigação". Organize cada par ameaça/mitigação segundo probabilidade decrescente de ocorrência e custo crescente de implementação, facilitando a implementação de cada medida de segurança.
+#. Desafio: caso seu projeto seja uma aplicação web, obtenha um certificado e configure uma conexão HTTPS.
+
+6.9 - Referências
-----------------
+
+* `Let's Encrypt <https://letsencrypt.org>`_.
+* `Segurança da informação – Wikipédia, a enciclopédia livre <https://pt.wikipedia.org/wiki/Seguran%C3%A7a_da_informa%C3%A7%C3%A3o>`_.