otes07 - segurança da informação · otes07 – segurança da informação 3 história do lucifer...
TRANSCRIPT
OTES07– Segurança da InformaçãoMódulo 05b: Criptografia Simétrica: AES/SAES
Prof. Charles Christian Mierse-mail:[email protected]
OTES07 – Segurança da Informação 2
Roteiro
Criptografia Moderna: Histórico AES e SAES SAES
Componentes Geração de Chaves Processo de Cifrar /
Decifrar AES
Geração de Chaves Processo de Cifrar /
Decifrar Comparativo: AES x SAES
OTES07 – Segurança da Informação 3
História do Lucifer ao SAES
Linha de tempo dos principais cifradores de bloco simétricos:
OTES07 – Segurança da Informação 4
Considerações DES x AES
DES é amplamente utilizado e estudado, assim como Estrutura de Feistel
AES utiliza Estrutura de Redes S/P e estruturas algébricas, recentes na criptografia simétrica
OTES07 – Segurança da Informação 5
AES – Advanced Encryption Standard
Selecionado através do concurso AES promovido pelo NIST Criado por Vincent Rijmen e Joan Daemen, homologado pelo
NIST como AES em outubro/2000 Não utiliza Estruturas de Feistel Baseado no cifrador Square Padronizado através da publicação da FIPS-197 em
outubro/2000
OTES07 – Segurança da Informação 6
Cifrador AES (cont.)
Resistência contra ataques conhecidos de criptoanálise (Linear e Diferencial)
Projeto simples Fundamentado na estratégia Wide Trail:
Camada não-linear (confusão) Camada de embaralhamento línear (difusão) Camada de adição de Chaves
Geração das chaves de rodada baseada em algoritmo Processo de cifrar e decifrar são diferentes devido a natureza
matemática do cifrador
OTES07 – Segurança da Informação 7
SAES – Simplified AES
8 bits chave
SAES8 bits texto aberto 8 bits texto cifrado
8 bits chave
SAES-18 bits texto cifrado 8 bits texto aberto
Cifrar
Decifrar
8 bits texto original
8 bits texto original
OTES07 – Segurança da Informação 8
Conceitos Básicos
S0,0
S1,0
S0,1
S1,1
Estado Inicial
S'0,0
S'1,0
S'0,1
S'1,1
Novo Estado
Transformação
Matriz Estado: matriz aonde são alocados de forma ordenada os bits tanto do bloco como das chaves (duas matrizes distintas). Exemplo: Distribuição texto aberto 10 01 10 11 no Estado:
Transformação: operação que possui como entrada um Matriz Estado S que sofre uma transformação e produz uma nova Matriz Estado S’
OTES07 – Segurança da Informação 9
Geração Chaves SAES
ExpansaoChave(byte Chave[2 * Nk], palavra w[Nb * (Nr + 1)], Nk) inicio i=0 enquanto (i < Nk) w[i] = palavra[Chave[2*i],Chave[2*i+1]] i = i +1 fim enquanto i = Nk enquanto (i < Nb * (Nr + 1)) temp = w[i - 1] se (i mod Nk = 0)
entao temp = SubPalavra(Rotacao(temp)) xor cons[i / Nk]senao temp = SubPalavra(temp) fim se
w[i] = w[i - Nk] xor temp i = i + 1 fim enquantofim
OTES07 – Segurança da Informação 10
Geração Chaves SAES
Exemplo de geração de chaves para: 10 00 01 00
OTES07 – Segurança da Informação 11
SAES: Cifrar
Rodada Normal
AdicionaChaveRodada
8 bits texto aberto
K1
8 bits
8 bits
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada K28 bits
ByteSub
DeslocamentoLinha
AdicionaChaveRodada K38 bits
8 bits texto cifrado
8 bits
Rodada Final
8 bits texto original
8 bits texto original
OTES07 – Segurança da Informação 12
SAES: Decifrar
Rodada Normal
AdicionaChaveRodada
8 bits texto cifrado
K3
8 bits
8 bits
InvDeslocamentoLinha
InvByteSub
AdicionaChaveRodada
InvMixColumn
K2 8 bits
InvDeslocamentoLinha
InvByteSub
AdicionaChaveRodada K1 8 bits
8 bits texto aberto
8 bits
Rodada Final
8 bits texto original
OTES07 – Segurança da Informação 13
Transformação AdicionaChaveRodada SAES
A chave de rodada é aplicada no estado através de uma operação XOR “elemento a elemento”
Exemplo:
K0
K1
K2
K3
S0,0
S1,0
S0,1
S1,1
S'0,0
S'1,0
S'0,1
S'1,1
OTES07 – Segurança da Informação 14
Transformação ByteSub SAES Realiza substituição “elemento a elemento” com
base na Caixa-S pré-definida para o cifrador
Exemplo:
S0,0
S1,0
S0,1
S1,1
S'0,0
S'1,0
S'0,1
S'1,11
0
0 1
10 11
01 00
Caixa-S
S0,0
S1,0
S0,1
S1,1
S'0,0
S'1,0
S'0,1
S'1,11
0
0 1
11 10
00 01
Caixa-S-1
OTES07 – Segurança da Informação 15
Transformação DeslocamentoLinha SAES Realização de um rotacionamento cíclico padrão
nos elementos do estado
Exemplo:
S0,0
S1,0
S0,1
S1,1
S'0,0
S'1,0
S'0,1
S'1,1
S0,0
S1,0
S0,1
S1,1
S'0,0
S'1,0
S'0,1
S'1,1
OTES07 – Segurança da Informação 16
Transformação MixColumn SAES As colunas do estado
são consideradas como polinômios sobre GF(22) e sofrem uma multiplicação modular com o polinômio irredutível fixo pré-determinado x2+x+1
Cifrar: a(x)=3x+1 Decifrar: a-1(x)=x+2
S0,0
S1,0
S0,1
S1,1
a(x)
S'0,0
S'1,0
S'0,1
S'1,1
S'0,0= (01 S0,0 ) (11 S1,0 )
S'1,0= (11 S0,0 ) (01 S1,0 )
S'0,1= (01 S0,1 ) (11 S1,1 )
S'1,1= (11 S0,1 ) (01 S1,1 )
S0,0
S1,0
S0,1
S1,1
a-1(x)
S'0,0
S'1,0
S'0,1
S'1,1
S'0,0= (10 S0,0 ) (01 S1,0 )
S'1,0= (01 S0,0 ) (10 S1,0 )
S'0,1= (10 S0,1 ) (01 S1,1 )
S'1,1= (01 S0,1 ) (10 S1,1 )
OTES07 – Segurança da Informação 17
Transformação MixColumn SAES, Exemplo:
OTES07 – Segurança da Informação 18
Cifrar SAES – Completo
OTES07 – Segurança da Informação 19
Decifrar SAES – Completo
OTES07 – Segurança da Informação 20
AES – Advanced Encryption Standard
128/192/256 bits texto original
128/192/256 bits texto original
OTES07 – Segurança da Informação 21
Fundamentos e Componentes AES
Essência Algébrica/Matemática Corpo Finito GF(28) Cifra orientada ao byte Operações sobre Estado Tamanho de chave/bloco variável: 128/192/256 Transformação ByteSub Transformação DeslocamentoLinha Transformação MixColumn Transformação AdicionaChaveRodada
OTES07 – Segurança da Informação 22
Essência Algébrica/Matemática do AES
Dados agrupados em bytes, considerados como corpos finitos representados através de notação polinomial: b7x
7+b6x6+b5x
5+b4x4+b3x
3+b2x2+b1x
1+b0x0
aonde b correspondem aos bits do byte
Operações realizadas sobre os bytes, como multiplicação, seguem o padrão algébrico para Corpos GF
OTES07 – Segurança da Informação 23
Corpo Finito GF(28)
Utilizado no AES para efeito de difusão e substituição (Caixa-S)
Corpo é um anel aonde todos os elementos são inversíveis com excluindo-se o zero (0)
Corpo do tipo GF(pm) aonde p é primo e m um inteiro maior que 0
Isomorfismo Corpo abeliano
OTES07 – Segurança da Informação 24
Cifra orientada ao byte
Todas as operações possuem como entrada mínima um byte e geram como saída a quantidade equivalente de bytes fornecidos na entrada
Cada byte consiste de um corpo finito de dimensão GF(28)
OTES07 – Segurança da Informação 25
Operações feitas sobre Estado
Bytes do bloco de entrada e chave são agrupados primeiramente em bytes e posteriormente em colunas de 4 bytes
A quantidade de colunas varia de acordo com o tamanho do bloco de entrada ou chave
O resultado de uma transformação consiste na nova situação do Estado
S0,0
S1,0
S2,0
S3,0
S0,1
S1,1
S2,1
S3,1
S0,2
S1,2
S2,2
S3,2
S0,3
S1,3
S2,3
S3,3
Estado Inicial
S'0,0
S'1,0
S'2,0
S'3,0
S'0,1
S'1,1
S'2,1
S'3,1
S'0,2
S'1,2
S'2,2
S'3,2
S'0,3
S'1,3
S'2,3
S'3,3
Novo Estado
Transformação
OTES07 – Segurança da Informação 26
Tamanho de chave/bloco variável
Devido a orientação ao byte e a organização em estado a variação/aumento do tamanho da chave/bloco consiste na adição de colunas no Estado
A alteração do tamanho do bloco(Nb) e/ou chave(Nk) implica na alteração da quantidade de rodadas (Nr)
OTES07 – Segurança da Informação 27
Transformação ByteSub AES
Realiza substituição byte a byte através de uma Caixa-S pré-definida
O elemento S’ é selecionado utilizando os quatro primeiros bits do elemento em S para definirem a linha e os quatro últimos para definirem a coluna. O valor encontrado na Caixa-S é atribuído ao elemento em S’
OTES07 – Segurança da Informação 28
Caixa-S Adotada no AES (hexadecimal)
OTES07 – Segurança da Informação 29
Caixa-S-1 Adotada no AES (hexadecimal)
OTES07 – Segurança da Informação 30
Transformação DeslocamentoLinha AES
Realização de um rotacionamento cíclico padrão nos bytes do estado
OTES07 – Segurança da Informação 31
Transformação MixColumn AES
As colunas do estado são consideradas como polinômios sobre GF(28) e multiplicadas pelo módulo x4+1 com um polinômio fixo c(x)=03hx3+01hx2+01hx+02h (Cifrar)
OTES07 – Segurança da Informação 32
Transformação InvMixColumn AES
As colunas do estado são consideradas como polinômios sobre GF(28) e multiplicadas pelo módulo x4+1 com um polinômio fixo d(x)=0Bhx3+0Dhx2+09hx+0Eh (Decifrar)
OTES07 – Segurança da Informação 33
Transformação AdicionaChaveRodada AES
A chave de rodada é aplicada no estado através de uma operação XOR “byte a byte”
K0
K1
K2
K3
K4
K5
K6
K7
K8
K9
K10
K11
K12
K13
K14
K15
S0,0
S1,0
S2,0
S3,0
S0,1
S1,1
S2,1
S3,1
S0,2
S1,2
S2,2
S3,2
S0,3
S1,3
S2,3
S3,3
sub-chave rodada
S'0,0
S'1,0
S'2,0
S'3,0
S'0,1
S'1,1
S'2,1
S'3,1
S'0,2
S'1,2
S'2,2
S'3,2
S'0,3
S'1,3
S'2,3
S'3,3
OTES07 – Segurança da Informação 34
Algoritmo Geração Chaves AESExpansaoChave(byte Chave[4 * Nk], palavra w[Nb * (Nr + 1)], Nk) inicio i=0 enquanto (i < Nk) w[i] = palavra[Chave[4*i],Chave[4*i+1],Chave[4*i+2],Chave[4*i+3]] i = i +1 fim enquanto i = Nk enquanto (i < Nb * (Nr + 1)) temp = w[i - 1] se (i mod Nk = 0)
entao temp = SubPalavra(Rotacao(temp)) xor cons[i / Nk]senao se (Nk = 8 e i mod Nk = 4) entao temp = SubPalavra(temp) fim se
fim se w[i] = w[i - Nk] xor temp i = i + 1 fim enquantofim
OTES07 – Segurança da Informação 35
Algoritmo Geração Chaves AES
W0 W2W1 W3 W4 W6W5 W7 W8 W10W9 W11 W12 W14W13 ...
Chave de Rodada 0 Chave de Rodada 1 ...Chave de Rodada 2
OTES07 – Segurança da Informação 36
Algoritmo Geração Chaves AES
OTES07 – Segurança da Informação 37
Cifragem AES
Processo de cifrar: Primeira operação é
AdicionaChaveRodada n rodadas iguais Última rodada não
possui MixColumn
Rodada 1
AdicionaChaveRodada
Nb bytes texto aberto
K1
Nb bytes
Nk bytes
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada K2Nk bytes
ByteSub
DeslocamentoLinha
AdicionaChaveRodada KNrNk bytes
Nb bytes texto cifrado
Nb bytes
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada KNr-1Nk bytes
Rodada Nr-1
Nb bytes texto original
OTES07 – Segurança da Informação 38
AdicionaChaveRodada
Nb bytes texto aberto
KNr
Nb bytes
Nk bytes
Inv_ByteSub
Inv_DeslocamentoLinha
AdicionaChaveRodada K1Nk bytes
Nb bytes texto cifrado
Nb bytes
AdicionaChaveRodada
Inv_MixColumn
Inv_DeslocamentoLinha
Inv_ByteSub
KNr-1Nk bytes
Rodada 2
AdicionaChaveRodada
Inv_MixColumn
Inv_DeslocamentoLinha
Inv_ByteSub
K2Nk bytes
Rodada Nr-1
Decifrar AES
Processo de decifrar: Não é igual a cifrar Inversas matemáticas
das transformações Caixa-S Inversa Decifrador Equivalente
otimizado Tempo de decifrar é
diferente do tempo do processo de cifrar
Nb bytes texto original
OTES07 – Segurança da Informação 39
Comparativo: SAES e AES (Nb=4 e Nk=4)
OTES07 – Segurança da Informação 40
Redução do Número de Rodadas
Rodada 1
AdicionaChaveRodada
Nb bytes texto aberto
K1
Nb bytes
Nk bytes
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada K2Nk bytes
ByteSub
DeslocamentoLinha
AdicionaChaveRodada KNrNk bytes
Nb bytes texto cifrado
Nb bytes
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada KNr-1Nk bytes
Rodada Nr-1AES SAES
Rodada Normal
AdicionaChaveRodada
8 bits texto aberto
K1
8 bits
8 bits
ByteSub
DeslocamentoLinha
MixColumn
AdicionaChaveRodada K28 bits
ByteSub
DeslocamentoLinha
AdicionaChaveRodada K38 bits
8 bits texto cifrado
8 bits
Rodada Final
Nb bytes texto original 8 bits texto original
OTES07 – Segurança da Informação 41
Modos de Operação AES
Modos de Operação do AES definidos pelo NIST através do Recommendation for Block Cipher Modes of Operation SP800-38a: Methods and Techniques. Modos definidos: ECB – Eletronic CodeBook CBC – Cipher Block Chaining CFB – Cipher Feedback Mode OFB – Output Feedback Mode CTR – Counter Mode
OTES07 – Segurança da Informação 42
Codebook Eletrônico (ECB)Cifrar ECB
Texto Aberto - x1
Bloco de Entrada
AES
Bloco de Saída
Texto Cifrado - y1
Decifrar ECB
Texto Cifrado - y1
Bloco de Entrada
AES-1
Bloco de Saída
Texto Aberto - x1
Texto Aberto - x2
Bloco de Entrada
AES
Bloco de Saída
Texto Cifrado - y2
Texto Aberto - xn
Bloco de Entrada
AES
Bloco de Saída
Texto Cifrado - yn
Texto Cifrado - y2
Bloco de Entrada
AES-1
Bloco de Saída
Texto Aberto - x2
Texto Cifrado - yn
Bloco de Entrada
AES-1
Bloco de Saída
Texto Aberto - xn
OTES07 – Segurança da Informação 43
CBC – Cipher Block Chaining
OTES07 – Segurança da Informação 44
CFB – Cipher Feedback Mode
OTES07 – Segurança da Informação 45
OFB – Output Feedback Mode
OTES07 – Segurança da Informação 46
CTR – Counter Mode
OTES07 – Segurança da Informação 47
Leitura Recomendada:
Daemen, J. & Rijmen, V. - The rijndael block cipher. NIST.1998.
FIPS - FIPS46/3: Data Encryption Standard. NIST, FIPS. 1999. Disponível em: http://csrc.nist.gov/fips/fips46-3.pdf
FIPS - FIPS197: Advanced Encryption Standard. NIST, FIPS. 2001. Disponível em: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
Miers, Charles C. – Modelo Simplificado do Cifrador AES. UFSC. Dissertação de Mestrado. 2002.
Stallings, Willian. Network Security Essentials. 2a Edição. Editora Prentice-Hall. 2003. Capítulos 1 e 2
OTES07 – Segurança da Informação 48
Leitura Recomendada: (Cont.)
Stallings, William - Cryptography and Network Security: Principles and Practice. 3ª Edição. Prentice-Hall. 2003. Capítulos 4, 5, 7, 9 e 10
Terada, Routo - Segurança de Dados Criptografia em Redes de Computador. São Paulo. Edgard Blücher. 2000
OTES07 – Segurança da Informação 49