0% acharam este documento útil (0 voto)
5 visualizações65 páginas

Funções de Hash e Autenticação em Segurança

O documento aborda conceitos fundamentais de segurança da informação, focando em funções de hash, códigos de autenticação e a importância da integridade e autenticidade das mensagens. Destaca a evolução e vulnerabilidades de diferentes algoritmos de hash, como MD5, SHA-1, SHA-2 e SHA-3, e discute a utilização de códigos de autenticação para garantir a integridade e autenticidade das mensagens. Além disso, menciona cuidados no uso de chaves e algoritmos modernos para garantir a segurança das comunicações.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações65 páginas

Funções de Hash e Autenticação em Segurança

O documento aborda conceitos fundamentais de segurança da informação, focando em funções de hash, códigos de autenticação e a importância da integridade e autenticidade das mensagens. Destaca a evolução e vulnerabilidades de diferentes algoritmos de hash, como MD5, SHA-1, SHA-2 e SHA-3, e discute a utilização de códigos de autenticação para garantir a integridade e autenticidade das mensagens. Além disso, menciona cuidados no uso de chaves e algoritmos modernos para garantir a segurança das comunicações.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

05-Oct-23

Segurança da Informação

Funções de Hash,
Códigos de Autenticação e
Números Aleatórios

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

Nos episódios anteriores…

• Integridade
– Capacidade de verificar se informação foi alterada

Usuário Banco

Intruso

“Quero saber “Quero pagar este


meu saldo” boleto de IPVA”

1
05-Oct-23

Integridade: redundância
• Exemplo prático (não-criptográfico):
– RG/CPF: usa Dígito verificador (DV)
– Método: “mod 11”
• Dígito é multiplicado por sua posição, indo do menos
significativo (peso 2) até o mais significativo
• Os resultados são somados
• DV: resto da divisão desta soma por 11
Exemplo simplificado
Entrada: 2 3 5 9 2
x x x x x
Posição: 6 5 4 3 2
Multiplicação: 12 15 20 27 4
Soma: 78 Σ
DV: 78 mod 11 = 1 mod 11

Integridade: redundância

• Exemplo prático (não-criptográfico):


– CD/DVD: usa Cyclic Redundancy Check (CRC)

Dados CRC

• Se Dados forem alterados (ex.: CD riscado)


– FunçãoVerificação(Dados) ≠ CRC  erro!
• Outros: paridade (ASCII); checksum (Ethernet)

2
05-Oct-23

Segurança da Informação

Funções de Hash,
Códigos de Autenticação e
Números Aleatórios

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

Segurança da Informação

Funções de hash

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

3
05-Oct-23

Funções de Hash
• Geram redundâncias que são anexadas a
mensagens com o propósito de detectar
alterações: integridade
– A redundância é chamada de “hash” ou “resumo
criptográfico” da mensagem
– O hash tem tamanho fixo, e seu valor depende
exclusivamente da mensagem (não existe uma
chave secreta envolvida no processo)

M Hash R

Propriedades Fundamentais

• (Resistência a primeira inversão*) Dado um resumo


R, é inviável encontrar uma mensagem M tal que R
= H(M).
• (Resistência a segunda inversão*) Dado um resumo
R e uma mensagem M1 tal que R = H(M1), é inviável
encontrar uma outra mensagem M2  M1 tal que R =
H(M2).
• (Resistência a colisões) É inviável encontrar duas
mensagens M1 e M2 tais que H(M1) = H(M2).

* “inversão” também é chamada de “pré-imagem”

4
05-Oct-23

Propriedades Fundamentais

1ª inversão 2ª inversão colisão

? M  ? ?  ?

Hash Hash Hash Hash Hash

R R = R  = 

2n 2n 2n/2

Funções de Hash: usos


Proteção de senhas em bancos de dados

1ª inversão MySuperHy * Na prática, são usados


perMegaP# algoritmos derivados de
werS&cur& funções de hash: password
? admin
P@ssw0rd hashing schemes (PHS)

Hash Hash Hash † Não confundir com


cifração, que é usada
quando se deseja que
alguém autorizado (i.e.,
R h7j3Luv n0wAI2i de posse de chave
secreta) consiga obter
entrada a partir da saída
?!?

5
05-Oct-23

Funções de Hash: usos


Verificação de downloads

2ª inversão
1
M  ? hash mirror 1

2
Hash Hash
download

R = R
2’
3

Hash software
mirror 2
(invadido)
=? alterado

Funções de Hash: usos


Integridade de assinaturas digitais
(são feitas sobre hashes dos dados)

2 contratos pré-gerados

colisão
Cartório
?  ?
Hash Hash
Hash Hash
123456 = 123456

 = 
=
Assinatura de contrato 1... ... é válida para contrato 2!

6
05-Oct-23

Integridade: Funções de Hash


• Família MD:
– MD2, MD4 e MD5: hashes de 128 bits
– Completamente quebrada (Wang et al., 2004)
• Família SHA
– SHA-0: hashes de 160 bits
• Não recomendado: colisão em 239 passos x 280 projetado
– SHA-1: hashes de 160 bits
• Não recomendado: desde 2010, para assinaturas
• Segurança: colisões em 260 passos x 280 projetado
– SHA-2: Hash de X bits, para X=224, 256, 384 ou 512
• Paliativo atual: baseados no SHA-1, mas hash grande
dificulta ataques
– SHA-3: hashes de 224, 256, 384 e 512 bits
• Concurso público finalizado em 2012: Keccak

SHA-0
• Função inicialmente proposta como padrão
americano para uso em assinaturas digitais,
com resumos de 160 bits.
• Vulnerabilidade anunciada (sem detalhes)
em 1993 pela NSA, redescoberta em 1998
por Chabaud e Joux.

• Quebra em 2004 (Joux et al.,


Wang et al.)
– Complexidade (colisões): 239
vs. 280 projetado

7
05-Oct-23

SHA-1
• Busca corrigir vulnerabilidade da função SHA-0.
• Função amplamente empregada em aplicações
legadas.
• Enfraquecida em 2005 (Wang et al.), 2006 (de
Cannière et al.) entre outros
– ~260 passos para obter colisões vs. 280 passos
projetados (SP 800-107).
• Não recomendado para aplicações futuras:
– Para assinaturas: obsoleto a partir de 2010.
– Para outras aplicações: obsoleto a partir de 2030
• [Link]

SHA-2
• Família de quatro: níveis de segurança de hash
compatíveis com chaves do 3DES e do AES.
• Todas semelhantes ao SHA-1, mas cifra
dedicada diferente:
– SHA-224, SHA-256: blocos = 512 bits, |M| ≤ 264 bits.
– SHA-384, SHA-512: blocos = 1024 bits, |M| ≤ 2128
bits.
– Diferenças básica: constantes de inicialização e
truncamento do valor final de hash.
• Recomendado para uso atual: tamanhos
grandes dificultam ataques do SHA-1

8
05-Oct-23

SHA-3
• Concurso público: 2008 a 02/Outubro/2012
– Candidatos: 64  51 (round 1)  14 (round 2)  5 (round 3)
• Requisitos:
– h = 224, 256, 384, 512 bits.
– Máximo |M| > 264.
• 5 finalistas (anúncio em 09/12/2010): Blake, Grøstl,
JH, Keccak e Skein
• Ganhador: Keccak
– Elevada segurança e projeto flexível: esponja criptográfica
– Desempenho muito bom em hardware e bom em software.
• Nota: Blake2 é mais rápido do que MD5 e apresenta
elevada segurança ([Link]

SHA-3: Estrutura esponja


• Construção versátil:
– Entradas e saídas de tamanho arbitrário
– Uso: não apenas hash (SHA-3), mas cifra de fluxo,
geração de números pseudoaleatórios, ...

: truncagem

taxa de bits:

capacidade:

9
05-Oct-23

Exemplo prático: Bitcoin

Uso prático: downloads


• Cenário: alteração de arquivos em rede P2P
– Arquivo de diversos usuários (alguns maliciosos)

Arquivo
corrompido

Arquivo
correto

Arquivo
corrompido

10
05-Oct-23

Uso prático: downloads


• Cenário: alteração de arquivos em rede P2P
– Arquivo de diversos usuários (alguns maliciosos)
Tracker

Lista de seeder swarm


usuários
1234
2344
2312

?
2
1
TORRENT

Identificador
dos pedaços
do arquivo
(inclui hashes)

leecher
4
Compara hash de Aceitos:
cada pedaço recebido Descartados:
com hash no .torrent

Uso prático: senhas

• Ataques de força bruta


– Baixa entropia: média de 40 bits --
[Link]

– Ainda menos com políticas de senhas equivocadas: proibir


caracteres especiais, limitar tamanho, manter senhas padrão

• Online: vários testes junto a sistema


– Solução: bloqueio temporário de usuário após N tentativas
erradas

• Offline: após roubar base de dados/dispositivo


– Password crackers (ex.: “Cain”): ferramentas automatizadas
– Solução: password hashing para elevar custo de ataques
• Tema abordado em aula específica sobre autenticação

11
05-Oct-23

Pontos chave

• Funções de hash:
– Proveem integridade: redundância anexada à
mensagem (“hash”)
– Não usam chave secreta
– Propriedades de segurança: resistência a 1a
inversão, 2a inversão e colisões
– Exemplos: MD5 (inseguro), SHA-1 (uso atual não
recomendado), SHA-2 e SHA-3

Segurança da Informação

Funções de hash

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

12
05-Oct-23

Segurança da Informação

Códigos de Autenticação

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

Autenticidade
• Serviço necessário
– Capacidade do receptor verificar quem é o
emissor da mensagem

Usuário Banco

Intruso
[Usuário]: “Pagar
essa conta de IPVA”

13
05-Oct-23

Usar hash?
• Hash sozinho não funciona…
– Qualquer pessoa (incluindo intruso) pode calcular
o hash da mensagem falsa…
– O fato da mensagem estar íntegra não significa que
foi um usuário legítimo quem a enviou…

[Usuário]: “Paguar
essa conta de IPVA”
mensagem

intruso banco
hash

Estratégia
• Usar redundância dependente de chave
– Apenas origem e destino conhecem a chave e conseguem
calcular redundância corretamente
– Também garante integridade (alteração na mensagem
detectada como no caso das funções de hash)

tag de
autenticação

Origem
mensagem x
Destino
Intruso

14
05-Oct-23

Códigos de Autenticação
• Redundâncias anexadas a mensagens de modo a
detectar alterações (integridade) e garantir a
autenticidade do remetente.
– Chamada de “tag (etiqueta) de autenticação”
• Dependem da mensagem e também de uma
informação secreta, compartilhada entre o
remetente e o destinatário.
– Propriedades de segurança: semelhantes a hash +
incapacidade do atacante em recuperar a chave

M MAC T

Códigos de Autenticação: uso

M M M

K MAC K MAC

V
?
=
T T

• Envio de mensagem autenticada


– K: chave simétrica compartilhada
– T: tag  garante integridade e autenticidade

15
05-Oct-23

Assinaturas Digitais?
• Um código de autenticação pode garantir
Integridade e Autenticidade.
• Não pode garantir irretratabilidade, pois tanto
o remetente quanto o destinatário conhecem
a mesma chave.
– Não é possível provar para um terceiro quem de
fato gerou o código de autenticação!
• Numa assinatura digital verdadeira, apenas o
remetente conhece a chave de assinatura.

Algoritmos modernos
• Baseados em cifras de bloco:
– CMAC (NIST SP 800-38B).
– Pró: tamanho de código (reusam cifras de bloco).
• Baseados em funções de hash:
– HMAC (FIPS 198).
– Pró: desempenho (funções de hash puras).
• Combinados com cifras
– AEAD: Authenticated Encryption with Associated
Data (confidencialidade de parte dos dados)
• Exemplos tradicionais: GCM, CCM, EAX
• Também relevante: Chacha20-Poly1305
– Concurso finalizado em 2018 (Caesar):
([Link]
• Ascon (mais leve), AEGIS-128 & OCB (alto desempenho), Deoxys-
II (defesa em profundidade: e.g., resiste a reuso de nonces)

16
05-Oct-23

Cuidados de Uso
• Uma mesma chave não dever ser utilizada
para cifrar e autenticar mensagens
– Exceto em algoritmo de AEAD
• Cada algoritmo tem suas próprias restrições
de segurança
– Número máximo de mensagens que podem ser
autenticadas usando uma mesma chave
– Tamanho máximo da mensagem autenticada
– Uso apenas com mensagens de tamanho fixo
(ex.: CBC-MAC) ou de qualquer tamanho (ex.:
CMAC e HMAC)

MAC + cifra (uso no TLS)


K K

M E C E–1 M

K’ MAC K’ MAC

V
?
=
T T

• Mensagem confidencial (C) e autenticada (T)


– K e K’: chaves compartilhadas diferentes
• A mesma chave no caso de algoritmo de AEAD, como AES-GCM
– Serviços: confidencialidade (cifra simétrica), integridade e
autenticidade (algoritmo de MAC)

17
05-Oct-23

AEAD (uso no TLS)

AD

K K
–1
M AEAD C AEAD ou M

AD

• Mensagem confidencial (C) e autenticada (T)


– AD: dados associados (enviados às claras, autenticados)
• Exemplo: autenticação de cabeçalho TCP/IP com AES-GCM
– Serviços: confidencialidade, integridade e autenticidade (cifra
simétrica e algoritmo de MAC internos a AEAD)

Pontos chave
• Códigos de Autenticação (MACs):
– Proveem integridade e autenticidade: redundância
anexada a mensagem (“tag de autenticação”)
• Ex.: CBC-MAC (só usável para mensagens de
tamanho fixo), CMAC, HMAC
– Podem ser combinados com cifras (AEAD)
• Ex.: GCM, CCM, EAX, OCB
– Dependem de chave secreta
– Propriedades de segurança semelhantes a hash +
incapacidade do atacante em recuperar a chave

18
05-Oct-23

Segurança da Informação

Códigos de Autenticação

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

Segurança da Informação

Geração de chaves: números


aleatórios

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

19
05-Oct-23

Estudo de caso: Netscape

• Netscape 1.x (1995).


• Dois estudantes de Berkeley descrevem
como quebrar a segurança do navegador,
recuperando chaves usadas em sessões
seguras (HTTPS) em 25 s.
• Chaves pequenas?
– Não, RC4 com chaves de 128 bits (atual!!!)
• Pergunta: como isso é possível?

Análise de (in)segurança
• Baixa aleatoriedade das chaves de sessão!
• Estratégia:
– Engenharia reversa do gerador de números
aleatórios.
– Chaves geradas a partir do clock (precisão de µs),
sem acúmulo entre ativações do navegador.
– Conhecendo o minuto em que a sessão SSL foi
estabelecida, há menos de 64 milhões de chaves
possíveis (226 contra 2128).
– Testam-se todas elas.
• Exercício: propor uma solução.

20
05-Oct-23

Geração de chaves: Entropia


• Entropia: mede desconhecimento (aleatoriedade)
sobre um sistema.
– Necessária para gerar chaves e outras informações de
caráter privativo, imprevisível ou irrepetível.
– Segurança de sistema costuma depender criticamente das
fontes de entropia usadas.
• Fontes de entropia bruta (aleatoriedade): todas de
origem extra-criptográfica.
– Ex. (físicas): ruído térmico, relógio, entrada de som/vídeo,
variação no tempo de acesso a disco, decaimento radioativo
Vcc – Ex. (comportamentais): estatísticas de rede, dados em
clk clk pastas temporárias (Firefox 3.5), posição do mouse
(Veracrypt) e tempo de digitação no teclado (TrueCrypt)
– Soluções computacionais ou de hardware: “SecureRandom”
(Java), “/dev/random” (Unix), DRNG (Intel)
rnd

Geração de chaves: Entropia


• Geração de números aleatórios em velocidade compatível com
clock (base de gerador em hardware da Intel)
– TRNG: true random number generator
estado metaestável

Vcc

clk clk
clk

rnd’ rnd’ 1 1 0 1 0 1 1 1 0 1

rnd 0 1 1 1 1 1 0 1 1 1
rnd

amostragem de aleatoriedade

21
05-Oct-23

Exemplo prático: entropia


• Veracrypt: acúmulo de entropia fornecida pelo usuário
(movimento do mouse)

Geradores pseudo-aleatórios
• Frequentemente, a capacidade de produção
de uma fonte não atende às necessidades de
um sistema.
• Possível solução:
– Coletar entropia real suficiente para uma semente
de tamanho adequado.
– Usar uma fórmula iterativa determinística para
produzir uma sequência “indistinguível” de uma
sequência aleatória.

Como construir geradores


pseudoaleatórios seguros?

22
05-Oct-23

Geradores pseudo-aleatórios
• Como construir geradores pseudo-aleatórios
seguros?
• Construções derivadas de:
– Algoritmos simétricos (especialmente cifras de
bloco).
– Funções de hash.
– Problemas computacionais (e.g. Blum-Blum-Shub,
baseado no problema da fatoração).
• Recomendações: NIST-SP800-90A-Rev1* e
NIST-SP800-108-Rev1
– * Revisão removeu Dual_EC_DRBG (backdoor da NSA)

Usando Cifras de Bloco


• Mantém-se um contador “cont” com o
tamanho típico de um bloco (o valor inicial é
irrelevante).
• A semente aleatória é usada como chave.
• Em cada passo, o contador é incrementado
e cifrado.
• O valor cifrado constitui um bloco de bits
pseudo-aleatórios, extraídos sob demanda.

23
05-Oct-23

Ex.: usando Cifras de Bloco


• K: semente aleatória

cont cont+1 … cont+n

EK EK EK

chave1 chave2 chaven


exemplo exemplo exemplo

HTTPS HTTPS com Conexão com


com banco webmail servidor FTPS

Usando Funções de Hash


• Mantém-se um contador com o tamanho do
hash produzido.
• O valor inicial é a semente aleatória.
• Em cada passo, o contador é incrementado e
submetido à função de hash.
• O valor de hash constitui um bloco de bits
pseudoaleatórios, extraídos sob demanda.

24
05-Oct-23

Ex.: usando funções de Hash


• Ctr: semente aleatória

Ctr Ctr+1 … Ctr + n

Hash Hash Hash

chave1 chave2 chaven


exemplo exemplo
exemplo

Cifrar mensagem Autenticar Cifrar mensagem


M1 usando AES mensagem M1 M2 usando AES
usando CMAC

Cuidados especiais
• Coletar entropia do maior número possível de
fontes para gerar a semente aleatória
• Manter a semente aleatória secreta
– Sua revelação permite descobrir toda a sequência
subsequente.
• Escolher uma construção apropriada para um
gerador pseudo-aleatório
– Analisar adequação ao cenário alvo.
• Acumular entropia entre sucessivas ativações
do sistema, a partir da fonte de entropia bruta
• Análise estatística: NIST SP 800-22

25
05-Oct-23

Proteção de chaves
• Após gerar uma chave aleatória de tamanho
adequado, como gerenciá-la?
– Chaves de sessão: eliminação após utilização
• Preferencialmente após sobrescrevê-la, eliminando
qualquer vestígio da mesma da memória.
– Chaves para proteção de dados em disco: duas
opções principais para armazenamento da chave
• Usando hardware específico: “smart cards”
• Usando cifração: a chave em si é cifrada usando como
chave alguma informação do usuário autorizado a acessá-la
– Ex: um token criptográfico ou uma senha forte.

Pontos chave
• Geradores pseudoaleatórios, pseudorandom function
(PRF), ou pseudorandom number generator (PRNG)
• Geram conjunto de dados de aparência aleatória a
partir de uma ou mais fontes de entropia
– Ex.: relógio, ruído térmico, dados em pastas temporárias,
estatísticas da rede, ...
• Usados para geração de material criptográfico que
deva ser difícil de prever (ex.: chaves)
• Construções comuns: baseadas em cifras de bloco,
em funções de hash, ou mesmo em problemas
computacionais difíceis

26
05-Oct-23

Segurança da Informação

Números aleatórios:
estudo de caso

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

Estudo de Caso: Urna Brasileira


• O caso do Netscape data de 1995: é
improvável que alguém cometa o mesmo erro
atualmente, certo?
• Infelizmente, um erro semelhante (porém ainda
pior) ocorria na geração de números aleatórios
da urna eletrônica brasileira...
– Problemas revelados em análise pública por equipe
da UnB, liderados pelo Prof. Dr. Diego Aranha, em
Março de 2012
– [Link]
karam-miranda-scarel-12-pt

27
05-Oct-23

Estudo de Caso: Urna Brasileira


• Para entender o problema, é preciso entender
alguns pontos do processo eleitoral:
1. Software de votação é carregado na urna eletrônica
2. No início do processo, é impresso um documento
(“zerésima”) com os votos já registrados,
• Teoricamente, isso mostra que nenhum voto foi computado
3. Ao final da votação, têm-se os seguintes documentos
públicos, que são posteriormente enviados ao TSE:
• Boletim de Urna (BU): com a totalização dos votos da urna
• Registro Digital do Voto (RDV): com cada um dos votos
registrados, porém em ordem aleatória, para possível
verificação independente dos totais
• Log da votação, com instantes de confirmação de votos

RDV: Exemplo
Governador Senador Presidente Governador Senador Presidente

31 71 31

1º voto 98 2º voto 98
Nulo
Branco Branco
37

Governador Senador Presidente Governador Senador Presidente

71 31 37 71 31 37
Branco Branco
3º voto 98 Fim: 98
71 Nulo 71 Nulo
Branco Branco
37 37
Votos embaralhados

28
05-Oct-23

Estudo de Caso: Urna Brasileira


• O RDV é essencialmente o que garante o
sigilo dos votos
– Ele mostra todos os votos feitos, permitindo
verificar a BU
– Ele não permite ligar um eleitor ao seu voto,
prevenindo fraudes como “voto de cabresto”

Estudo de Caso: Urna Brasileira


• Problemas específicos com o RDV:
– Gerador de números pseudoaleatórios inadequado:
funções rand()/srand() da linguagem C
• Estas funções aceitam sementes de no máximo 32 bits,
o que equivale a ter uma chave de 32 bits de tamanho
para proteger o sistema!
• O algoritmo interno usado também não passa por
testes estatísticos para fins criptográficos.
• Isso permite ataques estatísticos de força bruta...

29
05-Oct-23

Estudo de Caso: Urna Brasileira


• Problemas específicos com o RDV:
– Escolha inadequada de semente: a semente
consistia em tomada de tempo com a função time()
• Time fornece precisão de segundos: conhecendo a
hora em que a semente foi gerada, são necessários
3600 tentativas para adivinhar a semente, o que
equivale a uma chave de menos de 12 bits
• A semente é inicializada no início da votação, o que
deve ocorrer entre 7:00 e 8:00 do dia da eleição:
exatamente uma hora...

Estudo de Caso: Urna Brasileira


• Problemas específicos com o RDV:
– Publicação da semente: a semente aparecia na
zerésima e nos logs do sistema
• Zerésima é tornada pública logo após sua emissão
• O log é tornado público aos partidos após final da
eleição, e contém
• Isso equivale a ter uma chave de... ZERO bits
• E melhor: esses são documentos oficiais, logo é
possível garantir sua autenticidade...

30
05-Oct-23

Estudo de Caso: Urna Brasileira

• Zerésima e semente
de embaralhamento
do RDV.

Estudo de Caso: Urna Brasileira


• Mas como a ordem dos votos pode ser útil, se
não sabemos a ordem dos eleitores...?
• Ataques possíveis contra o sistema do RDV
– Colocar k “eleitores de cabresto” no início da fila
– Pedir para um “eleitor sentinela” confiável votar de
forma específica e colocar k “eleitores de cabresto”
após ele na fila da mesma urna
– Usar o registro da ordem de votação (com o
auxílio de um mesário) ou do horário de votação
(com os logs) para recuperar a ordem de eleitores

31
05-Oct-23

Números aleatórios: outros casos

• Problema recorrente na literatura… 


– Debian OpenSSL (2008): chaves dependentes
apenas de process-id e arquitetura de hardware
– Chaves RSA geradas por dispositivos de rede
(2012): repetição de números aleatórios (fator primo
compartilhado), permitindo recuperação da chave
privada.
• Problema observado também em estudos em 2013 (smart
cards), 2015 (servidores HTTPS) e 2017 (chaves Tor)
– “Brainwallet” (2015+): chaves privadas geradas a
partir de senhas, permitindo roubo de criptomoedas
Fontes:
N. Heninger, 2017. Random number generation done wrong. Crypto Experts -- wr0ng 2017. Available:
[Link]
E. Lacey, 2019. “A 'Blockchain Bandit' Is Guessing Private Keys and Scoring Millions”. Wired, Apr 2019. Available:
[Link]

Epílogo

32
05-Oct-23

Distribuição de Chave
• Possuindo um gerador pseudoaleatório
adequado, uma cifra simétrica segura e um
código de autenticação correspondente, é
possível estabelecer comunicações seguras?

• ... Sim, se as entidades que se comunicam


conhecerem as chaves utilizadas pelo
algoritmo simétrico e pelo código de
autenticação.

• Como transmitir seguramente essas chaves?


• Como saber se as entidades são autênticas?

Segurança da Informação

Estudo de caso:
votação eletrônica no Brasil

Prof. Dr. Marcos A. Simplicio Jr. – mjunior@[Link]

33
05-Oct-23

No…

Of course not…

Apêndice: Votação Eletrônica


(ou: porque falar de insegurança da urna
brasileira é “pura paranoia”)

100%
97%

Votação: Requisitos de segurança


• Qualquer que seja a tecnologia usada, requer-se:
1. Autenticação dos eleitores: apenas eleitores
autorizados podem votar, apenas uma vez
2. Sigilo do voto: voto deve ser secreto
3. Integridade dos resultados: resultado é justo
4. Possibilidade de auditoria: idealmente, por
qualquer cidadão

• Importante: em um sistema puramente eletrônico de


votação, todas as propriedades são responsabilidade
da tecnologia.

34
05-Oct-23

TSE
Software
Preparação


TRE TRE TRE TRE TRE

… Votação

Totalização
Totalizador

Auditoria pós-eleição

Preparação
1. Confecção do software de votação e assinatura no TSE
2. Transmissão do software de votação para TREs
3. Gravação do software em cartões de memória flash e
instalação nas urnas (carga)

O lado bom: verificação


•Exame do software por fiscais de partido, OAB, MPU, SBC
•Assinatura do software: verificação pela urna e versão
lacrada para posterior conferência

35
05-Oct-23

Preparação
O lado ruim: erros propositais?
• Processo como um todo requer confiança em
diversas partes internas
• TSE como instituição: código examinado é o de fato
carregado na urna?
• Desenvolvedores do software (TSE, SEPIN): portas
dos fundos?
• Hardware/firmware (Diebold): “chave extra de
verificação”? Ignorar algum processo de segurança?
Fazer algo extra de insegurança?
• Compilador/SO (gcc, Linux modificado por TSE): não
insere nem ignora partes do código?

Preparação
O lado ruim: erros acidentais?
• Testes públicos
– Limitados: ~5 dias para avaliar >106 linhas de código
– E ainda assim revelam falhas relevantes:
• (2012) Geração de aleatoriedade com falha básica de segurança
OMG • (2017) Execução de código arbitrário na urna
• (2019) Modificação de arquivo de configuração gerado por software
de carga da urna (Gedai-UE), permitindo modificação de alguns
dados básicos (nome do município e Unidade da Federação).
– Documentação do código não é animadora:
• O que dizer ao encontrar “Uhuuuuuuuuu!!!!” ou “Isso causa erro no
processo X. Corrigir e testar” nos comentários de um software de
missão crítica em produção...?
– Conclusão: processo de desenvolvimento falho

36
05-Oct-23

Preparação: mas isso é paranoia…


• Não há atacantes internos em ambientes seguros
– Edward Snowden? Bradley Manning1? Tudo fake news…
• Ataques internos são raros em sistemas reais
– Apenas 60% dos ataques no mundo em 20162… Irrelevante!
• A Diebold, que fabrica o hardware, é “obrigada a seguir
o projeto brasileiro” 3
– Por que? Porque o TSE manda e eles certamente obedecem3
• “Jamais conseguiram desviar votos na urna” (2017) 4
– Não, “código arbitrário” não significa “código arbitrário"
• Erros são rapidamente corrigidos
– Falha explorada em 2017 foi apontada em 2012 (e antes…)4
• Erros não são tão básicos assim…
– Por exemplo…
1. [Link] (Wikileaks – DoD)
2. [Link]
3. [Link]
4. [Link]

Preparação: Falha de 2012


• Sigilo do voto: protegido por número “secreto e aleatório”…
até ser publicado na documentação oficial gerada pela urna

37
05-Oct-23

Preparação: Falha de 2017


• Execução de código arbitrário: boca de urna (exemplo
executado durante os testes)

Original:
Mas quem
votaria no
Vader?!
Irrelevante...

Comprometido:

Fonte: [Link]

Preparação: Falha de 2017


• Integridade do software: chaves criptográficas no código…
nenhum problema nisso conforme certa cartilha…

Fonte: [Link]

38
05-Oct-23

Votação
1. Impressão da zerésima
2. Sessão de votação (autenticação, interação com urna)
3. Impressão e gravação dos resultados. Ex.:
– Totais: Boletim de Urna (BU)
– Votos embaralhados: Registro Digital do Voto (RDV)

O lado bom:
•Zerésima: “nenhum voto registrado”
•RDV: permite conferência do BU (?)
•Assinatura digital dos resultados
•Votação paralela: amostra de urnas é testada “ao vivo”
•Autenticação dos votantes (docs e biometria)

Votação
O lado ruim: se software é desonesto...
•Zerésima, RDV, assinatura: inúteis (dados forjados)
•Votação paralela: inútil se porta dos fundos esperta
Exemplos: limitações da votação paralela
if (voto == 99999) { //voto “ativador”
ativar_comportamento_malicioso();
}

if (biometria == true AND liberacao_por_mesario < 50%){


//não estou sob teste!1
ativar_comportamento_malicioso();
}

Importante: Assumir versão ofuscada escondida na base de código!


1. [Link]

39
05-Oct-23

Votação
O lado ruim: (in)utilidade da biometria
•Biometria: para impedir que A vote por B
– Ex.: identidade falsa ou de pessoa semelhante1
•Medidas de segurança:
– Fiscais: risco de serem enganados
– Biometria é solução: falha na leitura impede voto...
• Só que não: fiscal libera em caso de falha repetida2...
• Análise simples:
– Custo3: R$6.90/eleitor * 147 mi eleitores  R$1 bi
– Benefício: zero na eleição (talvez útil em outros cenários não muito
nobres 4... Felizmente proibidos5...)

1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. [Link]

Votação: isso tudo é paranoia…


• Na prática, não existe software que muda
seu comportamento quando está sob testes
– Caso da Volkswagen1? Fake news…
• Testes na votação paralela simulam eleição
perfeitamente
– Impressão dos logs em 2014 em todo o estado de
MG2? É normal fazer um procedimento no teste
completamente diferente do normal na eleição…
• Biometria é uma tecnologia da moda!
– Nossa urna é “cool”. Isso é o que importa…

1. [Link]
2. [Link]

40
05-Oct-23

Totalização
1. Transmissão dos resultados parciais
2. Combinação dos resultados parciais
3. Divulgação do resultado final
4. Publicação dos BUs eletrônicos

O lado bom:
•Verificação de assinaturas da urna
•Conferência entre BUs físico e eletrônico
•Totalização por terceiros (QR Code)

Totalização
O lado ruim:
•Logística e custos para verificação por terceiros
• Ex.: Você Fiscal , Auditoria de 2014

• Importante: provavelmente a fase mais transparente


do processo eleitoral (há papel para conferência...)

41
05-Oct-23

Totalização: isso tudo é paran…

• ... Ops.... Não! Nesse caso, só li verdades...

? ?
Auditoria Pós-Eleição
• ... não é previsto...

O lado ruim: não é previsto...


•Tentativa feita em 2014 (PSDB)1 ...
•... mas “auditoria” permitida por TSE exige usar o
software da própria urna para verificar integridade
– Não se pode analisar o código interno à urna
– Equivalente a: “pergunte ao suspeito se ele é honesto e
confie na resposta que ele der”

1. [Link]

42
05-Oct-23

Auditoria Pós-Eleição
• “Auditoria” permitida pelo TSE: uma [analogia]
– Você precisa comprar um carro [urna] do TSE
– Você quer avaliar o estado do veículo [fraude?]
• Mas não pode sequer abrir o capô para isso [verificar
programa e dados na memória das urnas]
– Seus mecânicos tentam identificar estado do carro
pelo ronco do motor [auditores com experiência]
• Mas só lhe é fornecida uma gravação do ronco, feita pelo
próprio vendedor [um código fonte é fornecido]
– Você pede o manual do carro [documentos com
requisitos de segurança]
• Mas não tem acesso a ele por “razões de segurança”

Auditoria Pós-Eleição
• “Auditoria” permitida pelo TSE: outra analogia
– Suponha que o sistema de detecção de fraudes da urna
seja tão avançado que pareça mágica:
• Existe uma fita branca interna à urna
• Quando há fraude, essa fita fica preta.
– Forma óbvia de auditoria:
• Abra a urna e veja a cor da fita.
• Como fraudar: ???
– Forma permitida pelo TSE:
• Aperte um botão na urna, que irá imprimir um papel com a cor
da fita em seu interior
• Como fraudar: programe o botão para sempre imprimir
“branco”...

43
05-Oct-23

Auditoria Pós-Eleição: Paranoia…

• Algumas conclusões do relatório de 20141:


– A urna é inauditável
– Votação paralela não replica votação normal
• Ex.: biometria invalida premissas da votação paralela
– Biometria operando fora dos parâmetros normais
• Falsos positivos e negativos chega a 10x o especificado
I’m
• O que o TSE entendeu: indestructible

– “Não foram detectadas fraudes na urna”


– Analogia (parece episódio de “The Simpsons”2):
• Médico (Auditores): sem mais testes, não consigo avaliar sua saúde
• Paciente (TSE): nenhum problema encontrado? Então estou em
ótimas condições de saúde!!!
1. [Link]
2. [Link]

O que fazer?
1a. Voto impresso (“2a geração”)
Registro físico e anônimo do voto, conferível por eleitor, p/ auditoria e
recontagem. Eleitor não leva voto p/ casa: audita ao registrar na urna

1b. Verificação fim a fim, end-to-end, ou E2E (“3a geração”)


Registro anônimo do voto, em formato digital ou físico, conferível por
eleitor durante votação. Eleitor leva voto cifrado p/ casa: verifica se foi
incluído na totalização

2. Código aberto
Publicar código-fonte do software é desejável para ampliar a
capacidade de auditoria, embora não seja suficiente.
 Nota: princípio básico de segurança (Kerckhoffs,1883)

3. Controle social (sem extremismos…)


Ampliar mecanismos de transparência p/ que sociedade possa
exercer maior controle social sobre sistema eleitoral.

44
05-Oct-23

O que fazer (v2): nada... paranoia!

• Como mostra a campanha do TSE, a urna:


– Tem mais de 30 camadas de segurança
“Insira seu voto aqui para 50
camadas de segurança (?)”

– Não está ligada à Internet


“O que impede totalmente as fraudes! Veja o
caso do jamais fraudado (?) bilhete único...”1

– Garante o sigilo das suas escolhas como eleitor


“Garantia = confiança cega no TSE...
Afinal, em caso de disputa o TSE pode
simplesmente se julgar inocente...”2,3

1. [Link]
2. [Link]
3. [Link]

Sobre voto impresso: Tostines?


• Grande discussão entre 2014-2017.
– 2015: congresso aprovou1; 2018: STF derrubou2
• Razões alegadas: 2 principais
1. Técnica (risco a sigilo): falha na impressora pode
revelar voto a técnico/mesário que acessar urna
• Possível solução (abordagem alternativa usada alhures): voto feito
em papel, posteriormente escaneado pela urna
• Possível solução (ainda usando urna que imprime voto): incluir
mecanismo eletromecânico de destruição do papel (ex.:
picotamento ou aquecimento)
• Nota: problema similar em urna atual, que pode travar na tela com
voto, exceto talvez por maior probabilidade (partes móveis)

1. [Link]
2. [Link]

45
05-Oct-23

Sobre voto impresso: Tostines?


• Grande discussão entre 2014-2017.
– 2015: congresso aprovou1; 2018: STF derrubou2
• Razões alegadas: 2 principais
2. Filosófica: raciocínio circular no STF...
• “Não há provas de fraude na urna eletrônica” 2, mas isso é
resultado direto de “porque não é possível auditar” 3
• Logo: “não se criam mecanismos de auditoria da urna porque
não há provas de fraude” 2

1. [Link]
2. [Link]
3. [Link]

Sobre voto impresso: Tostines?


• Analogia: “Não se criam mecanismos de
auditoria porque não há provas de fraude”
1. Eu coleto todos os votos em papel, usando uma caixa
de papelão com lacre
2. Aí, me tranco sozinho em uma sala e conto os votos
3. Finalmente, eu queimo os papéis em um incinerador,
saio da sala e anuncio o vencedor
Note: é 100% seguro... ou pelo menos altamente
resistente à produção de provas de fraude....

46
05-Oct-23

Zero fraudes...?
• Eleições de 2014:
– Eleitor fora do país tentou registrar justificativa
após voltar... mas ele já tinha votado!
• Mesário deve ter votado por ele (e.g., no final do pleito)
– Auditoria de 2014
• Pediu-se lista de Faltantes e Justificativas, para cruzamento.
Resultado: TSE não quis entregar (“não era previsto”)
• Perguntou-se se TSE fazia esse cruzamento de dados.
Resposta: não.

• Conclusão: quando não se procuram fraudes,


não se acham fraudes (mesmo se existirem...)
– Nota: problema não se resolve com voto impresso
1. [Link]
2. [Link]

Zero fraudes...?
• Eleições de 2018:
– Reclamação do tipo “urna completa ’13’ ao digitar 1”
– “Auditoria” pelo TSE:
• Primeiro passo “lógico”: retiraram a memória da urna original,
substituindo por programa de testes
– Mas e se a memória original tivesse algo de errado...?
• Perceberam que havia de fato uma falha no teclado: digitação
de uma tecla interpretada como mais de uma tecla!!
• Próximo passo “lógico”: substituiram a urna inteira, e testaram
com outra, que não apresentada o problema
• Conclusão “lógica”: não foi identificada qualquer falha nas
urnas
– Nota: problema não se resolve com voto impresso
1. [Link]

47
05-Oct-23

Voto impresso: “A fraude impera”

• Discussão retomada em 2019/2021.


– Comissão especial no Congresso1
• Tema técnico politizado ao extremo
– Deturpação de “auditabilidade é falha” p/ “a fraude
impera”2 pelos defensores do voto impresso..
– ... e transformação dos defensores do voto
impresso em “desinformados que pensam com o
fígado” pelo TSE3
– Resultado: pior dos mundos para discussões
sérias...

1. [Link]
2. [Link]
3. [Link]

Voto impresso: falhas (?)


• Voto impresso não é uma panaceia
– Foco em detecção de situações suspeitas...
– ... e pode gerar suspeitas infundadas...
• Exemplo 1:
1. Urna honesta gera votos impressos assinados
2. Antes de recontagem, perdedor destrói registros
de auditoria (ou apenas cria dúvida ao fazer um
rasgo no malote contendo os votos)
 O que fazer: Usar o voto digital? Ou melhor
refazer eleição (custo logístico...)?
(obs.: potencial grande de tumulto, em especial em eleições altamente
polarizadas... seria esse o “custo da auditabilidade”?)

48
05-Oct-23

Voto impresso: falhas (?)


• Voto impresso não é uma panaceia
– Foco em detecção de situações suspeitas...
– ... e pode gerar suspeitas infundadas...
• Exemplo 2:
1. Urna honesta gera votos impressos assinados
2. Antes de recontagem, perdedor insere votos
sem assinatura correta no malote com os votos
3. Durante recontagem, cédulas com assinaturas
inválidas são detectadas
 O que fazer: Usar voto digital? Ou impresso? Ou
melhor refazer eleição (custo logístico...)?
(obs.: segurança física do malote acaba sendo um requisito forte...)

Voto impresso: falhas (?)


• Voto impresso não é uma panaceia
– Foco em detecção de situações suspeitas...
– ... e pode gerar suspeitas infundadas...
• Exemplo 3:
1. Urna desonesta gera assinaturas impressas
inválidas para candidato preterido
2. Durante recontagem, cédulas com assinaturas
inválidas são detectadas
 O que fazer: Usar voto digital? Ou impresso? Ou
melhor refazer eleição (custo logístico...)?
(obs.: segurança física do malote é essencial para distinguir do caso 2...)

49
05-Oct-23

Voto impresso: risco (?)

+
?
=

Perguntas?
EUA México India

Argentina:
(sim, estamos atrás…)

Auditoria em papel no mundo...

50
05-Oct-23

Leitura recomendada

• Livro “O mito da urna”


– [Link]

Apêndice –
Funções por dentro: a família SHA

51
05-Oct-23

Construção Merkle-Damgård
• Aplicação iterativa de função não inversível F
– Mensagem de tamanho m < 2N processada em blocos de
tamanho fixo de b bits, atualizando estado interno de h bits.
– Uso em vários algoritmos: MD5, SHA-1, SHA-2

M1 M2 M3 Mn
IV F F F … F F H

• Complemento Merkle-Damgård
– Padding: adiciona à mensagem bit ‘1’, seguido de tantos bits
‘0’ quanto necessário para que comprimento resultante seja
um múltiplo de b bits, exceto por um espaço final de N bits.
– Anexa-se o comprimento m da mensagem original em bits,
na forma de um inteiro de N bits (com 0s à esquerda).

Complemento Merkle-Damgård
mensagem original (m bits) padding comprimento

1 0 ... 0 m (N bits)

mensagem estendida (t blocos de b bits)

b bits b bits b bits

M1 M2 ... Mt

52
05-Oct-23

Contrução Merkle-Damgård
• Função não inversível: baseadas em cifras de bloco

Davies–Meyer Matyas–Meyer–Oseas
b bits b bits
chave chave
Mi Mi
h bits h bits h bits h bits
Hi–1 F Hi–1 Hi–1 F Hi–1

Miyaguchi–Preneel
b bits
chave
Mi
h bits h bits
Hi–1 F Hi–1

Estrutura básica do SHA-1


• Complemento Merkle-Damgård: b = 512 bits, N = 64
bits, h = 160 bits.
• Função de compressão Davies-Meyer.
• Transformação interna F: cifra de bloco dedicada:
– Operações simples p/ processadores de 32 bits e hardware.
– Função de compressão variável (420 passos)
– Mensagem Mi escalonada como 80 palavras W t de 32 bits

512 bits
Mi
160 bits 160 bits
Hi–1 F Hi

53
05-Oct-23

Escalonamento de Mensagem SHA-1


Mi

Wt
(t: 0 a 79)

<<< 1

Rotação ausente no SHA-0

Estrutura básica do SHA-1


IV: 0x67452301 0xEFCDAB89 0x98BADCFE 0x10325476 0xC3D2E1F0

A B C D E

<<< 5 constante
de rodada

Kt (t: 0 a 80)

ft
Soma mod 232

>>> 2
Wt (t: 0 a 80)
palavra da
mensagem
escalonada

A B C D E

54
05-Oct-23

Cifra de bloco dedicada SHA-1

• Funções auxiliares:
fi (x,y,z) =
(x  y)  (x  z), 0  i  19
x  y  z, 20  i  39
(x  y)  (x  z)  (y  z), 40  i  59
x  y  z, 60  i  79

Escalonamento de Mensagem
SHA-2

Mi

0 1

Wt (t: 16 a 63)
W0-15 = Mi

55
05-Oct-23

Estrutura básica do SHA-2

IV: 0x6a09e667 0xbb67ae85 0x3c6ef372 0xa54ff53a 0x510e527f 0x9b05688c 0x1f83d9ab 0x5be0cd19

A B C D E F G H

0 Maj(A,B,C) 1 Ch(E,F,G)

Wt Kt

Função de Compressão:
SHA-224 e SHA-256

• Funções auxiliares:
Maj(x,y,z) = (x  y)  (x  z)  (y  z)
Ch(x,y,z) = (x  y)  (x  z)
0(x) = rotr2(x)  rotr13(x)  rotr22(x)
1(x) = rotr6(x)  rotr11(x)  rotr25(x)
0(x) = rotr7(x)  rotr18(x)  shr3(x)
1(x) = rotr17(x)  rotr19(x)  shr10(x)

56
05-Oct-23

Função de Compressão:
SHA-384 e SHA-512

• Funções auxiliares:
Maj(x,y,z) = (x  y)  (x  z)  (y  z)
Ch(x,y,z) = (x  y)  (x  z)
0(x) = rotr28(x)  rotr34(x)  rotr39(x)
1(x) = rotr14(x)  rotr18(x)  rotr41(x)
0(x) = rotr1(x)  rotr8(x)  shr7(x)
1(x) = rotr19(x)  rotr61(x)  shr6(x)

Estrutura esponja: SHA-3


• Construção versátil:
– Entradas e saídas de tamanho arbitrário
– Uso: não apenas hash (SHA-3), mas cifra de fluxo,
geração de números pseudoaleatórios, ...

: truncagem

taxa de bits:

capacidade:

57
05-Oct-23

Segurança de funções de hash


• Modelo clássico: resistência a colisões e inversões
– Abordagem “prática”, com foco no uso
• Modelo mais moderno: “indiferenciabilidade”
– Deve ser estatisticamente inviável distinguir (“diferenciar”)
as saídas de uma função de hash H e de um oráculo
aleatório O.
• “Oráculo aleatório”: abstração de uma tabela
potencialmente infinita de pares (índice, valor).
– Cada chave passada a O é consultada na tabela.
– Saída para índices novos: novo valor aleatório, que em
seguida é tabelado
– Saída para índices já vistos: o valor previamente tabelado

Apêndice – MACs

58
05-Oct-23

Estrutura do CBC-MAC
• Modo de cifração CBC  saída = último bloco

M1 M2 ... MN 0*

Cifra
simétrica

EK EK ... EK

C1 C2 ... CN = CBC-MACK(M)

CBC-MAC: vulnerabilidade
• CBCMAC: seguro se aplicado apenas a mensagens de
um mesmo tamanho, fixado previamente para cada
chave.
• Isto ocorre porque, com duas mensagens autenticadas,
é possível calcular uma terceira mensagem (maior) e
seu tag sem conhecer a chave K:
– CBC-MACK (a1 , ... , ax) = ta
– CBC-MACK (b1 , ... , by) = tb
 CBC-MACK (a1 , ... ax , ta  b1 , ... , by) = tb

• Esta vulnerabilidade é removida no CMAC devido ao


tratamento diferenciado do último bloco da mensagem

59
05-Oct-23

CMAC

M1 M2 ... MM
mm’ = padK(Mm)

Cifra
simétrica

EK EK ... EK

C1 C2 ... Cm = CMACK(M)

CMAC: padding final

0*
Se bloco estiver Se bloco requer
completo: padding:
EK
Mm 2 4 Mm 10*

padK(Mm) padK(Mm)

multiplicação

60
05-Oct-23

HMAC
• Basicamente: duas chamadas da função de hash
– Segunda delas sobre volume reduzido de dados (2 blocos).

K || 0* ipad = 0x36*

Si M hash

K || 0* opad = 0x5A*

So Hi hash HMACK(M)

Apêndice – AEAD

61
05-Oct-23

GCM
• Cifração autenticada com dados associados
• Abordagem Carter-Wegman (CW)
– Mensagem M1 ... MN interpretada como um
polinômio em GF(2n)
– Bastante eficiente, em especial se usar tabela
pré-calculada (64 KiB)
• Estrutura combina (NIST SP 800-38D) :
– Cifração em modo CTR
– Algoritmo de hash CW (GHASH)

GCM

M1 M2 … MN 0* AD M

R+1 EK
•L •L ... •L
AD 0* C 0* |AD| |M|

GHASHK(M) = H
GHASH
R EK T
L = EK([0]128)
nonce||031 ||1 , se |nonce| = 96
R  GCMnonce,K(AD,M) = {AD, C, T}
GHASH(IV) , caso contrário

62
05-Oct-23

EAX
• Cifração autenticada com dados associados
• Solução combina ([Link] :
– Cifração em modo CTR
– Autenticação CBC
• Não é amplamente padronizado
– Mas tem estrutura bastante robusta

EAX
nonce M
M H
AD

0 1
CMACK CMACK
IV
EK

C
u u
CMACK (M) = CMACK ( u || M)
CMACK2
2

T
 EAXnonce,K(AD,M) = {AD, C, T}

63
05-Oct-23

Apêndice –
Experimentos

Hashes: teste você mesm@!


• Cálculo de hashes online:
[Link]
• Experimento prático:
– Visualização do conteúdo de arquivos .torrent (incluindo os
hashes dos pedaços).
• [Link]
– Criação de arquivo .torrent com qBittorrent
• Experimento prático:
– Verifique a integridade do instalador do Wireshark
• CertUtil (Windows), sha256sum (Linux), shasum (MacOS)

64
05-Oct-23

Números aleatórios:
Teste você mesm@!
• Página com várias discussões e ferramentas
sobre aleatoriedade
– Inclusive geração de números aleatórios
[Link]

• Experimento: Geração de números


aleatórios em Java:
[Link]

Geração de números
aleatórios
• Dada a ampla disponibilidade de informações na Internet, é
comum que programadores busquem ajuda no Google para
resolver problemas com os quais ainda não tenham
experiência. De fato, na área de segurança existem até mesmo
"colas" para ações comuns, como tratamento de senhas (vide
[Link]/[Link]/OWASP_Cheat_Sheet_Series).
Entretanto, para evitar falhas, é importante ser criterioso com
aquilo que se encontra, em especial quando a solução deve ser
integrada em sistemas críticos. Como um contra-exemplo dessa
diligência, procure no Google por “how to generate random
numbers in C” ("como gerar números aleatórios em C"). Discuta
a solução dada no primeiro link retornado como resposta, do
[Link], que é basicamente o que estava no código
(vulnerável!) da urna eletrônica brasileira...

65

Você também pode gostar