Funções de Hash e Autenticação em Segurança
Funções de Hash e Autenticação em Segurança
Segurança da Informação
Funções de Hash,
Códigos de Autenticação e
Números Aleatórios
• Integridade
– Capacidade de verificar se informação foi alterada
Usuário Banco
Intruso
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
Dados CRC
2
05-Oct-23
Segurança da Informação
Funções de Hash,
Códigos de Autenticação e
Números Aleatórios
Segurança da Informação
Funções de hash
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
4
05-Oct-23
Propriedades Fundamentais
? M ? ? ?
R R = R =
2n 2n 2n/2
5
05-Oct-23
2ª inversão
1
M ? hash mirror 1
2
Hash Hash
download
R = R
2’
3
Hash software
mirror 2
(invadido)
=? alterado
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
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.
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]
: truncagem
taxa de bits:
capacidade:
9
05-Oct-23
Arquivo
corrompido
Arquivo
correto
Arquivo
corrompido
10
05-Oct-23
?
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
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
12
05-Oct-23
Segurança da Informação
Códigos de Autenticação
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
M M M
K MAC K MAC
V
?
=
T T
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)
M E C E–1 M
K’ MAC K’ MAC
V
?
=
T T
17
05-Oct-23
AD
K K
–1
M AEAD C AEAD ou M
AD
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
Segurança da Informação
19
05-Oct-23
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
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
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.
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)
23
05-Oct-23
EK EK EK
24
05-Oct-23
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
27
05-Oct-23
RDV: Exemplo
Governador Senador Presidente Governador Senador Presidente
31 71 31
1º voto 98 2º voto 98
Nulo
Branco Branco
37
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
29
05-Oct-23
30
05-Oct-23
• Zerésima e semente
de embaralhamento
do RDV.
31
05-Oct-23
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?
Segurança da Informação
Estudo de caso:
votação eletrônica no Brasil
33
05-Oct-23
No…
Of course not…
100%
97%
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)
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
37
05-Oct-23
Original:
Mas quem
votaria no
Vader?!
Irrelevante...
Comprometido:
Fonte: [Link]
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();
}
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]
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
41
05-Oct-23
? ?
Auditoria Pós-Eleição
• ... não é previsto...
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
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
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)
44
05-Oct-23
1. [Link]
2. [Link]
3. [Link]
1. [Link]
2. [Link]
45
05-Oct-23
1. [Link]
2. [Link]
3. [Link]
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.
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
1. [Link]
2. [Link]
3. [Link]
48
05-Oct-23
49
05-Oct-23
+
?
=
Perguntas?
EUA México India
Argentina:
(sim, estamos atrás…)
50
05-Oct-23
Leitura recomendada
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)
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
512 bits
Mi
160 bits 160 bits
Hi–1 F Hi
53
05-Oct-23
Wt
(t: 0 a 79)
<<< 1
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
• 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
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)
: truncagem
taxa de bits:
capacidade:
57
05-Oct-23
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
59
05-Oct-23
CMAC
M1 M2 ... MM
mm’ = padK(Mm)
Cifra
simétrica
EK EK ... EK
C1 C2 ... Cm = CMACK(M)
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
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]
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