Buscar

Criptografia de AES

Prévia do material em texto

O algoritmo AES foi criado numa proposta de substituir o DES, o NIST (National Institute of Standards and Technology dos E. U.) Foi Promovido uma competição que atendesse as seguintes especificações:
· Algoritmo publicamente definido
· Ser uma cifra simétrica de bloco
· Projetado para que o tamanho da chave possa aumentar
· Implementável tanto em hardware quanto em software
· Disponibilizado livremente ou em acordo com termos ANSI
onde foi julgado:
· Segurança (esforço requerido para criptoanálise)
· Eficiência computacional
· Requisitos de memória
· Adequação a hardware e software
· Simplicidade
            O processo seletivo teve inicio em 1997 e terminou em 2000 com a vitória do algoritmo Rijndael escrito por Vincent Rijmen e Joan Daemen.
            Este algoritmo Criptografa e Descriptografa usando uma chave criptografada e blocos, ambos de tamanhos de 128, 192 ou 256 bits, lembrando que ele não foi considerado o mais seguro, e sim o mais eficiente.
O objetivo de uma cifra bem sucedida é que seja impraticável se descobrir a mensagem original caso somente se possua a mensagem cifrada, mas não a chave de criptografia. Para isso, busca-se minimizar qualquer correlação visível entre a entrada e a saída, de modo que a mesma (e/ou a chave) possa ser deduzida simplesmente observando-se um número muito grande de cifras (ou de pares mensagem/cifra). Para isso, usa-se uma série de "rodadas" (ou rounds) em que os bytes sofrem transformações não lineares, porém reversíveis (i.e. para decifrar, simplesmente se executa o inverso das mesmas operações, em ordem inversa).
 Esse algoritmo ele tem algumas peculiaridades bem interessantes. Primeiro porque ele é o novo padrão de cifra de bloco do NIST, isso porque foi vencedor de um concurso promovido como dito a cima, por esse próprio órgão para substituição do DES. 
Além disso, temos algumas outras características dele em relação a chaves e tamanhos de bloco:
· Originalmente operava com blocos de 128, 160, 192, 224 ou 256, mas foi determinado pelo governo que o algoritmo iria operar apenas em 128.
· A chave também poderia ser de 128, 160, 192, 224 ou 256, mas foi estabelecido que a chave poderia ter como valores: 128, 192 e 256.
Depois desse breve histórico, vejamos como ele opera:
Principio de funcionamento AES:
· Existe uma matriz com os bits de entrada.
· Faz-se substituição por S-box. (Confusão)
· ShiftRows: Gera-se deslocamento nas linhas da matriz. Permutação
· MixColumns: Combinação das colunas. Permutação
· AddRoundKey: Função XOR. Função
 A cada quantidade de passos é usado e contabilizado uma quantidade de cave de bits tais como:
· 10 passos  Chave128 bits.
· 12 passos  Chave192 bits.
· 14 passos  Chave 256 bits
Como funciona o AES? O AES é um algoritmo que trabalha byte a byte, porém é considerada uma cifra de bloco preferencialmente. Vejamos como ele opera:
  
 Conversão dos dados em uma matriz.
  Pois bem, para começar o AES recebe os dados da de algum algoritmo de cifração e então os organiza em uma matriz de 4x4, de forma que serão acondicionados 16 bytes dentro dessa matriz. Não havendo quantidade suficiente, haverá o padding (termo utilizado quando precisamos completar o bloco, por exemplo se não tivermos 16 Bytes, mas sim 12 teremos de completar com Zeros até chegarmos em 16 Bytes.).
Primeira rodada
  Feita a conversão dos dados na matriz de operação (confusão), então AES irá realizar a primeira rodada de cifração. Uma simples operação XOR com a Chave da primeira rodada.
A Expansão.
De acordo com o tamanho da chave, lembrem-se o AES deriva-se do RINJDAEL, que possui chaves de 128, 160, 192, 224 e 256 bits, que por padrão do Governo americano será de 128, 192 e 256 bits, temos a quantidades de rodadas de cifração. Dessa forma, 128 bits nos trarão 9 rodadas. Para isso precisamos expandir a chave inicial. Sendo assim vejamos:
1ª fase – Colunas
· Para a expansão, então, iremos utilizar a última coluna da última chave utilizada. Por exemplo: se fizermos a segunda chave utilizaremos a última coluna da primeira chave.
· Iremos trazer o último byte dessa coluna para a primeira posição.
· Feita essa troca, iremos inserir essa coluna em um s-box. Teremos nossa primeira substituição.
 
2ª fase – XOR
· Feita a s-box, temos agora que realizar uma XOR com uma constante.
· Agora de posse dessa nova coluna, temos que realizar mais um XOR agora com a primeira coluna da chave anterior. No nosso exemplo, a primeira coluna.
· Temos pronta a primeira coluna da próxima chave.
3ª fase – Outras colunas
· De posse da primeira coluna da próxima chave, agora temos de descobrir as outras colunas.
· Faremos da seguinte forma: coluna anterior XOR coluna correspondente na chave anterior. Por exemplo: para definirmos a 3ª coluna, ela será a 2ª coluna XOR 3ª coluna da chave anterior.
Rodadas
· Após definirmos as chaves, iremos a seguir realizar as rodadas necessárias para o tamanho da chave.
Confusão e difusão.
· Após as rodadas iremos agora, de posse do novo texto quase cifrado, aplicar mais uma vez a s-box. Essa ação é necessária para aplicarmos a confusão na nossa cifração.
· Feitas as s-box, iremos agora movimentar nossa linhas para aplicar a difusão. Faremos assim, a primeira linha desloca-se um byte para a esquerda e o que sobrar irá par ao final da linha. A segunda irá deslocar-se 2 posições a esquerda e os dois que sobrarem para o final da linha. Faremos assim até a quarta linha, sempre aumentando o numero de bytes que voltam para o final da linha.
· Para terminar nossa difusão, iremos misturar as colunas.
Mais uma chave
· Ao final de cada rodada, iremos aplicar a chave da próxima rodada no nosso texto atual.
Só pra terminar
· Terminando Iremos misturar as colunas mais uma vez para aumentar a segurança. Lembrando que isso não será feito na ultima rodada.
	
	
Comparação entre AES e outros algoritmos já conhecidos
	Algoritmo
	Tamanho da Chave
	No de Rodadas
	Operações Matemáticas
	AES
	128, 192 ou 256 bits
	10, 12, 14
	XOR, S-Boxes fixas
	DES
	56 bits
	16
	XOR, S-Boxes fixas
	3DES
	112 ou 168 bits
	48
	XOR, S-Boxes fixas
	IDEA
	128 bits
	8
	XOR, adição, multiplicação
	Blowfish
	Variável ate 448 bits
	16
	XOR, S-Boxes variáveis, adição
	RC5
	Variável ate 2048 bits
	Variável ate 255
	Adição, Subtração, XOR, rotação
	CAST-128
	40 ate 128 bits
	16
	Adição, subtração, XOR, rotação, S-Boxes fixas
Vantagens
	
 As vantagens serão apresentadas relativas à:
  Implementação
· Pode rodar bem rapidamente em relação a outros algoritmos.
· Pode ser implementado em um SmartCard usando pouco código e memória.
· Algumas funções podem ser feitas em paralelo, assim tornando o processo mais rápido. Isto é, pode se fazer a substituição dos bytes usando a S-box, vários de uma vez, e não seqüencialmente, e ainda, a expansão da chave pode ser feita enquanto se executa as funções que não dependem dela como a ByteSub() ou ShiftRow().
· Como a encriptação não emprega operações aritméticas, não exige muito poder de processamento.
 Simplicidade do projeto
· Não usa elementos já previamente processados, por ex. a 9a rodada não necessita de nenhum elemento das rodadas anteriores a não ser  única e exclusivamente do State da 8a .
· O algoritmo não baseia sua segurança ou parte dela em interações obscuras e não bem compreendidas entre operações aritméticas, não permitindo assim,  espaço para esconder um trap-door
Possíveis modificações:
· O projeto permite a especificação de variantes com o comprimento do bloco e da chave, ambos variando de 32 em 32 bits no intervalo de 128 até 256 bits.
· Embora o número das rodadas de seja fixo na especificação, pode ser modificado como um parâmetro caso haja problemas de segurança.
	
Desvantagens
	
	
As limitações ficam por conta da inversa
· A inversa é menos recomendável de ser implementada num SmartCard, pois precisa de mais código e mais processamento. Mesmo assim, se comparado, a outros algoritmos ela bem rápida.
· Em software, a encriptação e sua inversa empregam códigos diferentes e/ou tabelas.· Em hardware a inversa pode usar apenas uma parte do circuito usado no processo de encriptação.
 
Bibliografia
https://www.passeidireto.com/
https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Criptografia+aes+explicativo+ppt
http://pt.stackoverflow.com/questions/43492/como-funciona-o-algoritmo-de-criptografia-aes

Continue navegando