Buscar

CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL II

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 46 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 46 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 46 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

61
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Unidade II
3 CHAVES CRIPTOGRÁFICAS
Durante a evolução dos algoritmos criptográficos, surgiram dois tipos de chaves: as simétricas e as 
assimétricas. Essa divisão é feita em função do modo como as chaves são aplicadas em um algoritmo 
criptográfico nos procedimentos de criptografar e de decifrar uma mensagem. Além disso, o tipo de chave 
também influencia o modo como será feita sua distribuição aos usuários, como veremos em seguida.
3.1 Chaves simétricas
Segundo Zochio (2016), as chaves simétricas são usadas desde os anos 1970, e baseiam-se no emprego 
de um algoritmo matemático com uma chave criptográfica usada tanto para cifrar como para decifrar. 
Também conhecidas como chave de segredo, ou segredo, apenas, ocorrem quando a mesma chave que 
é utilizada para cifrar uma mensagem é usada para decifrá-la. Podem ser copiadas e distribuídas para 
quantas pessoas for necessário.
Figura 35 – Chave simétrica – mesma que fecha, mesma que abre
Façamos uma comparação com a porta de uma casa: a chave pode ser copiada para todos os 
moradores e qualquer um pode trancar e abrir a porta, independentemente de quem foi que a trancou 
ou destrancou anteriormente. A garantia da proteção, portanto, está na correta distribuição dessa chave, 
para que somente tenham acesso a ela os usuários ou moradores daquela casa.
Para termos uma ideia da quantidade de combinações possíveis de acordo com o tamanho da chave 
em bits, veja os números a seguir:
• Chave de 3 bits = 23 = 8 chaves possíveis.
• Chave de 4 bits = 24 = 16 chaves possíveis.
• Chave de 56 bits = 256 = 72.057.594.037.927.936 chaves possíveis.
• Chave de 128 bits = 2128 = 340.282366.920.938.463374.607.431.768.211.4 = 56 chaves possíveis.
62
Unidade II
Quadro 3 – Força da criptografia simétrica
Tamanho da chave 
(em bits)
Combinações 
possíveis
Tempo médio de “quebra” 
(106 cripto/ps)
40 1x1012 2 horas
56 7x1016 10 horas
128 3,4x1038 5,4x1018 anos
Fonte: Zochio (2016, p. 65).
Segundo Zochio (2016), para quebrar a criptografia simétrica, há dois modos de operação: roubá-la 
ou descobri-la.
Só é possível descobri-la usando a força bruta. Apesar de parecer um trabalho “impossível”, 
dependendo do tamanho da chave, não é tão difícil, considerando o estado da arte da computação.
As cifras simétricas são um formato muito utilizado na criptografia moderna, o grande problema é 
que, para a comunicação fluir, é necessário utilizar a mesma chave para cifrar e decifrar a informação, 
o que, naturalmente, obriga as partes a terem a mesma chave. Com isso, de alguma forma, deve haver 
um repasse do conhecimento da chave antes do envio da comunicação criptografada, situação essa 
que é centenária.
Emissor
Algoritmo Algoritmo
Receptor
Texto 
claro
Texto 
claro
Texto 
cifrado
A B
Mesma chave que cifra e decifra a informação
Figura 36 – Esquema simples de transmissão com chave simétrica
Os estudos de Horst Feistel (MENEZES; VAN OORSCHOT; VANSTONE, 2001), pesquisador da IBM, 
contribuíram com o desenvolvimento da cifra que levou o seu nome: a cifra de Feistel, também conhecida 
como cifra de blocos ou rede de Feistel. Ela consiste numa função simétrica de cifragem; possui, assim, 
uma função rodada que não precisa ser invertida no momento da decriptação.
Explicando de forma simples e usando como ilustração a figura a seguir, a cifra de Feistel baseia-se 
na quebra do texto em claro em duas partes ou blocos (L0 e R0) que vão sendo cifrados várias vezes, 
gerando subchaves (K0, K1 e Kn) por meio de funções rodadas (F) e utilizando uma operação de OU 
exclusivo. Ao final, são gerados blocos cifrados (Rn+1 e Ln+1).
63
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
 Observação
Ou exclusivo, XOR ou disjunção exclusiva é uma operação lógica entre 
dois operandos que resulta em um valor lógico verdadeiro se e somente se 
os dois operandos forem diferentes, ou seja, se um for verdadeiro e o outro 
for falso.
O mais interessante é que para decriptar o texto cifrado não é necessário executar a função rodada 
inversa e sim executar o procedimento do fim para o início.
LO RO
Rn + 1 Ln + 1
Ciphertext
Encryption
Plaintext
KO
K1
Kn
F
F
F
LO RO
Rn + 1 Ln + 1
Plaintext
Kn
Kn – 1
Ko
F
F
F
Decryption
Ciphertext
Figura 37 – Cifra de Feistel
Os trabalhos de Feistel deram origem ao algoritmo simétrico mais famoso do mundo, o DES (digital 
encryption standard), um algoritmo de blocos que utiliza chaves fixas de 56 bits.
A base do algoritmo DES é a cifra de Feistel, que propôs uma abordagem conhecida como 
cifra de produto, fundamentada na execução de duas ou mais cifras em sequência de tal 
64
Unidade II
forma que o resultado seja criptograficamente mais forte do que qualquer uma das cifras 
intermediárias. Para isso, utiliza os conceitos de difusão e confusão, com o objetivo de dificultar 
a criptoanálise estatística.
Dessa forma, é importante definir alguns parâmetros referentes ao tamanho do bloco: quanto 
maior, mais seguro. Tradicionalmente, o bloco é composto de 64 bits, o tamanho da chave. Nesse 
caso, quanto maior a chave, maior a segurança, por isso 124 bits tornaram-se um tamanho comum. 
Outro parâmetro é o número de rodadas, que define a essência da cifra (quantidade de execuções): 
16 rodadas é um tamanho típico. Por fim, o último parâmetro é a função rodada: quanto maior, 
mais segurança oferece; além disso, outra importante característica é que a função rodada não 
precisa ser inversa.
Segundo Zochio (2016), o DES é uma cifra composta que criptografa blocos de 64 bits (8 caracteres) 
em blocos de 64 bits. Para tanto, ele usa uma chave composta por 56 bits mais 8 bits de paridade (no 
total são 64 bits). Assim, para cada chave, o DES faz substituição monoalfabética sobre um alfabeto de 
264 letras.
64 bits
+13 rounds C
R
0
L
0
R
1
L
1
R
2
L
2
R
1
L
1
32 bits
32 bits
½ do bloco do DES 
Função cifra DES 16 vezes 
Cada uma das 16 etapas 
é chamada de rodada
½ do bloco do DES
Função XOR Caixas de substituição 
Figura 38 – Execução do algoritmo DES
Resumidamente, o DES funciona por meio dos seguintes passos (TKOTZ, 2005):
• Uma substituição fixa, chamada de permutação inicial, de 64 bits em 64 bits.
• Uma transformação, que depende de uma chave de 48 bits, e que preserva a metade direita.
• Uma troca das duas metades de 32 bits cada uma.
• Repetição do segundo e terceiro passo, 16 vezes.
• Inversão da permutação inicial.
65
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Os blocos que compõem o algoritmo são permutações, substituições e operações XOR. As permutações 
do DES são de três tipos:
• Os bits são simplesmente reordenados (straight permutation).
• Alguns bits são duplicados e então reordenados (expanded permutation), aumentando o número 
de bits na saída.
• Alguns bits são descartados para que depois sejam reordenarados os restantes (permuted choice), 
diminuindo os bits de saída.
As substituições no DES são denominadas S-boxes (substitution boxes – caixas de substituição ou 
ainda caixas S, em português) e são especificadas em 8 tabelas nas quais entram blocos de 6 bits e saem 
blocos de 4 bits. O primeiro e o último bit são tomados como se fossem um número de 2 bits, formando 
as linhas das tabelas das caixas S. Os bits 2 a 5 agrupados formam um vetor de 0 a 15.
Passa-se a ter então uma tabela na qual a primeira linha é formada por 4 bits (os 4 bits do meio 
dos 6 bits de entrada). Sua primeira coluna é constituída por números decimais que possam ser 
representados em 2 bits (os bits dos extremos do bloco de 6 bits de entrada). Para cada uma das 
S-boxes, a combinação dos 4 bits do meio com os 2 bits das pontas fornecerá 4 bits, conforme a 
tabela da caixa.
Half block (32 bits) Subkey (48 bits)
E
S1 S2 S3 S4 S5 S6 S7 S8
P
Figura 39 – Função f do DES
Exemplo: seja M o texto em claro da mensagem M = 4d617263656c7573, sendo que M está no 
formato hexadecimal. Transcrevendo M em formato binário, obtemos o bloco de texto de 64 bits:
66
Unidade II
M =01001101 01100001 01110010 01100011 01100101 01101100 01110101 01110011
L = 01001101 01100001 01110010 01100011 
R = 01100101 01101100 01110101 01110011
O primeiro bit de M é “0” e o último bit é “1”. Lemos da esquerda para a direita. O DES atua sobre 
blocos de 64 bits, usando chaves de 56 bits. Falando mais detalhadamente, as chaves são armazenadas 
com 64 bits, mas são excluídos 8 bits, então elas são reduzidas para 56 bits.
Esses 8 bits excluídos servem para garantir a integridade das chaves, ou seja, o último bit de cada um 
dos 8 bytes da chave é um bit verificador, chamado de bit de paridade. Apesar de os bits de paridade serem 
retirados, nos cálculos a seguir serão enumerados os bits de 1 a 64, da esquerda para a direita.
Exemplo: seja K a chave hexadecimal K = 133457799bbcdffl. Isso nos dá a chave binária (substituindo 
1= 0001, 3 = 0011 etc., em grupos de 8 bits):
K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001
Segundo Singh (2020), o DES encorajou as empresas na sua utilização, pois padronizou a criptografia e 
passou a ser um formato aceito para segurança. Além de ser suficientemente forte para garantir a segurança, 
era praticamente impossível para uma empresa ou para um computador civil quebrar a cifra do DES.
Todavia, havia um problema típico das chaves simétricas a ser resolvido, o mesmo que os alemães 
tinham com o livro de cifras da Enigma: como entregar a cifra ao destinatário para depois, de forma 
segura, trocar informações criptografadas?
As grandes instituições estadunidenses adotaram um método que a princípio funcionou bem, enviar 
mensageiros com as chaves DES lacradas aos seus clientes e parceiros para que eles imputassem as chaves em seus 
computadores e, a partir daí, conseguissem com segurança trocar mensagens criptografadas e efetuar transações.
Evidentemente que com o tempo isso passou a ficar inviável pelo número de clientes e pelo alto custo.
Simétrica
Necessário envio da cifra DES ao cliente
Simétrica
Encrip Decrip
Cliente
Texto 
claro
Texto 
claroTexto 
cifrado
$
Banco Mesma chave
Figura 40 – Exemplo de uso prático do DES
67
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Segundo Zochio (2016), a quebra do DES ocorreu em 1998, quando a Eletronic Frontier Foundation 
(EFF) construiu a máquina chamada DES Cracker, exclusivamente concebida para quebrar o DES, feito 
que conseguiu realizar em 3 dias.
A máquina custou 250 mil dólares. Em 1999, a mesma máquina, com o apoio da computação 
distribuída (100 mil computadores na internet), quebrou a chave do DES em 22 horas e 15 minutos.
Depois desses fatos, foi concebido o 3DES, que usa chaves DES combinadas entre si para criptografar 
e descriptografar. A máquina possui chaves de 168 bits, ou seja, as chaves do DES de 56 bits multiplicadas 
por 3; ele usa a mesma estrutura do DES, mas sendo três vezes mais lento, pois criptografa os dados três 
vezes, tornando o ataque de força bruta mais dispendioso.
Outros exemplos de cifras simétricas são o Blowfish, o CAST-64, 80 e 128, o RC2, RC4 e RC5, o Idea, e 
o AES (advanced encryption standard) – esse último requer nossa atenção, pois foi considerado o grande 
substituto do DES.
Segundo Zochio (2016), o padrão AES foi concebido por meio de um concurso promovido pelo 
National Institute of Standards and Technology – Nist para substituir o DES. Após várias rodadas, o 
algoritmo escolhido foi o belga Rijndael. O AES possui cifragem em blocos de até 128 bits, trabalha com 
chaves de 128, 192 e 256 bits, é público e rápido.
Internamente, as operações do algoritmo AES são realizadas em uma matriz bidimensional de bytes 
chamadas de Estado. O Estado consiste em um array organizado em 4 colunas de bytes, cada uma 
contendo 4 bytes – 16 bytes ao todo – sendo que os valores de cada byte variam de 0 a 255.
Durante o processo de cifragem ou de decifração, os blocos de 128 bits (16 bytes) são copiados para 
esse array para que sejam efetuadas as operações responsáveis pelo funcionamento do algoritmo na 
cópia (BARKER, 2020). A figura seguinte ilustra os blocos de entrada, o array Estado e os blocos de saída, 
sendo que cada item corresponde a um byte:
Bytes de entrada Estado Bytes de saída
in0 in4 in8 in12 S0,0 S0,1 S0,2 S0,3 out0 out4 out8 out12
in1 in5 in9 in13 S1,0 S1,1 S1,2 S1,3 out1 out5 out9 out13
in2 in6 in10 in14 S2,0 S2,1 S2,2 S2,3 out2 out6 out10 out14
in3 in7 in11 in15 S3,0 S3,1 S3,2 S3,3 out3 out7 out11 out15
Figura 41 – Blocos de entrada, Estado e blocos de saída
O AES foi projetado para resistir a ataques diferenciais e lineares, inviabilizando a aplicação dessas 
técnicas. Essa cifra é usada, por exemplo, na criptografia de dados em navegadores de internet.
68
Unidade II
a0,0 a0,1 a0,2 a0,3
a1,0 a1,1 a1,2 a1,3
a2,0 a2,1 a2,2 a2,3
a3,0 a3,1 a3,2 a3,3
k0,0 k0,1 k0,2 k0,3
k1,0 k1,1 k1,2 k1,3
k2,0 k2,1 k2,2 k2,3
k3,0 k3,1 k3,2 k3,3
b0,0 b0,1 b0,2 b0,3
b1,0 b1,1 b1,2 b1,3
b2,0 b2,1 b2,2 b2,3
b3,0 b3,1 b3,2 b3,3
AddRoundKey
a2,2
k2,2
b2,2
Figura 42 – AES aplicação
Para Zochio (2016), quando se fala em criptografia simétrica, devemos levar em consideração seu 
modo de operação. Há dois: cifra de fluxo e cifra de bloco.
Nas cifras de fluxo, os bits originais são combinados com bits de cifra vindos de um gerador de dígitos 
pseudoaleatórios, ou diretamente da chave com o texto em claro. Normalmente, essa combinação é 
feita por meio de uma operação XOR.
Em uma cifra de fluxo, os dígitos originais são cifrados um de cada vez e a transformação de dígitos 
sucessivos varia durante a cifra. O resultado da cifra de um dígito depende do seu estado atual. Quando 
se usa cifra de fluxo, devemos evitar utilizar a mesma chave para cifrar mensagens diferentes.
Isso ocorre porque a função XOR possui as propriedades de associatividade e comutatividade, 
tornando a cifra de fluxo vulnerável se a mesma chave for usada duas ou mais vezes.
Gerador Gerador
K K
Chave contínua Chave contínua
Texto em claro Texto em claroCriptograma
Keytream
Figura 43 – Cifra de fluxo
Por exemplo: duas mensagens, A e B, têm o mesmo tamanho e foram cifradas com a mesma chave, 
K. A cifra de fluxo produz um fluxo de bits C (K) com o mesmo tamanho das mensagens. A versão cifrada 
das mensagens será:
69
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
E(A) = A C
E(B) = B C
em que o XOR é executado bit a bit.
Um atacante intercepta as mensagens E(A) e E(B). Ele pode facilmente obter: E(A) E(B)
No entanto, o XOR é comutativo e tem como propriedade que X X = O (autoinverso), logo:
E(A) E(B) = (A C) (B C) = A B C C = A B
Se uma mensagem for mais longa que a outra, o atacante trunca a maior delas, reduzindo-a ao 
tamanho da menor, e o seu ataque revelará a porção da mensagem truncada. Ou seja, se alguém 
intercepta duas mensagens cifradas pela mesma chave, pode recuperar A B.
Mesmo que nenhuma das mensagens seja conhecida, desde que se saiba que ambas estão em 
linguagem natural, essa cifra pode muitas vezes ser quebrada através de métodos de análise relativamente 
simples. Além disso, se alguma mensagem em claro, A ou B, for acidentalmente comprometida todo o 
processo estará arruinado.
Segundo Zochio (2016), as cifras de fluxo criptografam bit a bit, o que as torna bem mais rápidas do 
que as criptografias convencionais byte a byte. Elas geram uma sequência de bits que será usada como 
chave, conhecida como keystream, composta pela chave inicial e pelo vetor de início (IV), normalmente 
gerado de modo aleatório.
A cifra ocorre pela combinação do texto plano com a keystream por meio de operações XOR. O IV 
também serve de obstáculo à aplicação do ataque demonstrado há pouco contra cifras de fluxo. Porém, 
a regra de não usar a mesma senha para vários arquivos cifrados vale também com o uso de IV, pois há 
técnicas de criptoanálise que conseguem burlar essa estratégia.
A figura a seguir mostra um exemplo de algoritmo de criptografia usando cifra de fluxo, o RC4, 
desenvolvido por Ronald Rivest:
Vetor de 
inicialização
Texto 
cifradoRC4+
+
Chave 
secreta
Mensagem Hash
Figura 44 – Algoritmo RC4
70
Unidade II
Logística de chaves
Verificador de 
integridade
Verificador de 
integridade
= ?
XOR XOR
PRNG PRNG
Semente Semente
Figura 45 – Diagrama de aplicação algoritmo RC4
Segundo Zochio (2016), nas cifras de bloco, um bloco de determinado tamanho deve ser cifrado 
de cada vez e o conjunto de operações matemáticas envolvendo a chave é repetido a cada bloco, como 
mostra a figura seguinte.
Não é possível cifrar menos que o tamanho de um bloco determinado pelo algoritmo de cifra. Os algoritmos 
que cifram em blocos efetuam operações de substituição e transposição, simultaneamente.
Bloco 1
64 bits
Bloco 2
64 bits
Bloco 3
64 bits
Bloco 4
64 bits
Bloco 5
32 bits
Padding
32 bits
Bloco 1
64 bits
Bloco 2
64 bits
Bloco 3
64 bits
Bloco 4
64 bits
Bloco 5
64 bits
Arquivo 288 Bytes
Arquivo CIFRADO com 320 Bytes (incluindo padding)
Chave K Chave K Chave K Chave K Chave K
CIFRA CIFRA CIFRA CIFRA CIFRA
Figura 46 – Cifra de bloco
No caso da cifra da figura anterior, o tamanho do bloco é 64 bits. Como o arquivo não é múltiplo 
de 64 bits, um complemento (padding) foi inserido no bloco 5. Cabeçalhos inseridos no arquivo cifrado 
devem informar qual foi o algoritmo usado, qual o tamanho do bloco e qual o tamanho real do arquivo 
para que, no momento da decifração, o padding seja descartado.
Um possível problema com cifras em bloco é a existência de blocos repetitivos que acabam por criar 
um padrão. Para evitar o reconhecimento de padrões repetitivos, usam-se os modos de cifra: ECB, CBC, 
CFB e OFB, dos quais falaremos melhor a seguir.
71
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
No modo ECB (electronic code book), a mensagem é dividida em blocos de tamanho pré-determinado 
pelo algoritmo de criptografia. Cada bloco é cifrado separadamente e depois concatenado na mesma 
ordem. O grande inconveniente dessa técnica é que blocos idênticos da mensagem original vão produzir 
blocos cifrados idênticos, o que pode não ser desejável.
Texto plano Texto plano Texto plano
Criptografar 
cifra de bloco
Criptografar 
cifra de bloco
Criptografar 
cifra de bloco
Texto cifrado Texto cifrado Texto cifrado
CHAVE CHAVE CHAVE
Figura 47 – ECB
No CBC (cipher block chaining), é feita uma operação XOR entre o bloco de texto plano e o vetor 
de início, e então ocorre a codificação.
No CFB (cipher feedback block), o vetor de início e a chave são cifrados de acordo com o algoritmo 
de criptografia, e o resultado é operado com o texto plano, usando-se XOR; o resultado obtido, por sua vez, 
será usado para operar a cifra do algoritmo com a chave, e assim sucessivamente, até o fim da mensagem.
Vetor de inicialização (IV)
Texto plano Texto plano Texto plano
Criptografar 
cifra de bloco
Criptografar 
cifra de bloco
Criptografar 
cifra de bloco
Texto cifrado Texto cifrado Texto cifrado
CHAVE CHAVE CHAVE
Figura 48 – CFB
O OFB (output feedback block) é muito similar ao CFB, exceto pelo fato de que o resultado da cifra 
obtida entre IV e a chave é aplicado ao próximo bloco antes de ser realizado um XOR com o texto plano, 
a fim de obter o texto cifrado.
3.2 Chaves assimétricas
O principal problema apresentado pelas chaves simétricas e que por muito tempo era tido como uma verdade 
imutável era o de que as chaves devem ser simétricas. Assim, usando um exemplo de Singh (2020), se José 
quisesse trocar uma mensagem criptografada com Maria, ela teria que conhecer a cifra para poder decifrá-la. 
Contudo, se quem gerou a cifra foi José, como Maria poderia conhecê-la? José obrigatoriamente tinha que se 
encontrar com Maria para lhe passar a cifra – ou pior, teria que mandar alguém fazer isso em seu lugar.
72
Unidade II
Foi apenas na década de 1970 que isso mudou, quando sugiram três estudiosos da criptografia que 
colocariam em xeque essa verdade absoluta: Whitfield Diffie, Martin Hellman e Ralph Merkle.
O desafio era fazer que com que a chave utilizada para cifrar não fosse a mesma usada para decifrar e 
ainda de um modo que, embora fosse possível à chave utilizada para decifrar ser empregada para cifrar, ela 
não fosse capaz de reverter o processo – ou seja, apenas a chave utilizada para cifrar estaria apta a decifrar.
Figura 49 – Chave assimétrica, uma chave tranca e outra abre, e vice-versa
Diffie, Hellman e Merkle pensaram a princípio em materializar a ideia por um processo que usasse 
um kit contendo uma caixa que pudesse ser lacrada por um cadeado. Uma pessoa que desejasse receber 
informações de outra sigilosamente deveria enviar esse kit com o cadeado já aberto, mas sem a chave. 
O destinatário colocaria a mensagem na caixa e a trancaria com o cadeado recebido, contudo, não 
poderia mais abrir o cadeado. O próximo passo seria devolvê-la ao remetente da caixa, o qual, ao receber 
a caixa, utilizaria a chave do cadeado e resgataria a mensagem protegida.
Imaginando que podemos ter vários cadeados que podem ser abertos exclusivamente por essa chave, 
podemos remeter publicamente vários desses kits (caixa mais cadeado aberto) para diversas pessoas. Contudo 
como a chave é privada do fornecedor do kit, somente este poderá abrir os cadeados das caixas. Esse 
procedimento garante o sigilo da informação mesmo que diversas pessoas utilizem os cadeados idênticos – 
nenhuma conseguirá abrir o cadeado utilizado pela outra, apenas o dono da chave conseguirá fazê-lo.
Figura 50 – Chave assimétrica A remete seu cadeado para B, 
que tranca a caixa com o cadeado, o qual somente será aberto pela chave de A
73
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Para trazer a ideia do cadeado para o mundo da criptografia, existia um problema a ser resolvido 
por Diffie, Hellman e Merkle: a ordem do “último dentro primeiro fora”, ou seja, a questão de que 
o último estágio da cifragem deve ser o primeiro na decifração. No exemplo do cadeado, essa 
questão não representa problemas, pois a ordem de abertura não tem importância, entretanto, na 
criptografia, é crucial.
No exemplo de Maria e José, quando José realizou a última instância de cifragem, ele deveria ser o 
primeiro a decifrar, mais foi Maria que retirou sua cifra em primeiro lugar. Se fizermos uma analogia, 
seria como se tirássemos as meias antes dos sapatos.
Embora o modelo das caixas não fosse a solução, inspirou a busca por ela, e residia na ideia de 
encontrar uma forma através da qual mesmo que uma terceira pessoa, que vamos chamar de Eva, 
conseguisse ver as mensagens de João para Maria e conhecesse parte do processo, não conseguiria 
decifrar seu conteúdo.
Diffie, Hellman e Merkle tinham que encontrar uma equação de mão única para isso. Foi então 
que recorreram à aritmética modular, a qual, ao contrário da aritmética normal, não deixa pistas úteis. 
Além disso, a reversão, nesse caso, é muito difícil, a única forma de fazê-la é a criação de uma tabela 
calculando vários valores de x até que a resposta correta seja encontrada.
No quadro seguinte estão representados diversos valores da função 3x calculados com a aritmética 
normal (linha 2) com a função aritmética modular (linha 3). A função aumenta continuamente na 
aritmética normal, o que é passível de ser previsto, enquanto, na aritmética modular, é altamente 
errática, dificultando a previsão.
Quadro 4 – Representação errática da aritmética modular
 Função Aplicação da função
x 1 2 3 4 5 6
3x 3 9 27 81 243 729
3x (mód 7) 3 2 6 4 5 1
Adaptado de: Singh (2020, p. 288).
A aritmética modular levou Diffie, Hellman e Merkle a conseguir, de forma teórica, validar a 
criptografia assimétrica como um novo meio de cifrar e decifrar mensagens e textos.
Utilizando como base o exemplo Singh (2020), podemos representar como José e Maria se comunicam de 
forma assimétrica sem que a nossa terceira personagem, Eva, consiga decifrar a mensagem, mesmo 
de posse dela.
No quadro a seguir está disposta a função de mão única genérica na qual Yx (mód P). Maria e José 
escolheram valores para Y e P, e daí concordaram com uma função de mão única7x (mód 11).
74
Unidade II
Quadro 5 – Representação de uma transmissão 
assimétrica por meio da aritmética modular
Fases Maria José 
Fase 1 
Maria escolhe um número, 
digamos 3, e o mantém em 
segredo. Vamos chamar de A o 
número dela
José escolhe um número, 
digamos 6, e o mantém em 
segredo. Vamos chamar de B o 
número dele
Fase 2 
Maria introduz o 3 na função 
de mão única e o resultado de 
7A (mód 11): 73 (mód 11) = 343 
(mód 11) = 2
José introduz o 6 na função de 
mão única e o resultado de 7B 
(mód 11): 76 (mód 11) = 117.649 
(mód 11) = 4
Fase 3
Maria chama o resultado de 
seus cálculos de alfa e envia seu 
resultado, 2, para José
José chama o resultado de seus 
cálculos de beta e envia o seu 
resultado, 4, para Maria
A troca
Normalmente esse seria um momento crucial porque Maria e José 
estão trocando informações, e, portanto, essa é uma oportunidade 
para Eva escutar e descobrir os detalhes da informação transmitida. 
Contudo, Eva pode ouvir sem comprometer a segurança final do 
sistema. Maria e José podem usar a mesma linha telefônica através 
da qual escolheram os valores de Y e P e Eva pode interceptar esses 
números que estão sendo trocados, ou seja, 2 e 4. Contudo, esses 
números não são a chave, e por isso não importa que Eva os conheça
Fase 4 
Maria pega o resultado de José e 
calcula a solução de βA (mód 11): 
46 (mód 11) = 64 (mód 11) = 9
José pega o resultado de Maria e 
calcula a solução de αB (mód 11): 
26 (mód 11) = 64 (mód 11) = 9
A chave Dessa forma, Maria e José terminaram com o mesmo número 9. Essa é a chave!
Adaptado de: Singh (2020, p. 290).
Portanto é necessário que os participantes de um processo criptográfico se utilizem de um mesmo 
algoritmo, que pode ser de conhecimento público, possuam as chaves para cifrar e decifrar a informação, 
e que tanto a mensagem como a chave possam ser trocadas entre eles de modo seguro. A isso chamamos 
de protocolo seguro.
Há protocolos que permitem gerar e trocar chaves de modo seguro, tudo efetuado eletronicamente, 
sem a necessidade de trocar papéis com chaves ou outro meio físico.
Em 1976, Diffie, Hellman e Merkle apresentaram, na Conferência Nacional de Computação, seus 
estudos, nos quais provaram ser possível e segura a troca de chaves dentre duas entidades, mesmo 
utilizando um canal de comunicação inseguro. Segundo Singh (2020), baseavam-se na utilização de 
números primos e funções de mão única. Simplificando a teoria de DHM (Diffie, Hellman e Merkle), 
esboçada no quadro anterior, e para não entrarmos na complexidade algébrica das funções apresentadas 
pelo trio, faremos uma analogia que, em vez de números, usa cores de tintas.
75
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Cor 
secreta 
de A
Cor 
secreta 
de B
Alguém que 
intercepta a 
comunicação
Intercepta e 
copia as cores 
trocadas 
entre A e B
Cor comum
Troca das 
cores em 
meio público
Segredo
Figura 51 – Analogia por tintas do algoritmo DHM
Imagine que você possua 2 litros de tinta azul, e seu colega, 2 litros de tinta amarela, um não 
sabe a cor do outro. Vocês combinam que cada um deve misturar um litro da tinta que possuem com 
um litro de cor vermelha. Nesse momento, um terceiro que esteja escutando o diálogo também tem 
1 litro de tinta vermelha, mas desconhece as cores dos outros. Você e seu colega trocam suas misturas 
entre si (agora com um total de 2 litros). Cada um acrescenta à mistura recebida o litro de tinta restante. 
Ao final, cada um terá em sua mistura 3 litros compostos de 1 litro de vermelho (comum a ambos), 
1 litro de sua cor secreta e 1 litro da cor secreta do outro, e mesmo que o terceiro que espionava a troca 
de litros inserisse ao seu litro vermelho, uma cópia dos litros trocados entre cada um, ele, ao final, teria: 
3 litros vermelhos, 2 litros da sua cor secreta e 2 litros da cor secreta de seu colega. Com certeza a cor 
seria diferente das obtidas por você e seu colega.
Esse protocolo de troca de chaves ficou conhecido como DHM. Veremos o passo a passo ilustrado 
na sequência:
1. Definimos em claro, os números primos comuns.
Primos 
comuns 
7 e 11
7 11
Figura 52 – Analogia por tintas do algoritmo DHM
76
Unidade II
2. Cada participante define seu número secreto.
Números 
secretos de A e B
3 e 6
3 6
Figura 53 – Analogia por tintas do algoritmo DHM
3. Cada um aplica os números primos e número secreto em uma função matemática de mão única.
Função “mão única” 
Yx(mod P) 7
3(mod 11) 76(mod 11)
Figura 54 – Analogia por tintas do algoritmo DHM
4. O resultado de cada um é remetido em meio público ao outro.
Resultado Troca em 
meio público
2 4
Figura 55 – Analogia por tintas do algoritmo DHM
5. O valor recebido é recalculado pelos participantes utilizando a mesma função, só que reaplicando 
o número secreto de cada um.
Função “mão única” 
Yx(mod P) 43(mod 11) 26(mod 11)
Figura 56 – Analogia por tintas do algoritmo DHM
6. Os valores gerados são iguais, portanto a chave é “transportada” entre as partes.
Chave 9 9
Figura 57 – Analogia por tintas do algoritmo DHM
Apesar de eficiente, o processo exige que as partes estejam sistemicamente falando, “on-line”, 
ou seja, o processo de troca de informações deve, preferencialmente, ocorrer simultaneamente 
entre as partes.
77
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Contudo, nem sempre é viável que A e B estejam disponíveis ao mesmo tempo para efetuarem um 
DHM. É possível que A envie sua parte do cálculo (tinta secreta de A + tinta comum) para B e aguarde 
até que B esteja disponível para enviar seu resultado para A. Isso funciona, mas não permite a pronta 
comunicação da mensagem, a qual fica refém da disponibilidade dos participantes para que uma chave 
seja gerada e só depois seja remetida.
DHM, assim, provou que não era mais necessário o encontro pessoal ou utilização de meio 
inseguro para transferir uma chave (no caso, chave simétrica), porém não resolveu o problema 
de a mensagem ser dependente da disponibilidade das partes para ser gerada de forma segura, 
ou seja, cifrada.
Faltava colocar em prática essa teoria maravilhosa. O próprio Diffie – o D do DHM –, em 1975, 
elaborou os princípios para que o problema de distribuição de chaves fosse resolvido. Ele definiu que 
para que fosse possível a distribuição de chaves de modo atemporal e seguro, deveria haver 1 par de 
chaves: uma somente de conhecimento de A e outra que poderia ser de conhecimento público. Já vimos 
o resultado dessa ideia quando falamos de chaves assimétricas.
O trio DHM tentava resolver a teoria proposta por Diffie, mas foram Ron Rivest, Adi Shamir e Leonard 
Adleman que transformaram a teoria em prática. Assim, em 1977, o novo trio conseguiu resolver o 
problema, com uma nova cifra assimétrica que ficou conhecida como RSA.
Seu novo sistema de criptografia assimétrica é chamado de criptografia de chave pública.
Simétrica
PUB PRI
SimétricaSimétrica
Criptografia do texto
Cifrada
Encrip
Encrip
Decrip
Decrip
Texto 
claro
Texto 
claroTexto 
cifrado
A B
BB BB
Figura 58 – Esquema simples de transmissão com chave assimétrica híbrida
Apesar de toda a evolução quanto à troca e distribuição de chaves, ainda era necessário romper o 
impacto que os cálculos com enormes números primos e a aplicação de chaves assimétricas causava no 
desempenho dos computadores.
Diferentemente da chave simétrica, que é eficientemente processada pelos computadores, as chaves 
assimétricas exigem muito poderio computacional para cifrar ou decifrar textos. Isso manteve o uso 
de chaves assimétricas como a RSA restrito a grandes empresas ou governos, os únicos que possuíam 
equipamentos capazes de fazer operações tão pesadas.
78
Unidade II
Quadro 6 – Número de operações e tempo necessário 
para fatorar n utilizando-se computadores modernos
Nº dígitos Nº operações Tempo
50 1,4 x 1010 3,9 horas
100 2,3 x 1015 74 anos
300 1,5 x 1029 4,9 x 1015 anos
500 1,3 x 1039 4,2 x 1025 anos
Em 1980, Phil Zimmermann, acreditando que todos deveriam ter o direito à privacidade 
oferecidopela cifra RSA, desenvolveu o PGP – Pretty Good Privacy. Ele simplesmente juntou as 
técnicas de cifragem por chave simétrica com as de cifragem assimétrica. Fez isso de um modo 
tal que grandes textos fossem cifrados com chaves simétricas (portanto, rapidamente) e a chave 
com a assimétrica, que por ser bem menor que o texto, é rapidamente processada. Nesse processo, 
também criou o procedimento de busca automática da chave pública (bastava digitar o nome do 
destinatário na ferramenta).
Suas contribuições permitiram a troca sigilosa de e-mails entre os possuidores do PGP, o qual foi 
gratuitamente fornecido na internet.
O PGP tinha uma única falha, não havia muita certeza se a chave pública procurada automaticamente 
pela ferramenta era a do destinatário correto, pois dependia de uma rede de confiança na qual usuários 
do PGP endossavam chaves públicas de outros usuários. Poderia haver conluio ou não haver usuários 
suficientes para o endosso.
A aplicação de um algoritmo criptográfico está atrelada a algum tipo de protocolo. Protocolo é uma 
sequência de atividades a serem realizadas dentre as quais se encontram os elementos utilizados em criptografia, 
como: criptografia simétrica; criptografia assimétrica; códigos de autenticação de mensagens (MAC); 
funções Hash ou de mão única; esquemas de assinatura digital e geradores de números aleatórios.
Em termos práticos, podemos pensar em como ocorria a troca de mensagens criptográficas 
utilizando a máquina Enigma, na qual as letras, ao serem pressionadas no teclado, iluminavam uma 
letra correspondente para aquele momento, pois simultaneamente o mecanismo interno alterava 
a posição de circuitos físicos de tal modo que se a mesma letra fosse pressionada novamente, 
iluminaria uma letra diferente. Isso era obtido por meio de rodas dentadas que se moviam a cada 
tecla pressionada, reconfigurando a máquina de modo a alterar o caminho a ser executado pelo 
sinal elétrico.
A configuração da Enigma estava baseada na alteração da posição dessas rodas e das combinações 
de fios elétricos. E essas alterações eram executadas conforme um livro conhecido como “livro dos 
códigos”, portanto, esse livro continha as chaves a serem aplicadas à Enigma.
79
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Portanto, o procedimento de escolha da chave no livro, configuração das rodas e fios elétricos, 
bem como a execução dos procedimentos de teste antes da criptografia, eram parte do protocolo de 
cifragem de informações.
Historicamente, apesar de a Enigma ser extremamente difícil de ser quebrada em seu processo 
criptográfico (podemos chamar de algoritmo Enigma), foi o protocolo aplicado a causa de sua ruína.
 Saiba mais
Para saber mais sobre a criptografia utilizada pelos alemães na Segunda 
Grande Guerra, assista ao filme:
O JOGO da imitação. Dir. Morten Tyldum. Reino Unido; EUA: Black Bear 
Pictures, 2014. 114 minutos.
3.2.1 A importância das chaves públicas e privadas
A viabilidade técnica da criptografia assimétrica passa pela geração das chaves públicas e privadas. 
A nossa analogia descreve o processo criptográfico realizado pelas chaves assimétricas, que exige chaves 
consideradas privadas, de uso exclusivo de uma pessoa ou sistema, e chaves consideradas públicas 
(cadeado aberto), que são distribuídas publicamente. Por isso, sistemas criptográficos que utilizam 
chaves assimétricas são também conhecidos com sistemas de chaves públicas.
Figura 59 – Sistema de chaves públicas – sigilo da comunicação
No Brasil, a infraestrutura que controla oficialmente esse tipo de chaves é conhecida como 
ICP-Brasil (infraestrutura de chaves públicas).
Como vimos, para que alguém mande uma mensagem em segredo para você, deve utilizar o 
kit público do destinatário (caixa + cadeado aberto), assim, utiliza a chave pública do destinatário. 
Do mesmo modo, para você responder, deverá utilizar o kit público dele, ou seja, a chave pública do 
destinatário da mensagem.
80
Unidade II
Depósito de chaves públicas
Figura 60 – “Kit público” – metáfora
Contudo, o que aconteceria se fosse possível, no mundo real, o contrário: o remetente, dono do 
kit, trancá-lo utilizando sua chave privada? Pelo princípio de chaves assimétricas, somente a respectiva 
chave pública poderia abrir o kit e extrair seu conteúdo.
Como a chave é pública, qualquer um poderia abrir o kit. Então, não se está garantindo o sigilo da 
informação, pois qualquer um pode abrir o cadeado trancado pela chave privada.
A questão é que esse processo inverso não visa ao sigilo, mas você terá a absoluta certeza de que a 
origem da mensagem é o remetente, pois conseguiu abrir o kit com a chave pública dele.
Figura 61 – Sistema de chaves públicas – certeza do remetente
Assim, em sistemas de criptografia assimétrica, não só o sigilo é garantido, mas também ganha-se a 
certeza de quem foi o remetente.
Nos exemplos anteriores, vimos dois objetivos atingidos:
• Confidencialidade: para enviar uma mensagem sigilosa a alguém utilizamos sua chave pública 
(cadeado aberto), pois sabemos que ninguém conseguirá abri-lo, exceto quem possuir a chave 
privada do destinatário.
81
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
• Certeza do remetente: este “tranca” uma informação, que não necessariamente é sigilosa, com 
sua chave privada. Qualquer um pode abrir a tranca, desde que use a respectiva chave pública 
desse remetente. Isto é conhecido como assinatura digital.
No primeiro objetivo, não se tem certeza do remetente, apenas foi garantido o sigilo da mensagem, já 
no segundo não houve sigilo da mensagem, mas temos certeza de quem remeteu. Para garantirmos que 
os objetivos de confidencialidade como o da certeza do remetente sejam atingidos, ambos os processos 
devem ocorrer simultaneamente.
E, para possibilitar essa simultaneidade, destinatário e remetente devem possuir suas respectivas e 
distintas chaves privadas e públicas.
Assim para garantir o sigilo, um remetente utiliza a chave pública do destinatário para cifrar a 
mensagem, e, em seguida, cifra o pacote com sua chave privada. O destinatário, ao receber a mensagem 
cifrada, utiliza a chave pública do remetente, se conseguir abrir, terá a certeza de quem remeteu a 
mensagem. Em seguida, utiliza sua chave privada e obtém a mensagem enviada.
Figura 62 – Sistema de chaves públicas – sigilo e certeza do remetente
 Lembrete
O principal benefício da criptografia assimétrica está no fato de não 
utilizar a mesma chave para cifrar e decifrar uma mensagem, ou seja, a 
chave que abre não fecha e a chave que fecha não abre, conceito de chaves 
públicas e privada.
82
Unidade II
3.2.2 Número primos e a criptografia assimétrica
Os números primos são normalmente utilizados na geração das chaves assimétricas. Enquanto na 
chave simétrica basta gerar sequências numéricas com alto grau de entropia, nas chaves assimétricas, 
devem ser gerados aleatoriamente tanto números primos como sequências numéricas que, inseridas em 
funções matemáticas de mão única, permitem a geração do par de chaves pública e privada.
O número primo tem como propriedade matemática ser divisível somente por 1 e por ele mesmo. 
Quando falamos em funções matemáticas de mão única, os números primos são essenciais, pois 
dificultam o processo de tentativa de reverter a função e identificar os elementos originais da equação.
Por exemplo, se multiplicarmos os números primos 5 por 7, obteremos facilmente 35, contudo, 
dado 35, como obteremos os fatores iniciais 5 e 7? Portanto, em uma função matemática de mão 
única, a obtenção do resultado é fácil, contudo, a identificação dos fatores participantes é difícil. Para 
reverter o processo, necessitamos fatorar o resultado: começaríamos com o primeiro número primo, 
3, e descobriríamos que ele não divide bem 35, então passaríamos para o próximo, que é 5, e então 
chegaríamos ao 7.
No exemplo, é facilmente dedutível que 35 pode ser fatorado por 5, obtendo o 7. Contudo, e 
se estivermos trabalhando com números primos gigantes? Quais seriam os fatores que geraramo 
resultado 408.508.091? Começamos pelo primo 3, seguido do 5, então 7, e assim por diante. Após 
2.000 números primos testados, chegaremos ao primo 18.313. Sabendo um fator, é fácil descobrir o 
segundo, que é 22.307.
Agora imagine o esforço para fatorar um número e descobrir os primos que foram utilizados na 
geração dele se esses primos forem da grandeza de 1065. É um número de tamanho 1065 que multiplica 
outro de 1065 para gerar como resultado um número com tamanho de 10130 (10 seguido de 130 zeros).
Em criptografia, quanto maior forem os números primos participantes da função de mão única, 
maior será o esforço para identifica-los e menor a probabilidade de fazê-lo.
4 SERVIÇOS CRIPTOGRÁFICOS
Segundo Wykes (2016), os diferentes serviços construídos com base nas primitivas simétricas sofrem 
do problema potencialmente sério de precisar sempre compartilhar a mesma chave entre as partes.
Importantes serviços que se servem da criptografia de chaves públicas, como forma de eliminar esse 
problema, oferecem duas funções complementares: a encriptação de quaisquer informações com uso de 
uma chave pública e sua subsequente decriptação com uso da chave privada correspondente.
Um dos aspectos mais importantes desse serviço é que ele permite que qualquer um que, porventura, 
obtiver a chave pública, seja capaz de encriptar dados com ela. Entretanto, tais dados encriptados serão 
efetivamente selados, para leitura exclusiva somente daquele que possuir a chave privada.
83
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Na prática, essa assimetria se dá pela questão de que, enquanto muitos podem obter a chave pública 
– mesmo porque, comumente ela é distribuída mediante um certificado digital – geralmente a chave 
privada é mantida protegida na posse de uma única pessoa ou equipamento.
Há duas diferentes técnicas de encriptação, a direta e a híbrida, sendo que a primeira é 
possível somente com o algoritmo RSA, enquanto a segunda também pode ser aplicada aos 
algoritmos DH e ECC.
 Observação
A encriptação híbrida com DH e ECC é uma técnica que também pode 
ser utilizada com primitivas criptográficas Diffie-Hellman, nas versões 
comum e de curvas elípticas, ambas geralmente associadas aos processos 
de estabelecimento dinâmico de um segredo compartilhado (WYKES, 2016).
4.1 Encriptação com chaves públicas
Segundo Wykes (2016), uma característica importante do algoritmo RSA é que ele nunca deve ser 
utilizado diretamente. Em virtude de sua origem na matemática de exponenciação modular, não oferece 
segurança, a não ser que seja utilizado em combinação com alguma técnica adicional. As duas principais 
técnicas utilizadas em combinação com ele serão brevemente descritas a seguir.
Conforme explica Wykes (2016), os métodos mais utilizados para difundir maior segurança ao RSA 
fazem parte do PKCS (public key cryptography standard), uma série de documentos que descrevem 
padrões para diversos aspectos do uso de criptografia de chaves públicas.
O primeiro documento dessa série, o PKCS#1 (JONSSON; KALISKI, 2003), dispõe sobre o próprio 
algoritmo RSA e a formatação de dados por ele utilizados e define quatro métodos — dois para a 
encriptação de dados com chave pública e dois para assinaturas digitais realizadas com a chave privada.
4.1.1 Encriptação RSA pelo padrão PKCS#
Focado na encriptação de dados com chave pública, o primeiro método de encriptação, comumente 
denominado PKCS#1-v1.5, envolve a inclusão de alguns dados aleatórios, no intuito de oferecer proteção 
contra ataques de criptoanálise. Sem essa aleatoriedade, seria possível que um cracker tentasse descobrir 
as características do bloco encriptado por meio de um ataque de força bruta. Como a chave pública é 
de fácil obtenção, o atacante seria capaz de encriptar uma grande quantidade de blocos diferentes com 
ela na tentativa de chegar ao mesmo valor de um bloco encriptado que ele possui.
A presença de aleatoriedade é uma tentativa de introduzir um nível de não determinismo no 
processo de encriptação e dificultar possíveis ataques. Como o padrão determina que deve haver 
no mínimo oito bytes de preenchimento, a consequência é que um bloco comporta uma quantia menor 
de dados, por exemplo, 245 bytes para uma chave de 2.048 bits – sendo o máximo teórico de 256. 
84
Unidade II
É claro que quando os dados a serem encriptados forem menores, o preenchimento aleatório é 
aumentado, de forma a jogar os dados para o extremo direito, ou seja, para o final da área.
Identificação positiva
Gera certificado
Gera requisição de 
certificado padrão 
PKCS#10
Cancela operação
Sim
Autoridade 
certificadora
Envia requisição
Entrega certificado ao cliente
Cliente
Não
Figura 63 – Requisição de certificados PKCS#010
Cuidados especiais com a encriptação PKCS#1
Embora de fácil entendimento e rápida implementação, o mecanismo de encriptação PKCS#1-v1.5 
sofre de uma séria vulnerabilidade. Em virtude de uma característica da matemática do RSA, um ataque 
conhecido como million message attack se torna possível.
Descoberto originalmente em 1998 pelo criptógrafo Daniel Bleichenbacher, envolve o envio de 
grande quantia de mensagens, sendo cada mensagem cuidadosamente calculada a partir do resultado 
das mensagens anteriores. O ataque tem como resultado o desastroso poder de revelar o conteúdo da 
mensagem original. Dessa forma, pode expor o dado originalmente encriptado, mesmo sem possuir a 
chave privada.
1. Cliente - requisição
2. Reposta do servidor chave pública RSA
3.Tempo t1 hipótese g - gxn 
4. Alerta
5. Tempo t1 cálculo t1 - t2
SSL TLS
Figura 64 – Million message attack
Segundo Wykes (2016), em função da alta quantidade de mensagens necessárias, esse ataque é mais 
facilmente direcionado contra servidores web configurados com o protocolo seguro TLS, mas também 
tem obtido êxito quando aplicado a dispositivos seguros como smartcards e tokens criptográficos.
85
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Como resposta à publicação desse ataque, foi lançada uma nova versão do padrão PKCS#1, a versão 
2.0, detalhando um método novo de encriptação, conhecido como Oaep (optimal asymmetric encryption 
padding), mais complexo do que o PKCS#1-v1.5. Para a maioria das aplicações de encriptação RSA, esse 
método é altamente recomendado, a não ser que haja rigorosos controles quanto ao acesso a serviços 
de decriptação, de forma que esse ataque seja impossibilitado.
Message
M
Encryption
C
G
H
P2P1
< m bits
m bits
m bits
m bits
k bits
r
k bits
(m + k) bits
(m + k) bits
Message
M
Decryption
C
G
H
P2P1
< m bits
m bits
m bits
m bits
r
k bits
k bits
(m + k) bits
(m + k) bits
M: Mensagem padded
r: Número aleatório de tempo
P: Texto em claro P1 / P2
C: Texto cifrado
G: Função pública (k-bit para m-bit)
H: Função pública (m-bit para k-bit)
Figura 65 – Oaep
4.1.2 Encriptação híbrida
As primitivas de chaves públicas assimétricas são centenas de vezes mais lentas do que as de chaves 
simétricas. Quando é preciso encriptar quantidades maiores de informações, o processo com chaves 
públicas vai aos poucos tornando-se inviável pelo tempo excessivo que demanda.
Uma solução inteligente para esse problema envolve a combinação de primitivas de ambos os 
tipos, o que é conhecido como encriptação híbrida. Segundo Wykes (2016), com essa técnica, a chave 
pública encripta somente um pequeno bloco de dados, que contém uma segunda chave, simétrica e, 
normalmente, gerada randomicamente. Essa segunda chave, por sua vez, é utilizada para encriptar 
as demais informações por meio de um serviço de encriptação simétrica, como uma cifra de blocos 
AES, por exemplo, em modo CBC ou CTR. Assim, a encriptação híbrida é muito mais rápida do que a 
encriptação toda feita com a chave pública.
86
Unidade II
A decriptação procede de forma semelhante, primeiramente decifrando o bloco que contém a 
chave simétrica, para depois decriptar o restante dos dados com essa segunda chave. Feito isso, a chave 
simétrica extraída pode ser descartada, pois jácumpriu sua razão de ser.
Boas práticas pedem que sejam tomados alguns cuidados adicionais com a chave simétrica, no 
intuito de aumentar a segurança do serviço de encriptação híbrida. Especificamente antes de seu uso, 
é recomendado que a chave, devidamente recuperada do bloco encriptado, seja pré-processada por 
alguma função de sentido único, no mínimo uma função de hash, preferencialmente uma das funções 
de derivação de chaves.
Segundo Wykes (2016), o mesmo procedimento também deve ser executado antes do uso da chave 
simétrica para a encriptação de dados. Essa exigência faz mais sentido quando nos lembramos de que 
a encriptação híbrida não oferece nenhuma garantia de integridade dos dados. Portanto, é comum 
enviar duas chaves devidamente protegidas com a chave pública, em vez de uma única chave simétrica. 
Uma delas será utilizada para a encriptação dos demais dados e a outra fará parte do cálculo de um 
MAC, determinado sobre os dados recém-cifrados, no intuito de garantir sua integridade.
Como já mencionado anteriormente, a encriptação híbrida com DH e ECC é uma técnica de 
encriptação híbrida que também pode ser utilizada com primitivas criptográficas Diffie-Hellman, nas 
versões comum e de curvas elípticas, ambas geralmente associadas aos processos de estabelecimento 
dinâmico de um segredo compartilhado (WYKES, 2016).
 Lembrete
Na troca Diffie-Hellman, é preciso dois pares de chaves para gerar o 
segredo compartilhado, um par pertencente a cada lado na comunicação.
No primeiro passo da troca Diffie-Hellman, para aproveitar primitivas desse tipo para encriptação de 
dados, precisamos que uma das partes fixe sua chave privada e gere a chave pública, que, a partir daí, 
será distribuída publicamente, talvez mediante um certificado digital. No segundo passo, de posse dessa 
chave pública, a parte desejosa de enviar dados sigilosos gera uma chave privada temporária e efetua o 
cálculo normal do processo DH.
Sem que haja necessidade de comunicação direta, o resultado é um segredo que depende da chave 
privada temporária recém-gerada e da chave pública do destinatário da mensagem. Esse segredo é 
aplicado então para a encriptação das demais informações por meio de alguma técnica de encriptação 
simétrica, como ocorre na encriptação híbrida descrita anteriormente.
Enquanto a chave pública recém-gerada deve ser concatenada à mensagem encriptada, o que é 
preciso para sua futura abertura, a chave privada gerada no passo anterior pode ser destruída, apagada 
ou esquecida, pois não terá mais serventia.
87
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Embora essa seja uma descrição bastante simplificada do processo, seu objetivo é simplesmente a 
identificação dos principais aspectos dessa interessante técnica, muitas vezes referida pela literatura 
criptológica como IES (integrated encryption system).
Simétrica
PUB PRI
SimétricaSimétrica
Criptografia do texto
Cifrada
Encrip
Encrip
Decrip
Decrip
Texto 
claro
Texto 
claroTexto 
cifrado
A B
BB BB
Figura 66 – Transmissão com chaves híbridas
Para Wykes (2016), os cuidados especiais com a encriptação híbrida são necessários, pois esses 
métodos contemplam apenas a encriptação dos dados, buscando garantir seu sigilo. No entanto, não 
garantem a integridade ou autenticidade das informações encriptadas e ainda podem sofrer ataques 
que variam desde a alteração indevida das informações até mesmo a quebra do sigilo, derrotando toda 
a proteção, objetivo da encriptação no primeiro instante.
Essas vulnerabilidades podem ser contornadas pelo uso combinado de algum serviço de MAC, 
implicando o transporte de uma segunda chave, de preferência pela utilização de algum serviço de 
encriptação autenticada.
4.1.3 Serviços de assinatura digital
Segundo Wykes (2016), os serviços de encriptação com chaves públicas são fundamentados na 
assimetria e no forte vínculo que existe entre as duas chaves que compõem um par, lembrando que 
a ordem das operações é que, primeiramente, a chave pública encripta para, depois, decriptar com a 
chave privada.
No caso do algoritmo RSA, se invertermos essa ordem, é possível utilizar a chave privada para encriptar 
e a chave pública para decriptar, entretanto, apesar de essa inversão de papéis funcionar tecnicamente, 
para a maioria das aplicações, faz pouco sentido em termos de nossas almejadas garantias de sigilo. Afinal, 
nesse cenário hipotético, todos que porventura possuírem a chave pública, considerada de natureza pública 
e distribuída livremente, serão capazes de decriptar as informações supostamente protegidas.
No entanto, há um segundo aspecto interessante dessa assimetria. Reformulando a lógica, podemos 
afirmar que um dado que decripta corretamente com determinada chave pública somente pode ter sido 
encriptado com a chave privada correspondente. Essa nova regra aufere, em vez de sigilo, uma garantia 
de autenticidade, pois, a priori, nenhuma outra chave privada seria capaz de encriptar a informação 
daquele modo.
88
Unidade II
Isso torna extremamente difícil que alguém negue o fato de ter usado determinada chave privada, 
uma vez que a mera existência de uma informação encriptada com tal chave, passível de comprovação 
pelo uso da chave pública correspondente, é capaz de desmenti-lo.
Segundo Wykes (2016), os processos de assinatura e validação estabelecem os mesmos moldes dos 
serviços de MAC criptográfico. Diferentemente do MAC, no qual é preciso que as duas partes compartilhem a 
mesma chave simétrica, no caso da assinatura digital, somente o assinante possui a chave privada.
A chave pública pode ser distribuída ou disponibilizada publicamente, permitindo que todos 
validem a veracidade de uma assinatura digital. É nisso que reside o principal benefício das 
assinaturas digitais: a capacidade de serem validadas por muitas pessoas ou equipamentos, por isso são 
utilizadas em muitas situações de uso corriqueiro.
Geração de uma assinatura digital
De acordo com o que afirma Wykes (2016), uma função de assinatura digital é composta pela combinação 
de duas primitivas criptográficas, uma função de hash e um algoritmo de criptografia assimétrica.
Para as assinaturas digitais, a função de hash é usada para compactar um conjunto de dados de 
qualquer tamanho, num bloco pequeno que pode ser processado facilmente pelo algoritmo criptográfico 
devidamente alimentado com a chave privada.
Uma boa função de hash criptográfico, como o SHA de 256, é capaz de reduzir e transformar 
quaisquer dados em um bloco de tamanho fixo, no caso, de 32 bytes. Dessa forma, torna-se possível 
a geração de assinaturas digitais para quaisquer formatos de dados, mensagens, documentos ou 
arquivos, independentemente de seu tamanho, formato ou conteúdo. Como benefício, temos o tempo 
de processamento da assinatura, que será reduzido significativamente, pois as funções de hash são mais 
rápidas do que os algoritmos de chaves públicas.
As propriedades e garantias vindas das funções de hash são fundamentais para seu uso com 
assinaturas digitais. Como exemplo principal, temos a propriedade de resistência a colisões: é muito 
difícil encontrar dois diferentes conjuntos de dados que resultem no mesmo valor de hash. Assim, 
tendo em mãos determinado conjunto de dados e o resultado da função hash calculado sobre ele, é 
praticamente impossível encontrar outro conjunto de dados que resulte no mesmo valor de hash.
Essas propriedades significam que uma vez calculado um hash, é extremamente difícil ou até mesmo 
impossível substituir ou alterar os dados originais de alguma forma, sem que essa modificação resulte 
em um valor diferente do hash.
Segundo Wykes (2016), o hash serve para garantir a integridade dos dados, para assegurar que 
eles não sejam alterados, corrompidos ou modificados de qualquer forma. Uma vez calculado o valor 
do hash, ele serve como entrada para o algoritmo assimétrico que, devidamente casado com a chave 
privada, processa-o para gerar a assinatura digital, assim atribuindo a propriedade de autenticidadeao 
valor de hash e, consequentemente, ao documento.
89
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Para o autor, na verificação de uma assinatura digital, ou validação de uma assinatura digital, 
procede-se de forma semelhante, pelo cálculo de um novo hash, a partir dos dados ou documento 
a ser validado. Esse segundo hash tem a função de servir como entrada de um método de validação 
que também recebe a chave pública e a assinatura digital já pronta. Nesse método, é feita uma 
segunda operação criptográfica com uso da chave pública, o que retorna o valor do hash original, que, 
subsequentemente, pode ser comparado com o hash recém-calculado.
Simétrica
PUB
PUB
PRIPRI
PRI
PRI PUB
SimétricaSimétrica
Criptografia do texto
Assinatura digital A
Assinatura digital B
Cifrada
= =
Encrip
Encrip
Digest 
hash
Digest 
hash
Encrip
Encrip
Decrip
Decrip
Decrip
Decrip
Texto 
claro
Hash HashHash Hash
Hash 
cifrado
Hash 
cifrado
Texto 
claroTexto 
cifrado
A B
BBBB
BB
AA
BBBB
BB
AA
Figura 67 – Transmissão de chaves híbridas usando assinatura digital
 Observação
A função hash se trata de um algoritmo que mapeia dados de 
comprimento variável para dados de comprimento fixo. Os valores 
retornados também podem ser chamados de valores hash, códigos hash, 
somas hash (hash sums), checksums ou simplesmente hashes.
Assinaturas digitais com RSA
Uma assinatura digital com RSA é um serviço de assinatura digital simples que pode ser construído 
a partir de uma combinação de duas primitivas criptográficas, sendo elas uma função de sentido único 
e uma função alçapão.
90
Unidade II
A combinação dessas duas primitivas chaves criptográficas oferecerá as propriedades desejadas, pois a função 
de sentido único aponta para a compactação, regularização e garantia de integridade dos dados assinados, 
enquanto a função alçapão do algoritmo assimétrico demostra a propriedade de autenticidade (WYKES, 2016).
Segundo Wykes (2016), existem exigências rigorosas sobre as possíveis formas de gerar assinaturas 
digitais seguras. De forma semelhante à encriptação RSA, a especificação PKCS#1 define um método 
padrão para assinaturas digitais. A utilização de um padrão é fundamental, pois é desejável alto grau 
de interoperabilidade e compatibilidade entre os processos de assinatura digital, pois de nada adiantará 
gerar uma assinatura que não possa ser validada por quem interessa.
O padrão PKCS#1 estipula que o valor do hash, calculado a partir do documento assinado, seja 
formatado e justificado em um bloco semelhante ao descrito na parte sobre encriptação com chaves 
públicas. Em seguida, esse bloco será processado pela chave privada por uma operação semelhante à 
decriptação, gerando a assinatura.
Pelo padrão PKCS#1, algumas informações adicionais devem ser acrescidas ao valor do hash calculado. 
Codificadas em uma estrutura denominada digest-info, essas informações servem essencialmente para 
mostrar qual função de hash foi utilizada e para sinalizar o tamanho do hash constante na assinatura.
Paralelamente à existência dessa estrutura, o raciocínio original foi tentar facilitar o trabalho de quem 
for validar uma assinatura, quando é preciso calcular o hash do documento assinado. Como existem 
várias opções à disposição do assinante, obrigatoriamente, quem estiver validando uma assinatura, deve 
utilizar a mesma função.
Cuidados especiais com a assinatura PKCS#1
Até 2016 não existia nenhum ataque concreto contra a estrutura das assinaturas digitais PKCS#1 
da versão 1.5 da especificação (WYKES, 2016). Existem registros de ataques aos processos de assinatura, 
por exemplo, em cenários nos quais ainda era utilizada a MD5, uma função de hash já considerada 
quebrada, mas não contra o PKCS#1.
No entanto, na esteira da publicação de resultados promissores, que poderão levar a futuros ataques 
contra essas assinaturas, foi projetado um novo método de codificação das informações, conhecido 
como PSS (probabilistic signature scheme) e incluído na versão 2.0 da especificação.
A recomendação é utilizar PSS para novos projetos nos quais é possível garantir a compatibilidade 
dos aplicativos de geração e validação das assinaturas com esse novo método. Na prática, como é 
importante prestar bastante atenção à questão de interoperabilidade, muitos sistemas e padrões, mesmo 
relativamente novos, ainda estipulam assinaturas pela versão antiga.
Assinaturas RSA com recuperação de mensagens
Para Wykes (2016), existem formatos alternativos para assinatura digital com RSA, como as 
assinaturas utilizadas para garantir a autenticidade dos cartões EMV de pagamentos.
91
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Um aspecto interessante de certos métodos alternativos é que eles permitem, além da validação 
de autenticidade, a recuperação de determinados dados adicionais do bloco de assinatura, de bastante 
utilidade em certas situações limitadas, como os ambientes restritos dos smartcards, que aproveitam o 
espaço normalmente desperdiçado com o preenchimento do bloco para armazenar informações adicionais.
Como exemplo, podemos mencionar os cartões de crédito, que armazenam um tipo de assinatura 
digital, conhecido como certificado da chave pública do emissor, assinada com uma chave privada 
de 1984 bits. Esse tipo de assinatura contém uma estrutura interna na qual está codificado o hash e 
algumas informações adicionais, mas o restante da área não é utilizado para a função de assinatura. 
Considerando que seria desperdiçado quase 85% do espaço, o padrão EMV aproveita isso para codificar 
boa parte da chave pública do emissor do cartão.
Segundo Wykes (2016), em ambientes limitados e de uso massivo como esses, otimizações desse 
tipo são de fundamental importância, pois proporcionam economia no custo do chip ou dispositivo 
embarcado, que se transforma em milhares de reais para grandes quantidades. Porém, a menos que você 
seja obrigado, a título de compatibilidade e interoperabilidade, a utilizar algum padrão específico como 
o EMV para sistemas de pagamentos, os serviços de assinatura com recuperação de dados devem ser 
utilizados com bastante cuidado, pois aumentam significativamente a possibilidade de existir alguma 
vulnerabilidade que poderá ser explorada.
Digital signature algorithm (DSA)
Para Wykes (2016), outras primitivas criptográficas assimétricas também são passíveis de uso para 
cálculo e validação de assinaturas digitais, como é o caso das famílias de primitivas normalmente 
utilizadas para o acordo de chaves Diffie-Hellman.
Existem diversas variações de assinatura, como as assinaturas EI-Ga-mel, as assinaturas de Schnorr, 
bem como um padrão criado pelo governo americano especificamente para esses serviços, o DSA (digital 
signature algorithm) e sua versão EC-DSA baseada em curvas elípticas. Vale mencionar um detalhe 
importante para a segurança desses serviços, que é o uso de uma chave efêmera.
Cuidados especiais com as assinaturas DSA e EC-DAS
Ainda para Wykes (2016), semelhante aos serviços de encriptação de chave pública, durante o cálculo 
de uma assinatura DSA ou EC-DSA, gera-se uma chave privada efêmera que será utilizada internamente 
pelo serviço. À primeira vista, a chave efêmera não parece muito importante, pois uma vez calculada a 
assinatura, ela é simplesmente descartada.
No entanto, apesar de sua vida curtíssima, ela é de grande importância para a segurança das 
assinaturas e, impreterivelmente, deve ser única, imprevisível e mantida em segredo. Se uma mesma 
chave efêmera for utilizada duas vezes ou se, por algum motivo, vazar alguma parte dela junto com 
a assinatura, por exemplo, por um canal secundário, torna-se viável calcular o valor da chave privada 
principal. E a revelação de uma chave privada pode trazer danos irreversíveis.
92
Unidade II
Para exemplificar a gravidade desse problema, podemos expor dois eventos da vida real. Em dezembro 
de 2010, foi revelada a quebra da chave EC-DSA da assinatura de software do console Playstation 3, 
possibilitada simplesmente porquea Sony sempre utilizava a mesma chave efêmera. Na primeira vez, 
ela tinha sido gerada corretamente, por meio de um gerador de números aleatórios criptográficos, mas, 
depois, todas as demais assinaturas foram feitas com esse mesmo valor.
O segundo exemplo envolve a moeda virtual bitcoin e alguns aplicativos para Android que a 
manipulam. Em meados de 2012, foi identificado um bug de implementação da classe Java Secure 
Random, utilizado por esses aplicativos para a geração de assinaturas digitais. Como resultado, algumas 
assinaturas eram geradas usando o mesmo valor dessa chave temporária, permitindo que fosse calculada 
a chave privada das carteiras virtuais, o que levou ao subsequente roubo da moeda virtual ali contida.
Existe um movimento para a padronização de alternativas, variações da técnica DSA, mas que não 
dependem completamente da unicidade desse valor. Como exemplo, podemos mencionar a biblioteca 
criptográfica Naci (Networking and Cryptography Library), que implementa assinaturas com base em 
curvas elípticas, mas de tal forma que não sofrem dessa vulnerabilidade.
 Observação
A Naci foi criada pelo matemático e programador Daniel J. Bernstein. 
O objetivo principal durante a criação da biblioteca foi evitar vários tipos de 
desastres criptográficos sofridos pelas bibliotecas criptográficas anteriores.
4.2 O segredo das chaves criptográficas
Segundo Wykes (2016), na prática, para que a criptografia possa oferecer proteção satisfatória, não 
basta utilizar serviços criptográficos construídos adequadamente, com base em primitivas criptográficas 
fortes, é preciso também que esses serviços sejam alimentados com chaves criptográficas.
Quando olhamos à primeira vista, essas chaves parecem apenas blocos de dados digitais de variados 
tamanhos e características, conforme demanda cada algoritmo, mas uma chave é muito mais que isso, 
pois ela literalmente tem vida própria. Em sistemas e aplicativos reais, precisamos encarar a chave como 
uma cidadã de primeira classe do mundo da criptografia. São como pessoas VIPs, e devem ser tratadas 
como tal, com muito respeito.
Como na nossa vida, um dos aspectos que merece bastante atenção na vida dessas chaves é a questão 
da moradia. Fazendo uma analogia e segundo Wykes (2016), como cidadãs, as chaves devem viver de forma 
confortável e protegida dos problemas, pois não queremos que uma chave fique perdida, morra antes do 
seu tempo ou, nesse mundo moderno, cada vez mais infestado de ameaças, seja assaltada ou sequestrada.
Dessa forma, ter cuidado com as chaves criptográficas é extremamente importante, pois, de fato, 
uma parcela significativa da segurança dos sistemas e aplicativos construídos com base nas tecnologias 
criptográficas depende da proteção dada às chaves utilizadas.
93
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Assim como as pessoas, as chaves também têm um ciclo natural de vida, pois nascem em algum 
momento, têm uma vida útil, algumas trabalham continuamente e, inevitavelmente, chegam ao momento 
final em que devem morrer ou serem desativadas. Para garantir a segurança em todo o ciclo de vida, a 
inserção das chaves em cada etapa do ciclo deve ocorrer de forma controlada, conforme as características 
e o propósito de cada chave.
Wykes (2016) afirma que existe uma grande diversidade de chaves pelo mundo afora, há muitas 
chaves diferentes, pois elas são utilizadas com propósitos distintos e cada uma possui funções e ciclos 
de vida diversos das outras. A vida útil das diferentes chaves varia desde poucos segundos até algumas 
décadas e, portanto, elas devem receber cuidados diferentes.
Algumas chaves são utilizadas uma única vez, enquanto outras podem participar de milhares – ou 
mesmo milhões – de operações criptográficas. De modo geral, podemos classificar as chaves em três 
grupos com base em sua vida útil: curta, longa e muito longa, embora, por sua natureza, esses termos 
sejam imprecisos e relativos e existam diferenças para cada tipo.
Enquanto algumas chaves devem ser mantidas privadas, somente para uso próprio, há chaves 
públicas que têm visibilidade muito maior, sendo disponibilizadas on-line e ficando visíveis a todos. 
Há ainda chaves compartilhadas e espalhadas em inúmeros dispositivos eletrônicos, cada um igualmente 
responsável pela proteção delas.
Certas chaves são sempre geradas de forma única no mundo, enquanto outras nascem a partir 
de uma segunda chave uma chave mãe ou mestra, ou então são originadas de uma senha e frase 
secreta. Wykes (2016) aponta que existem chaves cuja importância se limita ao momento atual, após 
terem sido utilizadas apenas uma vez, deixam de ser úteis. Outras, mesmo tendo vida mais longa, 
podem perfeitamente ser canceladas e refeitas em caso de perda acidental, sendo, portanto, facilmente 
substituíveis. No outro extremo, há chaves cuja perda ou destruição pode ser apocalíptica. Essas chaves 
precisam de um plano B, uma ou mais cópias de backup, serem guardadas em cofres, em servidores 
redundantes ou com pessoas de confiança.
Em resumo, as chaves têm suas diversidades, desde seus ciclos de vida, rituais de gestação e 
nascimento, estilos de vida e, finalmente, suas mortes. E o profissional criptógrafo precisa compreender 
a importância de cada fase e cada detalhe dessas chaves. Afinal, grande parte de nossa segurança digital 
depende delas.
Assim, segundo Wykes (2016), como as primitivas criptográficas se dividem nas duas principais classes de 
algoritmos simétricos e assimétricos, as chaves se diferenciam igualmente. Denominamos as chaves simétricas 
de chaves secretas porque elas devem ser divulgadas somente a quem deve conhecê-las (WYKES, 2016). 
Por exemplo, aquele que envia o documento encriptado e aquele que o recebe, ou as duas pontas entre as 
quais foi estabelecida uma conexão segura, devem possuir necessariamente a mesma chave secreta.
Na prática, tal chave representa um segredo único, compartilhado entre duas ou mais partes, o que 
pode levar a uma série de complicações. Por mais que a distribuição de determinada chave entre as 
partes seja feita de forma segura, há sempre certo risco de exposição a roubo ou vazamento. E como 
94
Unidade II
comprovar a responsabilidade, em caso de ocorrer o vazamento de uma chave secreta, quando existem 
várias pessoas ou equipamentos que a possuem?
Os algoritmos assimétricos utilizam duas chaves que, juntas, formam pares, literalmente pares 
perfeitos. Por definição, e por bons motivos, são chamadas de chave pública e chave privada.
A chave pública pode ser disponibilizada e distribuída livremente, para milhões de pessoas ou máquinas, 
se for necessário, sem riscos, enquanto a chave privada deve ser sempre mantida protegida, sendo destinada 
apenas a uma só pessoa ou equipamento eletrônico, tendo proprietário, nome e endereço.
Certos autores tratam esses termos como sinônimos, utilizando a frase chave secreta para as chaves 
simétricas e para as chaves “privadas” dos algoritmos assimétricos. Há certa lógica nisso, pois ambas 
devem ser consideradas de circulação restrita e mantidas secretas.
PRI
PUB
PUB
PUB
A B
C
D
AA
AA
AA
AA
Figura 68 – Analogia das chaves
Para Wykes (2016), na maioria das situações, não é desejável compartilhar uma chave privada. 
Predominantemente, a validade legal de uma assinatura digital depende da garantia de que a chave 
privada utilizada na assinatura pertence unicamente ao assinante.
Dada a garantia de não repúdio, uma assinatura somente poderia ter sido feita por aquela única 
chave, portanto, a própria existência da assinatura comprova que foi o dono da chave privada e mais 
ninguém que a assinou. Assim, não se pode negar que houve a assinatura e, logicamente, que não se 
estava ciente e de acordo com os termos contratuais.
Se, ao contrário, fosse possível assinar com uma chave secreta, não seria possível afirmar quem de fato 
fez a assinatura, pois a mesma chave é necessária tanto para gerar quanto para validar uma assinatura e, 
de forma lógica, quem valida uma assinaturadessas também seria igualmente capaz de tê-la criado.
Para Wykes (2016), as chaves secretas utilizadas pelos algoritmos simétricos e os pares de chaves 
assimétricas são bem diferentes. Medimos o tamanho de uma chave em bits e, pelo bom senso, uma 
chave com mais bits parece ser mais segura do que uma menor.
95
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
No entanto, em criptografia, nem sempre o bom senso é correto e chaves para uso dos algoritmos 
simétricos e assimétricos possuem propriedades de segurança bem diferentes umas das outras. Como 
exemplo, podemos mencionar que uma chave AES de 128 bits é considerada bem mais segura do que 
uma chave RSA de 1.024 bits.
Ainda segundo Wykes (2016), quanto maior a quantidade de bits na chave secreta, maior a quantidade 
de valores que ela pode assumir, tornando o processo de adivinhar ou calcular o valor de uma chave 
desconhecida cada vez mais oneroso. Isso se deve ao fato de que uma das formas de calcular o valor de 
uma chave é a técnica de força bruta, em que se tentam todas as possibilidades de valor de uma chave, 
uma por uma, até chegar ao valor correto.
Por outro lado, os algoritmos assimétricos são todos baseado em esquemas matemáticos de números 
grandes. Uma das características desse uso de matemática avançada significa que, enquanto toda chave 
assimétrica é um número, não é qualquer número que funciona como chave.
No caso do algoritmo RSA, o par de chaves é calculado a partir de dois números primos escolhidos 
aleatoriamente. Encontrar esses números primos não é fácil, eles são relativamente raros, pois, para 
ser primo, um número não pode ser divisível por nenhum outro número menor, com exceção do 
número 1. O número dois é primo, mas qualquer outro número par, por definição, é divisível por 2, 
então não é primo. Assim, estatisticamente, metade dos possíveis primos pode ser descartada de 
imediato. O número 3 também é primo e por isso outro terço, todos os múltiplos de três, como seis 
e nove, podem ser descartados.
Para Wykes (2016), ao descartarmos cada vez mais números, reduzimos as possibilidades para o valor 
da chave, intuitivamente ficando mais fácil entender por que uma chave assimétrica RSA de 1.024 bits 
não oferece a mesma resistência que uma chave simétrica menor.
Além disso, a matemática tem ferramentas poderosas de análise numérica que podem ser aplicadas 
à criptoanálise dessas chaves públicas, utilizando justamente suas propriedades matemáticas para 
conseguir quebrar uma chave desconhecida em muito menos tempo do que o usado pela técnica de 
força bruta – novamente reduzindo a força efetiva das chaves.
 Saiba mais
Esse assunto é bastante complexo e sinalizamos aqui apenas alguns dos 
princípios básicos que influenciam as avaliações de segurança comparativa 
das chaves e dos algoritmos criptográficos. Existem documentos públicos 
nos quais podem ser encontradas mais informações sobre a teoria e os 
resultados da comparação de algoritmos e tamanhos de chave. No site a 
seguir existem tabelas de avaliação sempre atualizadas. Consulte-o:
http://www.keylength.com
96
Unidade II
4.2.1 Famílias de chaves secretas
Em certas circunstâncias, torna-se possível criar uma estrita relação hierárquica entre duas ou mais 
chaves, que formam grupos, famílias ou estruturas organizadas de chaves associadas.
Um bom algoritmo de blocos, por mérito de suas qualidades de confusão e difusão, espalha e 
embaralha informação tão efetivamente que elimina qualquer correlação estatística entre um dado 
encriptado e o resultado da operação de encriptação.
Esses algoritmos fazem de tudo para que o resultado de uma encriptação seja o mais parecido 
possível com um dado randômico. Ao ser encriptado, cada bloco de dados diferentes aparenta ser um 
novo bloco randômico, pelo menos para quem não possui a chave de encriptação.
Dessa forma, constatou-se que os algoritmos de bloco se prestam à geração de largas quantidades 
de chaves simétricas. Assim é possível gerar largas famílias de chaves a partir de uma única chave, em 
um processo denominado derivação de chaves.
Segundo Wykes (2016), utiliza-se uma informação variável, conhecida como dados de diversificação, 
como auxiliar nesse processo de geração. A primeira propriedade dessa construção interessante é que 
valores diferentes desses dados geram chaves derivadas diferentes – embora, de certa forma, a segunda 
propriedade seja a de que o mesmo valor desses dados resulta sempre na mesma chave derivada.
Todavia, a derivação de chaves é determinística, e esse valor serve como forma de identificar e 
diferenciar cada chave derivada, podendo ser um contador, implementado a cada nova chave, ou 
baseado em algum identificador existente, como o número de série de um equipamento ou o número 
de um cartão de pagamento.
A chave utilizada para encriptar esses dados de diversificação é comumente denominada chave 
mestra, como ocorre com o padrão EMV para cartões de crédito e débito, que utiliza essa técnica. Segundo 
Wykes (2016), o banco emissor do cartão possui uma chave mestra e deriva uma chave diferente para 
cada um de seus cartões, utilizando o número de 16 dígitos do cartão. Assim, o servidor de autorização 
daquela organização não precisa se preocupar em armazenar milhões de chaves criptográficas, o que 
poderia ser um problema logístico e de segurança.
Do ponto de vista de um cartão, existe somente uma chave, a sua, mas, para o servidor, existe uma 
família inteira de chaves que podem ser derivadas a qualquer momento. Embora isso possa levar um 
pouco mais de tempo de execução, o custo é pequeno, se comparado: a) aos benefícios de não precisar 
armazenar largas quantidades de chaves; b) ao custo associado de busca em um banco de dados; c) à 
complexidade de tentar manter as chaves protegidas.
É interessante observar que é possível criar hierarquias, múltiplas camadas, chaves derivadas, a 
partir de uma única chave, repetindo a técnica de derivação de chaves, ou seja, utilizando um segundo 
dado de diversificação de uma das chaves já derivadas. Conforme a aplicação, diversos níveis de chaves 
criptográficas podem ser criados por esse método.
97
CRIPTOGRAFIA E CERTIFICAÇÃO DIGITAL
Para Wykes (2016), um segundo nível de derivação ocorre quando a chave do cartão é utilizada 
para assinar criptograficamente uma transação de pagamento. Assim, o cartão prepara um bloco de 
dados de diversificação a partir de um contador de transação, entre outros dados, e, pelo uso de sua 
chave individual, deriva uma chave de sessão que vale somente para aquela transação. No servidor de 
autorização, segue exatamente o mesmo processo, só que, antes, o servidor também precisa derivar a 
chave individual do cartão que assinou a transação eletrônica.
4.2.2 Famílias de chaves públicas
A função de assinatura digital, própria dos algoritmos de chaves públicas, também permite a criação 
de famílias hierárquicas de chaves públicas, o que possibilita que sejam geradas estruturas de certificação 
digital. O elo de relação entre chaves na hierarquia é de confiança, propiciada pelas assinaturas digitais, 
diferente do caso das chaves simétricas, em que a relação entre chaves na hierarquia está codificada 
pelo próprio valor numérico resultado de derivação.
No topo de uma hierarquia de chaves públicas, há um par de chaves assimétricas que denominamos 
chave raiz, pertencente a uma entidade conhecida como autoridade certificadora raiz. Ela é responsável 
pela geração de certificados digitais para pessoas, empresas, equipamentos identificados, ou mesmo 
outras entidades credenciadas. Para tanto, ela utiliza sua chave privada para assinar os certificados 
digitais gerados por ela, cada qual contendo uma chave pública do nível inferior na hierarquia.
No caso das entidades credenciadas, essas autoridades certificadoras intermediárias possuem pares 
de chaves próprias que servem para credenciar outras entidades, aumentando cada vez mais a hierarquia, 
ou para gerar certificados digitais para os usuários finais.
E são

Continue navegando