Buscar

CERTIFICAÇÃO DIGITAL E BLOCKCHAIN

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 69 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CERTIFICAÇÃO DIGITAL 
E BLOCKCHAIN
W
B
A
04
71
_v
1.
0
2
José Eugênio de Mira
Londrina 
Editora e Distribuidora Educacional S.A. 
2020
CERTIFICAÇÃO DIGITAL E BLOCKCHAIN
1ª edição
3
2020
Editora e Distribuidora Educacional S.A.
Avenida Paris, 675 – Parque Residencial João Piza
CEP: 86041-100 — Londrina — PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
Presidente
Rodrigo Galindo
Vice-Presidente de Pós-Graduação e Educação Continuada
Paulo de Tarso Pires de Moraes
Conselho Acadêmico
Carlos Roberto Pagani Junior
Camila Braga de Oliveira Higa
Carolina Yaly
Giani Vendramel de Oliveira
Henrique Salustiano Silva
Juliana Caramigo Gennarini
Mariana Gerardi Mello
Nirse Ruscheinsky Breternitz
Priscila Pereira Silva
Tayra Carolina Nascimento Aleixo
Coordenador
Henrique Salustiano Silva
Revisor
Gustavo Molina Figueiredo
Editorial
Alessandra Cristina Fahl
Beatriz Meloni Montefusco
Gilvânia Honório dos Santos
Mariana de Campos Barroso
Paola Andressa Machado Leal
Dados Internacionais de Catalogação na Publicação (CIP)
_________________________________________________________________________________________ 
Mira, José Eugênio de
M671c Certificação digital e blockchain/ José Eugênio de Mira, – 
 Londrina: Editora e Distribuidora Educacional S.A., 2020.
 44 p.
 
 ISBN 978-65-5903-059-0
 
 1. Certificação. 2. Algoritmos. 3. Digital. I. Título. 
CDD 352.8 ____________________________________________________________________________________________
Raquel Torres – CRB 6/2786
© 2020 por Editora e Distribuidora Educacional S.A.
Todos os direitos reservados. Nenhuma parte desta publicação poderá ser 
reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, 
eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de 
sistema de armazenamento e transmissão de informação, sem prévia autorização, 
por escrito, da Editora e Distribuidora Educacional S.A.
4
SUMÁRIO
Criptografia simétrica e de chaves públicas _________________________ 05
Assinaturas e certificação digital ____________________________________ 23
Blockchain ___________________________________________________________ 39
Criptomoedas e contratos inteligentes ______________________________ 54
CERTIFICAÇÃO DIGITAL E BLOCKCHAIN
5
Criptografia simétrica e 
de chaves públicas
Autoria: José Eugênio de Mira
Leitura crítica: Gustavo Molina Figueiredo
Objetivos
• Compreender os conceitos básicos de criptografias 
relacionados ao uso de senhas e hash. 
• Entender o conceito geral de chave simétrica e chave 
pública. 
• Conhecer algoritmos criptográficos simples.
6
1. Criptografia de chave simétrica
Você já se perguntou como é possível que tantas informações estejam 
disponíveis, de forma segura, na Internet? Acesso a saldos bancários, 
transações comerciais, dados sigilosos de pessoas e empresas, tudo que 
está armazenado na Internet está, de certa forma, acessível para bilhões 
de pessoas. Como é possível, então, que esses dados estejam seguros?
O uso de senhas e de criptografia é o que permite o armazenamento 
seguro desses dados em servidores remotos. O que é, afinal, a 
criptografia e como funcionam as senhas? É o que veremos nesta 
unidade, além de conhecermos um pouco mais sobre as tecnologias por 
trás desses sistemas.
1.1 Um pouco de confusão
O aumento exponencial do uso da Internet exigiu a implantação de 
sistemas que permitissem o compartilhamento de informações de 
forma segura. Embora o conceito de criptografia não seja novo para a 
humanidade, foi com a Internet que se tornou amplamente difundida e 
utilizada. A função principal da criptografia é esconder uma informação 
que será enviada por um canal não seguro, de forma que somente as 
partes interessadas tenham acesso ao seu conteúdo.
Imagine que você deseja enviar para seu irmão, que mora em outro 
estado, um mapa do tesouro, que seu avô deixou enterrado em uma 
fazenda da família. Você confia em sua irmã, que vai até a fazenda 
procurar o tesouro, porém, como garantir que o carteiro, que levará a 
carta, não viole o envelope para descobrir o mapa? Entretanto, você não 
pode levar a carta pessoalmente, nem tem ninguém de sua confiança 
para levar. Qual a solução?
7
Figura 1 – O mapa do tesouro
Fonte: elaborada pelo autor.
Em vez de desenhar um mapa, você o converte em um texto explicativo, 
transformando uma imagem em um código escrito, como por exemplo:
Sete passos ao norte a partir do pilão arcado
Vinte passos ao Nordeste
Sete palmos de profundidade
Isso já resolveria, caso o mensageiro não fosse alfabetizado, porém, 
em qualquer outro caso, a pessoa saberia se tratar de coordenadas 
geográficas. Para resolver esse problema, podemos criptografar essas 
informações. A origem do termo é grega, e une as palavras Kryptós 
(escondido) e gráphein (escrita). Embora a maioria não conheça, 
necessariamente, detalhes de seu funcionamento, atualmente, a maioria 
das pessoas conhece o termo e seu significado: tornar informações 
confidenciais por meio de um processo matemático reversível. Trata-
se de um processo onde símbolos ou partes de uma informação são 
embaralhadas e substituídas, por meio de um sistema lógico, que 
permita sua posterior restauração. Para isso, utilizamos uma chave, 
8
um dado padrão, conhecido por ambas as partes, que permite a 
decodificação das informações. A primeira cifra criptográfica conhecida, 
a cifra de César, realizava o processo de embaralhamento por meio 
do deslocamento das letras dos textos pelo seu correspondente no 
alfabeto, por exemplo. Abaixo, a nomenclatura utilizada em criptografia.
Quadro 1 – Conceitos de criptografia
Nome Conceito
Texto claro. Mensagens ou dados originais.
Algoritmo criptográfico. Responsável por realizar as substituições e transformações no texto.
Chave secreta.
É a entrada para o algoritmo criptográfico, um valor que 
independe da mensagem original e do algoritmo, e deve ser 
conhecido por quem receberá a mensagem criptografada. 
Cada chave aplicada ao mesmo algoritmo deverá produzir 
uma mensagem diferente.
Texto cifrado. Essa é a mensagem embaralhada, produzida como saída.
Algoritmo de decriptografia. Aplicado ao texto embaralhado, e com a chave secreta certa, produz como saída a mensagem original.
Fonte: adaptado de Stalling (2008).
Nesse caso, utilizando nosso texto como entrada ou texto claro, 
poderíamos escolher uma chave secreta conhecida de ambos, como 
por exemplo, a idade do vovô rico quando veio ao Brasil, que seja 12 
anos. Interessante observar que mesmo que informação da chave 
esteja na mensagem, o mensageiro mal intencionado não terá acesso à 
informação, pois não deve, em tese, conhecer o avô do remetente e do 
destinatário. Aplicando como algoritmo de criptografia a cifra de César, 
obteríamos o seguinte texto cifrado:
9
Eqfq bmeea ma zadfq m bmdfud pa buxma mdompa 
Huzfq bmeeae ma Zadpqefq 
Eqfq bmxyae pq bdargzpupmpq
O texto já está bem confuso. Em criptografia, dois conceitos importantes 
são utilizados para compreensão do funcionamento de uma criptografia 
eficiente: confusão e difusão. O objetivo da confusão é tornar mais 
complexa a relação entre a chave e o texto, de forma a tornar difícil 
deduzir qualquer propriedade da chave a partir do conhecimento do 
texto, de acordo com Terada (2008). No nosso caso, a confusão está 
relacionada à força da chave, que não é tão grande. Afinal, o mensageiro 
poderia conhecer o avô do remetente e tentar decriptografar o texto 
a partir desse dado. Além disso, observe como a letra M se reproduz 
constantemente no texto. Um observador poderia notar isso e, a 
partir daí, deduzir que o M representa uma letra comum na Língua 
Portuguesa. Para evitar esse tipo de ataque, utiliza-se, na criptografia, o 
que chamamos de difusão, cujo objetivo é embaralhar ouespalhar os 
bits do texto legível para que a qualquer redundância seja eliminada do 
texto legível, de acordo com Terada (2008), , como no caso, a repetição 
de letras.
Nesse caso, a reversibilidade da mensagem para seu estado original 
está seriamente prejudicada, pois a quantidade de informação na 
mensagem resultante permite uma estimativa considerável acerca 
da informação original. Para definir esse fenômeno, o teórico Claude 
Shannon emprestou o termo entropia, da termodinâmica, que é uma 
medida do grau de irreversibilidade de um determinado sistema. Esse 
conceito denota que sistemas tendem, naturalmente, a desordem de 
suas partes, como, por exemplo, um sorvete com cobertura esquecido 
no banco do carro: ao derreter, ele irá se misturar a cobertura e com 
o próprio tecido do assento. Mesmo que se coloque o carro de novo 
dentro de uma câmara fria, o sorvete não volta ao estado natural. Nem 
as manchas de sorvete sumirão do assento. Os estudos de Shannon, 
sobre matemática aplicada à comunicação, teorizavam sobre os efeitos 
10
que ruídos de transmissão poderiam causar a informação transmitida, 
que poderia tornar-se inutilizável. Entretanto, a teoria acabou sendo 
aplicada justamente a favor da transmissão de dados, uma vez que, em 
transmissões criptografadas, uma alta entropia é desejável.
Assim, nossa criptografia apresenta baixa entropia, pois é facilmente 
reversível. Um dos maiores redutores de entropia é, sem dúvida, 
o significado de parte do texto. Partes comuns, que se repitam, ou 
seja, redundantes, podem levar a quebra do código, como é o caso 
da observação da letra M em nosso texto. Além disso, cifras como a 
de César são facilmente quebradas por ataques de força bruta, onde 
um software substitui rapidamente todas as opções possíveis de 
chaves até encontrar uma que gere significado. Uma opção, nesse 
caso, seria utilizar uma chave mais complexa e uma criptografia com 
maior espalhamento, como é o caso da cifra de Vigenère, que utiliza 
um sistema de matrizes de transposição colunar com chave numérica, 
segundo Zochio (2016).Nesse sistema, ao invés de um número, uma 
palavra é usada como chave com seu respectivo numérico e, portanto, 
cada letra varia de acordo com a complexidade e tamanho da chave. 
Nesse caso, o texto poderia receber uma chave com o nome do avô, 
outro dado que poderia ser de conhecimento apenas dos interessados 
familiares. Por exemplo, ao receber a chave filisbino, a primeira letra é 
trocada por X, já que o S é cifrado pela letra F e, portanto, deslocado seis 
vezes. Já a segunda letra da mensagem, E, é substituída por um M, já que 
a segunda letra da chave a desloca nove vezes. Assim, a saída do texto 
seria:
 
Observe que os espaços foram removidos, aumentando, assim, a 
dificuldade de se localizarem palavras separadas. De fato, a eficiência 
da cifra fez com que só fosse quebrada cerca de trezentos anos depois, 
por Charles Babbage, inventor daquele que é considerado o primeiro 
XmemhbafcfwywjumndfzeqjewcwqwlzublbJnvemhbafcxizVgslrgymDmlfxnzrwdl
wqzbtzvoqvblr 
 
11
computador analógico de uso geral, a máquina analítica. Uma maneira 
de se resolver esse enigma seria a análise da repetição dos caracteres, 
para então estimar qual a língua utilizada na mensagem. Além disso, 
a chave ainda é fraca, pois se trata de uma informação que, embora 
conhecida, pode ser adivinhada com certa facilidade. Por isso, grande 
parte dos esforços da criptografia moderna parte da ideia de como se 
compartilhar uma chave com segurança ou da utilização de uma senha 
para acesso das informações.
2. Gerenciando chaves
Ao invés de utilizar uma chave previamente conhecida e um sistema 
ultrapassado, e que pode ser descoberta, você decide utilizar 
um sistema mais eficiente para encriptar a mensagem. Parte do 
problema com as criptografias relatadas acima vem do fato de que 
o conhecimento do algoritmo utilizado, seja a transposição simples 
ou matricial, torna simples o processo de quebra automatizada da 
chave. Portanto, alguns algoritmos modernos tinham como premissa a 
decriptografia baseada apenas na chave, e nunca no algoritmo, ou seja, 
mesmo com o conhecimento de como é a realizada a criptografia, sua 
reversão só é possível com a chave.
Um algoritmo de chave simétrica é aquele que recebe um determinado 
texto legível que ao ser submetido ao algoritmo com a utilização de uma 
determinada chave, torna-se computacionalmente difícil, a partir do 
texto gerado, obter-se o texto original sem a chave.
2.1 DES
Projetado pela IBM, o algoritmo DES (Data Encryption Standard ou 
padrão de encriptação de dados) foi baseado em uma versão anterior, 
chamada LUCIFER. Além do nome pouco popular, essa versão possuía 
12
uma chave de 128 bits, que no DES foi encurtado para uma chave de 56 
bits, a pedido da própria NSA (National Security Agency ou Agência de 
Segurança Nacional), segundo Terada (2008). O DES é um sistema de 
criptografia baseado em hardware, ou seja, projetado para funcionar 
diretamente nos microcontroladores, e possui um sistema complexo 
baseado em rodadas criptográficas (as iterações), onde a cada rodada, 
sua entrada em texto claro de 64bits é separada em duas metades e 
invertida, e submetida a uma nova chave criptográfica gerada a partir da 
chave original e uma tabela de valores pré-definidas.
A sua característica mais relevante era justamente o fato de que, dada 
complexidade do processo criptográfico, o algoritmo pode tornar-se 
público, pois a única maneira de se quebrar a criptografia seria por meio 
de um processo de força bruta, substituindo-se cada chave possível. 
Para ter uma ideia, um computador que consiga realizar o teste de 90 
bilhões de chave, por segundo, levaria cerca de cinco dias para achar 
uma chave de 56bits. O DES passou a ser considerado inseguro no final 
dos anos 1990, e com os vazamentos ocorridos durante o episódio dos 
Wikileaks, segundo Carvalho (2019), comprovou-se que o governo dos 
EUA podia quebrar facilmente essa criptografia.
13
Figura 2 – Fluxograma do DES
Fonte: adaptado de Terada (2008).
O DES, assim como a cifra de Cesar e Vergenerè, bem como outras 
mais modernas, como a AES, são consideradas cifras simétricas, ou 
seja, uma mesma chave é utilizada para criptografar e decriptografar a 
mensagem. Portanto, o processo de envio dessa chave e sua segurança 
é algo de grande interesse para as partes. Como no início dos anos 1970 
toda comunicação criptografada era, basicamente, para uso militar, 
então o envio de chaves seria feito provavelmente a bordo de um 
14
helicóptero escoltado por caças. Entretanto, com o advento da Internet, 
a necessidade de possibilitar a troca de chaves por meio da própria rede 
e de forma segura aumentou.
Uma das maneiras de se fazer isso, é um sistema de distribuição de 
chaves. Você poderia enviar sua chave para seu mapa do tesouro, 
por meio de um serviço terceirizado de entrega, o que descartaria a 
possibilidade do mensageiro1 ter acesso a chave. De fato, a entrega 
de chaves fisicamente é uma realidade, porém, exige uma logística 
complicada, principalmente, quando se trata de muitos destinatários. 
Considerando duas partes, A e B, essa entrega pode ser feita de muitas 
maneiras, de acordo com Stallings (2008):
1. A pode selecionar uma chave e entregar pessoalmente a B.
2. Um terceiro pode selecionar uma chave e entregá-la para A e B.
3. Se A e B tiverem usado uma chave anterior recentemente, uma 
parte pode transmitir a nova chave criptografada a outra, usando 
a mesma chave.
4. Se A e B tiverem uma conexão criptografada com um terceiro C, C 
pode entregar a chave para eles.
Entretanto, a Internet e suas aplicações dão a esse problema uma 
camada extra de complexidade. Enquanto, no início, apenas as conexões 
eram criptografadas, o uso corporativo da Internet obrigou um rigor 
maior com o uso de diversas aplicações, como envio de e-mails e acesso 
a websites seguros. Em um cenário desses, a quantidade de chaves 
exigidas sobre exponencialmente, emuma escala que alcança a casa 
dos bilhões de chaves. Como distribuir e gerenciar uma quantidade tão 
grande de informações?
2.2 Criptografia baseada em senha
Desde o início desta leitura, você deve estar se perguntando se o 
problema descrito é uma complicação desnecessária, que o tal mapa 
15
poderia ser enviado por e-mail ou simplesmente por uma ligação 
telefônica. Poderia ser feito dessa forma. Entretanto, como você pode 
garantir que um e-mail é seguro? Como garantir que outra pessoa 
não tenha acesso aos dados enviados por meio de uma conexão de 
e-mail? Observe uma conversa entre um computador e um servidor 
de armazenamento de e-mail baseado no protocolo POP3 (Post Office 
Protocol ou protocolo de correio)
1. Server: +OK POP3 server ready
2. Computer: user zeca
3. Server: +OK
4. Computer: pass cidade
5. Server: +ok user succesfully logged on
6. Computer: list
7. Server: 1 512
8. Server: .
9. Computer: retr 1
10. Server: <conteúdo da mensagem 1>
11. Computer: dele 1
12. Computer: quit
Observe que na linha 10, o conteúdo da mensagem é enviado, sem 
nenhum tipo de criptografia. Alguém que estivesse acessando essa 
transmissão poderia interceptar as mensagens sem dificuldade. 
Entretanto, na linha 4, há um outro ponto de interesse, que é a palavra 
de comando pass, de password (senha), enviada do computador para 
o servidor, seguida por um OK, indicando que a senha informada 
permitiu o acesso aos dados. Senhas são palavras chaves usadas para 
acessar informações armazenadas, seja em um banco de dados ou em 
uma sessão de transporte de dados, como o exemplo acima. Embora 
parecidas, senhas e chaves criptográficas não são, por definição, a 
mesma coisa:
16
Figura 3–Chaves versus senhas
Fonte: elaborada pelo autor.
Senhas, ao contrário das chaves, podem ser utilizadas para a 
transmissão de dados em uma sessão segura, inclusive, a transmissão 
de chaves criptográficas. Em sistemas seguros, é comum a geração de 
chaves criptográficas aleatórias ou pseudoaleatórias para uma sessão, 
que, uma vez encerradas, são descartadas. Essa chave é conhecida 
como chave de sessão e, no exemplo acima, cada vez que o usuário se 
conectar com banco de dados de e-mail, deve fornecer uma senha que 
dá acesso à chave de sessão usada na criptografia dos dados. A geração 
de uma chave criptográfica segura, a partir de uma palavra comum, 
exige um processo lógico-matemático para torná-la segura e com uma 
alta entropia, afinal, no geral, senhas são palavras comum, mesmo que 
associadas com números e símbolos. Por isso, o processo de senhas 
baseadas em encriptação (conhecido como PBE ou Password-Based 
Encryption) adiciona números aleatórios ao processo, e gera uma chave 
de tamanho único, mas praticamente irreversível.
17
Figura 4 – Diagrama de um algoritmo PBE
Fonte: adaptado de Crypto-It (2020).
O processo de armazenar a chave utilizando uma senha, adiciona uma 
camada extra de proteção aos dados, já que, para acessar os dados 
da sessão, um atacante deve primeiro descobrir ou decriptografar a 
senha, porém, o armazenamento de uma senha permite que vários 
usuários tenham acesso a uma mesma chave secreta, sem compartilhá-
la. Para cada sessão, é preciso apenas a senha do usuário e o número 
randômico gerado no processo, pois é a partir dela que a chave 
criptografada é gerada. Esse número randômico é conhecido como 
SALT, que é adicionado à senha no processo de produção de hash, 
e é armazenado ou enviado junto durante a sessão. Sua função é a 
prevenção de ataques de dicionário, onde os hackers tentam quebrar 
a criptografia gerando hashs prévios, a partir de exemplos de senhas 
comuns.
18
Quadro 2 – Senhas e seus respectivos hashs
Senha SALT Hash gerado
password <nenhum> 5f4dcc3b5aa765d61d8327deb882cf99
password 524 84e7579a731065084289baff27e1bd5f
password 075 1b47dc7aa9bf5c85a1c2da5509c45aa1
Fonte: elaborado pelo autor.
O hash gerado a partir da palavra password é tão comum que pode 
ser encontrado em pesquisas na Internet. Já os dois outros, gerados a 
partir da adição do salt, são mais seguros. Apesar disso, é importante 
que a senha seja mantida em segurança. Já o contador de iterações, 
executa um looping de criação se hashs, de forma consecutiva, então 
uma determinada senha + o SALT com um contador de iteração de 
100 deveria realizar o processo de criação de hash em um looping de 
100 vezes. O contador de interação também é público, mas dificulta 
o ataque, pois ao passo que para o usuário um processo de login 
com algumas centenas de loopings pode demorar apenas alguns 
milissegundos, para o atacante, utilizando um software de ataque 
de força bruta, tornaria o processo inviável, pois teria de reverter o 
processo, 100 vezes, para cada senha que testasse.
Papel semelhante tem o IV, o Initialization Vector (vetor de inicialização), 
que adiciona um bloco de texto randômico na chave a ser criptografada. 
Assim como o SALT, deve ser armazenado junto a senha para permitir 
sua criptografia.
3. Criptografia de chave assimétrica
Apesar de possível, a troca de chaves de sessão sempre pode fragilizar 
a criptografia, uma vez que uma senha pode ser atacada com mais 
19
facilidade do que a chave em si. Além disso, exige uma terceira parte 
confiável, que seria o armazenamento dos hashs em um servidor, que 
também poderia ser atacado.
Imagine que para garantir o envio seguro da chave, ao invés de enviar 
o mapa criptografado com uma chave conhecida, você envia a chave 
de criptografia do texto também criptografada, mas com uma chave 
diferente. A chave, porém, é criptografada, utilizando uma chave 
desconhecida para o destinatário, digamos, o nome do seu cachorro, 
Zezé. No exemplo, utilizaremos a cifra de Vigenerè:
Chave escolhida aleatoriamente: CBTMMKPA
Chave utilizada para criptografar a chave: ZEZE
Resultado (usando a cifra de Vigenerè): BFSQLOOE
Ao receber a chave, seu primo não pode decriptografar o texto, pois, não 
tem a sua chave (que é privada). Então, criptografa sua chave com uma 
chave que só ele conhece, por exemplo, o nome de seu gato, Mingau, e 
envia de volta:
Chave utilizada pelo destinatário: MINGAU
Resultado (usando a cifra de Vigenerè): NNFWLIAM
Ao receber a chave, você não tem acesso à chave privada que o 
destinatário usou, mas tem a chave inicial, usada para encriptar a chave 
inicial, e a utiliza para decriptografar a chave recebida:
Chave recebida decriptografada usando a chave privada ZEZE: OJGSMEBI
Agora, de posse de uma chave segura, você pode encriptar o texto todo 
utilizando a chave inicial, CBTMMKPA, e enviar para ele, junto com a 
chave decriptografada com sua chave privada, OJGSMEBI. Perceba que, 
20
nesse sistema, em nenhum momento a chave foi enviada desprotegida 
pelo canal inseguro. Ao receber o texto, e a chave, o usuário a 
decriptografa usando a chave privada:
Chave recebida: OJGSMEBI
Chave recebida submetida a chave do usuário MINGAU: CBTMMKPA
Agora, você e seu primo tem uma chave comum, e podem compartilhar 
conteúdo criptografado, no entanto, nenhum dos dois conhece a chave 
privada do outro, e em nenhum momento a chave foi enviada pelo 
canal inseguro. A criptografia de chave assimétrica é um algoritmo 
que pressupõe um canal não confiável para a troca das chaves, de 
maneira que uma das chaves se torna pública, enquanto a outra é 
armazenada de forma segura. Assim, é possível uma troca de chaves 
segura, uma vez que a chave privada pode ser usada para criptografar 
conteúdo criptografado com a chave pública, e a chave pública pode 
decriptografar conteúdo gerado com a chave privada, mas é impossível 
reverter a criptografia criada com a chave pública com a mesma chave 
pública. Por isso, a criptografia assimétrica é também conhecida como 
criptografia de chave pública.
Algoritmos de chave pública utilizam operações matemáticas complexas 
e reversíveis, desde que uma parte dos elementos equação seja 
conhecida. Whitfield Diffie e Martin Hellman foram os primeirosa propor 
um sistema eficiente de utilização de chaves públicas para resolver 
o problema de distribuição de chaves. Inspirados por eles, Ronald 
Rivest, Adi Shamir e Len Adleman, professores do MIT, criaram então 
o algoritmo RSA, segundo Zochi (2016) A segurança do RSA depende 
da dificuldade de fatorar números grandes e dos números primos 
escolhidos para a criação das chaves, que devem ser grandes também, 
utilizando a propriedades da aritmética modular. A forma mais óbvia de 
atacar o RSA é descobrir um método de fatoração rápido, que consiga 
21
descobrir os fatores primos do número usado como chave, o que ainda 
com a computação tradicional é algo extremamente complexo.
Já o algoritmo El Gamal, desenvolvido pelo criptógrafo Taher Elgamal, 
utiliza igualmente a propriedade do logaritmo discreto para permitir 
o envio de um texto ilegível, por meio de um canal inseguro, com uma 
adição interessante: a utilização de um NONCE, um acrônimo para 
Number used ONCE ou número usado uma vez. Isso porque o algoritmo 
El Gamal publica uma parte da chave, e apenas uma parte é mantida 
secreta. Para isso, o El Gamal usa alguns números específicos:
• p é um número primo relativamente longo.
• g é um inteiro relativamente primo de n, sua raiz primitiva, que 
elevado a algum número n vai produzir o número p, sendo 
conhecido, assim, como gerador. Vamos entender o processo 
matemático, usando o exemplo dos primos Zeca e Bento:
• Bento gera chave pública e privada:
• Bento escolhe um número muito grande q e um grupo cíclico 
Fq. Do grupo cíclico Fq, ele escolhe qualquer elemento g e 
um elemento a tal que o mdc (a, q) = 1. Em seguida, calcula 
h = ga. Bento publica F, h = ga, q e g como sua chave pública e 
mantém a como chave privada.
• Zeca criptografa os dados usando a chave pública de Bento:
• Zeca seleciona um elemento k do grupo cíclico F de modo 
que mdc (k, q) = 1. Em seguida, calcula p = gk e s = hk = gak e 
multiplica s com M. Depois, envia para Bento (p, M * s) = (gk, M 
* s).
• Bento descriptografa a mensagem:
22
• Bento calcula s1 = pa = gak. Ele divide M * s por s1 para obter M 
como s = s1.
Essa propriedade é importante, pois permite o cálculo do módulo, 
mas não o cálculo do número ao qual p é elevado. Assim, ao publicar 
a chave pública, o emissor omite a informação do expoente, que é 
sua chave privada. Dessa forma, a mensagem original é criptografada 
multiplicando-se gak por ela. Para remover a máscara, uma pista é 
fornecida na forma de gk. A menos que alguém conheça a, ele não será 
capaz de recuperar M. Isso ocorre porque encontrar o logaritmo discreto 
em um grupo cíclico é difícil e simplesmente saber ga e gk não é bom o 
suficiente para calcular gak.
A utilização de sistemas criptográficos de chave assimétrica apresenta 
um problema de eficiência, uma vez que, para conjuntos grandes de 
dados, o processo pode ser extremamente demorado, dependendo 
da capacidade de processamento do equipamento. Assim, é comum 
a utilização desses sistemas para distribuição de chaves simétricas 
de forma segura. Além disso, a criptografia assimétrica permite a 
implementação do não repúdio, que é a característica implementada em 
sistemas como o de assinatura e certificação digital.
Referências Bibliográficas
CARVALHO, L. O que é o WikiLeaks? Olhar Digital, onze de abril de dois mil e 
dezenove. Disponível em: https://olhardigital.com.br/noticia/o-que-e-o-wikileaks-
saiba-mais-sobre-o-site-criado-por-julian-assange/84650. Acesso em: 25 nov. 2020.
CRYPTO-IT. Password-Based Encryption (PBE). Disponível em: http://www.crypto-
it.net/eng/theory/pbe.html. Acesso em: 25 nov. 2020.
SHANNON, C. E. A mathematical theory of communication. The Bell System 
Technical Journal, n. 27, p.379–423, p.623–656, 1948.
STALLINGS, W. Criptografia e segurança de redes. 4. ed. São Paulo: Pearson 
Prentice Hall, 2008.
TERADA, R. Segurança de dados: criptografia em redes. São Paulo: Blucher, 2008.
ZOCHIO, M. F. Introdução a criptografia. 1. ed. SãoPaulo: Novatec, 2016.
https://olhardigital.com.br/noticia/o-que-e-o-wikileaks-saiba-mais-sobre-o-site-criado-por-julian-as
https://olhardigital.com.br/noticia/o-que-e-o-wikileaks-saiba-mais-sobre-o-site-criado-por-julian-as
http://www.crypto-it.net/eng/theory/pbe.html
http://www.crypto-it.net/eng/theory/pbe.html
23
Assinaturas e certificação digital
Autoria: José Eugênio de Mira
Leitura crítica: Gustavo Molina Figueiredo
Objetivos
• Compreender os sistemas de assinatura digital e a 
geração de hash. 
• Assimilar a relação entre a geração de hash e a 
confiabilidade de mensagens 
• Reconhecer algoritmos de hash e assinaturas digitais. 
24
1. Assinatura digital e hash
Fãs de séries policiais, já devem ter visto peritos recolhendo impressões 
digitais, que são desenhos únicos formados pelas papilas dos dedos, que 
são pequenas elevações na pele da ponta (polpa) dos dedos. Impressões 
digitais têm componentes genéticos e epigenéticos, o que implica dizer 
que além do DNA, quaisquer alterações durante a gestação alteram o 
processo de geração dessas impressões.
Impressões digitais não são únicas, embora sejam, probabilisticamente, 
ínfimas as possibilidades de que duas pessoas com as mesmas 
impressões estarem em uma mesma região/cidade ao mesmo tempo e, 
quando se trata de crimes, fica fácil associar as impressões aos suspeitos 
já levantados pela polícia. Dessa forma, podem ser utilizadas facilmente 
como confirmação. Entretanto, a partir de uma impressão que nunca 
tenha sido registrada antes, não se pode descobrir quem é seu dono. 
Exatamente da mesma forma que ocorrem com os hashs.
1.1 Espalhamento e dispersão
Um dos pilares da Segurança da Informação é o não repúdio, uma 
característica que impede que pessoas e instituições neguem a autoria 
de determinadas mensagens. O não repúdio funciona tanto como 
uma forma de segurança, garantindo a originalidade, e, portanto, a 
confiabilidade da mensagem enviada, quanto como autenticação.
Com a popularização de contratos e transações, realizadas por meio 
da internet, vem se tornando cada vez mais comuns, tornou-se 
importantíssimo que fosse possível garantir a autenticidade da autoria 
de mensagens eletrônicas. A utilização de técnicas de espalhamento e a 
utilização de chaves públicas são apresentadas como uma solução para 
isso.
25
Funções de hash, ou funções de dispersão ou espalhamento, operam 
sempre no nível dos bits das mensagens ou dados, transformando 
sequências de dados em blocos de tamanho único, de forma 
determinística, o que implica dizer que uma mesma entrada de dados 
deve gerar sempre a mesma saída. Também deve ter uma alta entropia, 
de forma que seja impossível a partir do hash gerado obter-se o arquivo 
original.
O primeiro ponto para compreender a função de hash, é sua 
característica de saída de tamanho único. Isso implica dizer que 
independentemente do tamanho do texto de entrada, a saída sempre 
deverá ter o mesmo tamanho. Isso é feito com o algoritmo associando 
a entrada dos dados a blocos. O tamanho total dos dados é separado 
sempre na mesma quantidade de porções de dados, cada um desses 
blocos é tratado separadamente.
Figura 1 – Saída de tamanho único
Fonte: elaborada pelo autor.
Observe que na Figura 1, no bloco da esquerda, temos uma matriz de 4 
por 4, com 16 valores no total. Já na direita, temos uma matriz de 8 po 
8, com um total de 64 valores. Entretanto, nossa saída tem um tamanho 
único de oito. Para isso, os valores da esquerda são concatenados de 
26
dois em dois, enquanto os da direita são concatenados em blocos de 
oito. Assim, todos serão, no final, apenas um conjunto de oito valores. 
Dessa forma, caso tenhamos um bloco de dados de 16 bytes, cada byte 
é tratado como um bloco. Dessa maneira,, cada bloco em minha função 
de espalhamento terá apenas um byte; caso tenhamos uma entrada de 
dados de 1024 bytes, cada bloco terá 64 bytes. A função de hash aplicará 
a mesma sequência lógica a cada um desses bytes, de forma que a saída 
terá sempre o mesmotamanho.
As funções de hash mais simples se baseiam em uma função muito 
básica do processamento digital, que é a função de OU exclusivo, 
ou XOR. Assim, o hash dos valores de um conjunto de dados é visto 
pela função de hash como uma sequência de blocos de n bits. A esse 
conjunto de bits, são aplicados um a um a função XOR. A função XOR 
possui a tabela verdade com melhor espalhamento para operadores 
binários, com 50% de saídas zero ou um, e por isso, cria uma dispersão 
melhor do que os operadores AND (E) e OR (OU).
Figura 2 – Imagem em binário
Fonte: elaborada pelo autor.
27
A imagem acima foi convertida para valores binários, onde o branco é 
representado por um e o preto por zeros. Depois, efetuou-se o cálculo 
binário, linha a linha, utilizando diferentes operadores binários. Cada 
linha tem 40 caracteres, e foram calculadas exatamente 40 linhas. O 
resultado pode ser observado abaixo. Os cálculos foram feitos utilizando 
uma calculadora on-line:
Com o operador AND: 1110000000000000000000000000000000000111
Com o operador OR: 0000000000000000000000000000000011111111
Com o operador XOR: 1110110010101100000110101001111001000
Perceba como a dispersão dos bits é mais eficiente com o operador 
XOR, por isso é utilizado como operador para os cálculos de hash. Claro 
que esse é um exemplo simplificado. Algoritmos de hash reais fazem 
operações cíclicas de bits por bloco, adição de hash e recálculo, por 
exemplo, para tornar ainda maior a dispersão. Outra característica 
importante, para o hash, é o que chamamos de efeito avalanche, que 
implica dizer que uma pequena mudança nos dados de entrada gera 
uma grande alteração no hash. Isso é chamado de efeito avalanche.
Se x é o valor de entrada e h é o hash, então a função de hash é 
representada por h = H(x), onde H representa a função aplicada para se 
obter a saída h. Uma colisão ocorrerá quando x ≠ y e H(x)=H(y). Segundo 
Stallings (2008), colisões de hash são indesejáveis, mas como não são 
impossíveis de se evitar, é desejável que o algoritmo seja capaz de 
reconhecer quando uma colisão é intencional.
1.2 Algoritmos de hash
O estudo de formas eficientes para atender necessidades de uma 
função de espalhamento, fomentaram o desenvolvimento de diversos 
28
algoritmos. Para ser considerado um algoritmo de hash eficiente, cinco 
requerimentos são essenciais:
1. Unidirecionalidade: para qualquer hash gerado, seja inviável a 
partir dele encontrar a mensagem original.
2. Determinismo: a mesma entrada de dados deve sempre produzir 
o mesmo valor de hash.
3. Eficiência: o cálculo do hash deve ser rápido.
4. Efeito avalanche: uma alteração mínima no dado original deve 
produzir um hash completamente diferente.
5. Resistência à colisão: impedir que entradas de dados diferentes 
gerem hashs iguais.
Abaixo, alguns algoritmos de hash conhecidos:
1) MD5:
O hash também pode ser conhecido como sumário de mensagem, ou 
message digest, que nomeia o algoritmo MD5, ou message digest n# 5, 
a quinta versão de um dos algoritmos de hash mais utilizados, até ser 
considerado inseguro. É baseado em dois artigos, de dois autores, R.C. 
Merkle e I.B. Damgård. Segundo Terada (2008), o primeiro tratava de um 
sistema de autenticação com chave pública, e o segundo, de um sistema 
de hash resistente a colisões.. Ambos resultaram na função Merkle-
Damgård, um algoritmo de hash de mão única.
O MD5 foi desenvolvido por Ronal Rivest, e é uma melhoria da versão 
anterior MD4 produzida pela RSA Data Security, para resolver algumas 
falhas de segurança na produção de colisões. O MD5 usa um sistema 
eficiente de rodadas e de blocos, onde cada bloco produzido, a partir 
da mensagem original, alimenta a entrada da rodada seguinte. Embora 
ainda seja muito utilizado para, por exemplo, garantir a integridade 
de programas e arquivos baixados da Internet, o MD5 foi considerado 
inseguro para o uso em aplicações, de acordo com Chad (2008), como de 
29
assinatura e certificação digital, , sendo substituído pelos algoritmos da 
família SHA. Produz uma saída de 128 bits.
2) SHA1:
O SHA1 (Secure Hash Algorithm 1) é um padrão definido pelo FIPS 
(Federal Information Processings Starndards) 180-1, depois de problemas 
de colisão relatados no SHA (conhecido posteriormente como SHA0). 
Projetado pela própria agência de segurança nacional dos EUA, produz 
uma saída de 160bits (20 bytes). As primeiras vulnerabilidades teóricas 
foram demonstradas em 2005, sendo que, desde 2013, sites como o 
Google não aceitam mais certificados gerados com SHA1 (NIST, 2012). 
Também descende do MD4, mas utiliza cinco palavras, ao invés de 
quatro, nas rodadas de bloco. Cada bloco também possui 512 bits. O 
SHA1 ainda é utilizado, principalmente, em aplicações de checagem de 
integridade.
3) SHA2:
O SHA2, atualmente, é o sistema de hashing mais utilizado, embora 
já exista um sucessor, conhecido como SHA3. O SHA2 é uma família, 
composta de SHA256, SHA 384 e SHA512 (NIST, 2012). O SHA256 é 
um algoritmo eficiente, pois produz uma saída de 64 bytes, com uma 
segurança de 128 bits (o MD5, por exemplo, tem uma segurança 
de apenas 64 bits), produzidas em apenas 64 rodadas. Atualmente, 
certos padrões de assinatura e certificados digitais só são aceitos se 
utilizarem a função hash SHA2, que também é a função de hash utilizada 
no processo de mineração dos blocos da blockchain da bitcoin. O seu 
sistema é mais complexo do que todos os anteriores, usando oito 
palavras de 32 ou 64 bits, que passam por processos complexos de 
cálculo binário AND, XOR e de negação.
30
4) Whirpool:
Vincent Rijmen (o R da sigla RSA) e o brasileiro Paulo S. L. M. Barreto 
criaram um algoritmo livre de hash, que chegou a ser utilizado pelo 
software aberto TrueCrypt, uma aplicação para criar discos virtuais 
criptografados.
Certificação e assinatura digital
A utilização de algoritmos de resumo tornou possível que um sistema 
simples de verificação de mensagem fosse implementado, o que 
permitiu, posteriormente, a criação de sistemas de assinatura e 
certificação digital. Isso porque a transmissão de um hash, ou resumo 
junto da mensagem, garante que essa mensagem não sofreu alterações.
Figura 3 – Autenticação baseada em resumo
Fonte: adaptado de Stallings (2008).
Na Figura 3, podemos ver duas situações. Na primeira, os dados são 
enviados junto com sumário da mensagem (hash – H), gerado pelo 
remetente. Ao receber os dados, o destinatário gera o próprio sumário, e 
compara com o sumário enviado. Caso os valores sejam iguais, confirma 
31
que os dados não foram alterados. Entretanto, caso a mensagem tenha 
sido alterada, ao receber os dados e realizar seu próprio hash, os valores 
serão diferentes, assim, sabe que os dados da mensagem não foram os 
mesmos enviados pelo remetente.
Como garantir, no entanto, que o documento foi realmente enviado pelo 
destinatário? Afinal, um hacker poderia gerar o próprio documento, e 
gerar o hash. Para garantir a autenticidade, é necessário, portanto, que 
alguma informação que somente o destinatário conheça, verificável 
digitalmente, seja anexada ao documento. É nesse ponto que entra a 
criptografia de chave pública.
Sabemos que em um sistema de chave pública, apenas uma pessoa 
conhece a chave privada, e sua chave pública pode ser utilizada para 
decriptografar documentos previamente encriptados com sua chave 
privada. Desse modo, se Z deseja enviar seu documento para B, basta 
o remetente Z gerar o resumo da mensagem com uma função hash, 
aplicar uma criptografia com a sua chave privada, e enviar o documento 
a B, junto do hash. Ao decriptografar o documento com a chave pública 
de Z, B deve obter o valor de hash, e ao compará-lo com o hash gerado a 
partir da mensagem original, será capaz de saber se:
1. A mensagem foi alterada.
2. Quem enviou a mensagem originalmente.
O sistema, embora simples, garante um sistema de não repúdio à prova 
de falhas, pois, como somente o um lado possui a chave privada, seria 
impossível outra pessoa ter criptografado ohash. Para isso, no entanto, 
duas coisas devem ser levadas em conta:
• Uma vez comprometida, a chave privada deve ser abandonada e 
não pode ser mais utilizada.
• Um sistema externo confiável, uma entidade certificadora, deve 
garantir que quem possui um determinado par de chaves pública 
32
e privada é realmente a pessoa/ instituição que diz ser. Isso é feito 
por meio de um processo de certificação digital.
SHA1, MAC e DSA:
Existem outras formas de autenticação de mensagens, por exemplo, 
por meio do uso de um código de autenticação de mensagens, ou 
MAC, onde uma chave secreta compartilhada entre as duas pontas é 
adicionada a uma função de hash junto da mensagem original. A sua 
principal vantagem é o envio em texto claro, e o fato de não haver 
criptografia envolvida permite economia de recursos de processamento. 
Sistemas de monitoramento de emergência também podem se 
aproveitar desse sistema. Além disso, separar confidencialidade 
e autenticidade permite uma maior flexibilidade do controle da 
informação, de acordo com Stallins (2008).
Um esquema conhecido de assinatura digital é baseado no algoritmo 
El Gamal, de chave pública. É importante conhecê-lo, pois é o sistema 
de verificação de assinatura digital do NIST, conhecido como DSA 
(Digital Signature Algorithm, ou Algoritmo de Assinatura Digital), baseado 
também em sistemas de aritmética modular e o problema do logaritmo 
discreto (NIST, 2009). Apresentado como padrão de assinatura, o DSA 
foi projetado originalmente com o SHA1, porém, pode ser utilizado com 
as funções da família SHA2.É implementado, entre outros, no protocolo 
OpenSSL para comunicação segura de páginas web.
Ataques
Sistemas de hash e arquiteturas de chave pública estão sujeitos 
a ataques, como qualquer sistema de segurança da informação. 
De fato, nos últimos anos têm-se investido muito em sistemas de 
comunicação, com algoritmos capazes de gerar acessos eficientes, mas 
seguros. Apesar disso, um dos grandes problemas com a Segurança da 
Informação ainda é o elo mais fraco da cadeia, o fator humano.
33
Rainbow tables:
Ataque baseado em hashs pré-determinados, que são comparados 
com os valores armazenados em um banco de dados. Embora possa 
parecer um ataque improvável, existem diversos sites que armazenam 
sequências de hashs de senhas comuns (como password e senha123). 
Além disso, aplicativos podem ser utilizados para, baseados em senhas 
prováveis, determinar alguns hashs possíveis e então compará-los com 
os hashs armazenados. Caso uma senha se torne pública em algum 
vazamento de dados, é bem possível que ela seja armazenada em 
sistemas de hash.
Ataque de aniversário:
É um ataque que explora a matemática por trás da geração dos hashs 
e fragilidade algorítmica das colisões de algumas funções. Baseia-se na 
teoria probabilística de que em um dado grupo n para 1, a probabilidade 
de alguém do grupo fazer aniversário no mesmo dia do indivíduo 
escolhido é baixa, pois é uma possibilidade em 365 dias. Já em um grupo 
de mesmo tamanho, a probabilidade de n para n aumenta de acordo 
com o tamanho de n. Se em um grupo onde n = 40, a probabilidade de, 
ao escolher um indivíduo aleatoriamente, outro fazer aniversário no 
mesmo dia que ele, é algo em torno de 10%, porém, a probabilidade que 
dois indivíduos no grupo n façam aniversário no mesmo dia é de 89%.
Assim, o ataque de aniversário tenta prever, a partir de diferentes 
entradas, duas entradas cujo hash gerado seja idêntico, onde x1 e x2 tem 
f(x1)=f(x2). Nas funções hash mais modernas, a resistência ao Ataque 
de Aniversário é grande, porém, em funções mais antigas como o MD5, 
poderiam ser quebradas com sistemas de processamento especializado 
em alguns meses. Comparando com o SHA1, o tempo necessário seria 
de alguns milhares de anos.
34
Man-in-the-middle:
Esse tipo de ataque também conhecido como MITM pressupõe que 
alguém tem acesso à comunicação entre duas partes, e pode interceptar 
mensagens e substituí-las. De fato, considerando que uma criptografia 
de chave pública oferece uma segurança considerável, uma opção é 
enviar chaves trocadas e, assim, interceptar as mensagens e retransmiti-
las.
Nesse cenário, se Z envia uma mensagem para B solicitando sua chave 
pública, D pode interceptá-la; então, enviar sua própria chave pública 
para Z. Z encripta sua mensagem com a chave pública de D, pensando 
tratar-se da chave de B. Ao enviar a mensagem cifrada, D a intercepta 
novamente, decriptografa com sua chave privada, e pode então alterá-
la ou simplesmente voltar a encriptar o texto com a chave pública de B 
(que interceptou anteriormente) e enviar de volta.
Esse tipo de ataque mascara identidades de sites com conexão segura 
com o uso de protocolos SSL. Ao criar um site falso e interceptar a 
comunicação entre o usuário e o servidor, o atacante intercepta a 
comunicação com o site. Outra maneira de se explorar esse ataque é 
se posicionar entre comunicações de e-mail, falsificando a comunicação 
com remetentes falsos. Segundo Torres (2018), entre as técnicas 
utilizadas, podemos citar a falsificação de IP e envenenamento de ARP.
1.3 Certificação e PKI
Sabemos que os sistemas de chave pública são seguros, e que a 
utilização desta criptografia associada com funções eficientes de 
hash depende de uma estrutura de armazenamento, controle e 
identificação das chaves públicas. Afinal, ao acessar um site que exibe 
um determinado certificado, quem garante que a empresa realmente foi 
a responsável por gerar aquele certificado? Assim como para a emissão 
de documentos oficiais, como RG e CPF, a certificação digital e as 
35
assinaturas digitais dependem de entidades centralizadoras que possam 
atestar a identidade do usuário. Chamamos essas entidades de CA ou 
Certificate Authority (Autoridade de Certificação). Segundo Stallins (2008), 
existem dois sistemas mais utilizados de esquemas de distribuição de 
chaves públicas.:
O sistema de autoridade de chave pública é baseado na emissão em 
tempo real de chaves. Uma autoridade central armazena cópias de 
chave públicas de diversos entes, e fornece a cada um deles chaves 
públicas para que possam manter uma comunicação segura com a 
autoridade. Só a autoridade conhece a chave privada de cada canal 
para cada um dos solicitantes. Assim, caso Z solicite a chave pública de 
B, a autoridade responde a mensagem já encriptada com sua chave 
pública. Além da chave de B, a autoridade envia também a mensagem 
de solicitação original, com o timestamp (etiqueta de tempo) da 
solicitação. Isso garante que a chave é recente. Isso explica como uma 
data ou horário incorreto no computador pode impedir a pessoa de 
acessar determinados sites ou serviços on-line. Como o timestamp estará 
incorreto, a autoridade não reconhece a solicitação de chave como 
legítima.
Uma outra maneira de se fazer isso é por meio da emissão de um 
certificado digital. No exemplo acima, um excesso de solicitações 
poderia gerar um gargalo na autoridade de chave pública. Um 
certificado consistiria em um documento digital, contendo uma chave 
pública e um identificador do proprietário dessa chave, em um bloco 
assinado pela chave pública da entidade certificadora. Assim, quando 
você acessa um site em uma conexão segura, utilizando, por exemplo, 
o protocolo TLS, seu computador busca no servidor onde o site está 
hospedado um certificado. Esse certificado indica:
• Qual CA emitiu esse certificado.
• Quem solicitou a emissão desse certificado.
36
• Quando o certificado foi emitido e quando irá expirar.
Observe na Figura 4, um certificado emitido para o site wikipedia.org:
Figura 4 – Certificado e conexão segura ao site
 
Fonte: print de tela de wikipedia.org.
Observe que os campos fornecem a identificação que comprova que 
os proprietários do site solicitaram a uma entidade verificadora um 
certificado, com duração de 90 dias; nos campos acima podemos ver 
a versão do certificado e sua definição. Essa janela pode ser acessada 
clicando no cadeado que indica umaconexão segura (destacado no alto 
da figura) e, no caso do navegador Google Chrome (e outros baseados 
na plataforma Chrominium) n a opção certificado. Importante frisar que 
só o cadeado no site não garante sua segurança, uma vez que outra 
37
empresa ou pessoa poderia emitir um certificado próprio, adicioná-lo a 
um servidor para, então, proceder um ataque de MITM ou de phishing. 
A garantia está no fato do certificado ter sido emitido para a empresa/ 
instituição indicada no corpo do certificado.
2. PKIs e o certificado x.509
Uma infraestrutura de Chave pública (PKI de Public Key Infraetructure 
ou no Brasil, ICP, de Infraestrutura de Chaves públicas) é, portanto, o 
sistema organizado de emissão de chaves públicas, baseado no princípio 
de uma entidade confiável para controle de identidade e emissão de 
certificados. Como você pode imaginar, uma estrutura centralizada 
poderia engessar a emissão de certificados. Assim, para manter essa 
infraestrutura são gerados certificados para que outras entidades 
possam gerar seus próprios certificados.
Além do prazo de expiração, um certificado pode ser revogado em 
outros casos, como, por exemplo, quando a chave privada do usuário é 
comprometida. Além disso, mudanças na identidade do usuário como 
alteração de nome podem exigir a emissão de um novo certificado 
digital, bem como alguma falha de segurança venha a comprometer o 
certificado ou seu emissor, segundo Stallings (2008).
É importante observarmos que o PKI funciona baseado na confiança em 
um terceiro, ou seja, uma instituição centralizadora deve reconhecer a 
existência do sujeito e/ou entidade para emitir o certificado em questão. 
Existem questões relacionadas à legitimidade dessa autoridade, e 
que se não poderia ser utilizada de forma a deslegitimar pessoas 
e/ou instituições ou, até mesmo, controlar o tráfego de dados ou 
comprometer a comunicação em países com governos totalitários ou 
pouco democráticos. Isso tem levado a tentativas de se estabelecer 
38
sistemas de autenticação e confiabilidade que não necessitem dessa 
terceira parte confiável.
Referências Bibliográficas
CHAD, D. R. MD5 vulnerable to collision attacks. Carnegie Mellon University, 
Software Engineering Institute, 2008. Disponível em: https://www.kb.cert.org/vuls/
id/836068. Acesso em: 25 nov. 2020.
ISHIZU, P. As impressões digitais são realmente únicas? Super Interessante, vinte 
e um de dezembro de dois mil e dezessseis. Disponível em: https://super.abril.com.
br/blog/oraculo/as-impressoes-digitais-sao-realmente-unicas/. Acesso em: 25 nov. 
2020.
NIST. FIPS 186-4 Digital Signature Standard (DSS). 2009. Acesso em 22 de agosto 
de 2020, disponível em NIST Information Technology Laboratory–COMPUTER 
SECURITY RESOURCE CENTER: https://csrc.nist.gov/publications/detail/fips/186/4/
final
NIST. FIPS 180-4 Secure Hash Standard (SHS). Information Technology Laboratory, 
Computer Security Resource Center, 2012. Disponível em: https://csrc.nist.gov/
publications/detail/fips/180/4/final. Acesso em: 25 nov. 2020.
STALLINGS, W. Criptografia e segurança de redes. 4. ed. São Paulo: Pearson 
Prentice Hall, 2008.
TERADA, R. Segurança de dados: criptografia em redes. São Paulo: Blucher, 2008.
TOOLSLICK. Bitwise Calculator. Disponível em: https://toolslick.com/math/bitwise. 
Acesso em: 25 nov. 2020.
 https://www.kb.cert.org/vuls/id/836068
 https://www.kb.cert.org/vuls/id/836068
https://super.abril.com.br/blog/oraculo/as-impressoes-digitais-sao-realmente-unicas/
https://super.abril.com.br/blog/oraculo/as-impressoes-digitais-sao-realmente-unicas/
https://csrc.nist.gov/publications/detail/fips/186/4/final
https://csrc.nist.gov/publications/detail/fips/186/4/final
https://csrc.nist.gov/publications/detail/fips/180/4/final
https://csrc.nist.gov/publications/detail/fips/180/4/final
39
Blockchain
Autoria: José Eugênio de Mira
Leitura crítica: Gustavo Molina Figueiredo
Objetivos
• Conhecer os princípios da blockchain e seu histórico. 
• Compreender o funcionamento do blockchain e seus 
princípios. 
• Entender a relação do blockchain com bitcoin e sua 
relação com sistemas de relação confiável. 
40
1. Principios da blockchain
A assinatura de documentos digitalmente, e mesmo o processo de 
certificação digital, pressupõe a existência de relações de confiança entre 
os emissores das mensagens ou então entre os emissores e a entidade 
certificadora. Em alguns casos, no entanto, essa relação de confiança 
não pode ser estabelecida.
O blockchain vem para solucionar esse problema por meio de uma 
cadeia de dados públicos, que torna todos os blocos de dados 
encadeados entre si (e daí o nome, blockchain, ou corrente de dados). 
Para isso, usa conceitos como o de chave pública e privada e o uso de 
hash.
1.1 A origem da blockchain
Sistemas confiáveis representam a base das relações humanas desde o 
primórdio das civilizações. Em pequenos grupos humanos, o comércio 
era baseado no bem comum e na confiança quase familiar entre os 
membros do grupo. No entanto, com a expansão pelo mundo e o 
aumento exponencial dos grupos humanos, o comércio, como sistema 
confiável, passou a necessariamente precisar de uma base material. 
Os objetos de trocas, como animais e produtos agrícolas, acabaram 
sendo substituídos por garantias do monarca local, que emprestava sua 
confiança de que dívidas contraídas nas trocas seriam pagas. Pequenas 
efígies eram gravadas em metais preciosos, e surgiu, assim, o dinheiro, 
baseado na confiança na terceira parte.
Com o tempo, trocas baseadas em materiais tornaram-se difíceis 
e dispendiosas, principalmente, com a expansão dos comércios na 
Ásia e América por meio de longas rotas terrestres e ultramarinas. O 
dinheiro era algo perigoso de ser transportado e os cruzados passaram 
41
a funcionar como depositários confiáveis, guardando em seus fortes 
os dinheiros de viajantes. O dinheiro recebia uma carta assinada 
pelos cruzados, e só poderia ser retirado pelo seu portador ou com 
autorização deste. Surgiam, assim, os bancos os primeiros sistemas de 
saque e depósito baseado em autenticação.
Figura 1 – Moeda do reino do rei Edward I
Fonte: studiocasper/ iStock.
Embora não seja comum pensarmos sobre isso, sistemas monetários 
sempre contaram com uma confiança em uma terceira parte, seja um 
governo ou uma instituição. Isso implica dizer que o próprio valor de um 
dinheiro em um determinado país está atrelado ao grau de confiança 
em bancos ou no próprio estado. É comum, inclusive, situações onde um 
banco falido pode levar a um colapso no sistema financeiro, rompendo a 
cadeia de confiança entre clientes e as instituições. Da mesma maneira, 
instabilidades políticas e econômicas em um país podem levar a uma 
situação onde o governo perde sua capacidade de garantir o valor do 
dinheiro; compreender esse sistema é essencial para compreender o 
surgimento da blockchain, que nasce do interesse de grupos em criar um 
sistema computacional capaz de garantir transições de valores em uma 
https://www.istockphoto.com/br/portfolio/studiocasper?mediatype=photography
42
rede descentralizada, sem interferência de instituições ou do estado e 
sem a necessidade de confiança entre as partes.
Preocupados com isso, grupos de ativistas libertários1, cypherpunks2, 
matemáticos e pessoas ligadas à computação começaram a propor, nas 
décadas de 1980 e 1990, por meio de fóruns e listas de e-mails, maneiras 
de se criar um ativo digital. De fato, a maneira como a blockchain 
surge, de forma anônima e descentralizada, está ligada diretamente 
a preocupação desses grupos com questões relacionadas à liberdade 
e anonimato. A própria criação do bitcoin, por meio da blockchain, até 
hoje é creditada a um personagem desconhecido. Nakamoto (2008) é 
quem assina o white paper que cria o bitcoin por meio da rede ponto a 
ponto da blockchain, e é um pseudônimo. Embora existam pistas de sua 
identidade, até hoje não comprovaram a identidade de seu criador.
O que é necessário é um sistema de pagamento eletrônico baseadoem prova criptográfica em vez de confiança, permitindo a quaisquer 
duas partes dispostas a transacionar diretamente uma com a outra 
sem a necessidade de um terceiro confiável. Transações que são 
computacionalmente impraticáveis de reverter protegeriam os vendedores 
de fraudes e mecanismos rotineiros de disputa poderiam ser facilmente 
implementados para proteger os compradores. (NAKAMOTO, 2008, p. 1)
O white paper do bitcoin não inicia, mas na verdade encerra uma era de 
tentativas de alcançar um sistema computacional capaz de transacionar 
de forma segura, transparente e descentralizada, por meio de uma 
rede ponto a ponto e que não exige uma terceira parte confiável. 
Não obstante, a bitcoin e a própria blockchain são consideradas como 
tecnologia disruptiva e talvez umas das mais importantes do século XXI. 
Como isso é possível?
1 Diferente de liberais, libertários são grupos mais radicais que combatem todo tipo de interferência estatal, 
não só na economia. 
2 Não confundir com os cyberpunks. Cypherpunks eram grupos que estudavam criptografia como forma de 
enfrentar o sistema estatal e as grandes corporações.
P3
43
1.2 A lógica da blockchain
O conceito de confiança em documentos digitais baseia-se na premissa 
de cálculos matemáticos tão grandes e complexos que somente quem 
estiver de posse de todos os dados originais poderia prever exatamente 
seu resultado. Assim, ao usar o problema do logaritmo discreto, é 
possível que um cálculo realizado previamente com um determinado 
número e seu módulo forneça um resultado que pode ser obtido 
utilizando uma parte dos números utilizados nesse cálculo. Esse é o 
princípio por trás dos algoritmos de chave pública e privada como o RSA 
e o El Gamal. No blockchain, é utilizado para garantir o acesso aos blocos 
de dados e permitir registros.
Além disso, a função de hash é utilizada no processo de criação das 
cadeias que compõe o blockchain, garantindo a irreversibilidade do 
processo de criação. Além disso, o hash é uma validação utilizada no 
processo de geração da bitcoin, que é uma criptomoeda gerada a partir 
da criação do processo de mineração, que é o nome dado à criação das 
chaves públicas e privadas que garantirão o acesso à escrita no bloco. 
Diferentemente do RSA, no entanto, o blockchain utiliza um sistema de 
chaves públicas e privadas baseadas em uma função que se aproveita 
das propriedades da teoria das curvas elípticas. Uma curva elíptica é, 
por definição, uma curva algébrica nãolinear, o que significa que não 
tem pontas agudas (cúspides) ou intersecções. Geradas a partir de uma 
função matemática, possuem propriedades de multiplicação e de soma, 
de forma que uma reta traçada sobre essa curva fará intersecções com 
ela em pontos específicos. Observe, na Figura 2, uma curva elíptica 
gerada a partir da função y ^ 2 = x ^ 3 - 3 x + 7:
44
Figura 2 – Curva elíptica de uma função
Fonte: elaborada pelo autor.
Os pontos traçados na reta P1 e P2, desde que não tenham o mesmo 
valor em x, determinam o próximo ponto, chamado de -P3. Uma reta 
paralela ao eixo y define o ponto P3, onde P1 + P2 = P3. Qualquer ponto, 
nesse gráfico, pode ser definido como uma soma de P, onde kP = P + P + 
P (repetido por k vezes). Um sistema de chave pública e privada, baseada 
nas curvas elípticas, gera um gráfico de pontos, onde as informações 
sobre as intersecções desses pontos não são conhecidas, mas a função 
sim, segundo Terada (2008).
Dessa maneira, é possível utilizar a propriedade de reversibilidade da 
operação em sentido único. A chave privada é, portanto, um número 
de forma imprevisível, e a chave pública é obtida a partir dela e da 
multiplicação do chamado ponto base. Esse algoritmo é conhecido 
como ECDSA (Elliptic Curve Digital Signature Algorithm, ou Algoritmo 
de Assinatura Digital de Curvas Elípticas), e é o sistema criptográfico 
de chave pública por trás da proteção dos dados armazenados na 
blockchain, segundo Rykwalder (2020). Uma transação, ou seja, a 
movimentação de valores por meio da cadeia da blockchain, só é 
45
possível para quem tem a chave privada desse bloco. Já a chave pública, 
é utilizada como endereço para o envio de valores através do bloco.
Os dados escritos na blockchain, a partir de quem controla suas chaves, 
são divididos por todos os computadores que fazem parte da rede de 
peers (pontos) da blockchain. Assim, qualquer dado que seja registrado 
na blockchain fará parte de um registro público, descentralizado e 
inalterável. Embora, na teoria, o armazenamento de dados dentro do 
blockchain sirva para os registros das transações ocorridas dentro da 
própria cadeia, como as trocas de criptomoedas entre os usuários da 
rede, qualquer registro pode ser inserido na blockchain, a um pequeno 
custo conhecido como fee (a taxa de mineração).
Apesar do conceito de blockchain basear-se no sistema desenvolvido 
para criação e transação de bitcoins, seu formato de distribuição, acesso 
aos dados e criação de blocos encadeados pode ser utilizado por 
soluções descentralizadas de armazenamento de dados, garantindo a 
irreversibilidade de registros. Em um sistema de certificação digital, essa 
propriedade pode ser utilizada para garantir que, uma vez assinada, 
uma transação passe a ser reconhecida publicamente como válida. O 
sistema notarial poderia ser substituído por uma cadeia semelhante, 
onde qualquer pessoa ou instituição poderia registrar seus dados 
e confirmar, aceitando ou rejeitando, transações. Uma informação 
importante é que, embora qualquer pessoa possa criar uma blockchain, 
uma vez que o programa tem código aberto, já tendo sido replicado 
para a criação de centenas outras criptomoedas e blockchains privadas, 
a blockchain ligada ao blockchain responsável pelo bitcoin é única. Assim, 
chamamos de blockchain a cadeia ligada a criptomoeda bitcoin, e de 
blockchain o sistema por trás das redes distribuídas P2P (peer-to-peer) de 
registros imutáveis
46
2. Criando a blockchain
Em inglês, peer-to-peer network significa redes ponto a ponto, ou 
seja, redes descentralizadas, sem um computador centralizado, ou 
seja, sem um servidor. Desde o final da era dos mainframes, grandes 
computadores corporativos centralizados, as redes de computadores 
passaram por um processo conhecido como downsizing, com 
computadores sendo transformados em estações de trabalho cada vez 
mais autônomas, que poderiam compartilhar recursos com outros na 
rede com outros, bem como utilizar recursos de outros também.
Essa proposta se populariza com a Internet e, logo nos primeiros anos 
do século XXI, surgem os primeiros softwares de compartilhamento de 
arquivos distribuídos. Assim, quando um computador disponibiliza um 
arquivo, rapidamente é copiado por outros e, assim, sucessivamente. 
Mesmo que o primeiro computador se torne indisponível, agora 
centenas ou milhares de cópias desses arquivos já foram copiados para 
outros computadores, que vão continuar compartilhando e assim por 
diante. Esse sistema se tornou popular ao permitir o compartilhamento 
de arquivos de áudio e vídeo por meio de programas de torrente. Um 
torrent é um arquivo, que contém os endereços de computadores 
que tem um determinado arquivo disponível. Ao ser compartilhado, o 
arquivo é atualizado, apontando para os novos computadores.
A rede da blockchain funciona de forma análoga. Para fazer parte da 
rede, é preciso utilizar um software que se conecta a rede e faz uma 
cópia de todas as transações existentes, e passa a colaborar nessa 
rede. Cada computador da rede é chamado de node (ou nó) e colabora 
recebendo todos os blocos da rede e realizando um processo que 
consiste basicamente em tentar adivinhar o próximo bloco válido, o 
que é feito por meio de uma proof-of-work (prova de trabalho). Observe 
a descrição do white paper sobre o processo de trabalho da rede na 
blockchain da bitcoin:
47
1) Novas transações são transmitidas para todos os nós. 2) Cada nó coleta 
novas transações em um bloco. 3) Cada nó trabalha para encontraruma 
proof-of-work complexa para o seu bloco. 4) Quando um nó encontra uma 
proof-of-work, ele transmite o bloco para todos os nós.
5) Os nós aceitam o bloco somente se todas as suas transações são 
válidas e já não foram gastas. 6) Os nós expressam sua aceitação do bloco, 
trabalhando na criação do próximo bloco na cadeia, usando o hash do 
bloco aceito como o hash anterior. (NAKAMOTO, 2008, p. 3)
Portanto, um bloco é um conjunto de transações, ou seja, um conjunto 
de alterações, dos valores descritos na blockchain, transmitidas pela 
rede. Uma proof-of-work é uma comprovação de que um determinado 
computador utilizou um tempo de processamento para realizar uma 
determinada tarefa proposta pelo código do software da blockchain. 
O processo de realização de uma prova de trabalho recebe uma 
recompensa em criptomoedas, e esse processo recebe o nome de 
mineração.
2.1 Encadeando blocos
Em 1992, a professora americana Cynthia Dwork e o professor 
israelense Moni Naor apresentaram um trabalho que versava como 
sobre combater SPAM no envio de e-mail. A proposta dos acadêmicos 
era de que, para cada email enviado, um custo computacional fosse 
necessário. Se eu não te conheço e você deseja me enviar uma 
mensagem, deve provar que gastou, digamos, dez segundos de tempo 
de CPU, apenas para mim e apenas para esta mensagem (DWOR; NAOR, 
1992, p. 1-2 ), ou seja, ao invés de simplesmente enviar o dado, o sistema 
tem que realizar um trabalho computacional, trabalho esse que envolve 
uma função que demanda certo custo matemático para ser calculada, 
mas que pode ser verificada com facilidade.
48
Na blockchain, esse trabalho é realizado por uma função de hash. Todos 
os dados do bloco anterior são adicionados como entrada em uma 
função que calcula o hash do próximo bloco. Nesse sentido, todos os 
blocos permanecem inalteráveis após a geração do próximo bloco da 
cadeia, e quem verifica a validade de um determinado bloco é a própria 
rede, o que é chamado de consenso.
Figura 3 – Formação do bloco encadeado
Fonte: adaptado de Nakamoto (2008, p. 2).
Nesse processo de criação do bloco, a mineração, alguns dados devem 
ser utilizados, além da informação do bloco anterior. São adicionados 
como entrada na função hash um nonce e o timestamp do momento em 
que a tentativa de criação do bloco foi realizada. Essas duas informações 
tornam simples a verificação de outros nós da rede sobre a validade 
do bloco minerado. O nonce é um número de 32 bits, e o timestamp é o 
horário escrito em formato computacional, com data e hora contendo 
minutos e segundos.
Figura 4 – Dados de formação do bloco
Fonte: elaborada pelo autor.
49
Entretanto, a criação de blocos não é tão simples assim, isso porque a 
proof-of-work implementa uma dificuldade para a geração dos hashs, 
conhecido como quebra-cabeça criptográfico. Dessa maneira, somente 
um hash com um formato muito específico é aceito na validação de um 
novo bloco.
A formação do consenso se dá por meio da implementação de um 
algoritmo que resolve um problema conhecido como tolerância à falha 
bizantina. Cada um dos nós analisa a informação recebida dos outros 
envia para os outros nós da rede se o bloco gerado é válido ou não, 
por meio da verificação do hash. Se a maioria dos nós aceitar o bloco 
como válido, passa a integrar a cadeia, e o próximo bloco deverá ser 
gerado por meio dos dados desse bloco. Entretanto, se o bloco é público 
e a função de hash não muda, como garantir que a prova de trabalho 
continue complexa e que não seja possível adivinhar o próximo bloco?
2.2 Proof of work e mineração
À primeira vista, a criação de um dinheiro digital a partir de um 
algoritmo matemático pode parecer bem difícil de acreditar. Isso advém 
da ideia abstrata, que temos, de que dinheiro tem representações 
físicas. Isso é verdade? Não podemos esquecer que, atualmente, boa 
parte do dinheiro está armazenada em contas bancárias, onde são nada 
mais do que representações numéricas em um sistema computacional 
e, embora as instituições bancárias sejam confiáveis, não podemos 
esquecer fatos como o que levaram a grande crise econômica de 2008, 
com a quebra do banco Lehman brothers. Mesmo no dia a dia, fazemos 
pagamentos com cartões de débito e, agora, aplicativos, onde o dinheiro 
existe somente como uma representação digital de valor. Da mesma 
maneira que um papel emitido pelo governo só tem valor pela confiança 
que as pessoas depositam nas instituições, os dados da blockchain só 
50
tem valor devido à confiança que as pessoas têm na impossibilidade de 
alteração de seus dados.
De fato, embora o processo de criação da bitcoin seja diretamente ligado 
ao funcionamento da blockchain e sua mineração, o valor deles advém 
da confiabilidade de uma rede de armazenamento de dados confiáveis 
distribuída globalmente, imutável e segura. Quem possui um endereço 
válido e uma assinatura de chave privada deste endereço, pode enviar 
transações para outras pessoas, e essas transações serão distribuídas 
e confirmadas por toda a rede. Para serem confirmadas, devem fazer 
parte de um bloco válido, e o bloco válido é aquele que resolve o 
quebra-cabeça, encontrando um valor muito específico de hash.
Esse valor é conhecido como alvo, e é um hash com um valor numérico 
muito baixo. Como a blockchain usa uma função hash SHA256, sua 
saída é um valor numérico, hexadecimal, de 256 bits. Assim, esse 
número é escrito em valores de zero a F, sendo f igual a 16. Em um 
endereço hexadecimal, 0f é igual a 16, e 1f é igual a 17; 0ff é igual a 32 
e 1ff é igual a 33. Como o valor de hash não pode ser previsto, todos 
os computadores que fazem parte da rede ponto a ponto realizam um 
processo de tentativa e erro para tentar alcançar um hash com um valor 
numérico muito baixo, ou seja, com muitos zeros à esquerda. Cada 
tentativa varia o número no nonce, que vai de zero a 4.294.967.295. E 
essa tentativa deve ser realizada no menor tempo possível, pois, a cada 
segundo, o timestamp do bloco se altera, e os hashs precisam começar a 
ser gerados novamente.
51
Figura 5 – Golden nonce e alvo (target)
Fonte: elaborada pelo autor.
Essa dificuldade computacional é altíssima, e como a rede aumenta 
exponencialmente, com mais mineradores, a dificuldade também é 
ajustada. O criador da blockchain pensou, no entanto, que, no início, 
deveria incentivar pessoas a fazer parte da rede, e definiu, assim, um 
sistema de recompensas, que é um grande atrativo da mineração, além 
das taxas. Ao concluir o quebra- cabeça criptográfico, o computador que 
conseguiu encontrar o valor específico do hash determinado, recebe 
um valor em bitcoins pelo esforço. Esse valor é fixo por bloco, e cai pela 
metade a cada certa quantidade de blocos encontrados, mantendo uma 
relação entre dificuldade de encontrar novos blocos e valor. Segundo o 
que o próprio criador define em um artigo:
A adição estável de uma quantidade constante de novas moedas é análoga 
a garimpeiros dispenderem recursos para colocar mais ouro em circulação. 
No nosso caso, tempo de CPU e eletricidade que estão sendo consumidos. 
O incentivo também pode ser financiado com taxas de transação. Se 
o valor de uma transação de saída é menor que o valor de entrada, a 
diferença é uma taxa de transação que é adicionada ao valor de incentivo 
do bloco que contém a transação. (NAKAMOTO, 2008, p. 4)
Embora os mineradores sejam a força bruta por trás da criação da 
bitcoin, a manutenção da blockchain é distribuída entre todos os 
participantes da rede ponto a ponto. Somente os blocos que resolvem 
52
os quebra-cabeças são adicionados como parte da cadeia, e o aceite 
desses blocos se dá a partir do momento que novos blocos são 
gerados e testados. Embora seja computacionalmente impossível dois 
mineradores gerarem o mesmo bloco ao mesmo tempo, é possível 
que atrasos na propagação do novo bloco na rede gerem atrasos, 
situação que poderia criar dois blocos válidos (situação chamada de 
competing chains ou cadeia concorrente), ou seja, dois blocoscujo 
hash corresponde ao alvo numérico abaixo de um determinado limiar. 
Nesse caso, a rede aguardará a emissão de um próximo bloco, e 
será considerado válido aquele bloco presente na rede com maior 
quantidade de peers. Esse bloco invalidado será considerado um bloco 
órfão, e as transações presentes nele deverão ser validadas novamente. 
Por isso, uma transação na rede blockchain deve aguardar um tempo 
para ser confirmada.
Embora complexo, a blockchain é a implementação de conceitos 
conhecidos, como assinaturas baseadas em chaves privadas e funções 
de hash. A união de tais conceitos criou um sistema de encadeamento 
de blocos imutáveis que tem um grande poder disruptivo, pois permite 
sistemas abertos, distribuídos e auditáveis, além de um sistema de 
transações e registros que pode vir a substituir, no futuro, cartórios, 
bancos e até mesmo contratos.
Referências Bibliográficas
DWORK, C.; NAOR, M. Pricing via processing or combatting junk mail. Crypto’92, 
p. 11, 1992. Disponível em: http://www.wisdom.weizmann.ac.il/~naor/PAPERS/pvp.
pdf. Acesso em: 25 nov. 2020.
SYMBOLAB. Calculadora de funções e plotagem de gráfico. Eqsquest, 2017. 
Disponível em: https://pt.symbolab.com/solver/functions-graphing-calculator/. 
Acesso em: 25 nov. 2020.
NAKAMOTO, S. Bitcoin: um sistema de dinheiro eletrônico peer-to-peer. Disponível 
em: https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf. Acesso em: 25 nov. 
2020.
http://www.wisdom.weizmann.ac.il/~naor/PAPERS/pvp.pdf
http://www.wisdom.weizmann.ac.il/~naor/PAPERS/pvp.pdf
https://pt.symbolab.com/solver/functions-graphing-calculator/
https://bitcoin.org/files/bitcoin-paper/bitcoin_pt_br.pdf
53
RYKWALDER, E. (2020). A matemática por trás do Bitcoin–CoinDesk 2020–Bitcoin 
on air. Bitcoin on air, 2020. Disponível em: https://pt.bitcoinonair.com/math-behind-
bitcoin. Acesso em: 25 nov. 2020.
TERADA, R. Segurança de dados: criptografia em redes. São Paulo: Blucher, 2008.
https://pt.bitcoinonair.com/math-behind-bitcoin
https://pt.bitcoinonair.com/math-behind-bitcoin
54
Criptomoedas e 
contratos inteligentes
Autoria: José Eugênio de Mira
Leitura crítica: Gustavo Molina Figueiredo
Objetivos
• Compreender o que são criptomoedas. 
• Entender o processo de transações autoexecutáveis 
por meio de contratos inteligentes. 
• Reconhecer características de criptomoedas, 
contratos inteligentes e suas linguagens.
55
1. Criptomoedas e transações
Em uma blockchain, determinados registros podem ser movidos por 
meio de diferentes endereços, desde que assinados com a chave 
privada do proprietário do endereço que contém um registro, que será 
transacionado para o outro. Esses registros são valores atribuídos, 
inicialmente, ao endereço que consegue, por meio do processo de 
resolução do quebra-cabeça criptográfico, minerar os dados do bloco 
seguinte da cadeia.
Veremos a visão de criptomoedas e suas transações, o funcionamento 
de contratos inteligentes e como podem representar um avanço 
considerável em área de negócio e tecnologia, e até mesmo na área 
jurídica. Veremos também um pouco sobre as linguagens utilizadas na 
execução desses contratos e o conceito de tokens.
1.1 Criptomoedas existem?
Criptomoedas são, na prática, apenas registros de um bloco de um 
banco de dados distribuídos. Ao mover um valor de bitcoins, por 
exemplo, de um endereço para o outro, o que é feito é simplesmente 
dizer que determinado endereço passou a ter um valor menor em 
seu registro, e o outro, um valor maior. Pode parecer estranho, mas 
não podemos esquecer que, em tese, uma boa parte do dinheiro em 
circulação são apenas registros eletrônicos na base de dados de algum 
governo ou instituição bancária.
O conceito de criptomoedas em uma blockchain fica mais claro e simples 
de se compreender quando usamos a analogia do livro-razão. Em 
contabilidade, um livro-razão é um documento escriturário que possui 
informações sobre as diferentes contas de uma empresa, suas entradas 
e saída de valores, em uma disposição cronológica. Assim, é possível 
56
saber com precisão quais os valores iniciais de cada uma das contas, 
quais valores circularam entre quais contas e qual o saldo final delas. 
Em um livro razão (ou ledger), diferentes colunas são utilizadas para o 
registro de entradas e saídas. Dessa forma, fica fácil ao final do dia, ou 
do mês, contabilizar se houve lucro ou prejuízo. Se a soma de todas as 
colunas de entradas for maior do que a coluna de saída, houve lucro, 
caso contrário, houve prejuízo.
Figura 1 – Um antigo livro-razão
Fonte: arenadesign/ iStock.com.
Uma coluna mais à direita mostra o balanço das contas, de forma a 
tornar mais simples os cálculos de fluxo. Nos pequenos comércios, era 
comum um volume muito grande de transações de entrada e saída, por 
isso, às vezes, mesmo com um fluxo muito grande de valores no dia, ao 
final, o saldo poderia ser zero. Então, a função dos registros era permitir 
ao administrador saber se tinha mais ou menos dinheiro do que ao 
iniciar o negócio. O conceito de transação, dentro de uma blockchain, 
captura justamente a ideia de que é mais fácil controlar os registros de 
https://www.istockphoto.com/br/portfolio/arenadesign?mediatype=photography
57
transações do que o saldo em si. Em um sistema fechado, como é o caso 
da blockchain, todo valor gerado em criptomoedas, desde o primeiro 
ciclo até hoje, precisa estar em algum endereço, em algum lugar. Na 
blockchain, não se registram os valores, mas o fluxo desses valores. 
Um endereço de blockchain não possui um saldo em bitcoins, mas uma 
diferença entre as entradas e as saídas, assim como em um livro-caixa.
Os livros-caixa, por apresentarem um registro temporal das transações 
são, inclusive, utilizados para fins de declaração de impostos. 
Desde sempre, no entanto, havia a possibilidade de que tais livros 
pudessem ser fraudados, é claro, desde que com um pouco de perícia 
e muito trabalho manual. Com a migração para os sistemas digitais, 
aumentaram as possibilidades de fraudes. Uma blockchain, no entanto, 
funciona como um livro-razão aberto, encadeado automaticamente e 
à prova de fraudes retroativas. Cada transação só pode ser enviada de 
um livro para o outro, sem a possibilidade de sobras, exceto pelas taxas 
de transação (que serão enviadas para os mineradores responsáveis 
pelo registro da transação). Cada livro só pode ter entradas vindas de 
outros livros e todos os livros são imutáveis, uma vez que para uma 
pequena alteração em um registro, todos os demais seriam invalidados. 
Um sistema contábil computacionalmente à prova de falhas. Conforme 
explica Ulrich (2014):
A invenção do bitcoin é revolucionária porque, pela primeira vez, o 
problema do gasto duplo pode ser resolvido sem a necessidade de um 
terceiro; bitcoin o faz distribuindo o imprescindível registro histórico 
a todos os usuários do sistema via uma rede peer-to-peer. Todas as 
transações que ocorrem na economia bitcoin são registradas em uma 
espécie de livro-razão, público e distribuído (...), o que nada mais é do 
que um grande banco de dados público, contendo o histórico de todas 
as transações realizadas. Novas transações são verificadas contra o 
blockchain de modo a assegurar que os mesmos bitcoins não tenham sido 
previamente gastos, eliminando assim o problema do gasto duplo. A rede 
global peer-to-peer, composta de milhares de usuários, torna-se o próprio 
intermediário; (ULRICH, 2014, p. 17)
58
A rede blockchain é formada por diferentes tipos de nodes e, embora 
todos partam do mesmo princípio, possuem especificidades de acordo 
com a função para qual foram desenvolvidos. No início da rede, o que 
existia era um único tipo de node, que minerava, validava transações 
e verificava o saldo restante dos endereços. Com a ampliação da rede, 
foram criados nodes com funções especializadas, de acordo com a 
necessidade dos usuários que operam cada node.
Com o aumento da dificuldade de mineração, tornou-se inviável que 
usuários que queriam apenas validar transações, auxiliando

Continue navegando