28
Entendendo Criptografia – Um Livro Texto para Estudantes e Profissionais por Christof Paar e Jan Pelzl www.crypto-textbook.com Capítulo 3 – O Advanced Encryption Standard (AES) ver. 28 de outubro de 2009 Estes slides foram preparados em inglês por Daehyun Strobel, Christof Paar and Jan Pelzl Tradução para Português (Brasil) dos slides: Understanding Cryptography – A Textbook for Students and Practitioners by Christof Paar and Jan Pelzl. Chapter 4 – The Advanced Encryption Standard (AES) ver. October 28, 2009

por Christof Paar e Jan Pelzl rdahab/cursos/mo421-mc889/2014-1s/Welcome_files/... · • Camada de Difusão • Camada de Adição da Chave

  • Upload
    voanh

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Entendendo Criptografia – Um Livro Texto para Estudantes e Profissionais

por Christof Paar e Jan Pelzl

www.crypto-textbook.com

Capítulo 3 – O Advanced Encryption Standard (AES)

ver. 28 de outubro de 2009

Estes slides foram preparados em inglês por Daehyun Strobel, Christof Paar and Jan Pelzl

Tradução para Português (Brasil) dos slides: Understanding Cryptography – A Textbook for

Students and Practitioners by Christof Paar and Jan Pelzl.

Chapter 4 – The Advanced Encryption Standard (AES)

ver. October 28, 2009

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Algumas questões legais (desculpem): Termo de Uso

•  Os slides podem ser usados sem custos. Todos os direitos dos slides permanecem com os autores.

•  O título do livro que dá origem aos slides “Understanding Cryptography” by Springer e o nome dos autores devem permanecer em todos os slides.

•  Se os slides forem modificados, os créditos aos autores do livro e ao livro devem permanecer nos slides.

•  Não é permitida a reprodução de parte ou do todo dos slides em forma impressa sem a permissão expressa por escrito dos autores.

2/27

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Conteúdo deste Capítulo

• Visão Geral do Algoritmo do AES

• Estrutura Interna do AES

• Camada de Substituição de Bytes

• Camada de Difusão

• Camada de Adição da Chave

• Gerador de Subchaves

• Decriptação

• Questões Práticas

3/27

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Conteúdo deste Capítulo

• Visão Geral do Algoritmo do AES

• Estrutura Interna do AES

• Camada de Substituição de Bytes

• Camada de Difusão

• Camada de Adição da Chave

• Gerador de Subchaves

• Decriptação

• Questões Práticas

4/27

A seguir

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

 Alguns Fatos Básicos

•  Hoje o AES é a cifra assimétrica mais largamente utilizada.

•  O algoritmo AES foi escolhido pelo US National Institute of Standards and Technology (NIST) em um processo de seleção de vários anos.

•  Os requisitos para todos os candidatos do AES foram:

•  Cifra de bloco de tamanho de bloco de 128 bits

•  Suportar três tamanhos de chaves: 128, 192 e 256 bits

•  Segura com relação aos outros algoritmos submetidos.

•  Eficiente em software e hardware

5/28

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

 Cronologia da Seleção do AES

•  Em Janeiro de 1997 foi anunciado pelo NIST a necessidade de uma nova cifra de bloco.

•  15 algoritmos candidatos foram aceitos em Agosto de 1998.

•  Em Agosto de 1999, 5 finalistas foram anunciados:

•  Mars – IBM Corporation

•  RC6 – RSA Laboratories

•  Rijndael – J. Daemen & V. Rijmen

•  Serpent – Eli Biham et al.

•  Twofish – B. Schneier et al.

•  Em Outubro de 2000, Rijndael foi escolhido como o AES

•  Em Novembro de 2001, o AES foi formalmente aprovado como um padrão federal dos Estados Unidos.

6/28

 AES: Visão Geral

O número de rodadas depende do tamanho da chave escolhida:

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Tamano da Chave (bits) Número de Rodadas

128 10

192 12

256 14

7/28

 AES: Visão Geral

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

•  O processo é repetido com 10/12/14 rodadas

•  Cada rodada consiste de “Camadas”

8/28

Texto em Claro x

Texto Encriptado y = AES(x)

Chave k

Transformação nr

Transformação 1

Transformação 0

Transformação nr-1

Camada de Adição da Chave

Camada de Adição da Chave

Camada de Adição da Chave

Camada de Substituição de Bytes

Camada de Substituição de Bytes

Camada de Adição da Chave

Camada de Deslocamento de Linhas

Camada de Mix de Colunas

Camada de Deslocamento de Linhas

Rodada nr-1

Rodada nr

Camada de Deslocamento de Linhas

Camada de Mix de Colunas Camada de Difusão Rodada 1

Camada de Substituição de Bytes

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Conteúdo deste Capítulo

• Visão Geral do Algoritmo do AES

• Estrutura Interna do AES

• Camada de Substituição de Bytes

• Camada de Difusão

• Camada de Adição da Chave

• Gerador de Subchaves

• Decriptação

• Questões Práticas

9/27

A seguir

  Estrutura Interna do AES

•  O AES é uma cifra orientada a byte

•  O estado A (i.e., os 128 bits de dados no caminho) podem ser representados em uma matriz 4x4 :

com A0,…, A15 denotando os 16 bytes de entrada do AES

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

A0 A4 A8 A12

A1 A5 A9 A13

A2 A6 A10 A14

A3 A7 A11 A15

10/28

  Estrutura interna do AES

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

•  Funções de Rodada para as rodadas 1,2,…,nr-1:

•  Note que na última rodada, a transformação Mix de Colunas é omitida

11/28

Substituição de Bytes

Deslocamento de Linhas

Mix de Colunas

Adição da Subchave

 Camada de Substituição de Bytes

•  A Camada de Substituição de Bytes é constituída de 16 caixas S-Box com as seguintes propriedades:

As caixas S-Box são:

•  idênticas

•  Os únicos elementos não lineares do AES, i.e., ByteSub(Ai) + ByteSub(Aj) ≠ ByteSub(Ai + Aj), for i,j = 0,…,15

•  bijetoras, i.e., há um mapeamento um-para-um dos bytes de entrada e saída ⇒ S-Box é unicamente reversível

•  Nas implementações de software, as caixas S-Box são usualmente tabelas de busca indexada.

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 12/28

 Camada de Difusão

A camada de Difusão

•  Prove difusão em todos os bits do estado de entrada

•  consiste de duas subcamadas:

•  Subcamada de Deslocamento de Linhas: Permuta os dados em nível de byte

•  Subcamada de Mix de Colunas: Operação Matricial que combina (“mix = mistura”) blocos de 4 bytes.

•  Faz uma operação linear sobre as matrizes de estado A, B, i.e., DIFF(A) + DIFF(B) = DIFF(A + B)

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 13/28

 Camada de Deslocamento de Linhas

•  Linhas da matriz de estão são deslocadas circularmente:

Matriz de Entrada

Matriz de Saída

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

B0 B4 B8 B12

B1 B5 B9 B13

B2 B6 B10 B14

B3 B7 B11 B15

B0 B4 B8 B12

B5 B9 B13 B1

B10 B14 B2 B6

B15 B3 B7 B11

sem deslocamento ← deslocamento a esquerda de uma posição

← deslocamento a esquerda de duas posições ← deslocamento a esquerda de duas posições

14/28

  Subcamada de Mix de Colunas

•  Transformação linear que mistura cada coluna da matriz de estado

•  Cada coluna de 4 bytes é considerada como um vetor e multiplicada por uma matriz 4x4, e.g.,

onde 01, 02 e 03 são dados em notação hexadecimal.

•  Toda a aritmética é feita no Campo de Galois GF (28) (para mais informações veja o Capítulo 4.3 do livro Understanding Cryptography)

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

15

10

5

0

3

2

1

0

02010103030201010103020101010302

BBBB

CCCC

15/28

 Camada de Adição da Subchave

•  Entradas:

•  Matriz de estado C com 16 bytes

•  Subchave ki de 16 bytes

•  Output: C ⊕ ki

•  As subchaves são geradas pelo gerador de subchaves

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 16/28

 Gerador de Subchaves

•  As Subchaves são derivadas recursivamente da chave original de entrada de 128/192/256 bits

•  Cada rodada tem 1 Subchave, mais uma subchave do início do AES.

•  “branqueamento” da chave: A Subchaves são usadas tanto na entrada como na saída do AES ⇒ # subchaves = # rodadas + 1

•  Há diferentes geradores de subchaves para os diferentes tamanho de chaves.

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Tamanho da chave (bits) Número de Subchaves

128 11

192 13

256 15

17/28

 Gerador de Subchaves

Exemplo: Gerador de subchaves do AES de chave de 128 bits

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

•  Orientado a palavra: 1 palavra = 32 bits

•  11 subchaves são armazenadas em W[0]…W[3], W[4]…W[7], … , W[40]…W[43]

•  A primeira subchave W[0]…W[3] e a chave original de entrada do AES

18/28

subchave da rodada 0

subchave da rodada 1

subchave da rodada 9

subchave da rodada 10

 Gerador de Subchaves

•  A função g roda os 4 bytes da entrada e faz uma operação de substituição de bits usando as caixas S-Box ⇒ não linearidade

•  O coeficiente da rodada RC é somado somente no byte

mais a esquerda e varia de rodada para rodada:

RC[1] = x0 = (00000001)2 RC[2] = x1 = (00000010)2 RC[3] = x2 = (00000100)2 ... RC[10] = x9 = (00110110)2

•  xi representa um elemento do Campo de Galois (novamente, conforme Capítulo 4.3 do livro Understanding Cryptography)

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 19/28

Função g da rodada i

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Conteúdo deste Capítulo

• Visão Geral do Algoritmo do AES

• Estrutura Interna do AES

• Camada de Substituição de Bytes

• Camada de Difusão

• Camada de Adição da Chave

• Gerador de Subchaves

• Decriptação

• Questões Práticas

20/27

A seguir

 Decriptação

•  AES não é baseado em uma rede de Feistel

⇒ Todas as camadas devem ser invertidas para a decriptação:

•  Camada de Mix de Colunas → Camada Inversa do Mix de Colunas

•  Camada de Deslocamento de Linhas → Camada Inversa do Deslocamento de Linhas

•  Camada de Substituição de Bytes → Camada Inversa da Substituição de Bytes

•  A camada de Adição da Subchaves é a mesma porém aplicada na ordem inversa.

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 21/28

Chave k

Transformação nr

Transformação 1

Transformação nr-1

Camada de Adição da Chave

Camada de Inv. Substituição de Bytes

Rodada nr-1

Rodada nr

Rodada 1

Camada Inv. Deslocamento de Linhas

Texto Encriptado y

Texto Encriptado x = AES-1(y)

Camada de Adição da Chave

Camada Inv. de Mix de Colunas

Cam. Inv. de Deslocamento de Linhas

Camada Inv. de Mix de Colunas

Cam. Inv. de Deslocamento de Linhas

Camada de Inv. Substituição de Bytes

Camada de Inv. Substituição de Bytes

Camada de Adição da Chave

Camada de Adição da Chave

Transformação 0

 Decriptação

•  Camada Inversa do Mix de Colunas:

•  Para reverter a operação do Mix de Colunas, cada estado da matriz C deve ser multiplicado pelo inverso da matriz 4x4 usada na encriptação, i. e.,

onde 09, 0B, 0D e 0E são dados em notação hexadecimal

•  Novamente, Toda a aritmética é feita no Campo de Galois GF(28) (para mais informações veja o Capítulo 4.3 do livro Understanding Cryptography)

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

3

2

1

0

3

2

1

0

00900000900000909000

CCCC

EDBBEDDBE

DBE

BBBB

22/28

 Decriptação

•  Camada Inversa do Deslocamento de Linhas:

•  Todas as linhas da matriz de estado B são deslocada na direção oposta:

Matriz de Entrada

Matriz de Saída

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

B0 B4 B8 B12

B1 B5 B9 B13

B2 B6 B10 B14

B3 B7 B11 B15

B0 B4 B8 B12

B13 B1 B5 B9

B10 B14 B2 B6

B7 B11 B15 B3

sem deslocamento

→ deslocamento a direita de uma posição

→ deslocamento a direita de duas posições → deslocamento a direita de três posições

23/28

 Decriptação

•  Camada Inversa da Substituição de Bytes :

•  Como a caixa S-Box é bijetora, é possível construir sua inversa tal que:

Ai = S-1(Bi) = S-1(S(Ai))

⇒ A caixa S-Box inversa é usada para a decriptação. É usualmente implementada por uma tabela de busca indexada.

•  Gerador de Subchaves de Decriptação:

•  As Subchaves são necessárias na ordem inversa (comparando com a encriptação)

•  Na prática, para encriptação e decriptação, as mesmas subchaves são usadas. Isso requer que todas as subchaves devem ser calculadas antes de começar a decriptação do primeiro bloco.

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 24/28

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

Conteúdo deste Capítulo

• Visão Geral do Algoritmo do AES

• Estrutura Interna do AES

• Camada de Substituição de Bytes

• Camada de Difusão

• Camada de Adição da Chave

• Gerador de Subchaves

• Decriptação

• Questões Práticas

25/27

A seguir

  Implementação em Software

•  Um requisito do AES foi a possibilidade de uma implementação eficiente em software.

•  A implementação direta do algoritmo é bem adequada para processadores de 8 bits (p.e. smart cards), mas é ineficiente em processadores de 32 ou 64 bits

•  Uma abordagem mais sofisticada: Mesclar todas as funções das rodadas (exceto a adição da chave) em uma única tabela de busca indexada.

•  Isto resulta em quatro tabelas de 256 entradas, onde cada entrada tem 32 bits de largura.

•  Uma rodada pode ser calculada com 16 buscas nas tabelas.

•  As velocidades típicas em software são maiores que 1.6 Gbit/s nos processadores modernos de 64 bits

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 26/28

  Segurança

•  Ataque de Força Bruta: Devido ao tamanho da chave de 128, 192 ou 256 bits, um ataque de força bruta não é possível.

•  Ataques Analíticos: Não há um ataque analítico conhecido que seja melhor que o ataque de força bruta.

•  Ataques Laterais-ao-Canal:

•  Vários ataques laterais ao canal tem sido publicados.

•  Note que ataques laterais ao canal não atacam o algoritmo mas a sua implementação.

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl 27/28

Chapter 4 of Understanding Cryptography by Christof Paar and Jan Pelzl

  Lições Aprendidas

•  O AES é uma cifra de bloco moderna que suporte três tamanhos de chaves 128, 192 e 256 bits. Ela prove uma excelente segurança de longo prazo contra ataques de força bruta.

•  O AES foi estudado intensivamente desde o final dos anos 1990 e nenhum ataque melhor que o força bruta foi encontrado.

•  O AES não é baseado em redes de Feistel. Suas operações básicas usam a aritmética dos Campos de Galois e provem uma forte difusão e confusão.

•  O AES é parte de numerosos padrões tais como o IPsec ou TLS, além de ser a encriptação mandatória das aplicações do governo dos EUA. Parece ser provável que por muitos anos essa cifra será o algoritmo de encriptação dominante.

•  O AES é eficiente em software e hardware.

28/28