If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Bitcoin: Assinaturas digitais

Uma explicação de alto nível dos esquemas de assinatura digital, que são uma base fundamental em muitos protocolos de criptografia. Versão original criada por Zulfikar Ramzan.

Quer participar da conversa?

Nenhuma postagem por enquanto.
Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.

Transcrição de vídeo

Uma assinatura digital é, basicamente, um mecanismo matemático que, essencialmente, combina uma sequencia de números pública com uma dada mensagem digital. Você pode pensar na assinatura digital, em vários aspectos, como o análogo eletrônico de uma assinatura física. Numa assinatura física, você afixa uma sequencia de caracteres, que representa seu nome/identidade, a um documento. E este processo efetivamente liga sua identidade ao documento. E mais, ao formular os caracteres de seu nome, e talvez, alguma forma peculiar ou única para você espera-se que ninguém seja capaz de forjar seu nome naquele documento. Agora, em um método de assinatura digital, você pode conseguir essas propriedades matematicamente. Agora, nos métodos de assinatura digital mais conhecidos, inclui-se o método RSA que quer dizer método "Rivest, Shamir, Adleman". Há também o método DSS, que é o <i>Digital Signature Standard</i> na verdade. E de fato, se você fosse usar um método como RSA / DSS, eu penso que é muito mais difícil forjar um destes métodos do que forjar uma assinatura manual. Então, neste vídeo, tentarei descrever de forma geral a mecânica de alto nível de um método de assinatura digital, mas não irei descrever os detalhes matemáticas subjacentes de algum método específico como RSA / DSS pelo menos não neste vídeo. O funcionamento de um método de assinatura digital -- -- digamos, há um usuário que chamaremos de Alice. Digamos que Alice queira assinar digitalmente um documento, no método, Alice irá primeiro gerar duas chaves, e estas duas chaves são conhecidas como chave de assinatura, que é uma chave privada. Usarei o vermelho para denotar isto. Abreviaremos a chave assinante por SK. Então, Alice irá gerar uma chave separada, conhecida como chave de verificação Agora, o real processo de gerar estas chaves pode acontecer concorrentemente. Alice irá gerar estas duas chaves ao mesmo tempo, e elas terão relação matemática. Mas o interessante é que você quer que a chave de verificação seja pública e a chave de assinatura seja privada. Mas em um método de assinatura digital, pode ser difícil inventar uma chave de verificação, ou então, deveria ser difícil conseguir a chave de assinatura também se você só vê a chave de verificação. Agora, vejamos o que uma assinatura digital em um mensagem ocasiona. Basicamente, se você tem uma mensagem -- vamos chama-la de mensagem M e você quer assinar digitalmente essa mensagem. O que basicamente você vai fazer, é aplicar uma transformação matemática. Alice aplicará uma transformação matemática à mensagem M e sua chave assinante K. E o resultado dessa transformação -- a saída dessa transformação será uma sequencia de números especial que chamamos assinatura. A assinatura na mensagem M. O interessante aqui é que essa assinatura é basicamente, uma que é derivada de uma combinação da mensagem M junto com a chave de assinatura, a chave privada de Alice, e isto irá, efetivamente, produzir uma sequencia de números relativamente curta como saída. E particularmente, métodos de assinatura digital são projetados para que só a pessoa que possui a chave de assinatura, essa chave privada, seja capaz de gerar este tipo de saída, este tipo de assinatura SM na mensagem M. A verificação é meio que análoga ao processo de assinatura, mas envolve a chave de verificação pública. Assim, na verificação, você tem três entradas diferentes. A primeira será a mensagem da qual você quer verificar a assinatura. Você também precisa de outra mensagem, que tem que obter como entrada, a assinatura naquela mensagem, como é SM, e finalmente, a ultima entrada para o processo de verificação será a chave pública, a chave pública de verificação que pertence à Alice. Estas três entradas são fornecidas e há uma transformação matemática com elas e basicamente, o que essa transformação tenta checar é se a assinatura que você vê correspondente à mensagem M é uma que teria sido produzida pela chave assinante privada de Alice. Esta chave privada em questão, corresponde à chave pública de verificação de Alice. O que acho que é realmente notável é que você pode de fato, fazer esse processo, só com a chave de verificação. Você não necessita da chave privada para validar uma assinatura digital. Você nem mesmo precisa dela indiretamente. Você pode fazer tudo, pode verificar tudo, conhecendo somente a verificação pública. E o processo de verificação pública, gera, basicamente, um sim ou um não. Ele diz, devo aceitar essa assinatura, ou devo rejeita-la? É um processo básico de validação. E como pode ver, o processo de assinatura irá efetivamente ligar esta chave de verificação pública, liga a chave de verificação pública a Alice. Recorda que Alice foi quem publicou esta chave de verificação, disse ao mundo todo: "Ei, esta é minha chave de verificação no sistema, eu só poderei assinar mensagens que serão consideradas válidas com relação a essa chave de verificação." E por a mensagem estar sendo ligada a esta chave pública, e você pensa na chave pública como uma espécie de identificador, talvez um identificador de Alice, então você pode pensar que assinatura digital é um processo que basicamente liga uma identidade a uma mensagem subjacente. E isso realmente nos dá, em sentido matemático, um análogo de uma assinatura tradicional feita à mão. Quero fazer duas observações, que acho relevantes. Primeiro, você perceberá que a transformação que produz a assinatura, esta transformação aqui que produz SM Esta transformação basicamente pega a mensagem, ela toma a mensagem como uma de suas entradas e isso significa é que a assinatura depende da mensagem. Se você mudar a mensagem, obterá uma assinatura diferente. E neste sentido, uma assinatura digital é na verdade diferente de uma manual. Sua assinatura manual provavelmente não muda, fica mais ou menos a mesma, independente do que esteja assinando. Mas sua assinatura digital é muito sensível ao que está assinando. Ela varia a depender do que assina. Se assinar uma mensagem diferente, obterá uma assinatura diferente como saída. A segunda observação que quero fazer é: assinaturas digitais são frequentemente associadas com funções de embaralhamento criptográfico. Eu disse no outro vídeo sobre essas funções, mencionei naquele vídeo e vou reiterar aqui que as primeiras funções de embaralhamento foram projetadas especificamente com assinatura digital em mente, como aplicação principal Particularmente, o que acontece antes de você assinar uma mensagem qualquer, digamos que você tem uma mensagem enorme que quer assinar. Antes que você assine esta mensagem, você irá basicamente aplicar uma função criptográfica a essa mensagem, e obterá uma saída dessa função, a função criptográfica de embaralhamento, e obterá uma saída menor, o resumo da função de embaralhamento, e o que fará em um algoritmo de assinatura, é que, em vez de assinar a mensagem original, você primeiro embaralha ela, e então assina o embaralhado da mensagem. Você assinará o resumo resultante em vez de a mensagem original. E este paradigma de dois passos de fazer um embaralhamento, e depois assinar simplifica o processo de assinatura digital uma vez que você não está mais lidando com uma entrada de tamanho arbitrário, mas sim, com uma quantidade de tamanho fixo. Este paradigma de embaralhar e assinar é seguro, uma vez que é difícil achar duas mensagens que resultam na mesma saída sob a aplicação da função de embaralhamento. Em outras palavras, você não pode chegar com duas mensagens diferentes mas que a saída, quando a função de embaralhamento é aplicada a elas, seja identica. Em outras palavras, a função de embaralhamento, contanto que seja resistente à colisão, resultará em um método de assinatura digital seguro com o paradigma de embaralhar e assinar. Mas você pode pensar por um momento. Mas se você encontrar duas mensagens que são distintas, mas resultam na mesma saída sob uma aplicação da função de embaralhamento, que levaria a alguns problemas bizarros, por que a assinatura na primeira mensagem seria igual a assinatura na segunda mensagem. Em ambos os casos, você não assina a mensagem em si, e sim o embaralhado delas. Se eles são iguais, você terá a mesma assinatura em duas mensagens diferentes e isso poderia criar problemas como deixar mais fácil que uma mensagem seja forjada sob essa forma de assinatura digital. E isso você não quer. Você não quer que alguém possa fazer a assinatura em uma mensagem diferente da que você inicialmente queria realmente assinar. Isto é possível -- E só para deixar claro, é possível descrever assinaturas digitais com muito mais formalismo matemático, mas o que quero com este vídeo, é dar a você o gosto disso, sem ter que aprofundar nas nuances matemáticas. [Legendado por Laércio Junio]