SP-network
Na criptografia, uma rede SP-network, ou rede de telemetria de substituição (SPN), é uma série de operações matemáticas ligadas utilizadas em algoritmos de cifra de blocos, tais como AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK, e Square.
Tal rede toma como inputs um bloco do texto em quadrado e a chave, e aplica várias "rondas" ou "camadas" alternadas de caixas de substituição (caixas S) e caixas de permutação (caixas P) para produzir o bloco de texto em quadrado. As caixas S e as caixas P transformam (sub)blocos de bits de entrada em bits de saída. É comum que estas transformações sejam operações eficientes de executar em hardware, tais como rotação exclusiva ou (XOR) e bitwise. A chave é introduzida em cada ronda, geralmente sob a forma de "chaves redondas" derivadas da mesma. (Em alguns desenhos, as próprias caixas S dependem da chave).
A descodificação é feita simplesmente invertendo o processo (utilizando os inversos das caixas S e P e aplicando as chaves redondas em ordem inversa).
Uma S-box substitui um pequeno bloco de bits (a entrada da S-box) por outro bloco de bits (a saída da S-box). Esta substituição deve ser de um para um, para assegurar a invertibilidade (daí a descodificação). Em particular, o comprimento da saída deve ser o mesmo que o comprimento da entrada (a figura à direita tem caixas S com 4 bits de entrada e 4 bits de saída), o que é diferente das caixas S em geral que também poderiam alterar o comprimento, como no DES (Data Encryption Standard), por exemplo. Uma S-box não é normalmente simplesmente uma permutação dos bits. Pelo contrário, uma boa S-box terá a propriedade de que a alteração de um bit de entrada alterará cerca de metade dos bits de saída (ou um efeito de avalanche). Terá também a propriedade de que cada bit de saída dependerá de cada bit de entrada.
Uma P-box é uma permutação de todos os bits: toma as saídas de todas as S-boxes de uma ronda, permuta os bits, e alimenta-os nas S-boxes da ronda seguinte. Uma boa P-box tem a propriedade de que os bits de saída de qualquer S-box são distribuídos ao maior número possível de entradas da S-box.
Em cada ronda, a chave redonda (obtida a partir da chave com algumas operações simples, por exemplo, utilizando caixas S e P) é combinada utilizando alguma operação de grupo, tipicamente XOR.
Uma única caixa S típica ou uma única caixa P sozinha não tem muita força criptográfica: uma caixa S poderia ser pensada como uma cifra de substituição, enquanto uma caixa P poderia ser pensada como uma cifra de transposição. No entanto, uma rede SP bem concebida com várias rondas alternadas de S- e P-boxes já satisfaz as propriedades de confusão e difusão de Shannon:
- A razão para a difusão é a seguinte: Se se alterar um bit do texto em quadrado, então é introduzido numa caixa S, cuja saída mudará em vários bits, então todas estas alterações são distribuídas pela caixa P entre várias caixas S, daí as saídas de todas estas caixas S serem novamente alteradas em vários bits, e assim por diante. Fazendo várias voltas, cada bit muda várias vezes para trás e para a frente, portanto, no final, o texto cifrado mudou completamente, de uma forma pseudorandômica. Em particular, para um bloco de entrada escolhido aleatoriamente, se se vira o i-ésimo bit, então a probabilidade de o j-ésimo bit de saída mudar é de aproximadamente metade, para qualquer i e j, que é o Critério Estrito de Avalanche. Vice-versa, se se alterar um bit do texto criptográfico, então tenta decifrá-lo, o resultado é uma mensagem completamente diferente das cifras originais do texto em quadrado-SP não são facilmente maleáveis.
- A razão da confusão é exactamente a mesma que para a difusão: mudar um bit da chave muda várias das chaves redondas, e cada mudança em cada chave redonda difunde-se sobre todos os bits, mudando o texto cifrado de uma forma muito complexa.
- Mesmo que um atacante obtenha, de alguma forma, um texto em forma de placa correspondente a um texto cifrado - um ataque de texto em forma de placa conhecido, ou pior, um ataque de texto em forma de placa ou de texto cifrado escolhido - a confusão e a difusão tornam difícil para o atacante recuperar a chave.
Embora uma rede Feistel que utiliza caixas S (tais como DES) seja bastante semelhante às redes de SP, existem algumas diferenças que tornam isto ou aquilo mais aplicável em certas situações. Para uma dada quantidade de confusão e difusão, uma rede SP tem mais "paralelismo inerente" e assim - dada uma CPU com muitas unidades de execução - pode ser computada mais rapidamente do que uma rede Feistel. As CPU com poucas unidades de execução - tais como a maioria dos cartões inteligentes - não podem tirar partido deste paralelismo inerente. Também as cifras SP exigem que as caixas S sejam invertíveis (para executar descodificação); as funções internas Feistel não têm tal restrição e podem ser construídas como funções unidireccionais.