Em criptografia, uma cifra de substituição é um método de criptografia que opera de acordo com um sistema pré-definido de substituição. Para criptografar uma mensagem, unidades do texto - que podem ser letras isoladas, pares ou outros grupos de letras - são substituídas para formar a cifra. As cifras de substituição são decifradas pela substituição inversa. Todavia, se a unidade de substituição estiver ao nível de palavras inteiras ou frases, como PORTA-AVIÕES ou ATAQUE ÀS 06H20M, o sistema é habitualmente dito ser um código, não uma cifra.
Uma cifra de substituição contrasta com uma cifra de transposição. Nestas últimas, as unidades do texto a cifrar são rearranjadas numa ordem diferente e habitualmente complexa, mas não modificadas. Por contraste, numa cifra de substituição, as unidades do texto são mantidas na mesma ordem, mas elas próprias são alteradas.
Existem diversos tipos de cifras de substituição. Se a cifra opera com letras isoladas, é denominada cifra de substituição simples. Se opera com grupos de letras chama-se cifra de substituição poligráfica. Uma cifra monoalfabética usa uma só substituição fixa na mensagem inteira, enquanto uma cifra polialfabética usa mais que uma. Uma cifra pode ainda recorrer a homófonos quando uma unidade de texto pode mapeada em mais que uma possibilidade distinta.
Substituição simples
Uma substituição simples pode ser expressa escrevendo o alfabeto numa ordem diferente, que se designa alfabeto de substituição. Pode ser deslocado de um passo fixo (como na cifra ROT13, exemplo de uma cifra de César) ou baralhado de forma mais complexa.
Exemplo
É habitual que se escolha uma palavra fácil de lembrar e sem letras repetidas para que se inicie o alfabeto de cifragem por ela, e completando-o com as letras não usadas.
Por exemplo, com a chave 'PORTUGAL' teremos os seguintes alfabetos:
Alfabeto normal:
abcdefghijklmnopqrstuvwxyz
Alfabeto para a cifragem:
qwertyuiopasdfghjklzxcvbnm
Assim, a mensagem
Fujam todos depressa! Fomos descobertos!
é cifrada para
GSCPF QITIN TUJMUNNP! GIFIN TUNRIOUMQIN!
Tradicionalmente, o texto cifrado é escrito em blocos de comprimento fixo ("grupos") sem pontuação nem espaços para que não se perceba o comprimento das palavras individuais. O mais comum são grupos de cinco letras, muito usados nos tempos do telégrafo. Assim a mensagem cifrada seria:
GSCPF QITIN TUJMU NNPGI FINTU NRIOU MQIN
Segurança para cifras de substituição simples
Uma desvantagem deste método é que as últimas letras do alfabeto (que geralmente têm menos frequência de uso) tendem a ficar no fim. Um modo mais robusto é usar uma transposição de colunas numa cifra de transposição.
Embora o número de chaves possíveis seja muito elevado () esta cifra é fraca, sendo facilmente quebrado o segredo. Se a mensagem tiver comprimento suficiente (ver abaixo), por Criptoanálise pode-se deduzir o provável sentido dos símbolos mais comuns por distribuição da sua frequência.
Substituição homófona
Numa substituição homófona cada letra do alfabeto pode ser correspondida por mais do que um símbolo. Habitualmente, há maior número de correspondências para as letras de maior frequência, de modo a dificultar uma análise estatística baseada na frequência. Por exemplo, para a língua portuguesa poder-se-ia utilizar as letras maiúsculas, minúsculas e algarismos para obter 26+26+10 = 62 símbolos:
Alfabeto normal:
a b c d e f g h i j k l m n o p q r s t u v w x y z
Alfabeto para a cifragem:
8 F H G 3 l 1 L E I w o M X 6 Q P b V 9 a Z S D j r
z - k m x n B u 0 - - O A v 5 p - R y f 4 g - - - -
K - s N q - - - J - - a c - 2 - - T e Y h - - - - -
7 - - - t - - - - - - - - - W - - C - - - - - - - -
Cada letra do alfabeto normal é substituída por uma das que lhe correspondem:
Assim, a mensagem:
Fujam todos depressa! Fomos descobertos!
poderia, por exemplo, ser cifrada para
l4IiA 9WNdy GqpCxyVz! n2M5V GxeHdF3Rf2e!
que tomaria, em blocos de cinco letras, o aspecto algo incompreensível de:
l4IiA 9WNdy GqpCx yVzn2 M5VGx eHdF3 Rf2e
Substituição polialfabética
Numa cifra polialfabética, múltiplos alfabetos são usados. Para facilitar a criptografia, todos os alfabetos são habitualmente escritos numa grande tabela, tradicionalmente chamada tableau. O tableau tem 26 x 26 divisões ou células, e assim 26 alfabetos de cifragem completos estão disponíveis. O método de preencher o tableau, e escolher que alfabeto usar de seguida, definem a particular cifra polialfabética. Todas estas cifras são mais fáceis de resolver do que seria suposto numa primeira impressão, desde que os alfabetos de substituição se repitam vezes suficientes em grandes textos cifrados.
A mais popular cifra deste tipo é devida a Blaise de Vigenère; primeiramente publicada em 1585, foi considerada indecifrável até 1863, e era chamada le chiffre indéchiffrable (em francês significa "cifra indecifrável").
Numa cifra de Vigenère, a primeira linha do tableau é preenchida com uma cópia do alfabeto normal, e as linhas seguintes têm um passo de uma unidade em relação à anterior. Em 1863, Friedrich Kasiski (militar prussiano) publicou um método (provavelmente descoberto antes da Guerra da Crimeia, secreta e independentemente, por Charles Babbage) que permite o cálculo do comprimento da chave de uma mensagem cifrada pelo método de Vigenère.
Outros métodos polialfabéticos incluem:
A cifra de Gronsfeld. Idêntica à de Vigenère excepto só 10 alfabetos são usados, e a chave é numérica.
A auto-cifra, que mistura texto na chave, periodicamente.
A cifra corrente, com uma chave muito longa, obtida a partir de um texto.
Substituição poligráfica
Cifra de substituição de polígramos: Utiliza um grupo de caracteres ao invés de um único caractere individual para a substituição da informação, este método consiste em uma escrita que se baseia em um conjunto de símbolos cujo significado é conhecido por poucos, permitindo com isto que se criem textos que serão incompreensíveis aos que não saibam o padrão de conversão necessário para a sua leitura. A Cifra de Hill é um exemplo deste sistema.