Skip to content

Latest commit

 

History

History
149 lines (95 loc) · 17.1 KB

23a. Segurança de Software.md

File metadata and controls

149 lines (95 loc) · 17.1 KB

Segurança de Software

  1. Alguns dos principais riscos de segurança enfrentados pelos desenvolvedores de software são relacionados com ataques de hackers, vazamento de dados, ataques de phishing, e malwares. Considerando os principais riscos e exemplos vistos em aula, preencha as lacunas no texto abaixo e assinale a alternativa correta:

"Em março de 2021, a companhia aérea TAP Air Portugal sofreu ________ que afetou cerca de 10 milhões de passageiros. Em 2020, _________aconteceu no Google Play Store, onde o problema foi encontrado em 11 aplicativos para Android. Em 2019, ________ foi feito via um e-mail falso em nome da Receita Federal para enganar os contribuintes e roubar seus dados pessoais. Um exemplo famoso de ________ foi o caso do Banco Inter em 2018. O Banco Inter é uma instituição financeira totalmente digital.”

  • um vazamento de dados/uma campanha de malware/ataque de phishing/ ataque de hackers.
  • uma campanha de malware/um vazamento de dados/ataque de phishing/ ataque de hackers.
  • um vazamento de dados/uma campanha de malware/ataque de hackers/ ataque de phishing.
  • um vazamento de dados/ ataque de phishing/uma campanha de malware/ ataque de hackers.

Justificativa: Esta questão busca verificar se o aluno entendeu os diferentes riscos que podem afetar a segurança no desenvolvimento de software e alguns dos principais ataques que aconteceram nos últimos anos. O texto com as lacunas preenchidas é o seguinte: “Em março de 2021, a companhia aérea TAP Air Portugal sofreu um vazamento de dados que afetou cerca de 10 milhões de passageiros. Em 2020, uma campanha de malware aconteceu no Google Play Store, onde o problema foi encontrado em 11 aplicativos para Android. Em 2019, ataque de phishing foi feito via um e-mail falso em nome da Receita Federal para enganar os contribuintes e roubar seus dados pessoais. Um exemplo famoso de ataque de hackers foi o caso do Banco Inter em 2018. O Banco Inter é uma instituição financeira totalmente digital.”. Assim a alternativa A é a correta. As alternativas B, C e D são erradas.

  1. Métodos de autenticação são utilizados para saber se a pessoa que está tentando acessar determinadas informações ou recursos é realmente a pessoa autorizada. A autenticação pode ser baseada naquilo que o usuário sabe, naquilo que o usuário possui ou naquilo que o usuário é. Qual das alternativas abaixo corresponde a autenticação baseado naquilo que o usuário é?
  • Senha.
  • Telefone celular.
  • Frase secreta.
  • Padrão de digitação.

Justificativa: Esta questão busca verificar se o aluno conhece os diferentes métodos de autenticação e como eles podem ser classificados. A alternativa D é a correta, pois cada usuário tem um padrão de digitação e, portanto, é uma característica daquilo que o usuário é. A alternativa A é errada, pois a senha é algo que o usuário sabe. A alternativa B é errada, pois o telefone celular é algo que o usuário possui. A alternativa C é errada pois uma frase secreta é algo que o usuário sabe.

  1. Seja (E,D) uma cifra semanticamente segura com conjunto de chaves K={0,1}ℓ, onde ℓ representa o tamanho da chave.

Um banco deseja a chave para decifrar k ∈ {0,1}ℓ em dois pedaços p1 e p2 de forma que ambos sejam necessários para decifrar uma mensagem criptografada. O pedaço p1 pode ser dado para um executivo e o pedaço p2 para outro de forma que ambos contribuam com seus pedaços para que o processo de decifrar a mensagem aconteça.

O banco então gera uma chave aleatória k1 em {0,1}ℓ e define k1'←k⊕k1, onde ⊕ representa a operação ou-exclusivo entre dois valores binários. Veja que k1⊕k1′=k. O banco então dá k1 para um executivo e k1′ para outro. Ambos precisam estar presentes para decifrar uma mensagem, pois sozinhos cada pedaço não possui informação sobre a chave secreta k.

Agora suponha que o banco deseja dividir a chave k em três pedaços p1, p2, p3 de forma que quaisquer dois pedaços possam ser utilizados para decifrar uma mensagem usando k. Isto garante que mesmo que um executivo esteja doente, decifrar uma mensagem será possível. Assim o banco gera dois pares aleatórios (k1,k1') e (k2,k2′) como no parágrafo anterior, de forma que k1⊕k1′=k2⊕k2′=k.

Como o banco deve distribuir os pedaços para os executivos de forma que quaisquer dois executivos consigam decifrar uma mensagem, mas um executivo sozinho não consiga?

  • (k1,k1'), (k2,k2′) e (k1,k2)
  • (k1,k2), (k1,k2′) e (k1)
  • (k1,k2'), (k1′,k2) e (k1',k2')
  • (k1',k2),(k1,k2') e (k2')

Justificativa: Esta questão busca verificar se o aluno adquiriu o conhecimento sobre como é possível distribuir chaves entre executivos de maneira que dois executivos sejam necessários para decifrar algum conteúdo. A alternativa C é a correta, nenhum executivo possui informação para gerar a chave sozinho e o executivo 1 consegue gerar a chave com o executivo 2 (k = k2'⊕k2) e com o executivo 3 (k = k1⊕k1'); e o executivo 2 consegue gerar chave com o executivo 3 (k = k2⊕k2'). A alternativa A é errada, pois o executivo 1 consegue gerar a chave sozinho (k = k1⊕k1'). A alternativa B é errada, pois o executivo 3 não consegue gerar a chave com os executivos 1 e 2. A alternativa D é errada, pois o executivo 3 não consegue gerar a chave com o executivo 2.

  1. Um sistema de criptografia de chave pública utiliza duas chaves: uma para cifrar e outra para decifrar. Para cifrar uma mensagem, é necessário ter a chave pública do destinatário. Já quem recebe uma mensagem utiliza a sua chave privada para conseguir decifrar o texto cifrado que recebeu. Um exemplo simples de sistema de criptografia de chave pública funciona da seguinte forma:

Bob possui uma chave secreta sk = (d, p, q) e uma chave pública pk = (e, N), onde N = p x q. A chave pública pk é divulgada para quem o Bob desejar, enquanto a chave secreta não é divulgada para qualquer pessoa.

Assim, se Alice recebeu a chave pública de Bob, ela pode enviar uma mensagem m codificando-a da seguinte forma:

c = me mod N

Quando Bob receber a mensagem c enviada pela Alice, ele irá decodificar a mensagem da seguinte forma:

m = cd mod N

Considere x mod y como o resto da divisão de x por y – exemplo: 5 mod 3 = 2

Agora, considere um sistema de criptografia de chave pública onde os valores primos utilizados para gerar um módulo são p = 5 e q = 11. Ou seja, o módulo utilizado neste sistema é N = 55. Considerando como chave pública de Bob pk = (7,55) e a chave secreta de Bob sk = (23,5,11). Se Alice enviou a mensagem c = 8, quando Bob decifrar esta mensagem terá:

  • m = 2 (!)
  • m = 17
  • m = 7
  • m = 13

Justificativa: Esta questão busca verificar se o aluno entendeu como funciona criptografia de chaves pública (assimétrica). A alternativa B é a correta, pois 8 elevado na 23 e dividido por 55 tem como resto desta divisão 17, ou seja, 8^23 mod 55 = 17. A alternativa A é errada, pois se a mensagem m fosse 2, então o texto cifrado deveria ser c = 18. A alternativa C está errada pois se a mensagem m fosse 7, então o texto cifrado deveria ser c = 28. . A alternativa D está errada pois se a mensagem m fosse 13, então o texto cifrado deveria ser c = 7.

  1. Para analisar os riscos no desenvolvimento de uma aplicação é importante identificar as ameaças que podem afetar a aplicação, listar os ativos críticos da aplicação, verificar se existem vulnerabilidades em potencial em cada um dos ativos identificados, avaliar o impacto potencial de cada vulnerabilidade identificada, classificar os riscos identificados em ordem de prioridade, desenvolver planos de mitigação dos riscos identificados e monitorar continuamente a aplicação em busca de novas ameaças e vulnerabilidades. Para preencher as lacunas do parágrafo abaixo, use o texto-base e assinale a opção correta:

“Dado uma aplicação bancária com recursos tradicionais de uma conta corrente, podemos considerar que o comprometimento da credencial de usuários é ________, senhas fracas ou fáceis de adivinhar são _______, a tabela de usuários é ______, incluir autenticação em duas fases e treinar usuários é _______, e prejudicar a imagem da empresa está relacionado com _________.”

  • uma ameaça/vulnerabilidades/ativo/um plano de mitigação/o impacto.
  • uma vulnerabilidade/ameaças/plano de mitigação/ativo/o impacto.
  • uma ameaça/vulnerabilidades/plano de mitigação/ativo/classificação de riscos.
  • uma vulnerabilidade/ameaças/ativo/monitoramento/classificação de riscos.

Justificativa: Esta questão busca verificar se o aluno adquiriu o conhecimento sobre principais desafios de segurança no desenvolvimento de software e como identificar de segurança e vulnerabilidades. A alternativa A é a correta. A alternativa B é errada, pois além de ameaça e vulnerabilidade estarem trocadas, a tabela de usuário é um ativo e incluir autenticação em duas fases e treinar os usuários é um plano de mitigação. A alternativa C é errada, pois a tabela de usuário é um ativo, incluir autenticação em duas fases e treinar os usuários é um plano de mitigação, e prejudicar a imagem da empresa está relacionado com impacto. A alternativa D é errada, pois vulnerabilidade e ameaça estão trocadas, incluir autenticação em duas fases e treinar usuários é um plano de mitigação e não monitoramento, e prejudicar a imagem da empresa está relacionado com impacto e não com classificação de riscos.

  1. Seja m uma mensagem que consiste em ℓ blocos AES (por exemplo ℓ=300). Alice criptografa m usando modo de operação CBC e transmite o texto criptografado (ciphertext) para o Bob. Devido a problemas de rede, o bloco de número ℓ/3 é corrompido durante a transmissão. Todos os outros blocos criptografados são transmitidos e recebidos corretamente. Quando o Bob decifra o texto criptografado recebido, quantos blocos do texto original estarão corrompidos?
  • O bloco ℓ/3 e todos os blocos anteriores a ele. (!)
  • 2 blocos - o bloco ℓ/3 e o bloco posterior a ℓ/3.
  • 2 blocos - o bloco ℓ/3 e o bloco anterior a ℓ/3.
  • O bloco ℓ/3 e todos os blocos posteriores a ele.

Justificativa: Entender como os modos de operação de cifras de bloco funcionam é fundamental para construir um software que não revele informações para um atacante. A questão tem por objetivo avaliar se o aluno entendeu o que é um modo de operação e como eles funcionam. A resposta correta é a alternativa B, uma vez que para decifrar um bloco, por exemplo o bloco k, no modo CBC, é necessário o bloco k e o bloco k-1. Assim, se o bloco ℓ/3 é perdido, somente o bloco ℓ/3 e bloco ℓ/3+1 serão perdidos. Para o bloco ℓ/3 é necessário o bloco ℓ/3 e o bloco ℓ/3-1. Para o bloco ℓ/3+1 é necessário o ℓ/3+1 e o bloco ℓ/3. A alternativa A está errada, pois para decifrar o bloco anterior a ℓ/3, ou seja, bloco ℓ/3-1, preciso do bloco ℓ/3-1 e bloco ℓ/3-2, que não foram perdidos. A alternativa C está errada, pois para decifrar o bloco anterior ao ℓ/3, ou seja ℓ/3-1, preciso do bloco ℓ/3-1 e do bloco ℓ/3-2, que não foram perdidos. A alternativa D está errada, pois para decifrar o bloco ℓ/3+2, por exemplo, preciso do bloco ℓ/3+2 e do bloco ℓ/3+1, que não foram perdidos, e assim por diante.

  1. O WhasApp é um aplicativo para comunicação que utiliza a biblioteca LibSignal para fornecer criptografia ponta-a-ponta para os usuários. A criptografia ponta-a-ponta garante que somente o remetente e destinatário consigam ler as mensagens que estão sendo enviadas. A este respeito da forma como a comunicação no WhatsApp funciona, avalie as afirmações a seguir:

I. WhatsApp não tem acesso às chaves privadas do usuário, pois elas ficam armazenadas no dispositivo do cliente.

II. Cada mensagem enviada no WhatsApp é cifrada com uma chave diferente.

III. Imagens, sons e vídeos não são cifrados no WhatsApp.

Considerando estas afirmações é correto somente o que se afirma em:

  • I e II.
  • I e III.
  • II e III.
  • I, II e III.

Justificativa: Esta questão busca verificar se o aluno adquiriu o conhecimento como criptografia ponta-a-ponta funciona e como ela é aplicada em uma aplicação real utilizada diariamente por bilhões de pessoas. A alternativa A é a correta. As alternativa B, C e D são erradas, pois qualquer objeto (som, vídeo, imagem, figuras, ...) é também cifrado e armazenado em um servidor WhatsApp até que o destinatário busque este objeto.

  1. Atualmente diversas cifras são utilizadas na sociedade, sejam elas cifras simétricas ou assimétricas. Cada uma destas cifras tem características importantes para que elas consigam garantir a segurança das nossas informações. A este respeito, avalie as afirmações a seguir:

I. O tipo dos dados sendo cifrados é importante para um algoritmo de criptografia.

II. Teoricamente algoritmos de cifragem utilizados hoje em dia não podem ser quebrados.

III. Em uma cifra o segredo deve estar na chave utilizada.

IV. Não existe restrição para o tamanho de um número utilizado como módulo em um algoritmo de criptografia assimétrica

Considerando estas afirmações é correto somente o que se afirma em:

  • I. (!)
  • II.
  • III.
  • IV.

Justificativa: Nesta questão busca-se saber se o aluno entendeu alguns conceitos básicos sobre os algoritmos de criptografia utilizado por diversos sistemas computacionais. A alternativa C é a correta. O segredo não pode estar na cifra (algoritmo), pois caso se descubra o segredo no algoritmo, todos que usam esta cifra estarão comprometidos. Se o segredo estiver na chave, somente quem tiver aquela chave terá suas informações comprometidas, todos os demais continuarão seguros. A alternativa A é errada, pois um sob o ponto de vista de um algoritmo de criptografia, qualquer tipo de dados é visto como uma sequência de bits (como um número), ou seja, não importa o tipo dos dados sendo cifrados. A alternativa B é errada, pois na teoria todos os algoritmos que utilizamos atualmente em sistemas computacionais podem ser quebrados na teoria, mesmo que leve centenas de anos. O que se busca é que na prática eles não podem ser quebrados. A alternativa D é errada, pois para algoritmos de criptografia assimétrica os números primos escolhidos para compor a módulo utilizado devem ter centenas de dígitos (mais de 600) para que se tenha segurança. Números pequenos podem ser facilmente fatorados e chaves privadas descobertas de maneira muito rápida.

  1. Para preencher as lacunas do parágrafo abaixo, assinale a opção correta:

“A criptografia usa _______ para codificar e decodificar informações. _______ é um valor secreto que é usado para transformar a uma informação legível em uma informação ilegível. Em criptografia _______ a mesma chave é utilizada para cifrar e decifrar informações, enquanto em criptografia _______ um par de chaves diferentes é utilizado: uma pública e outra privada. Um exemplo de criptografia simétrica é o _______ enquanto um exemplo de criptografia assimétrica é o _______.”

  • resumo criptográfico/Um resumo criptográfico/simétrica/assimétrica/AES/RSA.
  • chaves/Uma chave/assimétrica/simétrica/RSA/AES.
  • chaves/Uma chave/simétrica/assimétrica/AES/RSA.
  • resumo criptográfico/Um resumo criptográfico/assimétrica/simétrica/RSA/AES.

Justificativa: Esta questão busca verificar se o aluno entendeu a diferença entre criptografia simétrica e criptografia assimétrica, e a importância de uma chave no embaralhamento de um texto claro. A alternativa C é a correta. A alternativa A é errada, pois um resumo criptográfico é o resultado de uma função resumo criptográfica (hash function). A alternativa B é errada, pois palavras simétrica e assimétrica estão invertidas nas lacunas, assim como RSA e AES. A alternativa D é errada, pois um resumo criptográfico é o resultado de uma função resumo criptográfica (hash function), e RSA e AES estão invertidas nas lacunas.

  1. Para preencher as lacunas do parágrafo abaixo, use o texto-base e assinale a opção correta:

“________ foi criada pelas principais empresas de cartões de crédito para estabelecer padrões de segurança para a indústria de cartões de pagamento. ______ lista as 10 principais vulnerabilidades de segurança em aplicativos da web para ajudar os desenvolvedores a identificar e mitigar riscos de segurança em seus projetos. _____ é uma agência governamental dos Estados Unidos que desenvolve e promove padrões de segurança cibernética.”

  • OWASP/NIST/W3C
  • PCI SSC/OWASP/IETF
  • PCI SSC/OWASP/NIST
  • PCI SSC/NIST/OWASP

Justificativa: Esta questão busca verificar se o aluno adquiriu o conhecimento sobre principais entidades que estabelecem padrões de segurança cibernética. A alternativa C é a correta. A alternativa A é errada, pois a OWASP é quem lista as 10 principais vulnerabilidades de segurança em aplicativos web, enquanto o NIST é uma agência governamental dos Estados Unidos e o W3C é um consórcio de definição de protocolos do WWW. A alternativa B é errada, pois IETF é responsável por definição de protocolos na internet. A alternativa D é errada, pois NIST e OWASP estão trocados.