Unihacker Capitulo4
Unihacker Capitulo4
Unihacker Capitulo4
net/publication/359514048
CITATIONS READS
0 490
3 authors, including:
Roben Lunardi
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul
55 PUBLICATIONS 569 CITATIONS
SEE PROFILE
All content following this page was uploaded by Roben Lunardi on 28 March 2022.
Capı́tulo
4
Conceitos básicos de Criptografia
hyphensurl [colorlinks = true, linkcolor = red, urlcolor = blue, citecolor = black, anchor-
color = red, draft=false, pdfencoding=auto, breaklinks]hyperref
Vı́deo explicativo:
Vale ressaltar que existem outras técnicas de criptografia que não se enquadram
nessas divisões, contudo, somente estas possibilitam uma visão introdutória do potencial
da criptografia. Também vale destacar que não é a criptografia que protegerá os disposi-
tivos computacionais contra vı́rus e outras pragas virtuais, uma vez que esta proteção fica
a cargo de outros mecanismos e sistemas de segurança da informação.
Vı́deo explicativo:
Figura 4.1. Modelo genérico de encriptação simplificado. (Adaptado de: [Stallings 2014])
Vı́deo explicativo:
substituição e transposição.
Cifra de César
O uso mais antigo que conhecemos de uma cifra de substituição, e o mais simples, foi
feito por Júlio César [Singh 2008, Stallings 2014]. Nela, é atribuı́do um número para
cada letra, de acordo com a sua ordem lexicográfica (posição no alfabeto):
Além disso, é necessário estabelecer um outro número, para que seja utilizado
como chave. Esta chave será utilizada para deslocar o alfabeto cifrado, e será utilizado
durante o processo de cifragem.
Desta forma, para se obter o texto cifrado, cada letra do texto é substituı́da por
outra, que se apresenta no alfabeto cifrado, determinado pelo valor da chave. Por exemplo,
com a chave 3 (troca de três posições), A seria substituı́do por D, B se tornaria E, e assim
por diante.
Assim, neste exemplo, a chave é 4312567. Para encriptar, comece com a coluna
rotulada com 1, neste caso, a coluna 3. Escreva todas as letras dessa coluna. Prossiga para
a coluna 4, que é rotulada com 2, depois para a coluna 2, então para a coluna 1, por fim
para as colunas 5, 6 e 7. Ao final, a mensagem “MODULO IV CRIPTO” geraria o texto
cifrado “DRUIOC MV LPOTIO”, quando empregada a chave 4312567.
Já para recuperar o texto claro, bastaria realizar o processo inverso, escrevendo o
texto cifrado em um retângulo com as mesmas dimensões, coluna por coluna, obedecendo
a ordem estabelecida pela chave.
Uma cifra de pura transposição é facilmente reconhecida e quebrável, pois tem
as mesmas frequências de letra do texto claro original, assim como uma cifra de pura
substituição também possui suas fragilidades. Por isto, algoritmos de cifra modernos cos-
tumam combinar estas e outras técnicas a fim de obter construções mais seguras, tornando
inviáveis ataques computacionais e criptoanálises.
Vı́deos explicativos:
A cifra de César — Uma jornada pela criptografia — Ciência da computação
(https://www.youtube.com/watch?v=0QKpOnneVzE)
Cifra de transposição (https://www.youtube.com/watch?v=
8pulK-tijnc)
Algoritmos implementados em um sistema web:
(https://www.dcode.fr/en) , (https://cryptii.com/)
Cifra de fluxo
Uma cifra de fluxo é aquela que encripta um fluxo de dados digital um bit ou um byte
por vez. A figura abaixo é um diagrama representativo de uma estrutura de cifra de fluxo
genérica. Nela, uma chave (por exemplo, uma senha digitada pelo usuário ou parâmetro
do sistema) é inserida em um gerador de bits pseudoaleatórios que produz um fluxo de bits
aparentemente aleatórios (pseudoaleatórios). Em seguida, a saı́da do gerador (chamada
fluxo de chaves) é combinada com o fluxo de texto claro usando a operação OU exclusivo
(XOR) bit a bit. Podendo, também, serem utilizadas operações binárias complexas para
substituir os bits, ou, ainda, transposições de bits.
Por exemplo, se o próximo byte gerado pelo fluxo de chaves for 01101100 e o
próximo byte de texto claro for 11001010, então o byte de texto cifrado resultante será
10100110.
Vı́deo explicativo:
(https://www.youtube.com/watch?v=mvxgONKReYQ)
Cifra de bloco
Já uma cifra de bloco é aquela em que o texto claro é dividido em blocos do mesmo
tamanho. Devido as arquiteturas computacionais modernas trabalharem com números
grandes, normalmente são utilizados tamanhos de blocos de 64, 128 ou 256 bits. Em
seguida, um bloco de texto claro é tratado como um todo e usado para produzir um de
texto cifrado com o mesmo tamanho. Nesta etapa, os algoritmos efetuam operações de
substituição e/ou transposição. Frisando-se que não é possı́vel cifrar menos do que o
tamanho de um bloco. A figura abaixo é um diagrama representativo de uma estrutura de
cifra de bloco genérica.
No caso do exemplo acima, o tamanho do bloco é 64 bits. Como o arquivo não é
múltiplo de 64 bits, um enchimento, chamado de padding, foi inserido no último bloco.
Na prática, cabeçalhos inseridos no arquivo cifrado devem informar qual foi o algoritmo
usado, qual o tamanho de bloco e qual o tamanho real do arquivo para que no momento
da decriptação o padding seja descartado.
Um problema que pode ocorrer na cifra de bloco é a existência de blocos repe-
titivos que acabam por criar um padrão. Neste cenário, seria possı́vel aplicar operações
nos blocos cifrados repetidos a fim de recuperar a chave utilizada; quebrando, então, o
algoritmo de cifra. Para contornar este problema, evitando a criação de padrões e adicio-
nando mais camadas de segurança, existem diversos modos de operação e realimentação
utilizados para construir algoritmos de cifra de blocos.
Não é objetivo deste capı́tulo trabalhar os detalhes destes modos, contudo, vale
destacar que os principais modos são: Cipher Block Chaining (CBC), Electronic Code-
Book (ECB), Cipher FeedBack (CFB), Output FeedBack (OFB), e CounTeR (CTR).
99
Além disto, também vale ressaltar que um dos algoritmos de criptografia mais
populares da atualidade, o AES, é uma cifra de bloco, sendo possı́vel encontrar
implementações suas para diversos sistemas, arquiteturas e linguagens de programação.
Frisa-se, ainda, que os algoritmos DES, 3DES, Blowfish, Ascon, AEGIS, Deoxys-II e
NORX, também são ótimos exemplos de cifras de bloco. Todavia, não é recomendada a
utilização do DES e 3DES em sistemas em produção devido as fragilidades encontradas
em seus projetos, porém, estes algoritmos são vastamente utilizados para fins didáticos
em virtude da sua importância histórica.
Implementações:
(https://www.aescrypt.com/download/)
Vı́deo explicativo:
(https://www.youtube.com/watch?v=k51UrbJjUyw)
pouco perceptı́vel para um usuário legı́timo), o teste sequencial de 100.000 senhas demo-
raria 100.000 segundos. Entretanto, atacantes podem utilizar plataformas com alto poder
de paralelismo com o objetivo de superar esta proteção. Por exemplo, usando 10.000
núcleos de processamento, o tempo necessário para testar as 100.000 senhas no cenário
anterior cairia para meros 10 segundos.
Complementarmente temos o scrypt, algoritmo que foi proposto para permitir que
usuários não apenas controlem o tempo de processamento mas também a utilização da
memória, aumentando ainda mais o custo do hardware utilizado para recuperação de se-
nha. Desta forma, se o teste de uma senha com o bcrypt requer 100 MB de memória RAM
e 1 segundo, um atacante só conseguirá utilizar seus 10.000 núcleos de processamento si-
multaneamente se também dispuser de 1 TB de memória RAM. O uso de memória mais
barata, como discos rı́gidos, levaria a uma menor velocidade de ataque, enquanto o uso
de memória mais rápida, como registradores, aumentaria consideravelmente o custo do
ataque.
Recentemente, foi criada uma competição criptográfica com a finalidade de anali-
sar e escolher melhores algoritmos para este fim, esta iniciativa foi chamada de Password
Hashing Competition (PHC) [PHC 2019]. Como premissa desta competição, esperava-se
que qualquer algoritmo submetido fosse capaz de permitir a definição do tempo de pro-
cessamento, ajustar de forma refinada e utilizar de forma aprimorada a memória, além
de possibilitar o aproveitamento de outros recursos de hardware (como, por exemplo,
múltiplos núcleos). Como resultado desta competição, ficou estabelecido que o algoritmo
recomendado para proteger senhas é o Argon2. Além disso, algoritmos como Lyra2, Ca-
tena, Makwa e yescrypt receberam menções de destaque por caracterı́sticas de projetos
especı́ficas. Assim, na prática, têm-se que qualquer sistema com autenticação baseada em
senhas deva utilizar um destes Esquemas de Hash de Senhas indicados pelo comitê do
PHC para proteger suas informações.
Vı́deo explicativo:
Assinatura Digital e Hash - Segurança da Informação - Informática
(https://www.youtube.com/watch?v=UlRCVihN3pE)
de uma operação realizada entre dados cifrados ou texto claro (e depois cifrado) deve ser
a mesma.
Para tornar mais claro, vamos representar matematicamente a definição de
operação homomórfica. Para isso, vamos considerar:
• mi mensagem original (texto claro), sendo i natural {1,..., n};
• ci mensagem cifrada, sendo i natural {1,..., n};
• Enc(mi ) = ci , a função de encriptação;
• Dec(ci ) = mi , a função de decriptação;
• oper(x,y), uma operação matemática entre os valores x e y.
Diz-se que uma operação é homomórfica se:
Dec(oper(c1 , c2 )) = oper(m1 , m2 )
ou de forma equivalente:
oper(c1 , c2 ) = Enc(oper(m1 , m2 ))
Vı́deo explicativo:
4.10. Resumo
Ao longo deste módulo foi apresentado um panorama geral e introdutório sobre a crip-
tografia. Mais especificamente, foram discutidos seus conceitos elementares, elencados
106
seus principais tipos, esquemas e algoritmos. Além disto, foram expostas especificidades
de cifras clássicas, bem como foram apresentados modelos de cifras mais atuais e segu-
ros. Complementarmente, foram mostradas caracterı́sticas que definem funções de hash
e suas aplicações no cotidiano, principalmente no contexto de sistemas com autenticação
baseada em senhas. Por fim, foram discutidos aspectos do funcionamento de esquemas
de assinatura digital, em virtude de sua ampla utilização no cotidiano.
Contudo, propositalmente, diversos outros tópicos da criptografia moderna não fo-
ram tratados neste módulo. Isto porque, para se trabalhar temas como cifras assimétricas,
criptografia de curvas elı́pticas, criptografia pós-quântica, infraestrutura da chave pública,
blockchain, e diversos outros temas mais avançados, seria necessário um curso voltado
somente para este fim.
De toda forma, este é um dos anseios do Programa UniHacker, todavia, é ne-
cessário que um certo número de pessoas demonstre interesse. Se este é seu caso, por
favor, entre em contato com nossa equipe!
Ademais, caso deseje continuar seus estudos de forma autônoma, recomendamos
que consulte os materiais complementares disponibilizados e realize cursos especı́ficos.
4.11. Desafios
Conforme já discutido, este módulo não foi desenvolvido para exaurir os conteúdos re-
lacionados à criptografia, pois para isso seria necessário uma formação extremamente
aprofundada e completa. Ele também não possui o objetivo de capacitar criptoanalistas
e hackers. Contudo, para aqueles que possuem afinidade com o tema e/ou sentiram-se
motivados a continuar estudando esta instigante área da segurança da informação e de
sistemas, recomenda-se a execução dos seguintes desafios didáticos:
• Nı́vel Básico – https://www.bbc.com/portuguese/noticias/
2016/04/160411_teste_mente_hacker_rb
• Nı́vel Intermediário – https://pt.khanacademy.org/computing/
computer-science/cryptography/cryptochallenge/a/
cryptochallenge-introduction
• Nı́vel Avançado – https://hotelier-crab-35535.netlify.app/
107
Referências
Florencio, D. and Herley, C. (2007). A large scale study of web password habits. In Proc.
of the 16th international conference on World Wide Web, pages 657–666, Alberta,
Canada.
PHC (2019). Password hashing competition. https://password-hashing.net/.
Schlemer, E. (2010). Conceitos de criptografia e o proto-
colo ssl. https://pt.slideshare.net/tchelinux/
elgio-conceitos-decriptografiaeoprotocolossl.
Singh, S. (2008). Livro Dos Códigos, O. Record.
Stallings, W. (2014). Criptografia E Segurança De Redes: Princı́pios e práticas. Pearson
Brasil.
Wang, X., Yin, Y. L., and Yu, H. (2005). Finding collisions in the full SHA-1. In Advances
in Cryptology - CRYPTO 2005: 25th Annual International Cryptology Conference,
Santa Barbara, California, USA, August 14-18, 2005, Proceedings, volume 3621 of
Lecture Notes in Computer Science, pages 17–36. Springer.
Wang, X. and Yu, H. (2005). How to Break MD5 and Other Hash Functions, volume
3494 of Lecture Notes in Computer Science, chapter 2, pages 19–35. Springer Berlin
Heidelberg, Berlin, Heidelberg.
108
4.12. Exercı́cios
Questões
(Q1 ) Tecnologia utilizada na Internet para se obter diversos serviços básicos de
segurança da informação:
a) criptografia.
b) download.
c) streaming.
d) mailing lists.
e) web feed.
(Q2 ) Na tecnologia da informação, o uso de recursos criptográficos é cada vez mais
essencial para a manutenção da segurança da informação. Seguindo este pressu-
posto, analise as seguintes itens:
I) Um arquivo criptografado fica protegido contra contaminação de vı́rus e
outras pragas virtuais.
II) Chave criptográfica é um termo que se refere a um parâmetro (ou conjunto
de parâmetros) variável do algoritmo cifragem/encriptação que interfere
diretamente no texto resultado obtido. Ou seja, para cada chave distinta
(valor de chave), o algoritmo gera um texto cifrado diferente para uma
mesma mensagem, que só poderá ser decifrado pelo usuário que conheça
o valor em uso. Dessa forma, a segurança lógica é garantida, mesmo que o
algoritmo de encriptação se torne público, desde que a chave seja mantida
secreta.
III) Quanto aos conceitos básicos de segurança da informação, é correto afir-
mar que a criptografia simétrica usa um algoritmo de criptografia que re-
quer que a mesma chave secreta seja usada na encriptação/cifragem e na
decriptação/decifragem.
IV) A criptografia assimétrica tem melhor desempenho que a simétrica.
Considerando o que foi estudado ao longo deste módulo, assinale a opção correta.
a) Apenas o item I está certo.
b) Apenas o item II está certo.
c) Apenas os itens I e III estão certos.
d) Apenas os itens II e III estão certos.
e) Todos os itens estão certos.
(Q3 ) A cifra de César é um algoritmo de cifragem usado há mais de 2000 anos. Ele
tem esse nome em homenagem ao imperador romano que o utilizava para enviar
mensagens cifradas aos seus generais. Ao usar essa técnica para criptografar a
mensagem UNIHACKER, com chave de valor 23, obtemos como resultado qual
valor?
a) RKFEXZHBO
b) ABCDEFGHI
c) LEZYRTBVI
d) XQLKDFNHU
e) ZYXWVUTSR
(Q4 ) Acerca dos sistemas criptográficos e dos algoritmos que utilizam funções de hash,
julgue os itens abaixo.
109
III) Uma chave pública é utilizada tanto para codificar mensagens enviadas a
seu proprietário quanto para verificar e validar a assinatura de seu pro-
prietário.
IV) Uma única chave, denominada secreta, é utilizada por seu proprietário e
por aqueles com quem se comunica em esquemas de cifra simétricos.
Assinale a alternativa que indica todas as afirmativas corretas.
a) São corretas apenas as afirmativas I e III.
b) São corretas apenas as afirmativas I e IV.
c) São corretas apenas as afirmativas II, III e IV.
d) São corretas apenas as afirmativas III e IV.
e) São corretas todas as afirmativas.
(Q8 ) Em criptografia, os algoritmos Salsa20, AES e SHA3 estão relacionados, respec-
tivamente, com:
a) função de hash criptográfico, algoritmo de criptografia simétrica e método
de troca de chaves.
b) cifra de bloco, esquema de hash de senhas e cifra de fluxo.
c) cifra de fluxo, algoritmo de criptografia assimétrica e função de hash crip-
tográfico.
d) cifra de fluxo, cifra de bloco e função de hash criptográfico.
e) esquema de hash de senhas, algoritmo de criptografia simétrica e função
de hash criptográfico.
(Q9 ) Sobre a criptografia de chave simétrica, criptografia de chave assimétrica, cifra de
substituição e cifra de transposição, assinale a alternativa correta.
a) A cifra de fluxo, um tipo de chave criptográfica simétrica, criptografa um
bit por vez do texto a ser criptografado.
b) Na área de criptografia, deve-se ter algoritmos criptográficos secretos, em
que somente quem usa a criptografia conhece o algoritmo.
c) Em uma cifra de substituição, o texto cifrado é obtido realizando-se algum
tipo de permutação nas letras do texto claro.
d) Na criptografia de chave pública, a única chave criptográfica de uma pes-
soa deve ser pública, ou seja, de conhecimento de todos.
e) A criptografia de chave simétrica envolve o uso de duas chaves crip-
tográficas iguais.
(Q10 ) A cifra de cerca de trilho é uma das cifras de transposição mais simples que existe.
Ao usar essa técnica para criptografar a mensagem UNIHACKER, com chave 312,
obtemos como resultado qual valor?
a) UHKNAEICR
b) ABCDEFGHI
c) ICRNAEUHK
d) NACICRUHK
e) RCIEANKHU
(Q11 ) Referente aos algoritmos Argon2 e Lyra2, assinale a alternativa correta quanto ao
que são consideradas:
a) algoritmos de cifragem
b) funções de hash criptográfico
c) esquemas de hash de senhas
111
Gabarito
(Q1 ) Resposta: a
(Q2 ) Resposta: d
(Q3 ) Resposta: a
(Q4 ) Resposta: e
(Q5 ) Resposta: c
(Q6 ) Resposta: b
(Q7 ) Resposta: c
(Q8 ) Resposta: d
(Q9 ) Resposta: a
(Q10 ) Resposta: d
(Q11 ) Resposta: c
(Q12 ) Resposta: a
(Q13 ) Resposta: c
(Q14 ) Resposta: d
(Q15 ) Resposta: e