Você está na página 1de 10

FACULDADE ALFA

Wigor Paulo

Goiânia, 2018
Wigor Paulo

Trabalho apresentado como requisito


parcial para obtenção de aprovação
na disciplina Redes sem fio, no Curso
de Engenharia da Computação, na
Faculdade Alfa.

Prof. Fabiana

Goiânia, 2018
RESUMO

Este trabalho tem como finalidade apresentar um pouco sobre a criptografia


AES utilizada nas redes sem fio.

SUMÁRIO
1 INTRODUÇÃO........................................................................................ 5
2 DESENVOLVIMENTO............................................................................ 6
3 CONCLUSÃO......................................................................................... 9
BIBLIOGRAFIA...................................................................................... 10
5

INTRODUÇÃO:

Neste trabalho, estarei apresentando um pouco sobre a criptografia AES, com


o detalhamento da sua história e funcionamento do processo de criptografia e
descriptografia.
6

Criptografia AES

História:

O algoritmo Advanced Encryption Standard, ou AES, é um algoritmo de


criptografia simétrica por blocos de 128 bits (16 bytes), desenvolvido desde 1997 por
Vicent Rijmen e Joan Daemen, e anunciado em 26 de novembro de 2001 pelo NIST,
(National Institude os Standards and Technology).

Estrutura:

Para descrever a estrutura do AES é fundamental termos em mente a


definição de estado, no contexto do algoritmo. Estado é a matriz de bytes que
iremos manipular entre as diversas rodadas, e que, portanto, será modificada a cada
etapa. No Rijndael, o tamanho dessa matriz vai depender do tamanho do bloco
utilizado, sendo composta de 4 linhas e Nb é o número de bits do bloco dividido por
32 (pois 4 bytes representam 32 bits). Como o AES usa blocos de 128 bits, o estado
terá 4 linhas e 4 colunas.

A chave é agrupada da mesma maneira que o bloco de dados, com número


de colunas Nk. Usaremos a sigla Nr (number of rounds) para designar o número de
rodadas que serão utilizadas durante a execução do algoritmo. No AES o número de
rodadas varia de acordo com o tamanho da chave, sendo Nr igual a 10, 12 e 14,
para Nk igual a 4, 6 e 8, respectivamente.

A cada rodada do algoritmo de cifragem, realizamos 4 etapas: AddRoundKey,


SubBytes, ShiftRows e MixColumns. Na última rodada, porém, a operação
MixColumns é suprimida. Cada uma destas etapas e suas respectivas inversas, que
serão usadas no processo de decriptação, serão descritas mais detalhadamente nas
próximas subseções. Todos os valores contidos nos estados dos exemplos serão
dados em hexadecimal.

Transformação SubBytes:

Essa é a única transformação da cifra que não é linear. Cada byte do estado é
substituído por outro em uma S-box (caixa de substituição). Todos os valores dessa
caixa são dados em hexadecimal. A substituição é feita da seguinte maneira: os
quatro primeiros e os quatro últimos bits do byte a ser substituído representam em
hexadecimal, respectivamente, a linha e a colina onde se encontra o novo byte. Por
exemplo, o valor hexadecimal c2 deverá ser substituído pelo byte que se encontra
na linha c e na coluna 2 da S-box, que é o valor 25, onde podemos ver na figura 01.
7

A inversa da operação SubBytes chama-se InvSubBytes, e usa uma S-box


inversa. Por exemplo, aplicando a S-box no valor a6, obtemos o valor 24. Então,
aplicando a S-box inversa em 24 obtemos o valor a6.

Transformação ShiftRows:

É uma etapa simples do algoritmo e 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 posição da linha. Na primeira linha não há
rotaciona-mento, na segundam os bytes são rotacionados uma posição, na terceira,
2 posições e na ultima, 3 posições. A operação inversa correspondente chama-se
InvShiftRows e para aplica-la é necessário apenas fazer um rotaciona-mento similar
àquele feito na operação de cifragem, porém à direita.

Figura 01

Transformação MixColumns:

Nesta etapa, cada coluna é operada de forma independente. Isso quer dizer
que o resultado da operação em uma determinada coluna não influencia o resultado
nas demais. Entretanto, cada byte de uma coluna influencia todos os outros bytes da
mesma. Nessa etapa, as colunas do estado são tratadas como polinômios sobre o
2
corpo finito GF (¿¿ 8) . Podemos representar essa transformação por uma
¿
multiplicação de matrizes. O novo S será o resultado da multiplicação de uma
matriz fica C pela matriz S que representa o estado, ou seja,
8

Figura 02

2
Onde (.) é o produtorio matricial em GF (¿¿ 8) . A inversa da operação
¿
MixColumns, denominada InvMixColumns, também consiste em uma multiplicação
usando uma matriz fixa. Essa matriz deve ser a inversa da figura 03 que é a matriz
da figura 04.

Figura 03 Figura 04

Ou seja, para encontrar S devemos calcular B ( . ) S=S . O modelo da


transformação pode ser visto na figura 05.

Figura 05

Transformação AddRoundKey:

AddRoundKey é uma operação de XOR entre o estado e a chave da rodada,


que possuem o mesmo número de bytes. Assim, essa transformação opera cada
+¿
byte individualmente. O XOR é feito byte a byte, ou seja, se ¿ . A operação é
Sx , y ¿
representada na figura 06. A transformação AddRoundKey é sua própria inversa.
9

Figura 06

Geração de Chaves:

As chaves usadas 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, conhecida também como expansão de
chave, resulta em um vetor com palavras (isto é, uma sequência) de 4 bytes. Cada
palavra será representada aqui por w i , sendo i a posição da palavra no vetor.
O algoritmo começa completando as 4 primeiras palavras do vetor com os bytes da
chave principal.

Figura 07

Depois, temos duas ocasiões a considerar:

i não é múltiplo de Nk: Nesse caso, w i será obtida através de uma operação de
XOR entre temp=w[i−1 ] e w[i−Nk ] , as palavras 1 e Nk posições anteriores a ela,
repectivamente;

i é múltiplo de Nk: Usamos outras operações:

1 – RotWord: Rotaciona a palavra uma posição (correspondente a um byte) à


esquerda;

2 – SubWord: Aplica a S-box do AES em casa byte da palavra;

3 – Rcon(j): Faz uma operação de XOR entre o resultado dos dois primeiros
itens com uma constante diferente a cada rodada (j). Essa constante é dada por
Rcon(j)=(RC[j],00,00,00), onde RC[1]=1 e RC[j]=2 . RC[j-1], com a multiplicação
2
sobre GF (¿¿ 8) . A figura 08 mostra o valor de RC[j] a cada rodada.
¿

Figura 08
10

CONCLUSÃO
Conforme apresentado, entendemos então como que veio a criação na
criptografia AES, vendo os conceitos de cada função utilizado no processo.

BIBLIOGRAFIA
https://pt.stackoverflow.com/questions/43492/como-funciona-o-algoritmo-de-
criptografia-aes

http://www.lncc.br/~borges/doc/O%20algoritmo%20AES%20Apresentacao%20e
%20Descricao%20da%20Estrura.pdf

https://www.gta.ufrj.br/grad/05_2/aes/