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 é uma cifra de bloco de chave simétrica projetada por Lawrie Brown e Josef Pieprzyk em 1997. Foi submetida como candidata para a competição Advanced Encryption Standard (AES), representando a evolução das cifras anteriores LOKI89 e LOKI91 desenvolvidas na Austrália.

A cifra opera em blocos de dados de 128 bits e suporta tamanhos de chave de 128, 192 ou 256 bits. Utiliza uma estrutura de rede Feistel de 16 rodadas com funções de rodada complexas baseadas em S-boxes e permutações, projetadas para fornecer forte resistência contra criptoanálise diferencial e linear.

Características principais

  • Tamanho de bloco de 128 bits de acordo com padrões de segurança modernos
  • Tamanhos de chave flexíveis: 128, 192 ou 256 bits
  • Estrutura Feistel de 16 rodadas para mistura completa de dados
  • Projetado para resistir à criptoanálise diferencial e linear
  • Parte da família de cifras LOKI desenvolvida na Austrália

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 - Cada bloco é XOR com o bloco cifrado anterior antes da criptografia. Fornece segurança forte. Requer IV.
  • ECB: Livro de códigos eletrônico - Cada bloco é criptografado independentemente. Simples mas revela padrões nos dados. Não recomendado para a maioria dos usos.
  • CFB: Feedback de cifra - Converte cifra de bloco em cifra de fluxo. Auto-sincronizante e lida com blocos parciais.
  • OFB: Feedback de saída - Gera fluxo de chaves independentemente do texto simples. Sem propagação de erro.
  • 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

  • LOKI97 fornece boa segurança sem ataques práticos encontrados contra a cifra completa
  • O tamanho de bloco de 128 bits está alinhado com os requisitos de segurança modernos
  • Embora não selecionado como AES, LOKI97 permanece criptograficamente sólido
  • Para novas aplicações, AES é recomendado como padrão internacional

Casos de uso

  • Compatibilidade com sistemas legados e pesquisa histórica
  • Educação criptográfica e estudo de algoritmos
  • Análise comparativa com outros candidatos AES
  • Aplicações que requerem criptografia desenvolvida na Austrália

Referências