Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Gerenciamento de Chaves e Protocolos Criptográficos: Autenticação e Estabelecimento, Notas de aula de Algoritmos

Neste documento, discutimos aspectos básicos do gerenciamento de chaves e estudamos com detalhes os principais protocolos criptográficos para autenticação e estabelecimento de chaves criptográficas entre duas ou mais entidades. Esses protocolos formam a base para a maioria dos sistemas de segurança. O objetivo da inclusão da chave k no processo é dar o poder de transformar m em c apenas a quem conhece k, sendo este objetivo prover sigilo na transmissão de m. O documento aborda os sistemas simétricos e assimétricos, grupos matemáticos e algoritmos de encriptação em fluxo.

O que você vai aprender

  • Quais são os principais algoritmos de encriptação em fluxo?
  • Quais são os principais protocolos criptográficos para autenticação?
  • Qual é a finalidade do uso de chaves em criptografia?
  • Como funciona o processo de estabelecimento de chaves criptográficas entre duas entidades?
  • Quais são as principais diferenças entre sistemas simétricos e assimétricos de criptografia?

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

usuário desconhecido
usuário desconhecido 🇧🇷

4.6

(158)

172 documentos

1 / 55

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Técnicas criptográficas modernas: algoritmos e protocolos
Ricardo Dahab e Julio C. López-Hernández
Abstract
This text gives an overview of some of the most important cryptographic techniques in use today,
which are extensively used in applications having central security requirements such as secrecy and
authentication. We begin by motivating the study of Cryptography and then describe the prevailing
secret- and public-key algorithms for encryption and digital signatures, as well as recent proposals
for cryptographic hash functions. Next, we discuss aspects of key management and study several
protocols for entity authentication and key establishment, starting points for most applications. We
conclude with a brief discussion of two topics which have spurred a lot of research: one, Quantum
Cryptography, is a new paradigm for key establishment which uses Quantum Physics laws;the other,
Bilinear Pairings, is a technique that has been used to simplify and sometimes reinvent known areas
such as Identity-based Cryptography.
Resumo
Este texto faz um apanhado de algumas das técnicas criptográficas modernas mais importantes, que
são empregadas em aplicações com requisitos fundamentais de segurança, tais como sigilo e au-
tenticação. Iniciamos motivando o estudo da Criptografia e, a seguir, apresentamos os principais
algoritmos criptográficos para encriptação e assinaturas digitais, assim como propostas recentes de
métodos para resumos criptográficos. A seguir discutimos aspectos do gerenciamento de chaves e
estudamos, com algum detalhe, os principais protocolos criptográficos para autenticação e estabeleci-
mento de chaves criptográficas entre duas ou mais entidades, que formam a base para a maioria dos
protocolos de segurança. Finalizamos com uma breve discussão de dois tópicos que têm suscitado
muito interesse: um, a Criptografia Quântica, um novo paradigma para estabelecimento de chaves
que usa as leis da Física Quântica; o outro, Emparelhamentos Bilineares, uma técnica que tem sido
usada para simplificar e até mesmo reinventar áreas conhecidas, como a Criptografia Baseada em
Identidades.
3.1. Introdução
A Criptografia moderna se ocupa muito menos de sigilo do que me-
ros trinta anos atrás, quando justificava plenamente a etimologia da palavra
criptografia, cuja origem grega significa escrita oculta. Hoje, técnicas criptográ-
ficas são maciçamente empregadas na prevenção de incidentes de segurança.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37

Pré-visualização parcial do texto

Baixe Gerenciamento de Chaves e Protocolos Criptográficos: Autenticação e Estabelecimento e outras Notas de aula em PDF para Algoritmos, somente na Docsity!

Técnicas criptográficas modernas: algoritmos e protocolos

Ricardo Dahab e Julio C. López-Hernández

Abstract

This text gives an overview of some of the most important cryptographic techniques in use today, which are extensively used in applications having central security requirements such as secrecy and authentication. We begin by motivating the study of Cryptography and then describe the prevailing secret- and public-key algorithms for encryption and digital signatures, as well as recent proposals for cryptographic hash functions. Next, we discuss aspects of key management and study several protocols for entity authentication and key establishment, starting points for most applications. We conclude with a brief discussion of two topics which have spurred a lot of research: one, Quantum Cryptography, is a new paradigm for key establishment which uses Quantum Physics laws; the other, Bilinear Pairings, is a technique that has been used to simplify and sometimes reinvent known areas such as Identity-based Cryptography.

Resumo

Este texto faz um apanhado de algumas das técnicas criptográficas modernas mais importantes, que são empregadas em aplicações com requisitos fundamentais de segurança, tais como sigilo e au- tenticação. Iniciamos motivando o estudo da Criptografia e, a seguir, apresentamos os principais algoritmos criptográficos para encriptação e assinaturas digitais, assim como propostas recentes de métodos para resumos criptográficos. A seguir discutimos aspectos do gerenciamento de chaves e estudamos, com algum detalhe, os principais protocolos criptográficos para autenticação e estabeleci- mento de chaves criptográficas entre duas ou mais entidades, que formam a base para a maioria dos protocolos de segurança. Finalizamos com uma breve discussão de dois tópicos que têm suscitado muito interesse: um, a Criptografia Quântica, um novo paradigma para estabelecimento de chaves que usa as leis da Física Quântica; o outro, Emparelhamentos Bilineares, uma técnica que tem sido usada para simplificar e até mesmo reinventar áreas conhecidas, como a Criptografia Baseada em Identidades.

3.1. Introdução

A Criptografia moderna se ocupa muito menos de sigilo do que há me- ros trinta anos atrás, quando justificava plenamente a etimologia da palavra criptografia, cuja origem grega significa escrita oculta. Hoje, técnicas criptográ- ficas são maciçamente empregadas na prevenção de incidentes de segurança.

R. Dahab e J. López

Aplicações e sistemas que tenham requisitos como sigilo, autenticação, inte- gridade, não-repúdio e anonimato empregam técnicas criptográficas em algum nível de sua arquitetura. O objetivo deste texto é dar uma visão panorâmica das técnicas criptográfi- cas atuais mais importantes para a consecução de requisitos fundamentais da segurança da informação, como sigilo , autenticação e integridade , dos quais dependem, direta ou indiretamente, outros requisitos de segurança. Por exem- plo, um requisito muito em voga é a disponibilidade de sistemas servidores, al- vos constantes de ataques de negação de serviço: embora os métodos usuais para tratamento e recuperação de incidentes de segurança não usem técnicas criptográficas, protocolos de autenticação podem prevenir danos pelo abuso do sistema por usuários mal-intencionados. O sigilo de mensagens, ou de identidades, pode ser necessário a uma aplicação (e.g. correio eletrônico, telefonia, mensageria em geral, compras com moeda eletrônica em que anonimato é desejável), ou auxiliar a consecução de outro requisito, como a autenticação. Por exemplo, quando um usuário faz um login , sua senha deve ser transmitida em sigilo, sob pena de sua captura e uso por um usuário não autorizado. Da mesma forma, a autenticação de certas propriedades de mensagens (e.g. sua integridade e origem) e de entidades (e.g. sua identidade) pode ser um fim em si — como na verificação de existência de virus em um programa ou no login de um usuário — ou pode ancorar a obtenção de outros fins como o estabelecimento de uma chave criptográfica de forma confiável entre duas entidades.

3.1.1. Modelo de segurança

O nosso modelo básico de comunicação supõe duas entidades, Alice e Beto, trocando mensagens transmitidas num canal inseguro ; isto é, um canal passível de leitura e escrita por um intruso, Ivo. Os métodos de Ivo podem ser a simples escuta, um “grampo”, que chamamos de ataque passivo , ou até a modificação, repetição e injeção de mensagens com objetivos variados como, por exemplo, passar-se por Alice ou Beto para obter acesso a serviços não autorizados; esses são os chamados ataques ativos. Passivos ou ativos, es- ses ataques representam ameaça aos requisitos de segurança que discutimos acima. As técnicas criptográficas para prevenir tais ataques vêm de duas verten- tes, a simétrica e a assimétrica , usadas isoladamente ou em conjunto. Discuti- mos essas duas vertentes a seguir.

3.1.2. Criptografia simétrica

Sistemas criptográficos simétricos , ou criptossistemas simétricos , ou sim- plesmente sistemas simétricos , são baseados no modelo da Figura 3.1: Alice e Beto desejam trocar mensagens em sigilo; para isso, antes de transmitir uma mensagem m (o texto claro ) para Beto, Alice aplica uma função (ou algoritmo) de encriptação ENC k ( m ), que transforma m numa mensagem encriptada ou

R. Dahab e J. López

Como Ivo conhece a mensagem m ′^ na busca exaustiva, o ataque ao mo- delo é chamado de ataque do texto claro conhecido. Se somente c fosse co- nhecido, o ataque seria de texto encriptado somente. Se Ivo tiver acesso à função ENC k (.), por exemplo embutida em algum dispositivo, e puder produzir pares ( m ′, c ′) à sua escolha, o ataque é de texto claro escolhido. Finalmente, se Ivo tiver acesso à função DEC k (.) e puder produzir pares ( m ′, c ′) à sua escolha, o ataque é de texto encriptado escolhido. Claro que um sistema resistente a ataques de texto claro escolhido é mais forte que um sistema que resista ape- nas a ataques de texto claro conhecido, que, por sua vez, é mais forte que os que resistem apenas a ataques de texto encriptado somente. A ciência que se dedica a analisar algoritmos criptográficos em busca de falhas, ou de ”quebrar” tais algoritmos, é a Criptoanálise. O adjetivo simétrico, usado para qualificar o modelo da Figura 3.1, é bas- tante adequado. Tanto Alice quanto Beto são indistinguíveis no seu poder sobre a chave k : tudo que um puder encriptar ou decriptar o outro também pode. Um benefício dessa simetria é a confiança que Alice e Beto têm de que estão tro- cando mensagens sigilosas um com o outro, e não com Ivo; a isso chamamos de autenticação da origem das mensagens. De fato, Alice e Beto podem usar encriptação primordialmente com esse objetivo, como veremos na Seção 3.2. Por outro lado, não é possível atribuir a um ou a outro a autoria de uma men- sagem sem a ajuda de uma terceira parte confiável. Essa propriedade, da irretratabilidade , é exclusiva dos sistemas assimétricos. Outras denominações dos sistemas simétricos são sistemas de chaves se- cretas e sistemas de chaves simétricas. Daqui em diante usamos esses nomes indistintamente, favorecendo o que melhor se adequar ao contexto. Acrescen- tamos também os índices AB à chave k , para designar a chave kAB comparti- lhada de Alice e Beto.

3.1.3. Criptografia assimétrica

Sistemas assimétricos usam o modelo da Figura 3.2, onde é evidente o fato de que as chaves de encriptação e decriptação são diferentes. Neste modelo, Alice aplica uma função de encriptação ENC eB ( m ), que transforma m numa mensagem encriptada c , sob a ação da chave eB. Ao receber c , Beto aplica a função de decriptação DEC dB ( c ), recuperando m. No caso de mensagens de Beto para Alice, as chaves usadas são: eA para encriptação e dA para decrip- tação. O leitor atento já deve ter inferido que a mudança do modelo vai além da notação. As chaves eB , dB são ambas de Beto. A primeira, eB , é a chave pública de Beto, distribuída e utilizada livremente. A segunda, dB , é de conhe- cimento exclusivo de Beto, sua chave privada. eB é utilizada para encriptação de mensagens para Beto e dB para decriptação dessas mensagens. O mesmo se aplica para Alice em relação a eA e dA. Conseqüências importantes nessas mudanças são:

  • Não é mais necessário um acordo prévio de chaves, já que cada usuário

Técnicas criptográficas modernas

Alice

m c

canal inseguro

Beto

m

Dec

e d

Enc

B B

Figura 3.2. Modelo assimétrico

deve necessariamente gerar o seu próprio par de chaves.

  • Além dessa melhora qualitativa, a redução do número de chaves tam- bém impressiona: n × ( n − 1 )/ 2 chaves no caso simétrico e 2 n no caso assimétrico.
  • Embora não tenha mais que se preocupar com o sigilo da chave de en- criptação, Alice deve agora ter a confiança de que a chave de encripta- ção é, de fato, a chave eB de Beto. Tais chaves em pouco diferem de longuíssimas seqüências aleatórias de bits e, portanto, sua identificação é difícil. Claro que o uso constante da mesma chave com Beto traz essa confiança a Alice; o problema é o primeiro uso. As premissas para que esse novo modelo atenda ao requisito de sigilo das mensagens transmitidas são: (i) ENC eX (.) deve ser unidirecional para cada chave eX , a menos que se conheça a chave dX de decriptação; supomos, como antes, que ENC.(.) e DEC.(.) sejam públicas; (ii) obviamente, eB e dB são rela- cionadas, mas não deve ser possível calcular dB a partir do conhecimento de eB em tempo hábil. Uma condição necessária para isso é que o número de possibilidades para dB seja muito alto. Em alguns sistemas atuais, dB chega a ter milhares de bits! Nem todos os ataques listados no caso simétrico aplicam-se aqui e outros têm objetivos diferentes. O ataque do texto claro conhecido tem como meta descobrir a chave dB. O de texto encriptado somente pode agora ser usado numa busca exaustiva para descobrir m ′^ a partir de c ′^ e eB. O de texto claro escolhido já não faz sentido e o de texto encriptado escolhido continua válido. A assimetria do novo modelo é evidente: o poder na transmissão de men- sagens de Alice para Beto é de Beto, o destinatário. Tanto Alice como qualquer outra entidade podem encriptar mensagens para Beto usando eB , mas só Beto consegue decriptá-las, usando sua chave privada dB. O outro lado dessa mo- eda é a possibilidade de que Beto possa assinar mensagens enviadas a Alice e outros: se existirem funções SIGN dB (.) e VER eB (.), com a propriedade de que VER eB ( m , s ) retorna 1 quando s = SIGN dB ( m ), e 0 caso contrário, teremos em s o equivalente de uma assinatura digital de Beto em m. Assinaturas digitais são o que possibilitam a irretratabilidade das mensagens assinadas por Beto. Veremos vários esquemas para assinaturas adiante.

Técnicas criptográficas modernas

Definição 2 Um número inteiro p ≥ 2 é primo se é divisível somente por 1 e por ele mesmo.

Todos sabemos os primeiros números primos: 2 , 3 , 5 , 7 , 11 ,.... É um resultado bem conhecido da Teoria dos Números que existem infinitos números primos. Outro resultado diz que todo número inteiro n ≥ 2 pode ser escrito como um produto de potências de números primos; esse produto é a fatoração de n.

Definição 3 Sejam a , b dois números inteiros, não ambos nulos. O máximo divisor comum de a e b, denotado mdc( a , b ) , é o maior inteiro d que divide ambos a e b. Quando mdc( a , b ) = 1 , dizemos que a e b são primos entre si ou coprimos_._

Assim, mdc( 3 , 0 ) = 3 e mdc( 21 , 5 ) = 1. O Algoritmo 1, de Euclides, é o método mais popular para o cálculo do mdc.

Algoritmo 1 Cálculo do máximo divisor comum (Euclides)

ENTRADA: inteiros a , b , com a > 0 , b ≥ 0. SAÍDA: inteiro d , onde d = mdc( a , b ).

  1. se b = 0 então retorne ( a );
  2. enquanto b > 0 faça 2.1 qa div b ; raqb ; 2.2 ab ; br ;
  3. da ;
  4. retorne ( d );

Aritmética modular

Neste texto fazemos uso intenso da aritmética modular, isto é, a aritmética usual de números inteiros, mas com resultados reduzidos módulo um número inteiro. Vamos ao que isso significa.

Definição 4 Sejam a , n números inteiros com n > 0_. O_ resto ou resíduo da divisão de a por n é o único inteiro r, com 0 ≤ rn − 1 , tal que a = qn + r para algum inteiro q, o quociente da divisão.

Por essa definição o resto da divisão de 7 por 3 é 1 (com quociente 2 ), e o resto da divisão de − 7 por 3 é 2 (com quociente − 3 ).

Definição 5 Para a , n números inteiros com n > 0 , a expressão a mod n é a redução de a módulo n, definida como o resto da divisão de a por n.

Portanto, 0 mod 5 = 0 e ( 3 − 8 ) mod 4 = −1 mod 4 = 3.

R. Dahab e J. López

Definição 6 Dado um inteiro n ≥ 1 , denotamos por Z n ao conjunto { 0 , 1 ,... , n − 1 } de resíduos módulo n, isto é dos restos possíveis de divisões de números inteiros por n.

Como todo número inteiro produz um resto ao ser dividido por n , Z n tem em si um representante para cada número inteiro. A próxima definição captura essa idéia.

Definição 7 Para a , b , n números inteiros com n > 0 , escrevemos ab (mod n ) , quando a mod n = b mod n. Dizemos que a e b são congruentes módulo n.

Assim, 0 ≡ 3 (mod 3) e 43 ≡ 1 (mod 2).

Definição 8 Para a , n números inteiros com n > 0 , o inverso aditivo de a módulo n é o inteiro b = − a mod n.; ou seja a + b ≡ 0 (mod n ). O inverso multiplicativo de a módulo n, se existir, é o único inteiro b, 1 ≤ bn − 1 , tal que ab ≡ 1 (mod n ). Denotamos o inverso multiplicativo de a módulo n por a −^1 mod n.

Portanto, o inverso aditivo de 4 módulo 7 é 3 e o inverso aditivo de 10 módulo 7 é 4. O inverso multiplicativo de 2 módulo 5 é 3 , o inverso multiplicativo de 4 módulo 5 é 4 e o inverso multiplicativo de 2 módulo 6 não existe. O Teorema a seguir especifica as condições para a existência de inversos multiplicativos.

Teorema 1 Para a , n números inteiros com n > 0 , o inverso multiplicativo de a módulo n existe se e somente se mdc( a , n ) = 1_._

Dados a , n , a extensão do Algoritmo de Euclides, exibida no Algoritmo 2, retorna a tripla de inteiros ( d , s , t ) onde d = mdc( a , n ) e d = sa + tn. Isto é sa = tnd ou sad (mod n ). Assim, quando mdc( a , n ) = 1 , o inteiro s será exatamente a −^1 mod n.

Algoritmo 2 Extensão do Algoritmo de Euclides

ENTRADA: inteiros a , b. SAÍDA: inteiros d , s , t , onde d = mdc( a , b ) = sa + tb.

  1. se b = 0 então retorne ( a , 1 , 0 );
  2. x 2 ← 1; x 1 ← 0; y 2 ← 0; y 1 ← 1;
  3. enquanto b > 0 faça 3.1 qa div b ; raqb ; 3.2 sx 2 − qx 1 ; ty 2 − qy 1 ; 3.3 ab ; br ; x 2 ← x 1 ; x 1 ← s ; 3.4 y 2 ← y 1 ; y 1 ← t ;
  4. da ; sx 2 ; ty 2 ;
  5. retorne ( d , s , t );

R. Dahab e J. López

Corpos finitos

Definição 12 Um corpo é formado por um conjunto F e duas operações, ‘ + ’ e ‘. ’, satisfazendo as seguintes propriedades: (i) (F, +) é um grupo abeliano com identidade 0; (ii) (F \ { 0 }, .) é um grupo abeliano com identidade 1; e (iii) a operação. é distributiva sobre a operação + , isto é, a .( b + c ) = a. b + a. c, para todos a , b , c ∈ F_._

Números racionais, reais e complexos são exemplos de corpos infinitos. A ordem de um corpo finito é o número de elementos em F. Quando a ordem é finita dizemos que o corpo é finito. Sejam a , b dois elementos de um corpo, finito ou não. Então

  • ab é equivalente a a + (− b ), onde − b é o (único) inverso aditivo de b ;
  • a / b é equivalente a a .( b −^1 ), onde b −^1 é o (único) inverso multiplicativo de b ;
  • ka denota a adição de k parcelas iguais a a ;
  • ak^ denota a multiplicação de k parcelas iguais a a , onde a^0 = 1. Existe um corpo finito de ordem q se e somente se q é uma potência de um número primo. Isto é, sse q = pm^ para algum primo p e inteiro m > 0. O primo p é a característica de F. Quando q é primo, i.e. m = 1 , dizemos que o corpo é primo. Quando m > 1 , o corpo é de extensão. Para cada valor de q , uma potência de primo, existe exatamente apenas um corpo finito de ordem q , a menos de isomorfismo, isto é, uma re-rotulação dos elementos que preserva os resultados das operações. Denotamos o corpo finito de ordem q por F q. Alguns exemplos de corpos finitos:
  • O conjunto Z p , p primo, com as operações de soma e multiplicação mó- dulo p formam o corpo primo F p de ordem p.
  • O corpo binário F 2 m^ é formado pelos polinômios em uma variável z de grau máximo m − 1 , cujos coeficientes são 0 ou 1. As duas operações associadas são as de soma e multiplicação de polinômios, com as se- guintes restrições: - os coeficientes do polinômio resultante são reduzidos módulo 2; - o resultado da multiplicação de dois polinômios deve ser tomado módulo um polinômio irredutível f ( z ) de grau m. Isto é, f ( z ) não é o produto de dois polinômios binários de grau menor que m. Os elementos não nulos de um corpo finito F q , juntamente com a multipli- cação do corpo, formam um grupo cíclico, denotado por F q ∗. Portanto, existe para esse grupo pelo menos um gerador α, isto é,

F q ∗ = { α i^ : 0 ≤ iq − 2 }.

Os métodos conhecidos para o cálculo do logaritmo discreto em F q ∗ são todos muito ineficientes quando q é muito grande, da ordem de centenas de dígitos. Para outros grupos o cálculo é muito fácil, por exemplo, em ( Zn , +).

Técnicas criptográficas modernas

3.1.6. Sobre o texto, traduções e neologismos

Ao selecionar os tópicos para este texto, alguns algoritmos e protocolos foram escolhidos pela sua importância histórica; outros porque exemplificam técnicas e conceitos de forma clara e simples. Os comentários sobre a se- gurança de protocolos são breves e nada formais. A análise de protocolos criptográficos é um tema rico e multifacetado e exigiria muito mais espaço para ser coberto com rigor. Uma ausência sentida é a dos métodos para geração de seqüências aleatórias de bits. Tais métodos são vitais para a geração de chaves criptográficas e para produzir eventos imprevisíveis na execução de protocolos criptográficos, bloqueando ataques de repetição de mensagens. No capítulo 5 de [Menezes et al. 1997], o leitor interessado encontrará uma boa referência inicial para esse tema. Procuramos também incluir alguns tópicos recentes que têm despertado grande interesse na academia e na indústria. Escolhemos os termos encriptação e decriptação em vez de outros base- ados no radical ”cifr”, como (de)cifração, (de)cifragem ou (de)ciframento. Cre- mos que encriptar está mais próximo do sentido real de ”ocultar o texto claro” do que cifrar, que tem uma conotação mais próxima de ”escrever de forma enigmática”. Também, abusamos do termo ”unidirecional” para designar uma função f fácil de calcular mas difícil de inverter. Outras traduções têm sido bem recebidas: ”resumo” para o imbatível ”hash”, e ”emparelhamentos bilineares” para ”bilinear pairings”.

Organização do texto

Na Seção 3.2 fazemos um apanhado das principais técnicas criptográficas modernas, incluindo a base matemática mínima para seu entendimento. Nossa exposição é direta, sem demonstrações ou justificativas exceto pelas mais sim- ples. A Seção 3.3 cobre os principais protocolos para autenticação e estabe- lecimento de chaves criptográficas entre duas ou mais entidades. A Seção 3. discute brevemente a Criptografia Quântica e Emparelhamentos Bilineares.

Agradecimentos

Queremos agradecer ao revisor deste texto pela cuidadosa leitura e vali- osas sugestões. Os erros e omissões restantes são, claro, de nossa respon- sabilidade. Queremos agradecer também aos coordenadores do Comitê de Programa das JAI 2007 pelo convite para escrevermos o texto.

3.1.7. Referências adicionais

Uma excelente referência atual em Criptografia, cobrindo tópicos de nível básico e intermediários de forma didática, é a terceira edição do livro Crypto- graphy: theory and practice de Douglas R. Stinson [Stinson 2006]. O Hand- book of Applied Cryptography , de Alfred Menezes, Paul van Oorschot e Scott

Técnicas criptográficas modernas

a mesma seqüência de bits. O chamado one-time pad é um método para en- criptação em fluxo, onde o i -ésimo bit do texto encriptado é o ou-exclusivo do i -ésimo bit da mensagem com o i -ésimo bit da chave. Se os bits da chave forem gerados de forma verdadeiramente aleatória a cada nova mensagem, então o resultado é um algoritmo perfeito, matematicamente impossível de ser que- brado. O problema, claro, é como produzir a mesma seqüência na decriptação sem ter que transmitir a chave.

3.2.1.2. O DES - Data Encryption Standard

O DES foi o primeiro método de encriptação em blocos adotado como pa- drão FIPS ( Federal Processing Standards Publication ) 46 [FIPS ], datado de março de 1975. O método foi desenvolvido na IBM, no período de 1973-1974, baseado num algoritmo mais antigo conhecido como Lucifer, de Horst Feistel. O DES usa chaves de 56 bits e blocos de texto claro de 64 bits. Com o poder computacional atual, o DES não é mais considerado seguro, pois é vulnerável a ataques de busca exaustiva da chave. A partir de 19 de maio de 2005, o DES não consta mais dos padrões FIPS. Descrição do DES: A descrição completa do DES aparece na publicação FIPS 46. É um representante das chamadas cifras de Feistel , que se baseiam em uma seqüência de operações de permutação e substituição. O DES pro- cessa blocos de texto claro de 64 bits, e produz blocos encriptados de 64 bits. O comprimento efetivo da chave é de 56 bits, embora a chave seja especificada tendo 64 bits; oito desses bits (os bits 8 , 16 ,... , 64 ) são bits de paridade. O processo de encriptação no DES é realizado em 16 iterações ou rodadas. Da chave secreta k são derivadas 16 subchaves ki de 48 bits, uma para cada rodada. Em cada rodada são utilizadas 8 funções fixas de substituição (caixas- S), de 6 para 4 bits, denotadas por S i , i = 1 , 2 ,... , 8. Uma permutação fixa, IP, é aplicada ao bloco de texto claro de 64 bits antes da primeira rodada. O bloco permutado é dividido em dois sub-blocos L 0 e R 0 de 32 bits e, em seguida, é aplicada uma função de mistura, g, que produz os sub-blocos L 1 e R 1 de 32 bits. Esse processo é repetido por 16 rodadas. A função de mistura g : { 0 , 1 }^32 × { 0 , 1 }^32 × { 0 , 1 }^48 → { 0 , 1 }^32 × { 0 , 1 }^32 , é a seguinte:

g( Li − 1 , Ri − 1 , ki ) = ( Li , Ri )

onde, Li = Ri − 1 e Ri = f( Ri − 1 , ki ) e a função f : { 0 , 1 }^32 × { 0 , 1 }^48 → { 0 , 1 }^32 é definida como: f( R , k ) = P(S(E( R ) ⊕ k ))

onde E é um mapeamento fixo de { 1 , 2 ,... , 32 } em { 1 , 2 ,... , 48 }, e P é outra permutação fixa de { 1 , 2 ,... , 32 } em { 1 , 2 ,... , 32 }. As funções de substituição S i são representadas como matrizes 4 × 16 e operam da seguinte forma: seja B = ( b 5 b 4 · · · b 0 ) uma entrada de 6 bits e sejam l e c os números inteiros l = 2 b 5 + b 0 ∈ { 0 , 3 } e c = 8 b 4 + 4 b 3 + 2 b 2 + b 1 ∈ { 0 , 15 }. Então, o valor de S i ( B ) encontra-se na linha l e coluna c da permutação Si.

R. Dahab e J. López

A encriptação com o DES é apresentada no Algoritmo 3. Observe que, a permutação inversa IP−^1 , é utilizada na última rodada para obter o bloco encriptado.

Algoritmo 3 DES Encriptação ENTRADA: um texto claro m de 64 bits, uma chave k de 64 bits (com 8 bits de paridade). SAÍDA: um texto encriptado de 64 bits.

  1. Calcule as 16 subchaves ki de k.
  2. ( L 0 , R 0 ) ← IP( m 1 m 2... m 64 ).
  3. para i = 1 até 16 faça /*Calcule ( Li , Ri ) = g( Li − 1 , R − 1 , ki ) */ T 1 ← E( Ri − 1 ) ⊕ ki : escreva T 1 como uma string de 8 caracteres de 6 bits: T 1 = ( B 1 , B 2... , B 8 ). T 2 ← P( S 1 ( B 1 ), S 2 ( B 2 ),... , S 8 ( B 8 )). LiRi − 1 ; RiT 2.
  4. T ← ( R 16 , L 16 ) = ( t 1 t 2... t 64 ).
  5. C ← IP−^1 ( T ).
  6. retorne (o bloco encriptado C ).

O Algoritmo 4 descreve como calcular as subchaves ki utilizadas em cada rodada do DES. Cada subchave é formada por 48 bits da chave secreta k. Esse algoritmo utiliza duas permutações PC1 e PC2, mostradas na Tabela 3.3. O algoritmo faz o seguinte: primeiro, a permutação PC1 é aplicada ao bloco de 64 bits da chave k para eliminar os oito bits ( k 8 , k 16 ,... , k 64 ) de k , e os restantes 56 bits são permutados e atribuídos a duas variáveis C e D ; então, em cada uma das 16 rodadas, ambas C e D sofrem uma rotação à esquerda de 1 ou 2 bits, e uma subchave de 48 bits ki é calculada como PC2( C , D ). ROTL v ( C ) denota uma rotação (deslocamento circular) de v bits para esquerda do bloco C.

Algoritmo 4 DES Subchaves ENTRADA: uma chave k de 64 bits (com 8 bits de paridade). SAÍDA: as subchaves ki , i = 1 , 2 ,... , 16.

  1. Defina vi , i = 1 , 2 ,... , 16 como segue: vi = 1 para i ∈ { 1 , 2 , 9 , 16 }; vi = 2 , caso contrário.
  2. T ← PC1( k ) ; represente T como dois sub-blocos de 28 bits ( C 0 , D 0 )
  3. para i = 1 até 16 faça Calcule ki como segue: Ci ← ROTL vi^ ( Ci − 1 ) Di ← ROTL vi^ ( Di − 1 ) ki ← PC2( Ci , Di )
  4. retorne (as subchaves ki , 1 ≤ i ≤ 16 ).

R. Dahab e J. López

2001 que gradualmente tem se convertido no método mais utilizado no mundo. Foi desenvolvido pelos criptógrafos belgas Joan Daemen e Vicent Rijmen com o nome de Rijndael, e selecionado como o algoritmo vencedor de um con- curso internacional, promovido pelo Instituto Americano de Padrões e Tecno- logia (NIST), para selecionar um sucessor para o algoritmo DES. O algoritmo AES foi selecionado principalmente porque sua combinação de segurança, de- sempenho hardware/software e facilidade de implementação foram considera- dos superiores aos outros quatro algoritmos finalistas: Mars, RC6, Serpent e Twofish. O padrão AES foi projetado para aceitar chaves com comprimento de 128, 192 ou 256 bits, e blocos de 128 bits. O AES utiliza uma estrutura iterada, na qual, para cada rodada, uma função de mistura transforma um bloco de 128 bits em outro bloco de 128 bits com a ajuda de uma subchave derivada da chave original. O número de rodadas, que denotaremos por Nr , depende do comprimento da chave. Os valores de Nr são respectivamente 10, 12 e 14 para chaves de comprimento 128, 192 e 256 bits.

Descrição do AES: No padrão AES, os blocos de 128 bits são tratados como matrizes 4 × 4 de bytes. Adicionalmente, cada byte da matriz pode ser inter- pretado como um elemento finito do corpo binário F 28. Assim, as operações de soma e produto de bytes são definidas no corpo finito F 28. As seguintes variáveis e operações são utilizadas na descrição do algoritmo AES:

  • O bloco do texto claro, de 128 bits, é interpretado como um vetor de 16 bytes x 0 , x 1 ,... , x 15.
  • O bloco da chave (para chaves de 128 bits) é interpretado como um vetor de 16 bytes k 0 , k 1 ,... , k 15.
  • A variável Estado é um bloco de 128 bits que é representado por uma matriz 4 × 4 de bytes. O valor inicial de Estado é a matriz formada pelos 16 bytes do texto claro, na seguinte ordem:

Estado =

x 0 x 4 x 8 x 12 x 1 x 5 x 9 x 13 x 2 x 6 x 10 x 14 x 3 x 7 x 11 x 15

  • A variável ChaveNaRodada é uma matriz 4 × 4 de bytes que representa uma subchave derivada da chave original em uma rodada. Seu valor inicial é a matriz formada pelos 16 bytes da chave original, na seguinte ordem:

ChaveNaRodada =

k 0 k 4 k 8 k 12 k 1 k 5 k 9 k 13 k 2 k 6 k 10 k 14 k 3 k 7 k 11 k 15

Técnicas criptográficas modernas

  • A operação SomaChave atualiza a variável Estado da seguinte forma: EstadoEstadoChaveNaRodada , onde a operação x-or (⊕), de soma no corpo binário F 28 , é realizada em cada byte das matrizes Estado e ChaveNaRodada.
  • A operação SubBytes transforma cada byte de Estado em outro byte usando uma permutação sobre F 28.
  • A operação MisturaColunas transforma cada coluna de Estado em outra coluna utilizando a operação de multiplicação no corpo binário F 28.
  • A operação DeslocaLinhas permuta, de uma forma particular, as linhas da matriz Estado.

A seguir apresentaremos uma descrição de alto nível do AES para encriptar um bloco de 128 bits.

Algoritmo 5 AES Encriptação

ENTRADA: um texto claro m de 128 bits, uma chave k de 128, 192 ou 256 bits. SAÍDA: um texto encriptado de 128 bits.

  1. Estado ← matriz do texto claro m.
  2. Calcule as Nr + 1 subchaves ChaveNaRodadai , i = 0 , ..., Nr de k.
  3. Estado ← SomaChave( Estado , ChaveNaRodada 0 ).
  4. para i = 1 até Nr − 1 faça Estado ← SubstitueBytes( Estado ). Estado ← DeslocaLinhas( Estado ). Estado ← MisturaColunas( Estado ). Estado ← SomaChave( Estado , ChaveNaRodadai ).
  5. Estado ← SubstitueBytes( Estado ). Estado ← DeslocaLinhas( Estado ). Estado ← SomaChave( Estado , ChaveNaRodadaNr ).
  6. retorne (o bloco de 128 bits correspondente a matriz Estado ).

Para descrever exatamente as operações utilizadas no AES necessitamos manipular bytes. Um byte pode ser representado ou como uma cadeia de 8 bits, ou como um polinômio no corpo binário F 28 , ou como um par de dígitos hexadecimais. Por exemplo, o byte 10101001 representa o hexadecimal 0xa e o elemento x^7 + x^5 + x^3 + 1 no corpo binário F 28 com polinômio irredutível f ( x ) = x^8 + x^4 + x^3 + x^2 + 1. A operação SubstitueBytes substitue cada byte de Estado de forma indepen- dente, usando uma caixa de substituição πS, chamada caixa-S, que é uma per- mutação no conjunto { 0 , 1 }^8. A caixa-S pode ser representada por uma tabela de 256 bytes. Em comparação com o algoritmo DES, onde as caixas de subs- tituição são aparentemente “aleatórias”, a caixa-S do AES pode ser definida algebricamente como:

Técnicas criptográficas modernas

onde Bi = SubstitueByte( Bi ), i = 0 , 1 , 2 , 3.

Algoritmo 6 AES Expansão de Chave

ENTRADA: uma chave k de 128 bits. SAÍDA: um vetor de 44 palavras w [ i ], i = 0 ,... , 43.

  1. Const é um vetor das seguintes 10 palavras constantes: Const [ 1 ] ← 0x01000000, Const [ 2 ] ← 0x Const [ 3 ] ← 0x04000000, Const [ 4 ] ← 0x Const [ 5 ] ← 0x10000000, Const [ 6 ] ← 0x Const [ 7 ] ← 0x40000000, Const [ 8 ] ← 0x Const [ 9 ] ← 0x1B000000, Const [ 10 ] ← 0x36000000.
  2. para i = 0 até 3 faça w [ i ] ← ( k [ 4 i ], k [ 4 i + 1 ], k [ 4 i + 2 ], k [ 4 i + 3 ]).
  3. para i = 4 até 43 faça tempw [ i − 1 ]. se i ≡ 0 (mod 4) então temp ← RotacionaPalavra( temp ) temp ← SubstituePalavra( temp )⊕ Const [ i / 4 ]. w [ i ] ← w [ i − 4 ] ⊕ temp.
  4. retorne ( w [ 0 ], · · · , w [ 43 ]).

O algoritmo AES pode ser implementado em ordem inversa para produ- zir, de forma simples, um algoritmo de decriptação. Isto é, as operações SubstitueBytes, DeslocaLinhas, MisturaColunas devem ser substituídas por suas operações inversas; note que a operação SomaChave é sua própria inversa. As subchaves para decriptação são as mesmas para encriptação mas utilizadas na ordem inversa. Assim, em princípio, são necessárias duas implementações para encriptação e decriptação. Entretanto, utilizando algumas das proprie- dades do AES, é possível fazer a decriptação utilizando uma seqüência de operações na mesma ordem da encriptação do AES. O Algoritmo 7 apresenta a decriptação de uma mensagem com o AES.

Segurança do AES

O Algoritmo AES foi projetado para ser imune aos ataques conhecidos. Portanto, o escrutínio público continua a ser a melhor forma de avaliar sua se- gurança. Por exemplo, o relatório AES Security Report , da ECRYPT–European Network of Excellence in Cryptology [ECRYPT 2006], apresenta uma análise das principais classes de ataques conhecidos para encriptadores de blocos. Para cada classe de ataque são apresentados avanços recentes na análise da segurança do AES. A conclusão final é que, após cinco anos da publicação do AES como padrão FIPS, não há uma só fraqueza criptográfica identificada.

R. Dahab e J. López

Algoritmo 7 AES Decriptação

ENTRADA: um texto encriptado m de 128 bits, uma chave k de 128, 192 ou 256 bits. SAÍDA: um texto claro de 128 bits.

  1. Estado ← matriz do texto encriptado m.
  2. Calcule as Nr + 1 subchaves ChaveNaRodadai , i = 0 , ..., Nr de k
  3. Estado ← SomaChave( Estado , ChaveNaRodadaNr ).
  4. para i = Nr − 1 até 1 faça Estado ← InvSubstitueBytes( Estado ). Estado ← InvDeslocaLinhas( Estado ). Estado ← InvMisturaColunas( Estado ). Estado ← SomaChave( Estado , ChaveNaRodadai ).
  5. Estado ← InvSubstitueBytes( Estado ). Estado ← InvDeslocaLinhas( Estado ). Estado ← SomaChave( Estado , ChaveNaRodadaNr ).
  6. retorne (o bloco de 128 bits correspondente a matriz Estado ).

3.2.1.4. Modos de operação para encriptação em blocos

Há vários modos de operação para encriptadores em blocos. Esses algo- ritmos podem encriptar blocos de maneira estanque (um a um com a mesma chave) ou encadeados de diferentes maneiras. Para o DES, quatro modos de operação para encriptação foram desenvolvidos e padronizados em FIPS 81, de dezembro de 1980. Mais recentemente, na publicação Special Publica- tion SP 800-38A de dezembro 2001 [NIST ], o NIST recomendou os seguintes cinco modos de operação para sigilo com o AES (os primeiros quatro modos de operação são os mesmos que foram originalmente adotados para o algoritmo DES). Veremos todos menos o OFB.

  • Modo ECB (Electronic Code Book)
  • Modo CBC (Cipher Block Chaining)
  • Modo CFB (Cipher Feedback)
  • Modo OFB (Output Feedback)
  • Modo CTR (Counter)

Modo ECB: No modo de encriptação ECB, cada bloco de texto claro é encrip- tado com a mesma chave k. Dadas as seqüências de blocos de texto claro P 1 , P 2 ,... , Pn , e blocos encrip- tados C 1 , C 2 ,... , Cn , o modo ECB é definido como segue: Encriptação ECB: Cj ← ENC k ( Pj ), j = 1 ,... , n ;

Decriptação ECB: Pj ← DEC k ( Cj ), j = 1 ,... , n.