Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

WBA0470_v1.0
Criptografia Hash e Hacking
Segurança de sistemas e seus 
aspectos
Bloco 1
Marcelo Ferreira Zochio
Cifras simétricas
• Esse tipo de criptografia, baseia-se em uma
chave que é compartilhada pelo receptor e
pelo emissor.
• Ela é responsável tanto pela operação de cifra
quanto pela decifração do conteúdo cifrado.
• É como uma chave que abre e fecha uma
porta.
Cifras simétricas
Exemplos de cifras simétricas:
DES (Data Encryption Standart).
3DES (Three Data Encryption Standart).
AES (Advanced Encryption Standart).
Cifras de fluxo
• As cifras de fluxo fazem a 
criptografia do conteúdo a ser 
cifrado bit a bit sequencialmente.
• O mais conhecido algoritmo de 
cifra de fluxo conhecido é o RC4, 
o qual está ilustrado na figura ao 
lado:
Figura 1 – Cifra de fluxo RC4
Fonte: elaborada pelo autor.
Cifras de bloco
• As cifras de bloco operam da seguinte forma: o 
conteúdo a ser cifrado é dividido em blocos de 
tamanhos iguais e aplicado o algoritmo de cifra 
simétrica escolhido para sua cifra em cada bloco 
separadamente.
• Caso o último bloco não atinja o tamanho dos 
antecessores, ele é preenchido com dados de 
preenchimento (pad), que são retirados na sua 
decifração.
• Há vários modos de operar cifras de bloco. A seguir, 
serão mostrados os principais:
Modos de cifra
Figura 2 – Modo ECB (Electronic Code Book)
Fonte: elaborada pelo autor. Fonte: elaborada pelo autor.
Figura 3 – Modo CBC (Cipher Block Chaining)
Modos de cifra
Figura 4 – Modo CFB (Cipher Feedback Block)
Fonte: elaborada pelo autor. Fonte: elaborada pelo autor.
Figura 5 – Modo OFB (Output Feedback Block)
Modos de cifra
Figura 6 – Modo CTR
Fonte: elaborada pelo autor.
Cifras assimétricas
• Esse tipo de criptografia, usa duas chaves para seu 
funcionamento: a chave pública e a chave privada.
• A chave pública deve ser disponibilizada a todos 
os interessados com os quais se quer manter 
comunicações sigilosas.
• A chave privada é de uso exclusivo de seu 
proprietário, não podendo de forma alguma ser 
revelada, pois, se isso acontecer, as comunicações 
dele deixarão de ser sigilosas ou poderá haver 
falsificação de assinatura digital.
Cifras assimétricas
• Elas são matematicamente relacionadas: o que se cifra com 
a chave privada, só se consegue decifrar com a chave 
pública relacionada, e vice-versa.
• Para transmitir uma mensagem codificada para um 
destinatário, você usa a chave pública dele para cifrar sua 
mensagem, a qual ele disponibilizou para você, enviando 
para ele sua mensagem cifrada.
• Ao receber essa mensagem, ele a abrirá com a chave 
privada dele. Se ele quiser responder para você da mesma 
forma, ele usará a sua chave pública, que você 
disponibilizou para ele, cifrará a mensagem com ela, 
enviando-a para você, que abrirá com sua chave privada.
Cifras assimétricas
• Caso você queira assinar digitalmente alguma 
mensagem, você deve usar sua chave privada.
• O conteúdo a ser assinado será cifrado com a 
chave privada, e poderá ser aberto por qualquer 
um que tiver sua chave pública.
• Isso garante a autenticidade de autoria, pois em 
tese, você não compartilha sua chave privada 
com ninguém, não havendo como negar a 
autoria do conteúdo assinado digitalmente.
Segurança de sistemas e seus 
aspectos
Bloco 2
Marcelo Ferreira Zochio
Hashes
• Hashes são usados basicamente para verificação de
integridade de conteúdos digitais.
• Quando fazemos um resumo criptográfico de um
arquivo digital (não confunda com a criptografia, que é
totalmente diferente), usamos um algoritmo de hash
que faz cálculos de forma idiossincrásica, gerando uma
saída hexadecimal de tamanho fixo.
• O hash calculado com determinado algoritmo de hash,
gerará sempre a mesma saída para o mesmo
conteúdo; caso seja mudado apenas um bit desse
conteúdo, o resultado do hash altera-se
consideravelmente.
Hashes
• O cálculo do hash é irreversível, ou seja, não é possível saber, 
por meio de sua saída, sua entrada, diferente da criptografia, 
que usa uma chave para obter o conteúdo original.
• Hashes possuem várias aplicações: podem ser usados para 
garantir integridade de arquivos que contêm vestígios a serem 
analisados por peritos forenses computacionais; podem ser 
usados em bancos de dados para serem armazenados no lugar 
de seus conteúdos originais, como no caso de senhas, para 
evitar seu roubo, caso o banco de dados seja invadido (uma 
vez que o hash é irreversível, o invasor não conseguirá saber a 
senha de fato).
Hashes
• São usados também para verificar se o 
download de um arquivo foi executado na 
íntegra (tendo o hash do arquivo a ser baixado 
calculado e divulgado previamente, o usuário 
poderá calcular o hash do arquivo baixado com 
o mesmo algoritmo usado anteriormente no 
cálculo para ver se coincidem).
• Também são usados para verificação de 
integridade de documentos digitais assinados 
(calcula-se o hash desse documento assinado; se 
coinciderem, ele está íntegro).
Hashes
• Exemplos de hashes:
Vamos calcular o hash da string “eu amo 
criptografia” em alguns algoritmos de cálculo de 
hash:
MD5 = 9cafb6097114abd68b3a1f5a96f0a505
SHA1 = 
36a2bff40bbc217ca59de3d09df162e25c2b5725
SHA256 = 
2ef8ca01b29e716a0be62f7a8b8f1d4e0295c6e5d45f
01b8f1e28171f62e6edd
Segurança de sistemas e seus 
aspectos
Bloco 3
Marcelo Ferreira Zochio
Protocolos criptográficos
Os algoritmos criptográficos, funcionam dentro 
de uma comunicação em rede, por meio de 
protocolos criptográficos. Um protocolo muito 
usado para esse fim é o TLS (Transport Layer
Security).
Protocolos criptográficos
• Outro algoritmo que foi muito usado antes do TLS 
é o SSL (Secure Socket Layer), mas devido às suas 
falhas de segurança, foi abandonado em prol do 
TLS.
• A versão do TLS atualmente em uso é a 1.3.
• As anteriores, também possuem falhas de 
segurança, mas foram corrigidas com a atual 
versão.
Geradores pseudoaleatórios
• Sua função é gerar um número aleatório a partir 
do qual será feita a criptografia, para não 
uniformizar a aplicação do algoritmo 
criptográfico no conteúdo a ser cifrado, 
dificultando sua criptoanálise (exploração de 
falhas na criptografia).
• É o método para se gerar o IV (vetor de início, ou 
em inglês, Initial Vector).
• Veja a seguir um exemplo em Python:
Geradores pseudoaleatórios
import random
caracter = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
tamanho = 16
iv = ''
while len(iv) < tamanho:
iv = iv+random.choice(caracter)
print("IV = ", iv)
Geradores pseudoaleatórios
• Esse programa, gera uma sequência hexadecimal 
de 16 bytes de forma “aleatória”.
• A biblioteca random, gera sequências 
pseudoaleatórias, e escolhe de forma mais 
aleatória possível os caracteres dentro de uma 
série.
• Sobre o Python, caso se queira usar uma geração 
aleatória mais próxima da definição técnica de 
seu nome, usamos a biblioteca urandom (Ultra 
Random).
Hackerismo
• Você já deve ter ouvido notícias tais como: “hacker invade
conta bancária e desvia milhões de dólares”; “empresa X
teve seus dados sequestrados por hacker”, “hacker rouba
senhas de usuários”. Mas, agora, você vai aprender os
termos corretos. O que é um hacker?
• Hacker, no jargão da T.I., é um profundo entendedor de
computação. Um hacker possui espírito autodidata,
pesquisador e não se contenta em saber apenas o
necessário para exercer suas funções. Ele vai além do óbvio,
e por isso conhece mais que a maioria.
• Aquele que faz os estragos que você costuma ouvir nos
noticiários é o cracker, esse sim o vilão da história. Ele usa
seus conhecimentos para proveito próprio e não possui
ética, nem princípios e nem legalidade nas suas ações.
Hackerismo
• O hacker que se dedica a aprimorar a segurança de 
sistemas e usa seus conhecimentos na busca de falhas e 
como mitigá-las, é o “hacker ético”, que é uma profissão no 
mundo da T.I..
• Ele compõe o “red team”, ou seja, a equipe responsável por 
atacar sistemas(com autorização de seu dono) para testar 
sua segurança, enquanto o “blue team”, a equipe 
responsável pela segurança desse sistema, procura 
protegê-lo o mais adequadamente possível.
• Há também certificações profissionais nessa área: Ethical
Hacking Foundation (EXIN), CEH (Certified Ethical Hacker, 
da EC-Council) e a Pentest+ (CompTIA) são algumas delas.
Hackerismo e a legislação brasileira
Invasão de dispositivo eletrônico alheio sem 
autorização de seu proprietário é CRIME!
Portanto, para realizar um teste de invasão, você 
precisa da autorização por escrito de seu 
proprietário.
Mesmo que a legislação reconheça a autorização 
tácita, garanta-se legalmente!
Hackerismo e a legislação brasileira
A Lei nº 12.737, de 30 de novembro de 2012, a Lei 
“Carolina Dieckmann”, altera e acrescenta alguns artigos 
no Código Penal brasileiro sobre crimes de informática. Ela 
acrescenta o art. 154A no Código Penal, que diz:
“Invadir dispositivo informático alheio, conectado ou não à 
rede de computadores, mediante violação indevida de 
mecanismo de segurança e com o fim de obter, adulterar 
ou destruir dados ou informações sem autorização 
expressa ou tácita do titular do dispositivo ou instalar 
vulnerabilidades para obter vantagem ilícita: 
Pena - detenção, de 3 (três) meses a 1 (um) ano, e multa”.
Teoria em Prática
Bloco 4
Marcelo Ferreira Zochio
Reflita sobre a seguinte situação
Você é um analista de redes de uma empresa que necessita de um programa que
tenha uma criptografia muito forte para transmitir informações sigilosas muito
importantes via rede.
Sua chefia lhe solicitou que desenvolvesse um pequeno aplicativo que
criptografasse as informações que seriam transmitidas usando uma criptografia
feita apenas com uma operação lógica XOR (OU-EXCLUSIVO) mas que tivesse
implementado o conceito de “one-time-pad” em seu algoritmo, ou seja, gerasse
chaves aleatórias descartáveis do tamanho da mensagem a ser transmitida.
Use a linguagem com o qual você possui domínio e mãos à obra!
Norte para a resolução...
• Como o aplicativo funcionará diretamente na shell do sistema operacional, não 
precisará ter modo gráfico.
• Como você vai trabalhar com o conceito de “one-time-pad”, seu aplicativo deve gerar 
senhas aleatórias do mesmo tamanho da mensagem a cada mensagem a ser cifrada.
• Linguagens como Python, C, C++ e Java, costumam ter módulos criptográficos que 
auxiliam você na construção de seu programa.
• Você deverá usar operação lógica XOR para cifrar e decifrar as mensagens. Então, seu 
aplicativo deve cifrar e também decifrar as mensagens, podendo o usuário escolher 
qual das operações quer fazer.
Solução proposta
import random
from Crypto.Cipher import XOR
def cifra():
caracter = "abcçdefghijklmnopqrstuvwxyzABCÇDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*()-_+=§{}[]|\/:;<>.,"
mensagem = raw_input("Digite aqui a mensagem a ser cifrada: ")
tamanho_da_senha = len(mensagem)
if (tamanho_da_senha < 0):
print "Erro: valor negativo!"
elif (tamanho_da_senha == 0):
print "Erro: Tem que ter pelo menos 1 caracter!"
Solução proposta
else:
senha = ""
while len(senha) != tamanho_da_senha:
senha = senha+random.choice(caracter)
print "Senha gerada: ", senha
xor1 = XOR.new('senha')
mensagem_cifrada = xor1.encrypt(mensagem)
print mensagem_cifrada.encode('hex')
def decifra():
mensagem = raw_input("Digite aqui a mensagem a ser 
decifrada: ")
mensagem1 = mensagem.decode('hex')
senha = raw_input("Digite a senha: ")
xor2 = XOR.new('senha')
mensagem_decifrada = xor2.decrypt(mensagem1)
print mensagem_decifrada
Solução proposta
def menu():
a = raw_input("Digite 1 para cifrar ou 2 para decifrar: ")
if a == '1':
cifra()
elif a =='2':
decifra()
else:
print "Escolha certo!"
menu()
menu()
Dica do Professor
Bloco 5
Marcelo Ferreira Zochio
Dica do professor
Quer saber qual a referência histórica sobre a cifra de César? Procure na 
internet a obra De Vita Caesarum, Divus Iulius, do historiador romano 
Suetônio. Ela é escrita em latim, mas há algumas traduções para o inglês. 
Nela, você encontrará a citação desse historiador sobre a cifra em questão.
Quer ler a obra de Friedrich Kasiski no original? Procure a obra Die 
Geheimschriften und die Dechiffrir-Kunst. Parte dela é dedicada à descrição 
de seu método para a quebra da cifra de Vigenère.
Referências
STALLINGS, W. Criptografia e Segurança de Redes. 6. ed. São Paulo: Prentice 
Hall Brasil, 2015.
TKOTZ, Viktoria. Criptografia – segredos embalados para viagem. São Paulo: 
Novatec, 2005.
ZOCHIO, Marcelo F. Introdução à Criptografia. São Paulo: Novatec, 2016.
Bons estudos!

Mais conteúdos dessa disciplina