Week 10
Cibersegurança, Senhas, Segurança do Telefone, Autenticação de Dois Fatores, Gerenciadores de Senhas, Criptografia, Modo Incógnito.
Notas
Lecture 10
- Segurança Cibernética
- Senhas
- Segurança de Telefone
- Autenticação em Dois Fatores
- Gerenciadores de Senhas
- Criptografia
- Modo Anônimo
- Review
- Pensamento Computacional e Crítico
- Abstração e Precisão
- Vida após CS50
- Quiz Show
- Resumo
Segurança Cibernética
- Hoje teremos uma visão geral de alto nível de alguns dos tópicos relacionados à segurança cibernética que são discutidos em nosso curso, CS50.
Senhas
- Senhas são um método utilizado para proteger dados online.
-
Existem senhas comuns que as pessoas utilizam:
1. 123456 2. 123456789 3. 12345 4. qwerty 5. password 6. 12345678 7. 11111 8. 123123 9. 1234567890 10. 1234567
- Se você tem uma das senhas acima, é muito provável que milhões de pessoas tenham a mesma senha que você!
- Adversários no mundo começarão essa lista.
- Os vilões também podem adivinhar a maioria das heurísticas que você usa para adicionar símbolos à sua senha.
- Sua senha provavelmente não é tão segura quanto você pensa.
Segurança do telefone
- Muitos telefones são protegidos por um código de quatro dígitos.
- A forma mais simples de ataque seria digitar manualmente todas as senhas possíveis.
- Existem 10.000 senhas possíveis ao usar um código de quatro dígitos.
- Se levar um palpite por segundo, levará 10.000 segundos para quebrar 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 preocupante que o código acima possa levar apenas alguns segundos (no máximo!) para descobrir sua senha.
- Podemos melhorar nossa segurança mudando para uma senha de quatro letras. Isso 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 poderíamos modificar seu código para descobrir essas senhas:
from string import ascii_letters from itertools import product for passcode in product(ascii_letters, repeat=4): print(*passcode)
-
Podemos até adicionar a capacidade de analisar todas as possíveis senhas de quatro 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=4): print(*passcode)
- Expandindo 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.
-
Considere como o código a seguir poderia analisar todas as possibilidades da seguinte forma:
from string import ascii_letters, digits, punctuation from itertools import product for passcode in product(ascii_letters + digits + punctuation, repeat=8): print(*passcode)
- No mundo digital, você simplesmente quer que sua senha seja melhor do que as senhas de outras pessoas, para que outras sejam atacadas antes de você, pois você é um alvo muito menos conveniente.
- Uma desvantagem de usar uma senha tão longa é a dificuldade de lembrá-la.
- Consequentemente, existem 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 envolve encontrar um "ponto ideal" entre os compromissos da segurança aprimorada e a conveniência.
Autenticação de dois fatores
- Adicionar outro meio pelo qual você deve autenticar aumenta ainda mais a segurança. No entanto, há um custo humano, pois você pode não ter acesso ao seu segundo fator.
- Sempre, a política de segurança tenta equilibrar as necessidades de segurança e conveniência humana.
Gerenciadores de Senhas
- Os gerenciadores de senhas podem ser usados para criar senhas muito desafiadoras e lembrá-las para você.
- A probabilidade de uma senha protegida por um gerenciador de senhas ser quebrada é muito, muito baixa.
- Você esperaria que esses gerenciadores de senhas fossem seguros. No entanto, se alguém obtiver acesso ao seu gerenciador de senhas, eles terão acesso a todas as suas senhas.
- No final, é muito menos provável que você esteja em risco pelas pessoas com quem você convive - e muito mais provável que esteja em risco pelas 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.
Criptografia
- A criptografia é uma forma pela qual os dados são obscurecidos de modo que apenas o remetente e o destinatário pretendido possam lê-los.
- 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.
- A criptografia de ponta a ponta é uma forma pela qual a criptografia e a descriptografia ocorrem no mesmo sistema, sem intermediários. Isso impede que o intermediário ou um ator malicioso possam bisbilhotar seus dados.
- A criptografia de disco completo é uma forma pela qual o conteúdo do seu dispositivo só pode ser aberto com uma senha. Você deve habilitar absolutamente esse recurso no seu computador (mas não se esqueça da senha!).
- Ransomware é um ataque malicioso em que seus dados são criptografados por um adversário. Literalmente, alguém mantém seus dados como reféns.
Modo Incógnito
- No Chrome, o modo incógnito impede que seu computador se lembre dos sites que você visitou e descarta qualquer informação armazenada localmente sobre esses sites. Os cookies, um pequeno arquivo usado para rastrear suas visitas a sites, são descartados no modo incógnito.
Review
- Isso é CS50!
- Esta é a nossa última semana no curso!
- De fato, percorremos um longo caminho! Você bebeu da mangueira de incêndio! Se você ainda não entendeu tudo, tudo bem! Considere que o que antes era difícil, como fazer o
hello
compilar, agora é menos desafiador. - O que realmente importa neste curso não é tanto onde você termina em relação aos seus colegas, mas onde você termina em relação a si mesmo quando começou.
- Lembre-se de que na Semana 0 começamos com zeros e uns. Montamos em Scratch, aprendendo os blocos de construção essenciais da programação.
- Na Semana 2, aprendemos sobre memória.
- Então, aprendemos sobre depuração.
- Nas Semanas 3 e 4, estávamos aprendendo mais sobre a complexidade temporal e a eficiência do seu código, discutindo bubble sort e merge sort.
- Discutimos ponteiros, dando-lhe uma noção do que está acontecendo dentro do seu computador.
- Na Semana 5, você construiu sua própria tabela hash! O princípio de pares de chave-valor foi visível em Python, SQL e por aí!
- Na Semana 6, você aprendeu sobre as ideias de colunas, linhas e tabelas.
- Finalmente, aprendemos sobre a construção de aplicativos da web.
- Esta semana, estaremos nos concentrando em como codificar no lado do cliente. Até este ponto, você tem programado na nuvem. Se desejar, você pode usar essas ferramentas em seu próprio Mac ou PC.
Pensamento Computacional e Crítico
- Lá na Semana 0, introduzimos a você a ideia de pensamento computacional ou algorítmico. Provavelmente, ao longo deste curso, você será capaz de organizar seus pensamentos de forma mais clara no futuro!
- Além disso, exercitamos nosso pensamento crítico ao entender melhor o que está acontecendo nos bastidores dos programas de outras pessoas. Você será capaz de avaliar melhor o seu próprio trabalho e o trabalho dos outros.
Abstração e Precisão
- Neste curso, você aprendeu como resolver problemas grandes dividindo-os em problemas menores.
- De fato, você aprendeu a escrever pseudocódigo para decompor um problema em etapas gerenciáveis.
- Além disso, você aprendeu que a linguagem que você usa é de extrema importância! Sua linguagem precisa ser precisa.
- Conforme você avança no CS50, provavelmente será capaz de avaliar melhor o que é exigido em tarefas de outras disciplinas, no trabalho e em geral: você será capaz de entender como dividir um problema grande e fazer as perguntas necessárias a si mesmo e aos outros para obter um resultado melhor.
Vida Após o CS50
- Existem várias maneiras de se envolver em trabalhos relacionados à programação fora deste curso.
- Primeiro, você pode instalar ferramentas de linha de comando, como Xcode e Windows Subsystem for Linux.
- Segundo, você também pode aprender GIT.
- Terceiro, você pode baixar o VS Code.
- Em seguida, você pode hospedar um site usando o GitHub Pages ou o Netlify.
- Quinto, você poderia hospedar um aplicativo da web via Amazon AWS, Microsoft Azure, Google Cloud Services ou GitHub's Education Pack.
-
Além disso, você pode continuar lendo:
- Os recursos acima não são uma lista exaustiva. Divirta-se o quanto quiser!
- Além disso, esperamos que você participe de uma de nossas muitas comunidades.
Quiz Show
-
Nós organizamos nosso próprio programa de perguntas e respostas! As seguintes questões foram abordadas:
-
Como imprimir "hello, world" em Python?
print("hello, world")
-
O que significa DNS?
- Sistema de Nomes de Domínio
-
Qual é o limite superior de tempo de execução do Merge Sort?
- \(O(n \log n)\)
-
Qual é o hobby favorito do depurador duck?
- Sentar-se quietamente no palco
-
Qual é a função usada para abrir um arquivo em C?
fopen
-
Como a função strlen calcula o comprimento de uma string em C?
- Ela conta o número de caracteres até encontrar o caractere
\O
- Ela conta o número de caracteres até encontrar o caractere
-
De onde o malloc aloca memória?
- Heap
-
Quantas pessoas voaram de Fiftyville para Nova York no dia do crime?
- 16
-
Para que servem as tags
meta
em HTML?- Para descrever uma página da web
-
Como encontrar o endereço de uma variável em C?
&
-
O que significa
->
em C?- Substitui um operador estrela e ponto
-
Qual destes não é um tipo de dado no SQLite?
- String
-
Qual das seguintes opções é uma maneira válida de imprimir "!!!!" em Python?
print("!" * 4)
-
O que a função free faz?
- Desaloca a memória em um determinado endereço
-
Qual não é um passo de compilação?
- Threading
-
O que foi surpresa na palestra de Halloween?
- Alguém se vestiu como David Malan
-
Por que é incorreto usar o operador
==
em C para comparar strings?- Você está comparando as localizações das strings
-
Qual é a diferença entre NUL e NULL?
- NUL se refere a
\0
, enquanto NULL é o endereço zero
- NUL se refere a
-
O que as lâmpadas binárias soletram no palco hoje?
- 🧁
-
Resumindo
- Use um gerenciador de senhas.
- Use autenticação de dois fatores.
- Use criptografia (de ponta a ponta).
- Pensamento computacional e crítico
- Abstração e precisão
- Vida após o CS50
- Testando seu conhecimento
Isso foi CS50!