The New Alison App has just launched Download Now
We'll email you at these times to remind you to study
You can set up to 7 reminders per week
We'll email you at these times to remind you to study
Monday
Reminder set
7am
Tuesday
Reminder set
7am
Wednesday
Reminder set
7am
Thursday
Reminder set
7am
Friday
Reminder set
7am
Saturday
Reminder set
7am
Sunday
Reminder set
7am
funções criptográficas de hash são basicamente blocos de construção fundamentais
que são utilizados em muitos algoritmos e protocolos criptográficos
nós temos uma série de aplicações muito importantes
no contexto da segurança da informação como um todo
agora, alguns dos algoritmos mais comuns nesta categoria, que são conhecidos como funções hash criptográficas, incluem
coisas como MD5, & também
tem alguns predecessores como o MD4 & outros
assim como os algoritmos como
como SHA-256, e na verdade SHA-256 é
precedido por outros algoritmos como SHA-1 e assim por diante
e também há algorítmos que talvez você
ouvido falar, talvez eles sejam um pouco menos conhecidos, mas coisas como RIPEMD e BLAKE, e Skein, e outros
agora funções criptográficas de hash são basicamente
usado como blocos de construção críticos em muitos aplicativos
e realmente, o primeiro aplicativo motivador, o primeiro
aplicação histórica desse tipo de funções hash, estava no contexto de
era conhecida como assinatura digital. E a assinatura digital é usada em tantas coisas diferentes.
aplicativos criptográficos como
a pedra angular de muitos protocolos de e-commerce
eles estão acostumados a fazer coisas como geração de bitcoin e assim por diante
as funções de hash criptográfico também são usadas em coisas como protocolos de autenticação de mensagem
na segurança de geração e senha de número pseudo aleatório
até mesmo encriptação em algum grau
e na verdade
além do seu uso em assinaturas digitais
essas funções hash também são usadas em outros lugares do protocolo Bitcoin também
1º de tudo, deixe-me falar sobre o que é uma função hash criptográfica, e é claro
como a implica, a primeira coisa é, é uma função hash
e por função de hash, eu basicamente digo que ele vai
tomar entrada. É uma função matemática, uma transformação, se você quiser.
que utiliza uma entrada específica, e chamamos essas entradas " mensagens "
e a mensagem pode ser de comprimento arbitrário
e a função hash basicamente se aplica a um matemático
transformação, talvez um conjunto de transformações matemáticas para esta entrada
para produzir uma única saída. Nós tipicamente chamamos isso de uma digest, embora
Às vezes, você verá a saída referida como uma tag,
ou como um hash, ou
como uma impressão digital, mas a digest é uma das mais
norma comum & na verdade MD5
que foi um dos
uma das funções hash anteriores representa " Message Digest 5 "
e MD4 é " Message Digest 4 " & assim por diante,
Agora, a mensagem, tal como eu mencionei brevemente, pode ser de tamanho arbitrário, elas podem ser
o tempo que você quiser, ou o mais curto que quiser
mas a saída, a
o tamanho da digest / tag, será fixado em comprimento, por exemplo,
no contexto de uma função hash como
digamos que SHA-256, a digest será exatamente
os 256 bits de comprimento
então ele vai ter uma saída de comprimento fixo
mas uma entrada de comprimento arbitrário
e a outra coisa que eu quero apontar
essas funções criptográficas de hash, é que a função é uma função determinística, e por isso eu quero dizer que o
a saída sempre será a mesma para uma determinada entrada. Então, se você tem
uma determinada entrada, você verá a mesma saída exata. Você não tem uma situação na qual uma determinada entrada terá
duas saídas possíveis possíveis. Isso vai ser consistente.
Agora, tradicional
as funções hash tradicionais têm sido usadas na ciência da computação
por um bom tempo, e eles são usados em muitas
aplicativos de computação. Por exemplo, você pode ter ouvido falar de algo como uma função hash usada para formar uma hashtable
mas o tipo de hash funções que são usadas em hashtables
e eu quero enfatizar isso,
eles não são necessariamente os mesmos que as funções hash criptográficas
O qualificador criptográfico aqui é muito, muito importante. E geralmente,
significa / implica que: essa função hash
tem que ter um certo conjunto de
objetivos críticos de design e talvez alguns
propriedades específicas em mente
que o tornam adequado para uso
em aplicativos que usam áreas de aplicativos criptográficas / criptográficas, em que
talvez segurança / privacidade
ou confidencialidade / autenticação é uma preocupação séria
primeiro e acima de tudo ao descrever a propriedade de alguém é isso
e talvez isto quase seja sem dizer
uma das primeiras propriedades que você deseja em uma função hash criptográfica é que ela deve ser
computacionalmente
computacionalmente eficiente. Com isso quero dizer que não deve levar muito tempo
o computar a saída de uma determinada entrada. Se você
Se você receber uma mensagem & você deseja aplicar este conjunto de transformações a essa mensagem para obter uma compilação
esse conjunto de transformações não deve levar muito tempo para ser implementado. Em um computador deve ser muito rápido / relativamente rápido
e é quase sem dizer, mas eu acho que é importante enfatizar e apontar, porque eu já vi
as pessoas vem com funções de hash grosseiramente ineficientes às vezes e essas não seriam consideradas
adequado no contexto do típico
funções de hash criptográfico que são usadas para aplicativos criptográficos.
e a segunda propriedade que você normalmente precisa, especialmente no contexto de assinatura digital
é que você quer que seja o caso que
é difícil localizar 2 entradas que realmente mapeiam para a mesma entrada. Quero dizer 2 entradas distintas
cujo trecho correspondente é idêntico
e essa propriedade geralmente é referida como
colisão
resistência de colisão
Isso significa que é difícil achar um par de entradas colidindo
Em outras palavras, se nós temos 2 entradas, digamos que você tenha alguma mensagem M1 & M2
a sua produção sob a aplicação da função hash
não deve ser o mesmo. Você nunca terá o mesmo.
você não tem o caso de que a produção da M1 & M2
sob uma aplicação da função hash é a mesma. Nunca deveria ser a mesma coisa. Sempre deve ser diferente.
Agora, eu deveria dar um passo atrás e apontar para isso.
É claro, na prática
dado que as mensagens podem ser de tamanho arbitrário, e
dado que a saída é um tamanho fixo
não é matematicamente possível garantir que o
a saída será sempre diferente para 2 mensagens distintas
Mas o que você normalmente quer não é que a saída seja necessariamente diferente, mas que é difícil de encontrar
2 mensagens distintas que produzem a mesma saída
Nós sabemos que eles existem, pela virtude do fato de que as mensagens podem ser hash em apenas um finito
número pequeno (ou relativamente um número pequeno em comparação com o número de mensagens)
um pequeno número de possíveis valores de digest
mas para além disso
Deve ser difícil, deve levar um longo tempo, e por muito tempo eu quero dizer
um tempo astronómico para localizar 2 mensagens distintas que resultaria na mesma saída
sob a aplicação da função hash
Agora, a terceira coisa que quero salientar, é que em muitos casos
você pode querer também, no contexto de funções hash, a função hash para ser capaz de ocultar
informações sobre as entradas. Em outra palavra,
dado a saída
deve ser difícil de se inclinar qualquer coisa útil sobre a entrada
qualquer coisa, qualquer detalhe relevante e eu não quero dizer a entrada inteira
mas talvez algo tão simples quanto " tenha sido a entrada de um número par / ímpar "?
Esse deve ser o tipo de coisa que deve ser difícil de se infestar quando você vê a saída
mesmo algo tão simples como o
a uniformeza ou a estranheza da contribuição
Agora, a 4ª propriedade Eu quero apontar para fora
é que você tipicamente deseja que a saída seja
bem distribuído. Em outras palavras, o
a saída deve ser
deve parecer aleatório. Em outras palavras, deveria parecer que um conjunto de filhas de moedas ocorreu, não em um
um modo previsível
em que, a saída foi criada
E realmente, o que isso significa é que (e você pode pensar sobre isso, talvez mais conceitualmente, como) é quase como se você girasse um monte de moedas para obter a saída. Deve parecer aleatório.
Então, o que você pode realmente pensar em funções hash criptográficas como, talvez seja talvez o equivalente matemático / analógico
de uma? ??. Portanto, ele pode tomar entradas e aplicar estas
estas transformações matemáticas para eles
tal que a saída pareça
para todos os propósitos / fins, completamente aleatórios e não relacionados com a entrada original
Agora, eu quero fazer algumas observações rápidas sobre isso.
propriedades específicas. E antes de tudo, eles estão interligados.
Por exemplo, se você tiver
uma situação em que as saídas
digamos que parece não ter nenhum relacionamento com a entrada
e a saída também
parece aleatório, então isso vai de fato te dar
em um grande grau, muitas das propriedades da resistência à colisão
porque apenas o fato de que você não pode prever a produção e o fato de que ele se esconde? informações
significa que vai ser difícil de encontrar
duas entradas que são distintas que são mapeadas para a mesma saída
E assim, às vezes, você tem uma propriedade em troca dos outros,
Agora a segunda coisa que eu quero salientar, é que, tipicamente estas propriedades
Na prática, ou talvez até dentro? matemática
são coisas que você espera
Mas você não pode sempre garantir que eles sempre vão se segurar. Talvez seja inteiramente possível que
você pode desenhar uma função hash que você acha que é completamente resistente à colisão
mas alguém pode vir junto, um ano a partir de agora, e vir com uma maneira mais inteligente de refinar
uma colisão. Talvez eles achem um atalho inteligente que não envolva
fazendo uma busca pela força bruta de qualquer tipo
E acontece que os criptógrafos
Para melhor ou pior, atualmente não tem
quaisquer técnicas matemáticas, elas não desenvolveram técnicas para serem capazes de trabalhar em torno de
algumas destas limitações
E então nós frequentemente fazemos isso, em valor de face
que esses esquemas são seguros, baseado em quanto tempo eles estão por aí.
Agora eu também quero apontar, a última coisa que eu quero apontar, é que estes? que eu dei não é para ser matematicamente rigorosa.
por qualquer extensão da imaginação. Não há.
formas mais precisas de descrever
estas propriedades subjacentes
Mas minha esperança é que
Este vídeo te dá, talvez um pouco de sabor.
para o que é necessário de uma função de hash criptográfica, sem ser entalado em alguns dos minutiae matemáticos e formalismo.
This is the name that will appear on your Certification
"Nós enviaremos as instruções para resetar a sua senha para o endereço associado. Por favor, digite o seu e-mail atual."