MAGENTA é uma cifra de blocos simétrica desenvolvida por Michael Jacobson Jr. e Klaus Huber para a Deutsche Telekom, que é uma companhia de telecomunicações alemã. O nome MAGENTA é um acrônimo de Multifunctional Algorithm for General-purpose Encryption and Network Telecommunication Applications, traduzindo, algoritmo multifuncional para criptografia de uso geral e aplicações de redes de telecomunicações. É uma cifra que foi submetida ao AES (Advanced Encryption Standard process), porém não passou da primeira etapa devida a uma falha criptográfica, tornando-se uma das cifras mais lentas em comparação com as submetidas.[1][2]
O algoritmo que inspirou a criação do Magenta foi o DES (Data Encryption Standard). Pois, em dois de Janeiro de 1997, o NIST(Nacional Institute of Standards and Tecnology) anunciou que escolheria um sucessor para o DES, visto que este possuía uma chave, considerada pequena, de 56 bits. E consequentemente o tornava vulnerável a ataques de força bruta. No entanto, a competição possuía algumas regras, eram elas:
O algoritmo teria de ser uma cifra de bloco simétrica
Todo o projeto teria de ser público
Deveriam ser admitidos tamanhos de chaves iguais a 128, 192 e 256 bits
Teriam de ser possíveis implementações de software e hardware
O algoritmo teria de ser público ou licenciado em termos não-discriminatórios.
Desenvolvimento
O desenvolvimento do Magenta começou em 1990, partindo das regras da competição. A ideia era utilizar técnicas simples, de forma a tornar a implementação eficiente tanto para hardware quanto software. Para que isto fosse possível, foi utilizado uma estrutura borboleta para realizar difusão e exponenciação discreta em um campo finito.
Com o passar dos anos, a ideia de implementação em hardware foi analisada mais detalhadamente, e com a ajuda do especialista em hardware S. Wolter a estrutura borboleta foi trocada pela aleatória FHT, que possui a vantagem de fornecer estruturas idênticas para cada etapa. Mais algumas mudanças ocorreram quando uma análise do algoritmo foi feita por especialistas da companhia SIT, por volta de 1994.
O Magenta possui menos de 10kb de uso de memória estática, utiliza menos que 6kb da pilha. Para encriptar uma mensagem de 128-bit utiliza de 0 a 199 Kbps por segundo.
Estrutura de funcionamento
O magenta é implementado utilizando a cifra de Feistel com 6 a 8 iterações. A Cifra de Feistel consiste em uma estrutura simétrica usada na construção de cifras de blocos. Ela é uma cifra iterada com uma função interna chamada função rodada.
Seja F a função rodada e sejam as subchaves para as rodadas 0,1,...,n, respectivamente.
Primeiro, divida o bloco em duas partes de mesmo tamanho, para cada rodada i = 0,1,...,n, então compute:
Então o texto cifrado é .
A decriptação do texto cifrado é obtida considerando, para i=n, n-1, ..., 0\\
Logo, é o texto em claro.
Como observado na figura, há uma única diferença entre a encriptação e a decriptação, inversão na ordem das subchaves durante a decriptação.
Funcionamento do algoritmo
Seja todos os vetores binários de 8-bits. Para x C, escreveremos x = , e associamos cada byte com um inteiro em {0,1,...,,255} seguindo a fórmula . Para todos x B, defini-se:
Magenta é uma cifra de bloco complexa. No entanto, o S-box tem uma estrutura simples.
A S-box usada no Magenta é a seguinte:
Começando com 1 e movendo-se uma posição para a esquerda, obtemos a próxima entrada, quando 1 é deslocado para fora obtemos 101.
Depois, para todos os (x,y) : A(x,y) = f(x f(y)). E PE(x,y) = (A(x,y),A(y,x)) = (f(x f(y)),f(y f(x))).
Para todos os ( x_0,...,x_15 ) \in C^16, faça: T(x_0,..,x_15) = , onde é definido como .
Para todos X= definimos: , ou seja, possui os bytes de X com índice par e possui os bytes de X com índice ímpar.
onde o valor inicial A^{(1)} = T(x_{0},...,x_{15}). Para fixar o número de rodadas r, nós definimos E^{r)(x_0,...,x_15} = C^(r)_e.
Depois de uma análise em relação a efetividade do código, chegou-se a conclusão de que 3 rodadas são suficientes para proporcionar um código seguro.
O bloco de cifras MAGENTA utiliza a cifra de Feistel, usando a função como base para a encriptação. Para , uma "rodada de Feistel" é definida como
.
Seja seja um texto em claro de 128 bits.
O algoritmo MAGENTA usa de seis a oito rodadas de Feistel, onde cada rodada utiliza uma parte diferente da chave. O algoritmo é dado por:
Criptoanálise
A criptoanálise é a técnica de se tentar descobrir o texto cifrado ou a lógica utilizada para encriptar a mensagem, sem ter conhecimento da chave.
Alguns tipos de ataque conhecidos são: Ataque por só-texto-ilegível, Ataque por texto legível conhecido, Ataque por texto legível conhecido, Ataque por texto ilegível escolhido e Ataque por força bruta.
Um dos tipos de criptoanálise mais antigos é por análise de frequência(ou Ataque por só-texto-ilegível). Ela consiste em analisar quantas vezes um determinado caractere aparece em um texto cifrado. E a partir dessa análise tentar descobrir qual caractere no texto em claro ele é, baseando-se nas probabilidades de que cada um tem de aparecer em um texto(de acordo com seu idioma). Por exemplo: em português, o carácter que mais aparece é o "a". E no inglês, é o "e".
No ataque por texto legível conhecido, o atacante conhece um pedaço do texto em claro e a qual parte do texto cifrado ele pertence. No entanto, não conhece a chave secreta k.
No ataque por texto legível escolhido, o atacante "escolhe" o fragmento do texto que deseja descobrir, e assim, induz o receptor a decriptá-lo para ele.
No ataque por texto ilegível escolhido, o atacante escolhe uma parte do texto cifrado e a obtém no texto decifrado. Ele tem acesso somente ao algoritmo de decriptografia.
No ataque por força bruta, o atacante testa todas possibilidades de chaves possíveis para que ele consiga transformar uma mensagem encriptada em uma decriptada legível.
Bibliotecas
As bibliotecas criptográficas CrypoAPI, JCA e OpenSSL implementam os algoritmos DES, Blowfish e mini-blowfish.
Referências
↑Bilar, Larissa. "Implementação e desempenho do algoritmo criptográfico Mars." (2005).
↑Jacobson Jr, M. J., and Klaus Huber. "The MAGENTA Block Cipher Algorithm." NIST AES Proposal 94 (1998).