Conteúdo principal
Mercado financeiro e de capitais
Curso: Mercado financeiro e de capitais > Unidade 8
Lição 8: Bitcoin- Bitcoin: O que é?
- Bitcoin: visão geral
- Bitcoin: Funções de hash criptográfico
- Bitcoin: Assinaturas digitais
- Bitcoin: Prova de trabalho
- Bitcoin: Cadeias de blocos de transação
- Bitcoin: O fornecimento de dinheiro
- Bitcoin: A segurança das cadeias do bloco de transação
© 2023 Khan AcademyTermos de usoPolítica de privacidadeAviso de cookies
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.
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]