Segurança Cibernética

Recapitulação

  • Nessas últimas dez semanas, vocês adquiriram muito conhecimento.
  • Neste curso, vocês aprenderam a programar em várias linguagens de programação; nossa esperança é que vocês tenham aprendido a programar de fato em todas elas: independentemente da linguagem de programação.
  • Além disso, esperamos que vocês tenham aprendido a resolver problemas acima de tudo.

Oportunidades Futuras

  • Ao se depararem com o mundo fora do CS50 após o curso, vocês podem adotar várias medidas para se preparar.
  • Para executar comandos no terminal, como fizeram no CS50.dev, vocês podem instalar ferramentas de linha de comando em seu Mac ou PC.
  • Vocês podem aprender mais sobre Git.
  • Vocês podem baixar e aprender sobre o VS Code.
  • Vocês podem hospedar um site usando GitHub ou Netlify.
  • Vocês podem hospedar um aplicativo da web usando AWS, Azure ou Google Cloud.
  • Vocês podem fazer perguntas em comunidades online relevantes.
  • Vocês podem fazer perguntas usando ferramentas baseadas em IA como OpenAI e GitHub Copilot.
  • Vocês podem fazer qualquer um dos nossos outros cursos do CS50.
  • Vocês podem se juntar a uma das nossas muitas comunidades.

Cybersecurity

  • Hoje vamos fazer uma visão geral de alto nível de alguns tópicos relacionados à segurança cibernética.
  • Segurança cibernética é compreender como nossos dados são seguros ou não seguros.

Senhas

  • Uma preocupação de segurança cibernética está relacionada às nossas senhas.
  • Senhas são um método usado para proteger dados online.
  • Existem senhas comuns que as pessoas usam:

      1. 123456
      2. admin
      3. 12345678
      4. 123456789
      5. 1234
      6. 12345
      7. password
      8. 123
      9. Aa123456
      10. 1234567890
    
  • Se você tiver uma das senhas acima, provavelmente milhões de pessoas têm a mesma senha que você!

  • Adversários no mundo começarão com esta lista.
  • Os bandidos também podem adivinhar a maioria das heurísticas que você usa para adicionar símbolos à sua senha.
  • Os adversários podem usar ataques de força bruta, usando um dicionário de senhas para simplesmente tentar todas as senhas possíveis.
  • Sua senha provavelmente não é tão segura quanto você pensa que é.

Segurança do Celular

  • Muitos celulares são protegidos por um código de quatro dígitos.
  • A forma mais simples de ataque seria a força bruta, tentando todas as senhas possíveis.
  • Há 10.000 senhas possíveis quando se usa um código de quatro dígitos.
  • Se demora um palpite por segundo, levará 10.000 segundos para descobrir a senha.
  • No entanto, se um programador criar um programa para gerar todos os códigos possíveis, o tempo necessário seria mínimo. Considere o seguinte código em Python:

      from string import digits
      from itertools import product
    
      for passcode in product(digits, repeat=4):
          print(passcode)
    
  • Deve ser bastante desconcertante que o código acima pode levar apenas alguns segundos (no máximo!) para descobrir a sua senha.

  • Poderíamos melhorar a nossa segurança mudando para uma senha de quatro letras. Isto resultaria em 7.311.616 senhas possíveis.
  • Incluir caracteres maiúsculos e minúsculos criaria mais de 78 milhões de possibilidades.
  • Considere como podemos modificar o seu código para descobrir estas senhas:

      from string import ascii_letters
      from itertools import product
    
      for passcode in product(ascii_letters, repeat=4):
          print(passcode)
    
  • Poderíamos até mesmo adicionar a capacidade de examinar todas as possíveis senhas de oito dígitos com letras, números e pontuações:

      from string import ascii_letters, digits, punctuation
      from itertools import product
    
      for passcode in product(ascii_letters + digits + punctuation, repeat=8):
          print(passcode)
    
  • Expandir para oito caracteres, incluindo letras maiúsculas e minúsculas, números e símbolos, resultaria em 6.095.689.385.410.816 combinações possíveis.

  • No mundo digital, você simplesmente quer que a sua senha seja melhor que as senhas das outras pessoas para que outras pessoas sejam atacadas muito antes de você, uma vez que você é um alvo muito menos conveniente.
  • Uma desvantagem do uso de uma senha tão longa é a desvantagem de ter que se lembrar dela.
  • Portanto, há outras defesas que podem ser empregadas para retardar um atacante. Por exemplo, alguns fabricantes de telefones bloqueiam aqueles que adivinham uma senha incorretamente.
  • A segurança trata-se de encontrar um "ponto ideal" entre as trocas de uma segurança aprimorada e a manutenção da conveniência.

Gerenciadores de senha

  • Gerenciadores de senha podem ser usados para criar senhas bem desafiadoras e lembrá-las por você.
  • A probabilidade de uma senha protegida por um gerenciador de senha ser quebrada é bem, bem baixa.
  • Você espera que esses gerenciadores de senha sejam seguros. Entretanto, se alguém obtiver acesso ao seu gerenciador de senha, poderá ter acesso a todas as suas senhas.
  • No fim das contas, é muito menos provável que você corra algum risco com pessoas com quem você mora, e muito mais provável que esteja em risco com bilhões de outras pessoas na internet.
  • Como mencionado anteriormente, você pode tomar uma decisão com base em um equilíbrio entre segurança e conveniência.

Autenticação de Dois Fatores

  • Acrescentar outro meio pelo qual você deve autenticar acrescenta mais segurança. No entanto, há um custo humano, já que você pode não ter acesso ao seu segundo fator.
  • Eles são implementados como uma espécie de senha temporária que é enviada para um e-mail, dispositivo ou número de telefone.
  • Sempre, políticas de segurança tentam equilibrar as necessidades de segurança e conveniência humana.

Hashing

  • As informações da sua conta e outros dados confidenciais não devem ser armazenados como texto bruto em um banco de dados online.
  • Se um banco de dados é comprometido e todas as credenciais são armazenadas em texto sem formatação, é provável que credenciais para outros serviços em outros sites também sejam comprometidas.
  • Então, algoritmos de hashing, como discutido antes neste curso, são usados para armazenar apenas valores com hash das senhas.
  • O hash unidirecional permite que serviços online, na verdade, nunca armazenem a senha original digitada pelo usuário: Apenas o valor com hash dessas senhas. Assim, se houver uma violação, apenas o valor com hash será conhecido.
  • Tabelas arco-íris são enormes dicionários que os adversários usam para tentar pré-hashear possíveis senhas como um meio de tentar quebrar o algoritmo de hash.
  • Como um processo adicional para maior segurança, programadores podem, algumas vezes, introduzir salgamento, onde torna-se improvável que múltiplos usuários possam ter o mesmo valor com hash para representar suas senhas. Você pode imaginar isso da seguinte forma:

    salt e senha sendo fornecidos para um algoritmo que produz um hash

Criptografia

  • Similar ao hash, um algoritmo de cifra pode usar uma chave pública e um texto para criar um texto cifrado.
  • Por sua vez, uma chave privada e o texto cifrado podem ser alimentados ao algoritmo para decifrar o texto.

Chaves de acesso

  • As chaves de acesso são uma nova tecnologia que só surgiu nos últimos meses.
  • Por meio de chaves privadas e um desafio que é alimentado a um algoritmo, os sites podem autenticá-lo por meio da assinatura exclusiva criada pelo seu dispositivo.

chave pública e desafio sendo fornecidos a um algoritmo resultando em uma assinatura

  • Portanto, senhas e nomes de usuário podem em breve se tornar obsoletos.

Criptografia

  • A criptografia é uma forma pela qual os dados são obscurecidos, de modo que somente o remetente e o destinatário pretendido podem ser lidos.
  • No início deste curso, aprendemos um algoritmo muito simples para “deslocar” o texto por um ou mais caracteres como uma forma rudimentar de criptografia.
  • Criptografia de ponta a ponta é uma forma pela qual a criptografia e a descriptografia acontecem no mesmo sistema sem um intermediário. Isso impede que o intermediário ou um ator malicioso consiga bisbilhotar seus dados. O Zoom e o Apple Messages podem utilizar criptografia de ponta a ponta.

Exclusão

  • Jogar um arquivo no lixo do seu computador ou esvaziar a lixeira não exclui realmente os bits reais do arquivo do seu computador.
  • Em vez disso, os vestígios dos arquivos são deixados.

vestígios de um arquivo em um disco rígido

  • Exclusão segura é quando os vestígios desses arquivos são transformados em zeros e uns.
  • Ainda assim, alguns vestígios podem permanecer por causa do que é tornado inacessível pelo sistema operacional.
  • A criptografia de disco completo permite que todo o seu disco rígido seja criptografado. Assim, os seus arquivos excluídos ficam menos acessíveis a adversários.
  • Considerando a criptografia, é essa mesma tecnologia que os adversários usam para criar ransomware que pode, literalmente, manter seu disco rígido para resgate.

Resumindo

  • Use um gerenciador de senhas.
  • Use a autenticação de dois fatores.
  • Use criptografia (de ponta a ponta).