Criptografia de chave única

Slides:



Advertisements
Apresentações semelhantes
Circuitos Lógicos e Organização de Computadores Capítulo 6 – Blocos com Circuitos Combinacionais Ricardo Pannain
Advertisements

Char Drivers Alexandre Madeira Taciano Rodolfo Programação de Periféricos Eduardo Augusto Bezerra 30/06/2005.
Criptografia e Segurança de Redes Capítulo 5
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
SISTEMA BINÁRIO Hardware de Computadores. SISTEMA BINÁRIO Hardware de Computadores.
PROGRESSÃO ARITMÉTICA P.A.
FORTRAN 90 Denise Yumi Takamura.
Estruturas de Dados para projeto de SGBD. Estruturas de dados analisadas Estruturas de nível Esparso Denso Combinadas Arvore B+ Tabela de hash.
►► outras formas dessa equação:
Prof. Dr. Helder Anibal Hermini
Utilização do montador Daedalus
Multiplicação em binário
1. Equivalência entre portas 2. Derivação de expressões booleanas 3
Criptografia de chave única
Teste Estrutural de Software
Criptografia Quântica : Um Estudo
Teste Funcional de Software
Criptografia de chave única
Criptografia Raul Fernando Weber Instituto de Informática
(Como implementar multiplicação e divisão uma vez só :-)
Gustavo Vieira Pereira
Weverton Luis da Costa Cordeiro
Twofish Leonardo H. Furlan.
Criptoanálise Integral Criptoanálise diferencial: diferença (subtração) entre duas cifragens Criptoanálise integral: efeito cumulativo (soma) entre várias.
MARS The IBM Candidate Cipher for AES
Criptografia Criptografia & Segurança.
Serpent-1 O Serpent-0 refinado Paulo Estima Mello
Registro de Carta Topográfica
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Técnicas de Processamento Imagens
Geração de Código Otimizações independentes de máquina.
Geração de Código Algoritmo de Escalonamento de instruções – List Scheduling.
Banco de Dados I Profa. Jiani Cardoso 2/2005
Conceitos iniciais Hardware/Software
Funções de um computador
Prof: Encoder Angular Prof:
CES-11 LAB 03 Bitmap Quadtree
Capítulo VII – Tipos Enumerativos e Estruturas 7.1 – Tipos enumerativos 7.2 – A necessidade de estruturas 7.3 – Manipulação dos campos de uma estrutura.
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
CARACTERIZAÇÃO DE PARTÍCULAS
O TÍTULO DO TRABALHO DEVE SER EM FONTE VERDANA, TAMANHO 66, LETRAS MAIÚSCULAS, EM NEGRITO SOBRENOME, Autor 1., SOBRENOME, Autor 2…., Verdana, 32, negrito,
CONCLUSÕES A apresentação deste poster ocorrerá na I Jornada da ABEAD na Paraíba que acontecerá do dia 03 à 05 de novembro de 2010 no Hotel Caiçara em.
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 5a série de slides Versão 26/04/2012.
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Introdução à Codificação de Canal Evelio M. G. Fernández
CÓDIGOS CORRETORES DE ERROS
Interpolação Introdução Conceito de Interpolação
Aritmética de ponto flutuante Erros
Representações na base decimal e binária
Sistemas Lineares Parte 2
Resolução de Sistemas Lineares- Parte 1
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Linguagens Formais e Tradutores Linguagens Regulares (Revisão)
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
The Data Warehouse Toolkit
Prof: Graciano Notação Científica.
Frações Professor: Graciano Pianezzer Beletti.
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
Sistemas de Informação Prof. Me. Everton C. Tetila Modelo de dados relacional Banco de Dados I.
Robótica: Sistemas Sensorial e Motor
Computação Gráfica Geometria de Transformações
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
Segurança em Comércio Eletrônico
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
Introdução à Criptografia Moderna – 2ª Lista de Exercícios
Transcrição da apresentação:

Criptografia de chave única Algoritmo Rijndael Advanced Encryption Standard AES

Histórico Autores: Vincent Rijmen e Joan Daemen Finalista do AES (competição aberta lançada pelo governo dos EUA em 1997) Cifra de bloco de 128 bits (chave 128/192/256 bits) Código aberto e livre 21 candidatos em 1997 15 candidatos em 1998 5 candidatos em 1999 Cinco finalistas (MARS, RC6, Rijndael, Serpent, Twofish)

Rijndael Cifra de bloco de 128 bits com chaves e blocos variáveis de 128/192/256 bits (ou 16/24/32 bytes) 10/12/14 iterações Otimizado para software em processadores de 8/16/32/64 bits Facilmente implementado em hardware Baixa necessidade de memória de trabalho Boa velocidade O AES está padronizado pela ISO e IETF

Rijndael Várias operações são definidas em nível de byte - grupo finito GF(28) Outras operações utilizam palavras de 4 bytes

O Campo GF(28) Um elemento de um campo finito pode ser representado de várias formas Um byte b, que consiste de b7 b6 b5 b4 b3 b2 b1 b0 é considerado um polinômio com coeficientes em {0,1} b7 x7 + b6 x6 + b5 x5 + b4 x4 + b3 x3 + b2 x2 + b1x + b0

O Campo GF(28) Exemplo: o byte hexadecimal 0x57 (01010111) corresponde ao polinômio 0X7+ 1X6+ 0X5+ 1X4+ 0X3+ 1X2+ 1X1+ 1X0 X6 + X4 + X2 + X + 1

(x6+ x4+ x2+ x+ 1) + (x7+ x+ 1) = x7+ x6+ x4+ x2 O Campo GF(28) Adição: a soma de dois elementos é obtida da soma dos coeficientes em módulo 2 (1+1=0) Exemplo: ’57’ + ’83’ = ‘D4’ (x6+ x4+ x2+ x+ 1) + (x7+ x+ 1) = x7+ x6+ x4+ x2 01010111 + 10000011 = 11010100 Adição corresponde a um XOR

O Campo GF(28) Multiplicação: o produto em GF(28) corresponde a multiplicação em módulo de m(x) Rijndael usa m(x) = x8 + x4 + x3 + x + 1 Ou ’11B’ em hexadecimal

O Campo GF(28) Exemplo: ’57’ • ’83’ = ‘C1’ (x6+ x4+ x2+ x+ 1)(x7+ x+ 1) = = x13+ x11+ x9+ x8+ x7+ x7+ x5+ x3+ x2+ x+ x6+ x4+ x2 + x+ 1 = x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1 em módulo: = x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1 modulo x8+ x4+ x3+ x+ 1 = x7+ x6+ 1 O resultado sempre será um polinômio de grau inferior a 8

Projeto Três critérios foram utilizados na criação do algoritmo (segundo os autores): Resistência a ataques conhecidos (diferencial e linear) Velocidade e geração de código compacto em um grande número de plataformas Simplicidade

Projeto Na maioria dos cifradores as rodadas tem uma estrutura Feistel (parte dos bits de estados intermediários são transpostos de forma inalterada) As rodadas do Rijndael não têm estrutura Feistel. As rodadas são compostas de três transformações distintas, inversíveis e uniformes, chamados níveis (layers), e mais uma operação com uma sub-chave

Rijndael Cifrando o texto

Cifragem As rodadas do Rijndael não têm estrutura Feistel 4 funções por rodada ByteSub (substituição) ShiftRow (deslocamento) MixColumn (multiplicação) AddRoundKey (soma / ou-exclusivo com chave)

Rodada normal Última rodada Cifragem Round(State,RoundKey) { ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State,RoundKey); } Rodada normal FinalRound(State,RoundKey) { ByteSub(State) ; ShiftRow(State); AddRoundKey(State,RoundKey); } Última rodada

Cifragem Entrada: Array de 4 bytes (linhas) x N bytes (colunas) N = tamanho do bloco / 32 128 / 192 / 256 Þ 4 / 6 / 8 bytes

Cifragem

ByteSub Substituição de cada byte pelo equivalente na caixa S

ByteSub

ByteSub Substituição é algébrica Seja a = a7a6a5a4a3a2a1a0 if a <> 0 then a = inverso_mult_mod_11B(a); c = 01100011; (em binário) for i=0 to 7 bi = ai + ai+4 mod 8 + ai+5 mod 8 + ai+6 mod 8 + ai+7 mod 8 + ci mod 2 Operação pode ser pré-calculada (memória com 256 bytes)

ShiftRow

Mix Column As colunas do estado são tratados como polinômios GF(28) e multiplicados em módulo de x4+1 com um polinômio fixo c(x)= ’03’x3 + ’01’x2 + ’01’x + ’02’ B(x):=c(x) Ä a(x)

Mix Column Opera nas colunas dos estados Cada coluna é multiplicada por c(x)

Key Addition Nessa operação a chave da rodada é aplicada por um simples XOR

Sub-chaves Cada rodada necessita de uma sub-chave distinta Cada sub-chave tem o mesmo comprimento do bloco sendo cifrado Necessárias 11/13/15 Sub-chaves de 128/192/256 bits (ou 16/24/32 bytes), para 10/12/14 rodadas Chave é expandida 176 / 312 / 480 bytes

Sub-chaves Chave é expandida 176 / 312 / 480 bytes Algoritmo de geração trabalha com palavras de 4 bytes (32 bits) Assim, os 16/24/32 bytes da chave (kj) são expandidos para 44/78/120 palavras de 4 bytes (wi) Na expansão, são utilizadas 10/19/29 constantes de 32 bits (conk)

Geração de Sub-chaves (128 bits) for i=0 to 3 wi = k4i , k4i+1 , k4i+2 , k4i+3 {concatenação de 4 bytes} for i=4 to 43 temp = wi-1 if i mod 4 = 0 then temp=SubWord(RotWord(temp)) xor coni/4 wi = wi-4 xor temp RotWord = rotação circular p/esquerda de 1 byte SubWord = aplicação da Caixa S a cada dos 4 bytes

Rijndael Decifrando o texto

Decifragem Uso das sub-chaves em ordem inversa 4 etapas por rodada AddRoundKey (soma / ou-exclusivo) InverseMixColumn (multiplicação) InverseShiftRow (deslocamento) InverseByteSub (substituição)

Avaliação do Algoritmo Para Rijndael, com um tamanho de bloco de 128bits, 6 rodadas pode ser consideradas seguras, mas 4 outras foram adicionadas como garantia Duas rodadas do algoritmo fornecem difusão completa Imune a ataques diferenciais Imune a ataques lineares Melhor ataque ainda é força bruta

Bibliografia Referência principal: http://www.nist.gov/aes Site dos autores: http://www.esat.kuleuven.ac.be/~rijmen/rijndael/