SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Goiânia, abril de 2011.
1
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE
GOIÁS
TECNOLOGIA EM REDES DE COMUNICAÇÃO - TURMA 3060900.
AES
Goiânia, abril de 2011.
2
Adenomar Santos de Paula
Victor Araújo Gomes
AES
Professora: Édio.
Dissertação apresentada ao curso de
graduação em Tecnologia Em Redes de
Comunicação do Instituto Federal de
Educação, Ciência e Tecnologia do Estado
de Goiás, como complemento de avaliação
bimestral da disciplina Segurança de
Redes, para obtenção do título de
Tecnólogo Em Redes de Comunicação.
Goiânia, abril de 2011.
3
Sumário
1 - Introdução...................................................................................................... 04.
2 - Objetivo.......................................................................................................... 05.
3 - Criptografia - Visão geral .............................................................................. 06.
4 - AES Surgimento .......................................................................................... 08.
5 - AES – Fundamentação matemática.............................................................. 09.
6 - AES – Fundamentação Algorítmica............................................................... 10.
7 – Conclusão..................................................................................................... 22.
8 - Bibliografia..................................................................................................... 23.
Goiânia, abril de 2011.
4
1 Introdução
Em meio a uma necessidade crescente de comunicação instantânea,
dinâmica e ilimitada, as tecnologias que garantam a integridade das informações,
bem como sua disponibilidade de forma adequada e protegida de possíveis ataques
maliciosos tornam-se fundamentais.
A criptografia, que teve sua utilização iniciada à tempos, mostra-se hoje como
uma ciência indispensável às grandes empresas, públicas ou privadas que queiram
desempenhar um trabalho coerente.
Este material traz uma breve apresentação relativa ao Padrão Avançado de
Encriptação, “criptografia AES”, discutindo seus principais a fundamentação
matemática, a fundamentação algorítmica e apresentando um exemplo de
criptografia aplicado da uma frase.
Goiânia, abril de 2011.
5
2 Objetivo
Este material tem o objetivo de apresentar o Advanced Encryption Standard,
seus fundamentos matemáticos, algorítimos e os processo de
criptográfica/decriptografia do padrão.
Goiânia, abril de 2011.
6
3 Criptografia - Visão geral
Historicamente, quatro grupos de pessoas utilizaram e contribuíram para a arte
da criptografia: os militares, os diplomatas, as pessoas que gostam de guardar
memórias e os amantes e os métodos de criptografia têm sido divididos em duas
categorias: as cifras de substituição e as cifras de transposição.
As mensagens a serem criptografadas, conhecidas como texto simples, são
transformadas por uma função que é parametrizada por uma chave. Em seguida, a
saída do processo de criptografia, conhecida como texto cifrado, é transmitida,
normalmente através de um mensageiro ou por rádio. Presumi-se que o inimigo, ou
intruso, ouça e copia cuidadosamente o texto cifrado completo. No entanto, ao
contrário do destinatário pretendido, ele não conhece a chave para descriptografar o
texto e, portanto, não pode fazê-lo com muita facilidade. Às vezes, o intruso pode
não só escutar o que se passa no canal de comunicação (intruso passivo), como
também pode gravar mensagens e reproduzi-las mais tarde, injetar suas próprias
mensagens ou modificar mensagens legítimas antes que elas cheguem ao receptor
(intruso ativo). A arte de solucionar mensagens cifradas é chamada criptoanálise. À
arte de criar mensagens cifradas (criptografia) e solucioná-las (criptoanálise) é
chamada coletivamente criptologia.
Tem-se uma notação para estabelecer uma relação entre o texto simples, o texto
cifrado e as chaves. Utiliza-se C = EK (P) para denotar que a criptografia do texto
simples P usando a chave K gera o texto cifrado C. Da mesma forma, P = DK (C)
representa a descriptografia de C para se obter o texto simples outra vez. Então,
tem-se:
DK (EK (P)) = P
Essa notação sugere que “E” e “D” são simplesmente funções matemáticas, o
que é verdade. A única parte complicada é que ambas são funções de dois
parâmetros, e escreve-se um desses parâmetros (a chave) como um caractere
subscrito, em vez de representá-lo como um argumento, para distingui-lo da
mensagem.
Goiânia, abril de 2011.
7
Uma regra fundamental da criptografia é supor que o criptoanalista conhece os
métodos genéricos de criptografia e descriptografia que são utilizados. Em outras
palavras, o criptoanalista sabe como funciona o método de criptografia, “E”, e o
método de descriptografia, “D”.
O esforço necessário para criar, testar e instalar um novo algoritmo toda vez que
o antigo método (supostamente) é comprometido sempre dificultou a manutenção
desse segredo e, como imaginar que o algoritmo de criptografia é secreto, quando
na realidade ele não é, resulta em mais prejuízo do que em benefícios, usa-se a
chave.
A chave consiste em um string (relativamente) curto que seleciona uma das
muitas formas possíveis de criptografia. Ao contrário do método genérico, que só
pode ser modificado a cada período de alguns anos, a chave pode ser alterada
sempre que necessário. Portanto, nosso modelo básico é um método genérico
publicamente conhecido, parametrizado por uma chave secreta que pode ser
alterada com facilidade. A idéia de que o criptoanalista conhece os algoritmos e que
o segredo reside exclusivamente nas chaves é chamada princípio Kerckhoff, que
recebeu esse nome em homenagem ao criptógrafo militar flamengo Auguste
Kerckhoff que o enunciou primeiro em 1883 (Kerckhoff, 1883). No princípio de
Kerckhoff tem-se que todos os algoritmos devem ser públicos; apenas as chaves
são secretas. Deve-se enfatizar o caráter não sigiloso do algoritmo. Tentar manter o
algoritmo secreto, uma estratégia conhecida no ramo como segurança pela
obscuridade, nunca funciona.
Alguns conceitos fundamentais para criptografia são:
> Cifra de substituição – processo em que cada letra ou grupo de letras é substituído
por outra letra ou grupo de letras de modo a criar um disfarce. Dentre as cifras, uma
das mais antigas é a cifra de César, atribuída a Júlio César. Nesse método, “A”
torna-se “D”, “B” torna-se “E”,... e “Z” torna-se “C”. Assim a palavra “ataque”,
passaria a ser “WDTXH”.
> Cifra de transposição – processo em que ocorre a reordenação das letras, mas
sem disfarçá-las.
Goiânia, abril de 2011.
8
> Princípio criptográfico 1 – este princípio envolve a garantia de redundância nas
mensagem de modo a impedir que intrusos enviem lixo e enganem o receptor.
> Princípio criptográfico 2 – este princípio envolve a criação de algum método que
anule a tentativa de quebra de senha por repetição.
4 AES - Surgimento
Um dos métodos de criptografia usados é o AES – Advanced Encryption
Standard (ou Padrão Avançado de Encriptação). Este padrão de criptografia se
originou de um concurso lançado em 1997 pelo NIST (National Institute of Standards
and Technology). Naquele momento havia a necessidade de escolher um algoritmo
mais seguro e eficiente para substituir o DES (Data Encryption Stardard), que
apresentou fragilidades.
O novo algoritmo deveria atender a certos pré-requisitos como:
1. O algoritmo teria de ser uma cifra de bloco simétrica.
2. Todo o projeto teria de ser público.
3. Deveriam ser admitidos tamanhos de chaves iguais a 128, 192 e 256 bits.
4. Teriam de ser possíveis implementações de software e de hardware.
5. O algoritmo teria de ser público ou licen ciado em termos não discriminatórios.
Na Primeira Conferência dos Candidatos AES, em 1998, apresentaram-se 15
candidatos e, um ano depois, na Segunda Conferência, foram indicados 5 destes
como finalistas: MARS, RC6, Rijndael, Serpent e Two_sh, e, Em 2000, foi conhecido
o vencedor: Rijndael. O algoritmo, criado pelos belgas Vincent Rijmen e Joan
Daemen, foi escolhido com base em:
 Segurança (esforço requerido para criptoanálise)
 Eficiência computacional
 Requisitos de memória
 Adequação a hardware e software
 Simplicidade
Goiânia, abril de 2011.
9
5 AES – Fundamentação matemática
O sistema é baseado em notação Polinomial desenvolvida por Galois
(matemático francês que teve a carreira encerrada em um duelo com armas de fogo.
Depois de ter se envolvido em um romance com uma jovem comprometida, Galois
foi desafiado pelo pretendente da jovem e não resistiu ao confronto). No Exemplo
tem-se
b7 x7+ b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0
onde ={b7b6b5b4b3b2b1b0} são os bits do byte B
As somas são feitas usando-se XOR´s. A Multiplicação usa 2 bytes na notação
polinomial e o resultado modulo polinômio irredutível de grau 8. Na Multiplicação por
x:
Faz-se um deslocamento a esquerda com um XOR condicional da seguinte
forma:
Se b7 = 0 faz apenas o deslocamento.
Se b7 = 1 faz o deslocamento seguido de um XOR.
Onde b7 é o bit mais significativo do byte B. Essa operação é conhecida como
xtime. Fazendo-se repetidas aplicações de xtime e somando seus resultados
intermediários consegue-se fazer uma multiplicação por qualquer constante.
Polinômios com coeficientes em GF(28):
Os coeficientes agora são bytes e não bits como anteriormente, porém a forma
de calcular é semelhante.
Soma:
A(x) = a3 x3 + a2 x2 + a1 x + a0
B(x) = b3 x3 + b2 x2 + b1 x + b0
A(x) + B(x) = (a3 + b3) x3 + (a2 + b2) x2 + (a1 + b1) x + (a0 + b0)
Multiplicação portanto contem:
Passo 1) - multiplicação termo a termo.
Passo 2) - redução do resultado num polinômio de grau menor que 4. No AES
é usado (x4 + 1).
xi mod (x4 + 1) = x i mod 4.
Goiânia, abril de 2011.
10
6 AES – Fundamentação Algorítmica
A pequena diferença entre o AES e o Rijndael é que este suporta tamanhos de
chave e bloco variando entre 128, 160, 192, 224 e 256 bits. Ou seja, os dois
possuem o mesmo funcionamento, sendo que o Rijndael pode utilizar uma variação
maior de tamanhos de chave e bloco do que o AES. A frente tem-se exemplos com
blocos e chaves 128 bits, apenas.
Para dar continuidade é necessário algumas definições:
> Estado – é uma matriz de bytes que inicialmente contém a mensagem e, após
cada etapa, será modificada.
> Mensagem - é o texto antes de ser criptografado, e cujo conteúdo deve ser
acessível apenas ao destinatário. Para manter a segurança, é preciso tornar a
mensagem um texto ilegível, também chamado texto cifrado, e isso é feito através
da criptografia.
> AddRoundKey – É uma operação de XOR byte a byte entre o estado e a chave da
rodada.
> SubBytes – É a etapa em que cada byte do estado é substituído por outro em uma
S-box (caixa de substituição), denotada por SRD.
> ShiftRows – É a etapa em que se rotaciona à esquerda as linhas do estado,
trocando assim a posição dos bytes.
> MixColumns – É a etapa em que o resultado da operação em uma determinada
coluna não influencia o resultado nas demais. Porém, a mudança de um byte em
uma coluna influencia o resultado na coluna inteira.
No Rijndael, o tamanho do estado vai depender do tamanho do bloco utilizado,
sendo composta de 4 linhas e “Nb” colunas, onde Nb é o número de bits do bloco
dividido por 32. O algoritmo possui rodadas, também chamadas de iterações, que,
por sua vez, possuem 4 etapas: AddRoundKey, SubBytes, ShiftRows e
MixColumns. Na última rodada, porém, a operação MixColumns não é realizada.
Usa-se a sigla Nr (number of rounds – número de rodadas) para designar o número
de rodadas que serão utilizadas durante a execução do algoritmo. No AES o número
de rodadas depende do tamanho da chave, sendo Nr igual a 10, 12 e 14, para Nk
igual a 4, 6 e 8, respectivamente. O algoritmo possui uma chave principal e, a partir
dela, são geradas Nr + 1 chaves, geralmente chamadas de chaves de rodada, pois
Goiânia, abril de 2011.
11
cada uma será usada em uma rodada diferente. Além disso, a própria chave
principal é usada antes da primeira rodada. A chave principal é alocada em uma
matriz de 4 linhas e Nk colunas, e cada chave de rodada é agrupada da mesma
maneira que o bloco de dados.
As Figura 6.1.1 abaixo mostra de uma forma geral como ocorrem os processos
de cifragem e decifragem com o AES.
Figura 6.1.1 – Processo de Cifragem e Descifragem.
Na Transformação SubBytes cada byte do estado é substituído por outro em
uma S-box (caixa de substituição), denotada por SRD. Todos os valores dessa caixa
serão dados em hexadecimal. Os quatro primeiros e os quatro últimos bits do byte a
ser substituído representam em hexadecimal, respectivamente, a linha e a coluna
Goiânia, abril de 2011.
12
onde se encontra o novo byte. Por exemplo, o valor hexadecimal 6a deverá ser
substituído pelo byte que se encontra na linha “6" e na coluna “a" da SRD (caixa de
substituição), que é o valor 02. A SRD é gerada a partir da composição de duas
funções f e g constituídas sobre GF(28). Se a = a0a1a2a3a4a5a6a7, tem-se que
,
onde é o inverso multiplicativo de em e
onde
A Tabela 6.1.2 abaixo mostra a S-Box usada no AES.
Tabela 6.1.2 – S-Box usada no AES.
A inversa da operação SubBytes chama-se InvSubBytes, e usa uma S-Box
inversa, denotada por S-1
RD, que usa a composição de funções
S-1
RD
Aplicando a S-Box no valor 6a, obtemos o valor 02. Logo, aplicando a S-box inversa
(Tabela 6.1.3) em 02 obtemos o valor 6a.
Goiânia, abril de 2011.
13
Tabela 6.1.3 – S-Box inversa.
Na Transformação ShiftRows, a qual consiste em rotacionar à esquerda as
linhas do estado, trocando assim a posição dos bytes. O número de posições a
serem rotacionadas depende da linha e do tamanho do bloco nos quais se trabalhe.
Na Tabela 6.1.4, Ci representa o número de posições a serem rotacionadas na linha
de posição i (de cima para baixo) de um bloco com Nb colunas. Exemplifica-se na
Tabela 6.1.5 a transformação ShiftRows. A operação inversa correspondente
chama-se InvShiftRows e consiste apenas em fazer o mesmo rotacionamento,
porem à direita.
Tabela 6.1.4 – Posições a rotacionar.
Tabela 6.1.5 – Rotação de linhas.
Goiânia, abril de 2011.
14
Na transformação MixColumns (em que o resultado da operação em uma
determinada coluna não influencia o resultado nas demais, porém, a mudança de
um byte em uma coluna influencia o resultado na coluna inteira) os bytes do estado
são tratados como polinômios sobre o corpo finito GF(28
). Essa transformação pode
ser representada por uma multiplicação de matrizes. Definindo S’ como o estado
após essa transformação, Ele será o resultado da multiplicação de uma matriz fixa
“C” pela matriz “S” que representa o estado, ou seja,
onde o sinal ⊙ representa a multiplicação matricial.
Na Transformação AddRoundKey, que é uma operação de XOR byte a byte
entre o estado e a chave da rodada, observa-se uma transformação que opera cada
byte individualmente. Basicamente, se sx,y é um byte do estado e kx,y um byte da
chave, temos que o byte s’x,y do novo estado é igual a sx,y ⊕ kx,y. Como (a ⊕ b)⊕b =
a, a transformação AddRoudKey é sua própria inversa.
6.2 Expansão de Chave
Como já foi dito, as chaves utilizadas em cada rodada são geradas a partir da
chave principal do AES.
O algoritmo usado gera Nr + 1 chaves, pois antes da primeira rodada é feita uma
AddRoundKey. A geração de chaves, também conhecida como expansão de chave,
resulta em um vetor com palavras (isto é, uma sequência) de 4 bytes. Determina-se
cada palavra por wi, onde “w” indica “work” e “i” é a posição da palavra no vetor.
Inicialmente, completa-se as Nk primeiras palavras do vetor com os bytes da chave
principal. Se i não é múltiplo de Nk, wi será obtida através de uma operação XOR
entre temp = w[i-1] e w[i-Nk], as palavra 1 e Nk posições anteriores a ela,
respectivamente. Caso i não seja múltiplo de Nk, usa-se as funções:
1 – Rot Word – Função que rotaciona a palavra uma posição à esquerda.
2 – SubWord – Similar a SubBytes, substitui cada byte da palavra pelo byte
correspondente na S-Box;
Goiânia, abril de 2011.
15
3 – Rcon(j) – É uma constante diferente a cada rodada (j). Essa constante é dada
por Rcon(j) = (RC[j],00,00,00), onde RC[1] e RC[j]=2. RC[j-1], com multiplicação
sobre GF(28
). A tabela 6.2.1 mostra o valor de RC[j] a cada rodada.
Tabela 6.2.1 – Constate em função da rodada j.
A expansão de chave, para Nk ≤ 6, pode ser descrita em pseudocódigo:
KeyExpansion (byte key [4*Nk], word w[Nb*(Nr+1)], Nk)
word temp
for i from 0 to Nk-1
w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])
for i from Nk to Nb*(Nr + 1)-1
temp = w[i - 1]
if (i mod Nk = 0)
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]
w[i] = w[i - Nk] xor temp
Exemplo Supondo que a chave principal tenha 128 bits e que a chave de rodada 4
seja: 2f 56 3a c5 78 bb de 47 14 f5 23 d7 a8 cf e2 35 . Na Tabela 6.2.2, indicamos
passo a passo o c_alculo da primeira palavra da chave de rodada 5.
i 20
temp = w[i-1] a8cfe235
RotWord cfe235a8
SubWord 8a9896c2
Rcon(5) 10000000
temp = SubWord⊕ Rcon(5) 9a9896c2
w[i-Nk] 2f563ac5
w[i] = temp ⊕ w[i-Nk] b5ceac07
Tabela 6.2.2 – Exemplo do cálculo de w[i]
Goiânia, abril de 2011.
16
6.3 Cifrando e decifrando uma mensagem com o AES
O objetivo desta seção é demonstrar como funciona na pratica o algoritmo
AES. Para isso, é necessário cifrar e decifrar uma mensagem usando esse
algoritmo. Por questão de conveniência, utiliza-se um tamanho de 128 bits para a
mensagem, ou seja, usa-se um estado com 4 linhas e 4 colunas. Todos os valores
das tabelas serão representados no sistema hexadecimal e usa-se a tabela ASCII
estendida. Utilizando um texto com 16 caracteres, o que corresponde a 128 bits.
Cifrando e decifrando a mensagem PALESTRA.NO.LNCC e escolhendo a chave
principal como BOLSISTA.DO.CNPQ, chega-se às Tabelas 6.3.1 e 6.3.2 cujos
valores são obtidos pela relação entre as chaves definidas e os valores da tabela
ASCII.
Tabela 6.3.1 – Estado da Mensagem
Tabela 6.3.2 – Chave principal.
Após implementar o algoritmo de geração de chaves, obtêm-se os valores
mostrados na Tabela 6.3.3 abaixo:
Goiânia, abril de 2011.
17
Tabela 6.3.3 – Chaves obtidas em cada rodada.
Inicia-se o algoritmo com a AddRoundKey antes da primeira rodada, usando a
chave de rodada 10. A operação é vista na Tabela 6.3.4.
Tabela 6.3.4 – AddRoundKey.
Prosseguindo executa-se SubBytes ao estado obtido na operação anterior e
posteriormente ShiftRows.
Transformação SubBytes na primeira rodada.
Goiânia, abril de 2011.
18
Transformação ShiftRows
A partir daí inicia-se a transformação MixColumns, as quais envolvem soma e
multiplicação sobre um corpo de Galois polinomial, nas quais, a cada conjunto de 8
bits, atribui-se um polinômio de grau menor ou igual a 7, sendo cada bit o coeficiente
de um termo polinômio. Por exemplo, o byte AB tem representação binária igual a
10101011 e representação polinomial igual a:
1x7
+0x6
+1x5
+0x7
+1x3
+0x2
+1x+1 = x7
+x5
+x3
+x+1.
Pelo fato de se trabalhar com um corpo de característica 2, a xom e o xor
coincidem.
Assim, na soma de polinômios, reduz-se os coeficientes ao módulo 2. Na
operação de multiplicação, o resultado é reduzido ao módulo seguinte:
m(x)=x8
+x4
+x3
+x+1.
O símbolo ⊗ é usado para representar o produto entre dois elementos de GF(28
).
Como o estado após o MixColumns será o resultado de uma multiplicação de
matrizes, chega-se em:
Em relação ao byte da primeira linha e primeira coluna, a obtenção ocorre como
segue:
S1,1 = (02⊗c9)(03⊗c5) _ 63 _ 23
= (00000010⊗11001001)⊕(00000011⊗11000101)
⊕(01100011)⊕(00100011)
= x⊗(x7
+ x6
+ x3
+ 1)⊕(x + 1)⊗(x7
+ x6
+ x2
+ 1)
⊕(x6
+ x5
+ x + 1)⊕(x5
+ x + 1)
= (x8
+ x7
+ x4
+ x)⊕(x8
+ x7
+ x3
+ x + x7
+ x6
+ x2
+ 1)
⊕ (x6
+ x5
+ x + 1)⊕(x5
+ x + 1)
= x7
+ x4
+ x3
+ x2
+ 1
= 10011101
= 9d
Goiânia, abril de 2011.
19
Terminada a primeira rodada da cifragem, Tabela 6.3.5, realiza-se um
AddRoundKey com a chave de rodada 1 e chega-se a e posteriormente a Tabela
6.3.6.
Tabela 6.3.5 – Resultado da MixColumns.
Tabela 6.3.6 – Resultado após AddRoundKey.
O processo da primeira rodada é repetido 9 vezes, sendo que na última
rodada a operação MixColumns não é realizada. Após a realização das 10 rodadas,
obtêm-se os resultados da Tabela 6.3.7.
Tabela 6.3.7 – Resultado em cada uma das etapas da cifragem.
Para chegar novamente a mensagem realiza-se a descifragem. Nesse
processo a primeira rodada decifra a rodada 10 da cifragem, a rodada 2 decifra a
rodada 9 etc. Claramente, essa ordem inversa ocorre porque a decifragem é um
processo de volta ao texto original. Na tabela 6.3.8 tem-se o resultado da rodada 9
da decifragem.
Tabela 6.3.8 – Resultado da rodada 9 da decifragem.
Goiânia, abril de 2011.
20
Ao realizar a rodada 10 da decifragem, chega-se à mensagem. Na Tabela
6.3.9 observa-se a operação AddRoundKey.
Tabela 6.3.9 – Resultado obtido na rodada 10 da decifragem.
Após o InvMixColumns é calculado o Estado, para o qual mostra-se apenas o
cálculo do primeiro byte. Os demais valores podem ser vistos na tabela 6.3.10.
S1,1 = (0e⊗9d)⊕(0b⊗de)⊕(0d⊗af) ⊕(09⊗a0)
= (00001110⊗10011101)⊕(00001011⊗11011110)
⊕(00001101⊗10101111)⊕(00001001⊗10100000)
= (x3
+ x2
+ x)⊗(x7
+ x4
+ x3
+ x2
+ 1)
⊕(x3
+ x + 1)⊗(x7
+ x6
+ x4
+ x3
+ x2
+ x)
⊕ (x3
+ x2
+ 1)⊗(x7
+ x5
+ x3
+ x2
+ x + 1) _ (x3
+ 1)⊗(x7
+ x5
)
= (x10
+ x7
+ x6
+ x5
+ x3
+ x9
+ x6
+ x5
+ x4
+ x2
+
+ x8
+ x5
+ x4
+ x3
+ x)
⊕(x10
+ x9
+ x7
+ x6
+ x5
+ x4
+ x8
+ x7
+ x5
+ x4
+ x3
+ x2
+
+ x7
+ x6
+ x4
+ x3
+ x2
+ x)
⊕(x10
+ x8
+ x6
+ x5
+ x4
+ x3
+ x9
+ x7
+ x5
+ x4
+ x3
+ x2
+
+ x7
+ x5
+ x3
+ x2
+ x + 1)
⊕(x10
+ x8
+ x7
+ x5
)
= x9
+ x7
+ x6
+ x5
+ x4
+ x3
+ x2
+ x + 1
= x7
+ x6
+ x3
+ 1
= 11001001
= c9
Tabela 6.3.10 – Estado obtido após InvMixColumns.
Goiânia, abril de 2011.
21
Em seguida tem-se a etapa de InvShiftRows, Tabela 6.3.11, e em seguida a
esta InvSubByte, Tabela 6.3.12.
Tabela 6.3.11 – Resultado obtido após o InvShiftRows.
Tabela – 6.3.12 – Resultado obtido após InvSubBytes.
Para terminar, executa-se uma AddRoundKey, correspondente àquela feita
antes da rodada 1 do processo de cifragem.
A Tabela 6.3.13 mostra o XOR entre o estado depois de InvSubBytes e a
chave de rodada 0.
Tabela 6.3.13 – Resultado do XOR entre chave de rodada e estado posterior ao
InvSubBytes.
Terminado o processo de decifragem, chega-se ao texto abaixo:
50414c45 53545241 204e4f20 4c4e4343,
o qual corresponde a mensagem na tabela 6.3.14.
Tabela 6.3.14 – Tabela Mensagem decifrada.
Goiânia, abril de 2011.
22
7 Conclusão
O AES mostra-se como um método bastante complexo e nas rodadas de
criptografia/descriptografia trabalha os bytes da mensagem de modo que até o mais
hostil dos invasores de sistemas tenha certa dificuldade em seu trabalha.
Tal técnica mostra-se como um recurso extremamente útil em um mercado
cuja informação, dia a pós dia, ganha mais valor.
Goiânia, abril de 2011.
23
8 Bibliografia
[1] Tanenbaum, Andrew S. Redes de computadores.
[2] Souza, Raquel de Araújo de; Oliveira, Fábio Borges de. O padrão de
criptografia simétrica AES.
[3] Rosa, Rafael Antonio da. Análise de Algorítmo Vencedor do AES: Rijndael.

Mais conteúdo relacionado

Mais procurados

Bilgi Guvenligi Temel Kavramlar
Bilgi Guvenligi Temel Kavramlar Bilgi Guvenligi Temel Kavramlar
Bilgi Guvenligi Temel Kavramlar
Fatih Ozavci
 
Análise de problemas e tomadas de decisões
Análise de problemas e tomadas de decisõesAnálise de problemas e tomadas de decisões
Análise de problemas e tomadas de decisões
Jadgy Back
 

Mais procurados (11)

OSINT: Open Source Intelligence gathering
OSINT: Open Source Intelligence gatheringOSINT: Open Source Intelligence gathering
OSINT: Open Source Intelligence gathering
 
Bilgi Guvenligi Temel Kavramlar
Bilgi Guvenligi Temel Kavramlar Bilgi Guvenligi Temel Kavramlar
Bilgi Guvenligi Temel Kavramlar
 
10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe10 dicas para escalar Agile usando SAFe
10 dicas para escalar Agile usando SAFe
 
Análise de problemas e tomadas de decisões
Análise de problemas e tomadas de decisõesAnálise de problemas e tomadas de decisões
Análise de problemas e tomadas de decisões
 
OSINT- Leveraging data into intelligence
OSINT- Leveraging data into intelligenceOSINT- Leveraging data into intelligence
OSINT- Leveraging data into intelligence
 
O que acontece quando limitamos o WIP (Work In Progress)?
O que acontece quando limitamos o WIP (Work In Progress)?O que acontece quando limitamos o WIP (Work In Progress)?
O que acontece quando limitamos o WIP (Work In Progress)?
 
Симетрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информацияСиметрични и асиметрични алгоритми за криптиране на информация
Симетрични и асиметрични алгоритми за криптиране на информация
 
SAP Inside Track - Belo Horizonte
SAP Inside Track - Belo HorizonteSAP Inside Track - Belo Horizonte
SAP Inside Track - Belo Horizonte
 
Secure Your Encryption with HSM
Secure Your Encryption with HSMSecure Your Encryption with HSM
Secure Your Encryption with HSM
 
Block Ciphers Modes of Operation
Block Ciphers Modes of OperationBlock Ciphers Modes of Operation
Block Ciphers Modes of Operation
 
MITRE AttACK framework it is time you took notice_v1.0
MITRE AttACK framework it is time you took notice_v1.0MITRE AttACK framework it is time you took notice_v1.0
MITRE AttACK framework it is time you took notice_v1.0
 

Destaque (6)

Questoes-funiversa
Questoes-funiversaQuestoes-funiversa
Questoes-funiversa
 
Apostila de princípios de segurança da informação alunos
Apostila de princípios de segurança da informação   alunosApostila de princípios de segurança da informação   alunos
Apostila de princípios de segurança da informação alunos
 
1 provas anpad_rq+rl_2010
1 provas anpad_rq+rl_20101 provas anpad_rq+rl_2010
1 provas anpad_rq+rl_2010
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
 
Seminário temático formação geral ENADE 2015
Seminário temático formação geral ENADE 2015Seminário temático formação geral ENADE 2015
Seminário temático formação geral ENADE 2015
 
Gestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_docGestao de projetos_-_exercicio_1._com_gabarito_doc
Gestao de projetos_-_exercicio_1._com_gabarito_doc
 

Semelhante a Aes 25

Criptgrafia algoritmos
Criptgrafia   algoritmosCriptgrafia   algoritmos
Criptgrafia algoritmos
digobfpc
 
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Sanger Dias
 
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕESS.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
Mateus Cardoso
 
A Segurança Informática e o Negócio Electrónico
A Segurança Informática e o Negócio ElectrónicoA Segurança Informática e o Negócio Electrónico
A Segurança Informática e o Negócio Electrónico
nesi
 
criptografia de chaves assimetricas
criptografia de chaves assimetricascriptografia de chaves assimetricas
criptografia de chaves assimetricas
Suh Valentim
 
Pim 2 semestre_v51
Pim 2 semestre_v51Pim 2 semestre_v51
Pim 2 semestre_v51
Suh Valentim
 

Semelhante a Aes 25 (20)

Criptgrafia algoritmos
Criptgrafia   algoritmosCriptgrafia   algoritmos
Criptgrafia algoritmos
 
Conceitos Básicos de Criptografia
Conceitos Básicos de CriptografiaConceitos Básicos de Criptografia
Conceitos Básicos de Criptografia
 
Si
SiSi
Si
 
Criptografia - Redes de Computadores
Criptografia - Redes de ComputadoresCriptografia - Redes de Computadores
Criptografia - Redes de Computadores
 
Seminário de SD - criptografia
Seminário de SD - criptografiaSeminário de SD - criptografia
Seminário de SD - criptografia
 
Aula2
Aula2Aula2
Aula2
 
Sistemas Logicas de Seguranca
Sistemas Logicas de SegurancaSistemas Logicas de Seguranca
Sistemas Logicas de Seguranca
 
Criptografia simétrica
Criptografia simétricaCriptografia simétrica
Criptografia simétrica
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Criptografia
CriptografiaCriptografia
Criptografia
 
Criptografia
CriptografiaCriptografia
Criptografia
 
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negóciosApresentação tema 9 Segurança das Informações e Continuidade dos negócios
Apresentação tema 9 Segurança das Informações e Continuidade dos negócios
 
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕESS.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
S.D.I - SEGURANÇA DE DADOS E INFORMAÇÕES
 
Psi apostila2
Psi apostila2Psi apostila2
Psi apostila2
 
Criptografia_Métodos_E_Tecnicas_Criptograficas.ppt
Criptografia_Métodos_E_Tecnicas_Criptograficas.pptCriptografia_Métodos_E_Tecnicas_Criptograficas.ppt
Criptografia_Métodos_E_Tecnicas_Criptograficas.ppt
 
A Segurança Informática e o Negócio Electrónico
A Segurança Informática e o Negócio ElectrónicoA Segurança Informática e o Negócio Electrónico
A Segurança Informática e o Negócio Electrónico
 
Redes ii p2
Redes ii p2Redes ii p2
Redes ii p2
 
Redes ii p2
Redes ii p2Redes ii p2
Redes ii p2
 
criptografia de chaves assimetricas
criptografia de chaves assimetricascriptografia de chaves assimetricas
criptografia de chaves assimetricas
 
Pim 2 semestre_v51
Pim 2 semestre_v51Pim 2 semestre_v51
Pim 2 semestre_v51
 

Aes 25

  • 1. Goiânia, abril de 2011. 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE GOIÁS TECNOLOGIA EM REDES DE COMUNICAÇÃO - TURMA 3060900. AES
  • 2. Goiânia, abril de 2011. 2 Adenomar Santos de Paula Victor Araújo Gomes AES Professora: Édio. Dissertação apresentada ao curso de graduação em Tecnologia Em Redes de Comunicação do Instituto Federal de Educação, Ciência e Tecnologia do Estado de Goiás, como complemento de avaliação bimestral da disciplina Segurança de Redes, para obtenção do título de Tecnólogo Em Redes de Comunicação.
  • 3. Goiânia, abril de 2011. 3 Sumário 1 - Introdução...................................................................................................... 04. 2 - Objetivo.......................................................................................................... 05. 3 - Criptografia - Visão geral .............................................................................. 06. 4 - AES Surgimento .......................................................................................... 08. 5 - AES – Fundamentação matemática.............................................................. 09. 6 - AES – Fundamentação Algorítmica............................................................... 10. 7 – Conclusão..................................................................................................... 22. 8 - Bibliografia..................................................................................................... 23.
  • 4. Goiânia, abril de 2011. 4 1 Introdução Em meio a uma necessidade crescente de comunicação instantânea, dinâmica e ilimitada, as tecnologias que garantam a integridade das informações, bem como sua disponibilidade de forma adequada e protegida de possíveis ataques maliciosos tornam-se fundamentais. A criptografia, que teve sua utilização iniciada à tempos, mostra-se hoje como uma ciência indispensável às grandes empresas, públicas ou privadas que queiram desempenhar um trabalho coerente. Este material traz uma breve apresentação relativa ao Padrão Avançado de Encriptação, “criptografia AES”, discutindo seus principais a fundamentação matemática, a fundamentação algorítmica e apresentando um exemplo de criptografia aplicado da uma frase.
  • 5. Goiânia, abril de 2011. 5 2 Objetivo Este material tem o objetivo de apresentar o Advanced Encryption Standard, seus fundamentos matemáticos, algorítimos e os processo de criptográfica/decriptografia do padrão.
  • 6. Goiânia, abril de 2011. 6 3 Criptografia - Visão geral Historicamente, quatro grupos de pessoas utilizaram e contribuíram para a arte da criptografia: os militares, os diplomatas, as pessoas que gostam de guardar memórias e os amantes e os métodos de criptografia têm sido divididos em duas categorias: as cifras de substituição e as cifras de transposição. As mensagens a serem criptografadas, conhecidas como texto simples, são transformadas por uma função que é parametrizada por uma chave. Em seguida, a saída do processo de criptografia, conhecida como texto cifrado, é transmitida, normalmente através de um mensageiro ou por rádio. Presumi-se que o inimigo, ou intruso, ouça e copia cuidadosamente o texto cifrado completo. No entanto, ao contrário do destinatário pretendido, ele não conhece a chave para descriptografar o texto e, portanto, não pode fazê-lo com muita facilidade. Às vezes, o intruso pode não só escutar o que se passa no canal de comunicação (intruso passivo), como também pode gravar mensagens e reproduzi-las mais tarde, injetar suas próprias mensagens ou modificar mensagens legítimas antes que elas cheguem ao receptor (intruso ativo). A arte de solucionar mensagens cifradas é chamada criptoanálise. À arte de criar mensagens cifradas (criptografia) e solucioná-las (criptoanálise) é chamada coletivamente criptologia. Tem-se uma notação para estabelecer uma relação entre o texto simples, o texto cifrado e as chaves. Utiliza-se C = EK (P) para denotar que a criptografia do texto simples P usando a chave K gera o texto cifrado C. Da mesma forma, P = DK (C) representa a descriptografia de C para se obter o texto simples outra vez. Então, tem-se: DK (EK (P)) = P Essa notação sugere que “E” e “D” são simplesmente funções matemáticas, o que é verdade. A única parte complicada é que ambas são funções de dois parâmetros, e escreve-se um desses parâmetros (a chave) como um caractere subscrito, em vez de representá-lo como um argumento, para distingui-lo da mensagem.
  • 7. Goiânia, abril de 2011. 7 Uma regra fundamental da criptografia é supor que o criptoanalista conhece os métodos genéricos de criptografia e descriptografia que são utilizados. Em outras palavras, o criptoanalista sabe como funciona o método de criptografia, “E”, e o método de descriptografia, “D”. O esforço necessário para criar, testar e instalar um novo algoritmo toda vez que o antigo método (supostamente) é comprometido sempre dificultou a manutenção desse segredo e, como imaginar que o algoritmo de criptografia é secreto, quando na realidade ele não é, resulta em mais prejuízo do que em benefícios, usa-se a chave. A chave consiste em um string (relativamente) curto que seleciona uma das muitas formas possíveis de criptografia. Ao contrário do método genérico, que só pode ser modificado a cada período de alguns anos, a chave pode ser alterada sempre que necessário. Portanto, nosso modelo básico é um método genérico publicamente conhecido, parametrizado por uma chave secreta que pode ser alterada com facilidade. A idéia de que o criptoanalista conhece os algoritmos e que o segredo reside exclusivamente nas chaves é chamada princípio Kerckhoff, que recebeu esse nome em homenagem ao criptógrafo militar flamengo Auguste Kerckhoff que o enunciou primeiro em 1883 (Kerckhoff, 1883). No princípio de Kerckhoff tem-se que todos os algoritmos devem ser públicos; apenas as chaves são secretas. Deve-se enfatizar o caráter não sigiloso do algoritmo. Tentar manter o algoritmo secreto, uma estratégia conhecida no ramo como segurança pela obscuridade, nunca funciona. Alguns conceitos fundamentais para criptografia são: > Cifra de substituição – processo em que cada letra ou grupo de letras é substituído por outra letra ou grupo de letras de modo a criar um disfarce. Dentre as cifras, uma das mais antigas é a cifra de César, atribuída a Júlio César. Nesse método, “A” torna-se “D”, “B” torna-se “E”,... e “Z” torna-se “C”. Assim a palavra “ataque”, passaria a ser “WDTXH”. > Cifra de transposição – processo em que ocorre a reordenação das letras, mas sem disfarçá-las.
  • 8. Goiânia, abril de 2011. 8 > Princípio criptográfico 1 – este princípio envolve a garantia de redundância nas mensagem de modo a impedir que intrusos enviem lixo e enganem o receptor. > Princípio criptográfico 2 – este princípio envolve a criação de algum método que anule a tentativa de quebra de senha por repetição. 4 AES - Surgimento Um dos métodos de criptografia usados é o AES – Advanced Encryption Standard (ou Padrão Avançado de Encriptação). Este padrão de criptografia se originou de um concurso lançado em 1997 pelo NIST (National Institute of Standards and Technology). Naquele momento havia a necessidade de escolher um algoritmo mais seguro e eficiente para substituir o DES (Data Encryption Stardard), que apresentou fragilidades. O novo algoritmo deveria atender a certos pré-requisitos como: 1. O algoritmo teria de ser uma cifra de bloco simétrica. 2. Todo o projeto teria de ser público. 3. Deveriam ser admitidos tamanhos de chaves iguais a 128, 192 e 256 bits. 4. Teriam de ser possíveis implementações de software e de hardware. 5. O algoritmo teria de ser público ou licen ciado em termos não discriminatórios. Na Primeira Conferência dos Candidatos AES, em 1998, apresentaram-se 15 candidatos e, um ano depois, na Segunda Conferência, foram indicados 5 destes como finalistas: MARS, RC6, Rijndael, Serpent e Two_sh, e, Em 2000, foi conhecido o vencedor: Rijndael. O algoritmo, criado pelos belgas Vincent Rijmen e Joan Daemen, foi escolhido com base em:  Segurança (esforço requerido para criptoanálise)  Eficiência computacional  Requisitos de memória  Adequação a hardware e software  Simplicidade
  • 9. Goiânia, abril de 2011. 9 5 AES – Fundamentação matemática O sistema é baseado em notação Polinomial desenvolvida por Galois (matemático francês que teve a carreira encerrada em um duelo com armas de fogo. Depois de ter se envolvido em um romance com uma jovem comprometida, Galois foi desafiado pelo pretendente da jovem e não resistiu ao confronto). No Exemplo tem-se b7 x7+ b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1 x + b0 onde ={b7b6b5b4b3b2b1b0} são os bits do byte B As somas são feitas usando-se XOR´s. A Multiplicação usa 2 bytes na notação polinomial e o resultado modulo polinômio irredutível de grau 8. Na Multiplicação por x: Faz-se um deslocamento a esquerda com um XOR condicional da seguinte forma: Se b7 = 0 faz apenas o deslocamento. Se b7 = 1 faz o deslocamento seguido de um XOR. Onde b7 é o bit mais significativo do byte B. Essa operação é conhecida como xtime. Fazendo-se repetidas aplicações de xtime e somando seus resultados intermediários consegue-se fazer uma multiplicação por qualquer constante. Polinômios com coeficientes em GF(28): Os coeficientes agora são bytes e não bits como anteriormente, porém a forma de calcular é semelhante. Soma: A(x) = a3 x3 + a2 x2 + a1 x + a0 B(x) = b3 x3 + b2 x2 + b1 x + b0 A(x) + B(x) = (a3 + b3) x3 + (a2 + b2) x2 + (a1 + b1) x + (a0 + b0) Multiplicação portanto contem: Passo 1) - multiplicação termo a termo. Passo 2) - redução do resultado num polinômio de grau menor que 4. No AES é usado (x4 + 1). xi mod (x4 + 1) = x i mod 4.
  • 10. Goiânia, abril de 2011. 10 6 AES – Fundamentação Algorítmica A pequena diferença entre o AES e o Rijndael é que este suporta tamanhos de chave e bloco variando entre 128, 160, 192, 224 e 256 bits. Ou seja, os dois possuem o mesmo funcionamento, sendo que o Rijndael pode utilizar uma variação maior de tamanhos de chave e bloco do que o AES. A frente tem-se exemplos com blocos e chaves 128 bits, apenas. Para dar continuidade é necessário algumas definições: > Estado – é uma matriz de bytes que inicialmente contém a mensagem e, após cada etapa, será modificada. > Mensagem - é o texto antes de ser criptografado, e cujo conteúdo deve ser acessível apenas ao destinatário. Para manter a segurança, é preciso tornar a mensagem um texto ilegível, também chamado texto cifrado, e isso é feito através da criptografia. > AddRoundKey – É uma operação de XOR byte a byte entre o estado e a chave da rodada. > SubBytes – É a etapa em que cada byte do estado é substituído por outro em uma S-box (caixa de substituição), denotada por SRD. > ShiftRows – É a etapa em que se rotaciona à esquerda as linhas do estado, trocando assim a posição dos bytes. > MixColumns – É a etapa em que o resultado da operação em uma determinada coluna não influencia o resultado nas demais. Porém, a mudança de um byte em uma coluna influencia o resultado na coluna inteira. No Rijndael, o tamanho do estado vai depender do tamanho do bloco utilizado, sendo composta de 4 linhas e “Nb” colunas, onde Nb é o número de bits do bloco dividido por 32. O algoritmo possui rodadas, também chamadas de iterações, que, por sua vez, possuem 4 etapas: AddRoundKey, SubBytes, ShiftRows e MixColumns. Na última rodada, porém, a operação MixColumns não é realizada. Usa-se a sigla Nr (number of rounds – número de rodadas) para designar o número de rodadas que serão utilizadas durante a execução do algoritmo. No AES o número de rodadas depende do tamanho da chave, sendo Nr igual a 10, 12 e 14, para Nk igual a 4, 6 e 8, respectivamente. O algoritmo possui uma chave principal e, a partir dela, são geradas Nr + 1 chaves, geralmente chamadas de chaves de rodada, pois
  • 11. Goiânia, abril de 2011. 11 cada uma será usada em uma rodada diferente. Além disso, a própria chave principal é usada antes da primeira rodada. A chave principal é alocada em uma matriz de 4 linhas e Nk colunas, e cada chave de rodada é agrupada da mesma maneira que o bloco de dados. As Figura 6.1.1 abaixo mostra de uma forma geral como ocorrem os processos de cifragem e decifragem com o AES. Figura 6.1.1 – Processo de Cifragem e Descifragem. Na Transformação SubBytes cada byte do estado é substituído por outro em uma S-box (caixa de substituição), denotada por SRD. Todos os valores dessa caixa serão dados em hexadecimal. Os quatro primeiros e os quatro últimos bits do byte a ser substituído representam em hexadecimal, respectivamente, a linha e a coluna
  • 12. Goiânia, abril de 2011. 12 onde se encontra o novo byte. Por exemplo, o valor hexadecimal 6a deverá ser substituído pelo byte que se encontra na linha “6" e na coluna “a" da SRD (caixa de substituição), que é o valor 02. A SRD é gerada a partir da composição de duas funções f e g constituídas sobre GF(28). Se a = a0a1a2a3a4a5a6a7, tem-se que , onde é o inverso multiplicativo de em e onde A Tabela 6.1.2 abaixo mostra a S-Box usada no AES. Tabela 6.1.2 – S-Box usada no AES. A inversa da operação SubBytes chama-se InvSubBytes, e usa uma S-Box inversa, denotada por S-1 RD, que usa a composição de funções S-1 RD Aplicando a S-Box no valor 6a, obtemos o valor 02. Logo, aplicando a S-box inversa (Tabela 6.1.3) em 02 obtemos o valor 6a.
  • 13. Goiânia, abril de 2011. 13 Tabela 6.1.3 – S-Box inversa. Na Transformação ShiftRows, a qual consiste em rotacionar à esquerda as linhas do estado, trocando assim a posição dos bytes. O número de posições a serem rotacionadas depende da linha e do tamanho do bloco nos quais se trabalhe. Na Tabela 6.1.4, Ci representa o número de posições a serem rotacionadas na linha de posição i (de cima para baixo) de um bloco com Nb colunas. Exemplifica-se na Tabela 6.1.5 a transformação ShiftRows. A operação inversa correspondente chama-se InvShiftRows e consiste apenas em fazer o mesmo rotacionamento, porem à direita. Tabela 6.1.4 – Posições a rotacionar. Tabela 6.1.5 – Rotação de linhas.
  • 14. Goiânia, abril de 2011. 14 Na transformação MixColumns (em que o resultado da operação em uma determinada coluna não influencia o resultado nas demais, porém, a mudança de um byte em uma coluna influencia o resultado na coluna inteira) os bytes do estado são tratados como polinômios sobre o corpo finito GF(28 ). Essa transformação pode ser representada por uma multiplicação de matrizes. Definindo S’ como o estado após essa transformação, Ele será o resultado da multiplicação de uma matriz fixa “C” pela matriz “S” que representa o estado, ou seja, onde o sinal ⊙ representa a multiplicação matricial. Na Transformação AddRoundKey, que é uma operação de XOR byte a byte entre o estado e a chave da rodada, observa-se uma transformação que opera cada byte individualmente. Basicamente, se sx,y é um byte do estado e kx,y um byte da chave, temos que o byte s’x,y do novo estado é igual a sx,y ⊕ kx,y. Como (a ⊕ b)⊕b = a, a transformação AddRoudKey é sua própria inversa. 6.2 Expansão de Chave Como já foi dito, as chaves utilizadas em cada rodada são geradas a partir da chave principal do AES. O algoritmo usado gera Nr + 1 chaves, pois antes da primeira rodada é feita uma AddRoundKey. A geração de chaves, também conhecida como expansão de chave, resulta em um vetor com palavras (isto é, uma sequência) de 4 bytes. Determina-se cada palavra por wi, onde “w” indica “work” e “i” é a posição da palavra no vetor. Inicialmente, completa-se as Nk primeiras palavras do vetor com os bytes da chave principal. Se i não é múltiplo de Nk, wi será obtida através de uma operação XOR entre temp = w[i-1] e w[i-Nk], as palavra 1 e Nk posições anteriores a ela, respectivamente. Caso i não seja múltiplo de Nk, usa-se as funções: 1 – Rot Word – Função que rotaciona a palavra uma posição à esquerda. 2 – SubWord – Similar a SubBytes, substitui cada byte da palavra pelo byte correspondente na S-Box;
  • 15. Goiânia, abril de 2011. 15 3 – Rcon(j) – É uma constante diferente a cada rodada (j). Essa constante é dada por Rcon(j) = (RC[j],00,00,00), onde RC[1] e RC[j]=2. RC[j-1], com multiplicação sobre GF(28 ). A tabela 6.2.1 mostra o valor de RC[j] a cada rodada. Tabela 6.2.1 – Constate em função da rodada j. A expansão de chave, para Nk ≤ 6, pode ser descrita em pseudocódigo: KeyExpansion (byte key [4*Nk], word w[Nb*(Nr+1)], Nk) word temp for i from 0 to Nk-1 w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) for i from Nk to Nb*(Nr + 1)-1 temp = w[i - 1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] w[i] = w[i - Nk] xor temp Exemplo Supondo que a chave principal tenha 128 bits e que a chave de rodada 4 seja: 2f 56 3a c5 78 bb de 47 14 f5 23 d7 a8 cf e2 35 . Na Tabela 6.2.2, indicamos passo a passo o c_alculo da primeira palavra da chave de rodada 5. i 20 temp = w[i-1] a8cfe235 RotWord cfe235a8 SubWord 8a9896c2 Rcon(5) 10000000 temp = SubWord⊕ Rcon(5) 9a9896c2 w[i-Nk] 2f563ac5 w[i] = temp ⊕ w[i-Nk] b5ceac07 Tabela 6.2.2 – Exemplo do cálculo de w[i]
  • 16. Goiânia, abril de 2011. 16 6.3 Cifrando e decifrando uma mensagem com o AES O objetivo desta seção é demonstrar como funciona na pratica o algoritmo AES. Para isso, é necessário cifrar e decifrar uma mensagem usando esse algoritmo. Por questão de conveniência, utiliza-se um tamanho de 128 bits para a mensagem, ou seja, usa-se um estado com 4 linhas e 4 colunas. Todos os valores das tabelas serão representados no sistema hexadecimal e usa-se a tabela ASCII estendida. Utilizando um texto com 16 caracteres, o que corresponde a 128 bits. Cifrando e decifrando a mensagem PALESTRA.NO.LNCC e escolhendo a chave principal como BOLSISTA.DO.CNPQ, chega-se às Tabelas 6.3.1 e 6.3.2 cujos valores são obtidos pela relação entre as chaves definidas e os valores da tabela ASCII. Tabela 6.3.1 – Estado da Mensagem Tabela 6.3.2 – Chave principal. Após implementar o algoritmo de geração de chaves, obtêm-se os valores mostrados na Tabela 6.3.3 abaixo:
  • 17. Goiânia, abril de 2011. 17 Tabela 6.3.3 – Chaves obtidas em cada rodada. Inicia-se o algoritmo com a AddRoundKey antes da primeira rodada, usando a chave de rodada 10. A operação é vista na Tabela 6.3.4. Tabela 6.3.4 – AddRoundKey. Prosseguindo executa-se SubBytes ao estado obtido na operação anterior e posteriormente ShiftRows. Transformação SubBytes na primeira rodada.
  • 18. Goiânia, abril de 2011. 18 Transformação ShiftRows A partir daí inicia-se a transformação MixColumns, as quais envolvem soma e multiplicação sobre um corpo de Galois polinomial, nas quais, a cada conjunto de 8 bits, atribui-se um polinômio de grau menor ou igual a 7, sendo cada bit o coeficiente de um termo polinômio. Por exemplo, o byte AB tem representação binária igual a 10101011 e representação polinomial igual a: 1x7 +0x6 +1x5 +0x7 +1x3 +0x2 +1x+1 = x7 +x5 +x3 +x+1. Pelo fato de se trabalhar com um corpo de característica 2, a xom e o xor coincidem. Assim, na soma de polinômios, reduz-se os coeficientes ao módulo 2. Na operação de multiplicação, o resultado é reduzido ao módulo seguinte: m(x)=x8 +x4 +x3 +x+1. O símbolo ⊗ é usado para representar o produto entre dois elementos de GF(28 ). Como o estado após o MixColumns será o resultado de uma multiplicação de matrizes, chega-se em: Em relação ao byte da primeira linha e primeira coluna, a obtenção ocorre como segue: S1,1 = (02⊗c9)(03⊗c5) _ 63 _ 23 = (00000010⊗11001001)⊕(00000011⊗11000101) ⊕(01100011)⊕(00100011) = x⊗(x7 + x6 + x3 + 1)⊕(x + 1)⊗(x7 + x6 + x2 + 1) ⊕(x6 + x5 + x + 1)⊕(x5 + x + 1) = (x8 + x7 + x4 + x)⊕(x8 + x7 + x3 + x + x7 + x6 + x2 + 1) ⊕ (x6 + x5 + x + 1)⊕(x5 + x + 1) = x7 + x4 + x3 + x2 + 1 = 10011101 = 9d
  • 19. Goiânia, abril de 2011. 19 Terminada a primeira rodada da cifragem, Tabela 6.3.5, realiza-se um AddRoundKey com a chave de rodada 1 e chega-se a e posteriormente a Tabela 6.3.6. Tabela 6.3.5 – Resultado da MixColumns. Tabela 6.3.6 – Resultado após AddRoundKey. O processo da primeira rodada é repetido 9 vezes, sendo que na última rodada a operação MixColumns não é realizada. Após a realização das 10 rodadas, obtêm-se os resultados da Tabela 6.3.7. Tabela 6.3.7 – Resultado em cada uma das etapas da cifragem. Para chegar novamente a mensagem realiza-se a descifragem. Nesse processo a primeira rodada decifra a rodada 10 da cifragem, a rodada 2 decifra a rodada 9 etc. Claramente, essa ordem inversa ocorre porque a decifragem é um processo de volta ao texto original. Na tabela 6.3.8 tem-se o resultado da rodada 9 da decifragem. Tabela 6.3.8 – Resultado da rodada 9 da decifragem.
  • 20. Goiânia, abril de 2011. 20 Ao realizar a rodada 10 da decifragem, chega-se à mensagem. Na Tabela 6.3.9 observa-se a operação AddRoundKey. Tabela 6.3.9 – Resultado obtido na rodada 10 da decifragem. Após o InvMixColumns é calculado o Estado, para o qual mostra-se apenas o cálculo do primeiro byte. Os demais valores podem ser vistos na tabela 6.3.10. S1,1 = (0e⊗9d)⊕(0b⊗de)⊕(0d⊗af) ⊕(09⊗a0) = (00001110⊗10011101)⊕(00001011⊗11011110) ⊕(00001101⊗10101111)⊕(00001001⊗10100000) = (x3 + x2 + x)⊗(x7 + x4 + x3 + x2 + 1) ⊕(x3 + x + 1)⊗(x7 + x6 + x4 + x3 + x2 + x) ⊕ (x3 + x2 + 1)⊗(x7 + x5 + x3 + x2 + x + 1) _ (x3 + 1)⊗(x7 + x5 ) = (x10 + x7 + x6 + x5 + x3 + x9 + x6 + x5 + x4 + x2 + + x8 + x5 + x4 + x3 + x) ⊕(x10 + x9 + x7 + x6 + x5 + x4 + x8 + x7 + x5 + x4 + x3 + x2 + + x7 + x6 + x4 + x3 + x2 + x) ⊕(x10 + x8 + x6 + x5 + x4 + x3 + x9 + x7 + x5 + x4 + x3 + x2 + + x7 + x5 + x3 + x2 + x + 1) ⊕(x10 + x8 + x7 + x5 ) = x9 + x7 + x6 + x5 + x4 + x3 + x2 + x + 1 = x7 + x6 + x3 + 1 = 11001001 = c9 Tabela 6.3.10 – Estado obtido após InvMixColumns.
  • 21. Goiânia, abril de 2011. 21 Em seguida tem-se a etapa de InvShiftRows, Tabela 6.3.11, e em seguida a esta InvSubByte, Tabela 6.3.12. Tabela 6.3.11 – Resultado obtido após o InvShiftRows. Tabela – 6.3.12 – Resultado obtido após InvSubBytes. Para terminar, executa-se uma AddRoundKey, correspondente àquela feita antes da rodada 1 do processo de cifragem. A Tabela 6.3.13 mostra o XOR entre o estado depois de InvSubBytes e a chave de rodada 0. Tabela 6.3.13 – Resultado do XOR entre chave de rodada e estado posterior ao InvSubBytes. Terminado o processo de decifragem, chega-se ao texto abaixo: 50414c45 53545241 204e4f20 4c4e4343, o qual corresponde a mensagem na tabela 6.3.14. Tabela 6.3.14 – Tabela Mensagem decifrada.
  • 22. Goiânia, abril de 2011. 22 7 Conclusão O AES mostra-se como um método bastante complexo e nas rodadas de criptografia/descriptografia trabalha os bytes da mensagem de modo que até o mais hostil dos invasores de sistemas tenha certa dificuldade em seu trabalha. Tal técnica mostra-se como um recurso extremamente útil em um mercado cuja informação, dia a pós dia, ganha mais valor.
  • 23. Goiânia, abril de 2011. 23 8 Bibliografia [1] Tanenbaum, Andrew S. Redes de computadores. [2] Souza, Raquel de Araújo de; Oliveira, Fábio Borges de. O padrão de criptografia simétrica AES. [3] Rosa, Rafael Antonio da. Análise de Algorítmo Vencedor do AES: Rijndael.