Loading

Module 1: Propriedades do Blockchain

Nota de Estudos
Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Então resistência da colisão, o que significa? Portanto, significa que se você tem x e y, e  
seu hash é o mesmo, então dizemos que x e y collides, significa que suas saídas são mesmas  
hash. Então agora a questão é que, se eu pegar um hash, posso encontrar dois x e y distintos, cujo  
hash é aquela string específica. Então eu levo um valor de hash. E eu te pergunto que me dê duas  
strings, que são diferentes, mas estão me dando a mesma saída de hash.  
E que dizer que encontrar uma colisão e uma boa função hash deve ter o  
propriedade de que não é viável encontrar tais x e y, que colidem através deste hash  
função. Então agora você diz por que isso é importante? Ele é importante para os seguintes  
razão. Assim, quando você faz o download de um software de código aberto, por exemplo, os originadores  
do software, portanto, quando você estiver baixando pela internet, é possível que o  
bits que você está baixando pode ficar corrompido.  
Então, portanto, todas essas coisas vêm com um hash. Assim, o arquivo inteiro é amassado e ele é  
enviado com o arquivo para você. E o seu computador então verifica aplicando o hash  
função em todo o binário e verificar o hash correspondido, certo. Se a hash combinar,  
então sabe que o arquivo nunca foi modificado ou corrompido na maneira de fazer o download para  
na sua máquina. Por isso, portanto, o hash aqui funciona como algum tipo de assinatura do  
arquivo.  
Então, se hash não é corrupto e se o binário não é corrupto, então binário ’ s hash deve  
combine com o hash que veio com o arquivo. Agora suponha que um atacante cibernético quer que você  
baixe um arquivo malicioso e de alguma forma faz você acreditar que este é o arquivo real. Então  
então você faz o download desse arquivo. E então se você souber o hash do arquivo original, então  
seu computador vai dizer que ok, então eu o arquivo que eu baixei, eu amassei.  
E seu hash não combina porque eu tenho o hash do arquivo original em outro lugar.  
E ele não combina. Então, é assim que usamos o hash para detectar a integridade de um arquivo.  
Agora, suponhamos que eu sou um invasor e sei como encontrar colisão na função hash  
que está sendo usado. Então o que eu posso fazer é eu posso adequar adequadamente o arquivo, colocar meu  
conteúdo de malware no arquivo e convenientemente modifica.  
Assim, que o hash do arquivo, mesmo que o arquivo tenha mudado, o hash do arquivo  
permanece igual ao arquivo original, o que significa que eu encontrei uma colisão. E se eu encontrar  
uma colisão, então hash não é mais um bom método para verificar a integridade do arquivo. Então  
portanto, a função hash deve ser tal que não deve ser fácil encontrar colisão  
e isso é chamado de resistência de colisão. Agora a colisão não é uma impossibilidade. Nós  
disse que não é viável.  
(Consulte O Tempo De Deslizamento: 47 :38)  
E a diferença entre viabilidade e impossibilidade é que a viabilidade significa que  
não é fácil computar em um jejum. Impossibilidade teria significado que ela não  
mesmo existem, tais colisões não existem. E isso não pode ser o caso. Porque, como  
você pode entender, eu disse que eu tenho cadeias de comprimento arbitrárias aqui, que são então  
mapeado para uma cadeia de comprimento fixo. Digamos que isto é de 10 para as 6 cadeias de comprimento, e estas  
são 256 bit strings.  
Então eu tenho todas as possibilidades aqui é 2 para o 10 para o 6 e aqui eu tenho 2 para o  
256, que é muito menor que 10 para os 6. Portanto, este número é muito maior do que este  
número. Portanto, se a função hash estiver mapeando todas as strings aqui duas strings aqui então  
obviamente que haverá colisões. Mas o ponto é, portanto, não é como se as colisões o  
não existir. Por isso, não dizemos que uma função hash seja de colisão livre.  
Nós dizemos que uma função hash é resistente à colisão, o que significa que as pessoas não devem ser  
capaz de encontrar rapidamente uma colisão. Sendo assim, isso é resistência de colisão. Funções de hash de exemplo  
em que as colisões foram encontradas são MD-5, SHA-1, SHA é a função hash segura,  
versão 1. Isso tem sido agora abundante como funções hash adequadas porque as pessoas  
descobriu que colisões para essas funções podem ser encontradas.  
Então, até que se descobriu que eles têm colisões facilmente em um viável, então eles foram usados  
bastante um pouco. Mas como sabemos agora que eles têm colisões, e não é difícil  
computar a colisão, portanto, portanto, eles não estão sendo usados que comumente.  
(Consulte O Tempo De Deslizamento: 49 :21)  
Assim, colisão, é claro que pode ser encontrada por brute forçando a colisão. Então se você tem um  
Uma sequência de 130 bit mapeada para um digamos qualquer que seja o número, digamos um hash de 64 bit, então  
é preciso tentar 2 para as 130 entradas possíveis e aplicar o hash em cada um deles. E você  
encontrará colisões porque colisões existem. Assim você pode computar que você sabe  
99,8% com chance você pode computar essas probabilidades com combinatória simples  
que as colisões serão encontradas.  
O ponto é que suponhamos para cada entrada e fazer hash deles e assim em tomadas let  
nós dizemos cem milissegundo, então estamos falando de 2 para o 130 vezes 0,1 second,  
que eu computei aproximadamente, vai se tornar 4 vezes 10 para os 30 anos. Isso é um  
enorme número de anos que vai levar para tentar isso, certo. Portanto, portanto, ele deve não ser  
possível para brute forçar a colisão.  
A menos que você encontre alguma fraqueza na construção de funções hash em si, ela não deve  
ser possível encontrar a colisão por apenas o método de força bruta.  
(Consulte O Tempo De Deslizamento: 50 :37)  
Então há funções de hash para a qual algoritmos de localização de colisão eficientes existem. Para  
exemplo, o SHA-1 e aqui é um link que você pode ir para ver o que como os pesquisadores  
verificou que a colisão SHA-1 é de 256 SHA-256, SHA3 etc. são seguras. Isso não significa  
são resistentes à colisão ou resistentes de colisão. Mas só diz que até agora não temos  
encontrou uma fraqueza nessas funções que tornarão a colisão fácil de encontrar. Ok, então  
agora vamos olhar para alguns aplicativos de função hash.  
(Consulte O Tempo De Deslizamento: 51 :19)  
Então hash pode como eu já me aludir, hash pode ser usado como um digest de alguns muito grandes  
mensagem um arquivo. E a razão é que já que as colisões não são comuns, por isso vamos  
suponha que se hashes combinar, então eles são eles devem ser os mesmos. Então, quando eu conseguir um arquivo  
baixado, se o hash combinar então eu sei que o arquivo está bem. E isso é baseado no  
suposição de que ninguém encontrou uma colisão e substituiu o arquivo por uma colisão  
arquivo.  
Então, ele é frequentemente usado para reconhecer um arquivo que vimos antes. Então, quando temos  
antivírus, o antivírus tenta descobrir se esse vírus já foi visto antes. Portanto, se  
este vírus se manteve inalterado, então por computar o hash, eles figuram fora se isso  
vírus já esteve em seu banco de dados. E isso é muito útil porque hash é  
geralmente pequenos, como 256 bits ou 512 bits, portanto, é fácil de usar.  
(Consulte O Tempo De Deslizamento: 52 :16)  
A segunda propriedade é claro, se escondendo. Que é dado o hash, descobrando o   original  
mensagem ou arquivo original é inviável. Novamente, não é impossível, mas é inviável. Se  
há uma função hash para a qual não é inviável, é fácil de encontrar, então é um bad  
função hash. Por exemplo, suponha que você tenha uma hash funções que mapeia as coisas para  
apenas finito número de possibilidades, certo.  
Então, nesse caso, você pode criar uma tabela para cada x do seu domínio a partir do qual você  
estão levando insumos, e computar essas possibilidades e ter uma tabela. Então, quando você ver o  
hash, é preciso apenas inverter a consulta da tabela e dizer que estas são as entradas possíveis para  
que ele está mapeando. Então, a menos que esse número seja pequeno isso não é possível. Se este número  
é muito grande como 2 para os 256 ou 2 para o 512 então é difícil e então aqueles hash  
funções são workable.  
(Consulte O Tempo De Deslizamento: 53 :21)  
Assim, a propriedade oculta é mais formalmente definida da seguinte forma. Então, se você tem um   aleatório  
número escolhido a partir de uma distribuição com entropia média alta, em seguida, dado o  
concatenação de r com x, é inviável encontrar x. Então o que é alta média entropia  
significa? Se você quer saber em um termos muito amplos, significa que a distribuição é  
uniforme bonito.  
Porque se a distribuição é muito defasada, então os números que você gera podem não ser,  
certos números são mais prováveis e certos números são menos propensos a serem escolhidos quando  
você escolhe o número aleatório. Por isso, a distribuição deve ser mais ou menos uniforme ou  
espalhou-se para que o r não possa ser guado com alta probabilidade. E então se você levar  
este r, escolha este r e misture-o com x e compute o hash.  
Então encontrar x seria muito difícil. E isso é o que realmente usamos no que  
chamar quebra-cabeças de hash. E se você quiser saber mais sobre esta propriedade formal da média  
entropia e por que eles tocam uma parte significativa na criptografia, você pode ler vários  
outras fontes. Aqui eu dei uma possível fonte rápida.  
(Consulte O Tempo De Deslizamento: 54 :42)  
Assim, a terceira propriedade que queremos enfatizar é a simpatia de quebra-cabeça. Então o que é  
quebra-cabeça simpatia? O que significa que dada uma saída, direita, de uma função hash, e  
dado que a parte da entrada que conhecemos e ela é um número aleatório, então encontrando o  
descansar é muito difícil ou inviável. E essa é toda a ideia de uma simpatia de quebra-cabeça.  
Então, se eu souber o hash, e se eu souber parte da entrada, e então eu concateno-o com  
alguns x e computar o hash, e eu fico y então dado y e dado k, encontrar x deve  
ser inviável. E vamos ver como isso é usado muito efetivamente em criptomoedas  
mineração. Basicamente, é um quebra-cabeça que deu y dado k me dá x, certo. E a única  
maneira como deve ser bruta forçando. Não deve haver outra forma de atalho explorando  
a fraqueza da função hash, ou fraqueza da distribuição do k.  
(Consulte O Tempo De Deslizamento: 55 :56)  
Em um formulário de quebra-cabeça podemos dizer que dado um ID de quebra-cabeça e um conjunto de destino y tente encontrar um  
solução x tal que hash de ID seguido por x pertence a este y, certo? Antes estávamos  
falando sobre esse único y dado a você e k é dado a você, você tem que encontrar x. Agora  
podemos também torná-lo um pouco mais fácil dizendo que ele não é um y fixo, mas eu vou dar  
você um conjunto de y ’ s.  
E você me dá um x, tal que hash desse ID concatenado com x vai me dar um  
número nesse conjunto y. E a ideia é que se a função hash for quebra-cabeça amigável, isso  
significa que não há atalho para encontrar este x, exceto forçar brutas, exceto tentar todos  
possível x ’ s. Eu sei id eu conheço o y. E aí eu tento 0000001 e todas essas coisas. E  
então em algum momento, atingiu um número como hash que pertenirá a y.  
Mas te levará um tempo muito longo para descobrir porque você vai fazer brutaçao  
força.  
(Consulte O Tempo De Deslizamento: 57 :10)  
Então, vamos olhar para uma função hash que é realmente usada no blockchain do Bitcoin bem um  
bit. Trata-se de um SHA-256, função hash segura 256. Trata-se de um padrão NIST. Então o que você  
fazer? Suponhamos que você tenha uma mensagem muito longa e queira criar o digest. Você  
basicamente usa um tipo de semente deste lado, e então você envia, então C é uma função que  
basicamente faz muito deslocamento de bits, fatiamento, e permutação e assim por diante.  
Então você divide a mensagem em chunks de 512 bits. E também no final, seu   original  
mensagem pode não ser um múltiplo de 512 bits, então você tem que fazer algum preenchimento no final  
para fazer todos os chunks 512 bits. E então você aplica os primeiros 512 bits para o primeiro  
function block com esta semente, e então você faz a saída de que também serão 256 bits.  
Então, este é 256, isto é 256 e assim por diante. E isto, isto é 512.  
Eles saem como outros 256 bits e você aplica isso em uma cadeia até que todos os 512 bit  
chunks incluindo o com o preenchimento de preenchimento terminou. E então o que você sai é  
um número 256 bit e que é o seu hash. E há um teorema que mostra que se cada  
destes blocos de função são colisão livre ou resistente de colisão, então a   inteira  
composição desta funções também é resistente à colisão.  
Então, essa é a ideia de uma função hash SHA-256. O que você realmente não precisa  
entender SHA-256 em detalhes, mas o que você precisa lembrar é que quando você tem  
uma mensagem muito grande e você quer aplicar o SHA-256, ele basicamente chope a mensagem  
em blocos de 512 bits, e use algum preenchimento para obter os todos os chunks para serem 512 bits.  
E então ele envia por meio desta rodadas.  
E cada um deles realmente vai ser suas essas funções, o que faz pouco embaralhamento  
e todos. Por isso, é fácil implementar em hardware como a criptografia simétrica, e  
portanto, é muito rápido computar. Ele na verdade pode ser computado muito rápido e com  
suporte de hardware, ele pode ser feito ainda mais rápido. Então, se você está fazendo em software, então você  
têm que fazer muitas operações de bits e assim em que não é tão rápido.  
Mas se você fizer isso em hardware, então ele é realmente rápido. Então você tem muito criptográfico  
hardware implementado que são quais podem fornecer o rendimento muito rápido em  
computação SHA-256 hash. E veremos que a necessidade deste suporte de hardware  
cria essa enorme fome de energia elétrica e para as máquinas de mineração de bitcoins  
porque eles usam todas essas coisas em hardware especializado.