CoderTools

Criptografia e descriptografia LOKI97

Cifra de bloco australiana - Candidato AES com blocos de 128 bits e comprimento de chave variável

Aviso de segurança

LOKI97 foi um candidato AES mas não foi selecionado como padrão. Para novas aplicações que requerem segurança forte, AES (Rijndael) é recomendado.

LOKI97 suporta chaves de 128 bits (16 bytes), 192 bits (24 bytes) ou 256 bits (32 bytes).
Opções de formato

Sobre LOKI97

LOKI97 é a terceira geração da família australiana de cifras LOKI, projetada por Lawrie Brown (Academia Militar Australiana) e Josef Pieprzyk (Universidade Macquarie). A família começou com LOKI89 (1990, blocos 64 bits), vulnerável à criptoanálise diferencial de Biham e Shamir, depois LOKI91 com S-boxes revisadas, e finalmente LOKI97, um redesenho completo submetido como candidato AES em 1998 com blocos 128 bits e chaves de 128, 192 ou 256 bits.

O elemento estrutural mais distintivo do LOKI97 são suas S-boxes, geradas por avaliação de polinômios irredutíveis sobre GF(2¹³) — uma construção algebraicamente mais complexa que as S-boxes DES ou SubBytes AES sobre GF(2⁸). O programa de chave deriva todas as subchaves de rodada aplicando recursivamente a própria função de rodada LOKI97 à chave mestre.

Características principais

  • Blocos de 128 bits — atualizado dos blocos de 64 bits do LOKI89, eliminando a vulnerabilidade de limite de aniversário
  • Três tamanhos de chave: 128, 192 e 256 bits — correspondendo à faixa completa de comprimentos de chave AES
  • Rede Feistel de 16 rodadas com S-boxes geradas sobre GF(2¹³) — estrutura algebraicamente mais complexa que DES ou AES
  • Programa de chave auto-referencial — subchaves derivadas por aplicação recursiva da função de rodada LOKI97
  • Origem australiana: projetado na ADFA e Universidade Macquarie, único candidato AES com linhagem acadêmica exclusivamente do hemisfério sul

História da família LOKI

  • LOKI89: A cifra original projetada em 1989 com blocos de 64 bits e chaves de 64 bits.
  • LOKI91: Uma versão melhorada que corrige fraquezas encontradas no LOKI89.
  • LOKI97: A evolução final com blocos de 128 bits, submetida à competição AES.

Modos de criptografia

  • CBC: Encadeamento de blocos cifrados — cada bloco LOKI97 de 128 bits é XORado com o cifrado anterior antes da sequência Feistel de 16 rodadas com S-boxes GF(2¹³). Blocos de 128 bits mantêm probabilidade de colisão insignificante até ≈ 2⁶⁴ blocos (~148 exabytes por chave), evitando Sweet32.
  • ECB: Livro de códigos eletrônico — cada bloco LOKI97 de 128 bits processado independentemente em todas as 16 rodadas. Blocos idênticos sempre produzem o mesmo cifrado. Aceitável apenas para cifração de bloco único.
  • CFB: Retroalimentação de cifra — a função de bloco LOKI97 de 128 bits cifra o bloco cifrado anterior e os n bits superiores são XORados com o texto simples. A estrutura Feistel garante difusão e resistência a ataques.
  • OFB: Retroalimentação de saída — a função de bloco LOKI97 gera fluxo de chave determinístico re-cifrando iterativamente o estado, independentemente do texto simples. Estado interno de 128 bits garante ciclo de fluxo de chave ≥ 2⁶⁴.
  • RAW: Bloco bruto - Criptografia direta de bloco único sem modo de encadeamento. Sem necessidade de IV. Apenas para blocos de 128 bits.

Estrutura do algoritmo

LOKI97 usa uma estrutura de rede Feistel de 16 rodadas. Cada rodada processa um bloco de 128 bits dividido em duas metades de 64 bits (L e R).

Programação de chaves

A chave mestra de 256 bits é expandida em 48 subchaves (SK[0] a SK[47]) usando a função f e a constante DELTA (derivada da proporção áurea). Para chaves de 128 ou 192 bits, o material da chave é replicado para preencher um registrador de chave de 256 bits antes da expansão.

Função de rodada

Cada rodada aplica: L' = R + SK[3i], R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2]). A adição é módulo 2^64.

A função f

A função f central f(A, B) consiste em quatro camadas:

  • KP (Permutação controlada por chave): Seleciona bits de A baseados nos bits de controle em B
  • Sa (Camada S-box a): Oito consultas S-box paralelas usando dois tipos (S1: 13→8 bits, S2: 11→8 bits)
  • P (Permutação): Permutação de 64 bits usando um padrão de entrelaçamento de bits 8×8
  • Sb (Camada S-box b): Segunda rodada de oito consultas S-box com material de chave adicional de B

Caixas S

S1 tem 8192 entradas (entrada de 13 bits → saída de 8 bits), S2 tem 2048 entradas (entrada de 11 bits → saída de 8 bits). Ambas são calculadas usando operações de cubo em GF(2^13) e GF(2^11) respectivamente, com polinômios geradores específicos para forte não-linearidade.

Descriptografia

A descriptografia usa a mesma estrutura, mas aplica as subchaves em ordem reversa (SK[47] até SK[0]) e usa subtração em vez de adição.

Comparação de algoritmos

Algoritmo Comprimento da chave Tamanho do bloco Segurança Velocidade
LOKI97 128/192/256 bits 128 bits Boa Média
AES 128/192/256 bits 128 bits Excelente Rápida
Serpent 128/192/256 bits 128 bits Excelente Média
DES 56 bits 64 bits Fraca Rápida

Considerações de segurança

  • Nenhum ataque prático de rodada completa ao LOKI97 é conhecido. A construção S-box GF(2¹³) foi projetada especificamente para contrariar a criptoanálise diferencial e linear exposta no LOKI89.
  • Blocos de 128 bits eliminam o ataque Sweet32 que afeta LOKI89/91 de 64 bits. Uma colisão sob LOKI97 exigiria ≈ 2⁶⁴ blocos (~148 exabytes) — inexistente na prática.
  • A falha do LOKI97 na avaliação AES foi um julgamento de desempenho, não de segurança. O comitê AES citou desempenho de software inferior ao Rijndael e Twofish. Nenhuma fraqueza criptográfica foi apontada.
  • Use AES-128-GCM ou AES-256-GCM para qualquer novo sistema. LOKI97 é adequado para descriptografar dados de arquivos LOKI97 existentes e para pesquisa acadêmica.

Casos de uso

  • Pesquisa académica: construção S-box GF(2¹³) e programa de chave auto-referencial oferecem objeto de estudo único para design algébrico de cifras
  • Compatibilidade com sistemas australianos legados: dados cifrados LOKI97 dos anos 90 em sistemas governamentais ou de defesa australianos
  • Estudo comparativo de candidatos AES: junto com Serpent, Twofish, RC6 e MARS para entender os compromissos de design avaliados pelo NIST
  • Conformidade não-AES: organizações que exigem criptografia exclusivamente não-AES com análise criptográfica documentada

Referências

Menu Rápido

Nenhuma ferramenta recente