olá pessoal fábio akita no último episódio eu tenho que responder à pergunta se computação quântica tem o potencial de acabar com os esquemas de segurança que usamos hoje eu mencionei coisas como rs ar ou a s eu imagino que não só iniciantes mas mesmo desenvolvedores de software que já têm alguma experiência em dificuldades de entender mesmo básico sobre fotografia cyber security é um tema gigante existem as tecnologias as ferramentas e os processos segurança da informação ou infosec uma pequena parte de cyber security foca mais na implementação e manutenção de processos e políticas de onde você
vem a maioria das certificações muito de segurança é uma questão de procedimento porém essa parte me interessa muito pouco pelo menos por agora a idéia hoje é começar a explicar alguns dos jargões e conceitos para que você se confunda - quando estiver lidando com aspectos de segurança em particular com criptografia e vou repetir de novo porque é difícil explicar a dimensão dessa área que a gigante uma história longa muita matemática você pode dedicar sua vida inteira estudando só isso e ainda não saber tudo é um grande na real que até esse script que é só
um mero resuminho eo gigante com isso tive que dividir em duas partes hoje vai ser a parte 1 e semana que vem termina na parte 2 em papel e caneta e se preparem porque vocês vão precisar lutar bastante coisa para estudarem mais detalhes depois e falando em segurança agora é uma boa hora para agradecer o patrocinador deste vídeo se você quer evitar que suas senhas sejam casadas ou evitar que o fbi descobriu o site de pornografia e bit torrent que você usa devia tá usando uma vpn e por que não nós dever e pn não
não estou brincando esse episódio não é patrocinado pela norte defendeu com que a outra bp eni rola vinheta [Música] se eu fosse chutar eu diria que a maioria esmagadora dos programadores não pensa em segurança nem o mínimo que deviam sim você mesmo aí assistindo e eu também de vez em quando isso era sem 20 anos atrás e continua sendo assim hoje o que mudou é que nos últimos 15 anos pelo menos queremos freimark e práticas que todo mundo usa o gmail sem pensar e por causa disso muitos dos erros triviais foram evitados que você nem
sabe disso por exemplo é o trivial e muito comum antigamente era qualificar manualmente comandos sql para banco de dados não estrague concatena ao que o usuário mandava de um formulário tipo de login por exemplo e mandar esse comando por bancos de dados como esse exemplo aqui do lado mas se o usuário fosse minimamente espertos nem precisa ser muito inteligente sabendo que é assim que o programador faz ele manda exatamente a estrela que se concatena nada em via outros comandos arbitrários de sql que o programador não estava esperando assim como nesse exemplo aqui do lado e
pronto você tem um problema desse cowen jackson na sua aplicação praticamente todo framework web como um raio de ângulo a fé o asp.net e todos os outros hoje vem com algum tipo de rm que uma biblioteca de mapeamento objeto para relacional não só para uma pea tabelas com classe mas também fazer coisas como sanitização dos valores enviados por usuários daí a maioria de casos como ciclo em jackson são eliminados automaticamente além desse com jackson margem dos prémios competentes protege contra coisas como csrf e cross site request forgery 7 um hijra aqui replay ataques e muito
mais se não fizer no mínimo essas coisas não é um bom framework mas como eu disse antes a maioria dos programadores não pensa tanto em segurança daí você lê em algum post de blog por exemplo pra em vez de deixar o rm geral o comando sql se você escrever o comando manualmente não usar nenhum rm pode ser que tenha mais performance e pronto você acabou de deixar de usar os mecanismos de segurança do framework pela promessa de performance isso é o mais comum programador é um bicho burro e não devia ser nós devemos servir ciência
da computação cadê a ciência e ficar ouvindo promessas e implementando sem saber se funcionou não tem hora que o programador parece que está escolhendo dieta da moda na dúvida é melhor assumir primeiro que se freimark guia você para desenvolver de uma certa maneira deve ter razões para isso especialmente se usado por milhares de pessoas faz muitos anos entenda quais são essas razões antes de decidir não usar não estou falando de framework zinho hipster da moda que acabou de ser lançado bons freimark são como bons vinhos precisam de anos para amadurecer só que aí programa do
iniciante tem mania de achar que sabe mais que as milhares de pessoas que gastaram milhares de horas homem amadurecendo frame que decide a eu fazer meu próprio freimark porque eu sei fazer melhor pronto você acabou de ganhar uma catástrofe esperando para acontecer o trabalho de um programador é conseguir desenvolver alguma coisa o mais rápido possível com a melhor qualidade possível e qualidade não é só funcionar como foi pedido como funcionar com a melhor performance com a melhor escalação unidade com a melhor segurança e ainda tendo a melhor manter na habilidade só que é impossível ter
100% de todas essas características não existe almoço de graça o trabalho de um programador encontrar o meio do caminho entre todos esses parâmetros esse balanço de 3.1 de custo benefício não é simples aqui entra a experiência de ter trabalhado com os programadores mais experientes e de ter visto atrasos dificuldades de manutenção buracos de segurança e gargalos de performance na prática em diversos projetos diferente só porque alguma coisa roda não significa que ela funciona corretamente a maioria dos cursos e tutoriais se preocupa em fazer alguma coisa rodar mas não se preocupa com todos esses outros aspectos
segurança performance escalabilidade produtividade e manter na habilidade por exemplo nos anos 90 quando todo mundo ainda estava aprendendo como programar para web não tinha freimark decentes lógico a web comercial tinha acabado de nascer não tinha boas práticas bem definidas como temos hoje então digamos que você quisesse fazer um site zinho com login página de produtos ou checkouts para colocar cartão de crédito como fazia simples um formulário html que dava post para um script pro php que receber a senha o cartão em gravar directo numa tabela no banco assim o banco insight eram instalados na mesma
máquina porque esse recurso custavam caro e como quem programa site normalmente tinha e ainda tem pouco conhecimento de coisas como configuração de infra então estava tudo sem senha ou colocar a senha hardy kohl de no código desastre lógico na verdade eu não falei certo isso não é só em shiga mente todo iniciante começa fazendo exatamente desse mesmo jeito não importa a linguagem a diferença é que nos anos 90 todo mundo era iniciante ainda mais com o tempo fomos evoluindo e entenda isso como iniciante você não tem como saber até onde dá pra ele com isso
você é iniciante mas não se preocupa parta do princípio que só porque você não sabe não quer dizer que não existe e só porque a roda não quer dizer que você fez certo o problema é um iniciante colocar um site produção sozinho até hoje quando eu clico em recuperar a senha tem site que mandar minhas em aberta no meio e meio em 2019 isso é ridículo uma coisa você está treinando e fazendo errado isso não tem problema faz parte do aprendizado outra coisa é achar que só porque fez - e de tutoriais já sabe tudo
e colocar seus usuários em risco isso em responsabilidade como desculpa para iniciar alguns conceitos vamos pegar o exemplo de guardar senhas impõe teste ou seja em texto aberto uma tabela do banco de dados como eu disse que o amador faria se fizesse tudo do zero sem usar nenhum freimark vamos assumir que tem uma possibilidade real dessa tabela ser roubada por um hacker isso é muito mais comum do que você pensa empresas gigantes de linkedin até marcas famosas como se fora sites de relacionamentos como adultos friendly fire games como clash of kings e muito mais que
você pode procurar no site ha'erbin owned já tiveram dados dos usuários expostos nesse site aliás você pode digitar seu email e ver se sua senha já foi exposta toda a tabela de senhas uma hora vai ser roubada nova questão disse é só uma questão de quando em segurança nunca só aqui existe segurança sempre parta do pressuposto do pior caso que os dados vão ser expostas mais cedo ou mais tarde em seu trabalho é garantir que seja o mais tarde possível a segunda coisa que alguém podia pensar pode ser ok não tem problema em seu ínclita
senha antes de gravar no banco primeiro vou me entender o que significa encriptação em criptografia normalmente a gente está se referindo a uma encriptação simétrica de maneira bem simples pensa em uma função onde passamos algum texto e 16 grego como entrada ea saída é o texto bagunçado simétrico porque se passarmos o texto bagunçado de volta para a função com o mesmo segredo revertemos de volta o texto original isso é de criptação as primeiras versões de captação era a coisa mais simples que você podia imaginar trocar uma letra por outra ou simplesmente da shift e mover
as letras para frente ou para trás como nos algoritmos isner ou hot 13 e se normalmente são usados em cursos introdutórios de criptografia tipo hello world por serem super triviais um cizre é basicamente um site de substituição primeiro escolhemos um valor de shift por exemplo dois pra ficar simples esse é o segredo então toda a letra a 2 pra frente viram ser toda a letra b vieram de toda a letra senão f sempre dois pra frente e assim por diante a chave secreta esse valor de shift 2 uma forma de quebrar isso se você notar
que se trata de algo parecido com algoritmos isa você pode tentar ver a força bruta que é tentar todos os 25 possíveis valores de shift já que o flamengo só tem 26 letras você pode facilmente tentar o a1 até descobrir no papel em poucos minutos outra forma é usar a análise de frequência por exemplo se eu sei que a mensagem original em inglês as letras que aparecem com mais freqüência na maioria das palavras são a letra e ou a digamos que na mensagem captada a letra que mais aparece é p eu podia chutar que originalmente
é um e na verdade oxi foi de 11 letras se não funcionar e podia chutar com um ar e que o shift foi de 15 letras da em vez de tentar todas as 25 possibilidades na força bruta só duas ou três tentativas já seria suficiente veja aqui mesmo nesse exemplo simples podemos diminuir a dificuldade da força bruta de 25 tentativas para dois ou três quase dez vezes mais rápido qualquer tentativa de quebrar uma inquietação na pior das hipóteses é ver a força bruta mas com criptoanálise como esse exemplo básico mencionei aqui eu seja analisando a
mensagem pintada que chamamos de safer text podemos usar a matemática mais precisamente estatística para diminuir as tentativas algumas ordens de grandeza o hot 13 é mais uma brincadeira ele é um caso especial do circo shift fixo de 13 letras aliás o cinza o original foi usado pelos romanos e por isso se chama cisa e assim como hot 13 também tinha um valor de shift fixos acho que em três ou cinco de qualquer forma uma coisa que tem que ficar muito claro o dado encriptado não pode compartilhar características com a mensagem original porque via criptanálise e
conseguia inferir alguma informação ou outro caso clássico ensinado como introdução em criptanálise é o famoso site o enigma usado pelos alemães na segunda guerra que também era um site de substituição eu recomendo que dei uma procurada em canais como não buffay o que explica ele em mais detalhes mas o equipamento era tipo uma máquina de escrever onde cada letra que você teclava devolver uma outra letra qualquer uma das outras 25 letras do alfabeto - ele mesmo ele não substitui todo a pela mesma letra toda vez cada há no texto é virar uma letra diferente a
máquina é configurada conectando pares de letras no que se chama de plano board e configurando 3 rotores um refletor que fazia o embaralhamento sem entrar em detalhes se você souber a configuração desse pano board dos rotores e do refletor daí você conseguir reverter a mensagem entre pitada o grande erro dos alemães e o grande insight de alan turing foi notar que todo dia de manhã os alemães mandavam relatório do tempo e todo o relatório começava com as mesmas palavras no topo da mensagem tipo tempo que seria verde em alemão e terminava com o hitler daí
ele entendeu que apesar das letras ser embaralhadas a mesma lei nunca virava ela mesma então você conseguia chutar os pares de letras no clube board e tentando decifrar a letra a letra mas uma hora da ferradura porque o próximo par tony dia com o que você já tinha achado que sabia então precisava começar de novo mas como as letras nunca voltavam pra elas mesmas a kombi na tora inteira de todos os padres que você testou podia ser descartada e só testar outra combinação inicial diferente dos pares que você já tentou e era isso que fazia
a máquina que eu tô em construir o tal bomb se você já viu uma foto parecendo uma estante com vários motores a cada rotação ele vai tentando um espaço de combinações não funcionando descarta o espaço inteiro e tenta de novo o que sobrar é a resposta certa e ele conseguia achar a configuração em uns 20 minutos e de novo dado esse insight de que a mesma letra nunca virava ela mesma e sabendo que uma palavra que aparece em toda mensagem na força bruta sem esses insights só testando cada configuração possível do enigma um computador desktop
dos dias de hoje ainda levaria de horas há dias para conseguir decifrar de novo que tudo em sua equipe conseguiram fazer foi nos acreditar análise para diminuir drasticamente o espaço de tentativas e essa história toda foi para explicar duas coisas uma função de encriptação simétrica com segredo no caso a combinação dos rotores é construída de tal forma que a força bruta seria computacionalmente inviável no caso do enigma existem mais de milhões de milhões de milhões de possibilidades mas como ele tinha os defeitos que eu falei mesmo nos anos 40 sem um computador potente como temos
hoje já foi possível derrotar o algoritmo em 20 minutos com motores e mecânicos a segunda coisa criar um algoritmo de encriptação robusto e resistente à capital análise é muito mais difícil do que parece se você não é um bom matemático teórico nunca jamais tente inventar seu próprio algoritmo sua melhor tentativa vai ser sempre pior do que o enigma use únicos e originais nos anos 70 o clipe foi implementado como uma avaliação de uma máquina de votorantim x parecido com um algoritmo do enigma algumas versões eram ainda mais fracas niter aumente implementar um sir q eu
falei acima o hot 13 não era brincadeira ele chegou a ser usado de verdade essas implementações foram feitas numa época onde não havia a preocupação de hoje em criptografia feitos por gente como eu ou você sem treinamento em matemática era só pra deixar as coisas um pouco mais difíceis em breve o ciro foi substituído no comando críptico por algoritmos melhores como odeia encryption estender o 10o 10 foi desenvolvido pela ibm e escolhido pelo nist o national institute of standards and technology como o padrão de encriptação do governo americano nos anos 70 usando um segredo o
chavez de 56 bits relembrando significa um espaço de dois elevados 56 ou 72 quadrilhões de possíveis chávez como vocês viram na história do enigma de algoritmos triviais de substituição uma das fraquezas mais óbvias encontrar um padrão ou relação estatística entre a mensagem original em playback e os cyber text dentre as várias coisas que o deve implementar foram s boxes ou substituição boxes a partir daqui começa a entrar matemática mais complicada coisas como funções de bent transformação afim transformada de och por aí vai mas basta entender que s boxes são tabelas de substituição que causam que
o cloud sheron chama de confusão tentando eliminar qualquer correlação o relacionamento entre o planteq da entrada e os iphone text da saída para evitar a situação do rio hitler do enigma onde conseguiríamos inferir alguma coisa do pai em teste a partir do site text criou-se a idéia de quebrar a mensagem original em blocos digamos de 128 bits passar por várias rodadas de transformação usando coisas como o xbox e usar o site repete neste bloco como entropia para o bloco seguinte de tal forma que mesmo que o texto tenha trechos que se repetem eles não vão
ser creditados da mesma forma e assim no site artex de final não temos que encontrar padrões mesmo assim o mesmo porém teste aplicado no mesmo algoritmo sempre vai resultar no mesmo site o text e para evitar isso também costuma se usar o ine desejo um vector ou a iv no primeiro bloco dessa forma o pan em teste com a chave secreta avaliando esse aí vi o site tech vai ser bastante diferente além do princípio da confusão de xenon ainda existe o princípio da difusão ou seja se mudarmos um bit no pan em teste pelo menos
metade dos bits do site do site text deveriam mudar de lugar diminuindo ainda mais a correlação do site o teste completo text enfim não precisa decorar o que acabei de falar a ideia é mais explicar como as coisas evoluíram desde o famoso enigma de qualquer forma o défice de 56 bits já foi quebrado uma das formas de fazer isso é via é pedir o field programmable gate array se pense num chip genérico onde podemos desenhar circuito e programar esse chip do tipo tipo de circuito que quisermos se vocês assistiram começo do meu vídeo sobre a
supremacia quântica eu rapidamente explicou sobre portas lógicas e como podemos criar circuitos com essas portos sep diz é isso reprogramação das portas lógicas para criar um hardware especializado enfim hoje existem ep diz que consegue gerar da ordem de terra chávez por segundo ou seja quase 800 bilhões de chaves por segundo e como eu falei que 56 bits dá um total de 72 quadrilhões de chaves significa que dá pra quebrar 10 hoje em dia em pouco mais de 26 horas via força bruta fpj não foram criados só pra isso claro ele existiam antes mas criptografia sempre
vai usar o que tem de melhor para estar um passo à frente o 10 foi muito importante porque ele recebeu o scouting enorme e como o governo americano estava usando havia muita motivação para entender como ele funciona e obviamente como tentar quebrar lembrando ele foi inventado nos anos 70 esse sistema com o ep diz que eu falei foi criado em 2012 e mesmo assim leva 26 horas pra quebrar não é instantâneo quando as primeiras teorias de como quebrar 10 começaram a aparecer também surgiram formas de deixar o próprio 10 mais forte e uma dessas formas
é literalmente rodaram 10 mais de uma vez a mais especificamente passar cada bloco da mensagem pelo 10 três vezes e isso é o que conhecemos hoje como o dez é unicamente ele é computacionalmente enviava de quebrar mas pouca gente usa trepou desce hoje isso porque o 10 não é particularmente rápido e trepou 10 como você pode imaginar pode ser até três vezes mais lento então o início comissionou um novo algoritmo e depois de um longo processo e diversos bons novos candidatos eles escolheram um algoritmo running down cujo nome é derivado dos nomes dos autores de
ong e vincent hayman diferente do desk os a chavez de 56 bits o ranking da ossa chaves de 128 192 256 bits agora que vocês sabem que o sistema de erp dia e mais rápido 2012 demorava 26 horas para percorrer o espaço de 56 bits lembro que eu expliquei no episódio anterior que cada mais um bit que você adiciona duplica o espaço uma chave de 256 bits é 2 elevado a 256 que dá um número tão astronômico que estamos falando de um número com 77 casas o quadrilhão que eu falei antes acima tem só mais
15 casas o algoritmo dessa chave pode levar a outras 10 chávez usa os pais xbox que eu falei passa cada bloco por 10 a 3 de rodar as transformações mais complexas que o 10 e com tudo isso ele ainda três vezes mais rápido que o 10 o algoritmo rain down foi batizado pelo nist como adversa encryption se estender ou e s mas as técnicas de capitalize evoluíram também hoje em dia sem saber que o algoritmo que chávez está sendo usado existem análises que checam quanto tempo está levando cada trecho do algoritmo consumo de energia em
cada etapa a radiação eletromagnética e muito mais para conseguir mais dados para diminuir as possibilidades de tentativas já que força bruta pura num espaço de 256 bits é computacionalmente inviável e uma das formas de mitigar isso que se chama de ataques de sair de shannon é que hoje em dia o processador implementa o irs direto em hardware para evitar que implementações de software possam ser analisadas enquanto rodam já faz pelo menos umas dez gerações atrás que a intel implementa as instruções no processador desde uma antes da semdi bridge amd também implementa desde o jaguar e
o rs 256 que você provavelmente usa se tem parte são encriptadas com tudo isso é extremamente rápido o suficiente para encriptar e de captar dados do seu hd em tempo real e é absurdamente segura eu conclui no episódio de supremacia a quântica que nenhum computador quântico seria capaz de quebrar o ei é se ele só diminuiria a força bruta em uma ordem de grandeza mas o espaço computacional é tão gigante que ele continue viável de quebrar mesmo assim eu queria dizer que a interpretação simétrica de sites de blocos são funções que recebe um punk text
um segredo e michelle zeit um vector e cospe em um cyber text seguro mas isso não explica o que realmente significa ser seguro então resolvi fazer essa tangente acho que vale a pena ter uma noção do que significa algo sem captado com o irs mas como não demonstrei como funciona essa geração de chaves a partir da chave 256 bits como ele gera as tabelas os s box as maiores cotações e como esse aumenta a confusão e difusão segundo shannon se você tiver interesse existem centenas de documentações e vídeos aqui no youtube mesmo explicando o processo
em detalhes agora existe uma outra categoria de algoritmos que é comumente confundido com encriptação e são as funções criptográficas de hash ou mestre de da e este literalmente funções que digerem mensagens diferente de encriptação simétrica como foi por 10 ou rs onde você pode reverter o processo e decapitar o safer text propõe text algoritmos de hash são o que chamamos de um é que a direção única ou seja irreversíveis toda a função de hash pega um pano e tec de qualquer tamanho e khost uma saída de tamanho fixo por exemplo o antigo md5 sempre vai
construir uma saída de 128 bits representado com uma estranha de 32 caracteres em hexadecimal outro que você deve conhecer o chá ou sekhil rech algoritmo ano que cospe da semtabes representados em uma estranha de quarenta caracteres em hexadecimal os primórdios da internet com conexões instáveis e pouco confiáveis para garantir que o download de um arquivo não veio corrompido era usado antecessor o md5 o med4 para os restos original e do arquivo da rodada o md5 é basicamente o med4 com mais uma rodada já já vou explicar o que é uma rodada ambos md5 chão tem
seus usos ainda mas são considerados inseguros hoje em dia um lugar deles deve ser usado chá 2 ou xadrez que foi aprovado pelo nicho em 2015 a partir do algoritmo chamado que cac vocês devem ter notado que o lixo tem uma cultura meio padrão e spa em captação é o em dau chapa 3 é o que cac isso pode confundir mas fora dos meios de criptografia poucos vem falar em lindau o que kahn que você ouve mais em irs ou chá mas enfim como funciona e para que servem algoritmos de haxixe eu disse que a
função recebe uma entrada de qualquer tamanho seja uma estrela de senha em um arquivo pdf de contrato ou arquivo binário de instalador de algum programa e sempre vai curtir uma saída de tamanho fixo de 128 bits no caso de 25 ou 160 hábitos no caso do show pra fazer isso o md5 por exemplo você divide um arquivo binário e vai processando em blocos de 128 bits é um site de bloco só que em vez de preservar os blocos numa cadeia aquele usa o processamento do bloco anterior em cima do próximo bloco sobrando sempre um bloco
do tamanho fixo em cima de cada bloco é aplicado alguma computação e aí que os algoritmos de férias para ganhar as características desejadas de segurança para simplificar imagine que o texto original e se bob um binário aqui do lado de três linhas só agora vamos quebrar esse blog em blocos de 10 bits em vez de 128 de novo só para simplificar de forma extremamente ingênua como só aplicar um ex cruzeiro o xbox pequeno vídeo anterior um bloco de cada vez um episódio a primeira linha com a segunda linha e agora esse resultado com a terceira
linha mas temos um problema a terceira linha não tem 10 bits para poder executar o episódio da e precisamos completar ela e para isso fazemos o que se chama de pede se não estou enganado o md5 continuou que falta colocando o primeiro um bit 1 eo resto com zeros e pronto agora fazemos o último ex or e no final temos um único bloco de 10 bits isso seria uma função de haxixe 10 bits que é extremamente inseguro porque eu só usei um mísero ex o war claro que o md5 faz mais coisas por bloco mas
só para vocês terem uma noção de como a partir de uma entrada de tamanho arbitrário chegamos uma saída de tamanho fixo novamente não implementem uma função de haxixe assim como eu acabei de mostrar o md5 usa tabelas pré computadas dividir cada bloco de 128 bits em quatro sub bloco de 32 bits performa várias operações além do episódio como em george mais e depois de vários rounds de operação concatenou subir blocos de volta no 128 bits e repete para o próximo bloco é um pouco mais complicado e mesmo assim o md5 shaun não são mais considerados
seguros eles têm pelo menos dois problemas sofrem de ataque de colisão e ataque de extensão de comprimento para entender colisão precisamos entender algumas das características desejáveis em funções de hash primeiro gostaríamos que o hash que ele cospe se que é um número binário seja difícil de distinguir de uma função que cospe números aleatórios ou seja não seria bom que a saída se concentrasse próximo de certos números e sim que ela tivesse uma distribuição normal como a freqüência de números jogando dados nunca se concentrando só número vamos dar um exemplo de uso digamos que eu tivesse
a tarefa de organizar centenas de livros em dezenas distantes de uma biblioteca como organizar a primeira coisa que vem à cabeça seria tentar organizar em ordem alfabética por título autor porém rapidamente você vai notar que tem mais livros que começam com certas letras do que outras por exemplo que começam com a letra a e menos com z faz de conta mesmo se eu organizasse assim eu ainda ia ter que ficar caçando em qual estande comece em qual prateleira começa a qual letra em vez disso poderemos numerar cada posição em cada instante digamos que cada instante
composta de 200 livros e temos 20 estantes então temos espaço para quatro mil livros temos mil livros para organizar e poderemos passar o título uma função de hash ele nos devolve um número entre 1 e 4 mil é quase 12 meses portanto seria uma função de haxixe de 12 bits agora o que seria o ideal que cada título devolvesse um número não repetido porque não seria legal se muitos livros caíssem na mesma posição certo se caíssem aos entraram em colisão não dá pra colocar dois livros no mesmo lugar físico neste nosso exemplo essa é uma
das coisas que é desejável uma função de haxixe que existam poucas ou mais próximo de zero colisões mas justamente uma das fraquezas do md5 e do chá um é que descobriram que se você pegar o título do livro e cuidadosamente alterar o título colocando digamos alguns zeros do final do título uma hora chegaremos no mesmo rech de outro título criando uma colisão e porque se é ruim no mundo real uma das utilidades de uma função de hash é ser uma impressão digital digamos que eu tenho um contrato de 100 páginas de word como eu sei
que depois que transmite um arquivo pra você ver e meio ninguém interceptou e mail alterou o contrato e mandou uma cópia adulterada simples antes de enviar o contrato eu passo ela num md5 que vai me custar uma impressão digital de 32 caracteres daí eu passo aqui pra você e te digo qual é o hash daí você pode passar o contrato pelo md5 do seu lado e comparar com o meu reste e se bater sabemos que é o mesmo arquivo porém se a função é fraca contra ataque de colisão alguém no meio do caminho poderia adulterar
o contrato pra te mudar as palavras cuidadosamente para tornar o contrato ruim pra você só que isso em alterar o hash mas aí quem interceptor sabendo da fraqueza 2005 as pequenas alterações como adicional tirar uma vírgula um ponto alguns espaços e é possível chegar no mesmo resto do arquivo original aí você recebe um arquivo que foi cuidadosamente adulterado roda ele nenê 5 e tirar o mesmo rech do arquivo original e você agora vai confiar que esse contrato é o válido e vai assinar sem ler isso é um ataque de colisão eo tal ataque de extensão
de comprimento aqui eu vou simplificar bastante mas eu deixei o procedimento completo nos links na descrição abaixo digamos que você tenha feito um site para fazer download de arquivos privados tipo mi dropbox você faz o upload de um arquivo e o site devolve url com uma chave especial nessa url muita gente faria assim pegaria o nome do arquivo concatenar ia com algum segredo que fica no servidor e devolveria o hash feito com o md5 o chão para baixar de novak você precisa mandar mesmo a url com o nome do arquivo e esse rech em particular
esse uso de hash para a autenticação é o que se chama de mac ou mestre de authentication conde toda vez que você usa um hash para onde a autenticação damos esse nome de mac enfim digamos que você é um usuário malicioso querendo baixar outros arquivos do servidor diferente desse que deu upload digamos o arquivo barra etc barra pés wd só que não temos o segredo do servidor para concatenar com esse nome de arquivo e gerar um novo mac então como podemos fazer lembra como hash é calculado no exemplo simples com o ex o o stream
é quebrado em blocos de 128 bits no caso de 5 60 bits no caso do chão um último bloco provavelmente não vai ter o tamanho total então então fazemos pede adicionando obtinham servido de zero até completar o tamanho do bloco daí fazemos várias operações em várias ruas em vários rounds em cima de cada bloco e usamos esse resultado em cima do bloco seguinte o hash de cada bloco no caso do chá um é a composição de quatro subgrupos de 32 bits que é concatenado para gerar o resto intermediário até o último bloco que ele tinha
daí vamos bloco seguinte que tem o nosso valor adulterados e entender tudo que a função de hash precisava processar o bloco seguinte é o resto dos blocos anteriores ou seja sem saber o texto original passa lá pra função se soubermos o hash sabemos como processar novos blocos seguintes só adicionando o ped de zero antes do nosso valor malicioso para gerar o tal mec o resto com o chão o servidor concatenam certo segredo com o nome do arquivo faz o pad até o tamanho dos 30 é divisível dos 160 e da aplikando shaun bloco em cima
do outro sem saber o segredo se eu souber só o tamanho no segredo eu posso fazer o ped de zeros manualmente a partir do nome do arquivo que eu fiz upload e iniciar um novo foco com o nome do arquivo que eu realmente quero e eu vou conseguir gerar um novo mac mesmo sem saber o segredo porque o hash que eu já tenho é tudo que a função precisa processar o próximo bloco é meio complicado de visualizar mas imagina que sabendo só rech que este mac do arquivo original eu posso configurar o estado da função
do chão pra continuar a partir desse ponto como se ainda tivesse mais um bloco para terminar de computar que é o bloco malicioso que o kt no final o problema é que o resto é gerado pela md5 o chão me dá todas as informações que eu preciso para continuar a fazer rodar para novos blocos e gerar reches válidos se não entenderam revejam esse trecho ou acreditem que só de saber o hash eu posso adicionar novos blocos e gerar um novo rech válido como se a mensagem original tivesse esse bloco adicional desde o começo mas tem
um porém justamente para evitar essas coisas você concatena um segredo no começo da mensagem original no caso o nome do arquivo mesmo que eu acredite que esse procedimento funcione como eu vou saber o tamanho do segredo que é importante para saber quantos zeros eu preciso colocar de pede e é simples digamos que a aplicação que eu tô tentando aqui é baseado em um projeto open source tipo o wordpress o magento da vida basta ir lá no nite rami e ver que tamanho de segredo está sendo usado no código fonte e testar de novo eu não
preciso saber o segredo só o tamanho da estrela do segredo é por isso que existe em ti mec que talvez você já tenha esbarrado em algum tutorial para ajudar a evitar ataques de colisão e ataca de extensão de comprimento como expliquei acima em vez de só aplicar o hash em cima do segredo mais a mensagem depois de fazer esse rech você aplica a função de hash de novo concatenando o segredo com esse racha ou seja podemos a função de haxixe duas vezes uma em cima da outra concatenando segredo nas duas vezes isso é um et
mec ou rech base de mestre de authentication conde você usa isso como o que garante que o conteúdo original da mensagem não foi adulterado algoritmos mais novos com o xadrez não precisa fazer esse procedimento eles sozinho já é tipo um leite mec estão vendo como as coisas não são tão simples quanto vocês pensam todo mundo pensa que a basta concatenar um solte o segredo no stream antes de aplicar o hash e já vai ser magicamente seguro por isso eu repito que vocês não devem subestimar segurança e fica tentando fazer soluções de criptografia na mão o
que determina a força de um algoritmo não é só o tamanho da chave é como você usa um algoritmo e falando em subestimá ataca de extensão de comprimento comprometem reches usados como mac ou seja com métodos de verificação e autenticação como um exemplo de download de arquivos mas e rachas usados prove obfuscated in a como no caso da tabela de senhas roubado um procedimento padrão é receber a senha de usuário no cadastro e nunca guardassem aberta e nem crepitar recapitulando porque se assim de encriptação for roubado você consegue abrir cem por cento de todas as
senhas da base você tem um ponto único de falha muito perigoso por isso a próxima idéia é que muita gente teve foi fazer rech das senhas antes de gravar só esse rech no banco daí quando o usuário fazer login você faz o resto da seca ele digitou e compara com o resto do banco e se bater sabemos com certeza que é a senha certa parece promissor não parece mas só aguardar se o resto da senha ainda é muito fraco a maioria dos usuários usa como sem palavras fáceis de lembrar incluindo coisas toscas como 12345678 oeste
1 2 3 ou dados que estão abertos no seu cadastro como data de aniversário ou algo parecido vi a força bruta testando todo strong possível você levaria anos para encontrar uma única sem mais hackers não fazem força bruta e se você pré calcular se o hash de todas as palavras mais usadas de um dicionário agora você sai comparando o resto da tabela de senhas roubadas com a tabela de resto do dicionário uma base de dados grande com uma rede social com milhões de pessoas você com certeza e achar centenas ou milhares de senhas só dessa
forma ataques de dicionário o ataque com reembolso tables usam chapéus pré computados de régis lembrando que é a habilidade de colisões um algoritmo de haxixe e tecnicamente pequena mas não é zero duas senhas diferentes podem acabar colidindo no mesmo rech lembrou do exemplo dos livros estantes mesmo usando algoritmos que não têm as fraquezas de colisão do md5 chão como chá 2 ainda assim sempre existe o risco do paradoxo do aniversário já ouviram falar vale a pena contar isso se você nunca ouviu antes porque novamente o que chamamos de senso comum normalmente falha perto da estatística
imagine uma sala de aula qual é a chance de duas pessoas fazem aniversário no mesmo dia você podia pensar que seria perto de zero afinal uma sala de aula tem só 30 alunos e tem o que 365 dias no ano porém mais freqüentes do que você pensa para calcular as simples eu vou deixar o link nas descrições abaixo mas pensa assim em vez de tentar calcular chance de duas pessoas terem o mesmo adversário é mais fácil calcular o primeiro a probabilidade ninguém da sala tem o mesmo aniversário então a primeira pessoa pode fazer aniversário em
qualquer dia do ano seria 365 dividir presas e três de cinco é um a segunda pessoa só pode cair em 364 dos dias restantes / 365 a terceira pessoa só pode cair em 363 / 13 65 e assim por diante multiplicamos todas as possibilidades por 30 alunos agora fazemos um - a probabilidade para ter a probabilidade de duas pessoas terem o mesmo adversário sabe qual é o resultado de uma sala de aula de 30 pessoas a probabilidade é de 1 70 por cento támbém hoje de 0 colisões são estatisticamente mais freqüentes do que gostaríamos é
um fato da matemática e esse é um dos perigos com algoritmos de hash o fato que colisões são probabilisticamente possíveis eu levanto esse fato porque muito programador usa rech de algoritmos puxado e 56 achando que eles sempre vão ser únicos e por isso poderiam ser usados até como identificadores únicos mas isso está errado por acaso a distribuição estatística de um mestre de daibes se comporta parecido com o gerador de números pseudo aleatórios mas eventualmente haverá colisões com acabei de explicar por isso que existe outra coisa que se você precisa de um - únicos que são
o universo eo nic a identificá las o wii wii de ou a implementação da microsoft que são os globo e unicamente fire hoje wide por acaso eles são também número de 128 bits que o mesmo comprimento da saída do md5 representados com hexadecimais de 32 caracteres por isso a cara de white é meio parecido com a saída de md5 eo ipad também tem chance de ter colisões mas eles são desenhados para essa probabilidade se realmente quase zero quando acontecem já aconteceu algumas vezes é considerado um bug na implementação aliás falando em extremis parecidos também não
confundir com o novo padrão ipv6 que também o endereço de 128 bits e adivinhe representados com 32 caracteres hexadecimais portanto para quem nunca viu nada disso o endereço ipv6 o identificador e heai de hoje wide e um hash md5 tem mais ou menos a mesma cara sendo todos os números de 128 bits representados com 32 caracteres hexadecimais mas eles são gerados de forma diferente e tem usos completamente diferentes e com isso eu vou terminar por hoje no cliffhanger exatamente nesse ponto estamos na metade do assunto eo resto já escrevi mas agora é uma boa hora
para rever o que eu expliquei peguem suas anotações façam mais pesquisa nos pontos que mais se interessaram e estudem bastante porque o próximo episódio vai ser tão denso quanto esse eu não vou nem perguntar se vocês ficaram com dúvidas porque até ainda têm muitas dúvidas em muitas coisas mas não deixa de comentar baixo se curtir o vídeo mantém o joinha compartilhe com seus amigos e não deixem de assinar o canal e clicar no sininho para não perder a parte 2 a gente se vê semana que vem até mais