In crittografia un cifrario a sostituzione è un metodo di cifratura in cui ogni unità del testo in chiaro è sostituita con del testo cifrato secondo uno schema regolare; le "unità" possono essere singole lettere (il caso più comune), coppie di lettere, sillabe, mescolanze di esse, ed altro. Il destinatario decifra il messaggio applicando una sostituzione invertita.

I cifrari a sostituzione sono simili ai cifrari a trasposizione con la differenza che questi ultimi operano ricombinando le unità del testo in chiaro in un ordine differente e di solito più complesso ma lasciandole comunque inalterate. Nei cifrari a sostituzione, invece, le unità del testo in chiaro sono riallocate nel testo cifrato nella stessa sequenza ma vengono però alterate.

Esistono diversi tipi di cifrari a sostituzione: se il cifrario opera su singole lettere, è detto cifrario a sostituzione semplice; se opera su gruppi di lettere più grandi è detto cifrario poligrafico. Un cifrario monoalfabetico utilizza sostituzioni fisse sull'intero messaggio mentre un cifrario polialfabetico usa invece differenti schemi di sostituzione ed ogni lettera del testo in chiaro è trattata con un differente alfabeto secondo uno schema stabilito dalla chiave segreta.

Sostituzione semplice

La sostituzione operante su singole lettere, detta sostituzione semplice, si applica utilizzando un altro alfabeto scritto con le lettere disposte in un certo ordine detto alfabeto per la sostituzione. Questo può essere preparato ruotando od invertendo l'alfabeto (creando così, rispettivamente, il cifrario di Cesare ed il cifrario Atbash) oppure mescolando le lettere secondo un ordine prestabilito: in quest'ultimo caso si parla di alfabeto mescolato o alfabeto squilibrato. Tradizionalmente gli alfabeti mescolati sono creati scrivendo prima una parola chiave, eliminando le sue lettere ripetute e poi scrivendo tutte le lettere rimanenti dell'alfabeto.

Esempi Utilizzando questo sistema, la parola chiave "zebra" dai seguenti alfabeti:

Alfabeto del testo in chiaro: abcdefghijklmnopqrstuvwxyzAlfabeto del testo cifrato: ZEBRACDFGHIJKLMNOPQSTUVWXY

Un messaggio quale

Fuggire, siamo stati scoperti!

viene cifrato come

CTDDGPA, QGZKM QSZSG QBMNAPSG!

Tradizionalmente il testo cifrato è scritto in blocchi di lunghezza prefissata, omettendo i segni di punteggiatura e gli spazi, per evitare errori trasmissione e per non far capire i confini delle parole del testo in chiaro. Questi blocchi sono detti "gruppi" e, talvolta, viene anche fornito un "contatore di gruppi" (cioè il numero dei gruppi) come controllo addizionale. Il numero di lettere più usato nella creazione dei gruppi è 5, un'usanza nata quando i messaggi venivano inviati tramite telegrafo. L'esempio precedente diventa quindi:

CTDDG PAQGZ KLQSZ SGQBM NAPSG

Se la lunghezza del messaggio non è divisibile per 5, si aggiungono alla fine del caratteri nulli, caratteri che, decifrati, non abbiano senso in modo che il destinatario li riconosca e li possa scartare.

L'alfabeto del testo cifrato può alle volte differire da quello del messaggio in chiaro. Ad esempio, nel cifrario massone il testo cifrato è composto da un insieme di simboli derivati da una griglia:

Tuttavia, ai fini della sicurezza l'uso di simboli al posto delle lettere fa poca differenza: si può utilizzare qualunque insieme di simboli che, ritrascritti con le lettere dell'alfabeto, possono poi essere gestiti nella solita maniera.

Nel 2007 Siemens è stata accusata dai procuratori tedeschi di corruzione. Un ex dirigente, smentito da Siemens, ha accusato l'azienda di utilizzare un cifrario a sosituzione numerica per mascherare le percentuali di pagamenti illeciti.David Crawford, Mike Esterl, At Siemens, witnesses cite pattern of bribery - The Wall Street Journal, 3 gennaio 2007: January 31rd, 2007: «Back at Munich headquarters, he [Michael Kutschenreuter, a former Siemens-Manager] told prosecutors, he learned of an encryption code he alleged was widely used at Siemens to itemize bribe payments. He said it was derived from the phrase "Make Profit," with the phrase's 10 letters corresponding to the numbers 1-2-3-4-5-6-7-8-9-0. Thus, with the letter A standing for 2 and P standing for 5, a reference to "file this in the APP file" meant a bribe was authorized at 2.55 percent of sales. - A spokesman for Siemens said it has no knowledge of a "Make Profit" encryption system.» Le dieci lettere di "MAKEPROFIT" corrisponderebbero alle cifre 1-0. Ad esempio, "archivialo nel file APP" avrebbe rappresentato la richiesta di una tangente del 2.55%.

Testo in chiaro: 1 2 3 4 5 6 7 8 9 0 Testo cifrato: M A K E P R O F I T

Sicurezza dei cifrari a sostituzione semplice Uno svantaggio di questo metodo operativo è che le ultime lettere dell'alfabeto (che sono in genere le meno frequenti) tendono a raggrupparsi alla fine. Un modo più robusto di costruire un alfabeto mescolato è quello di effettuare una trasposizione colonnare dell'alfabeto ordinario utilizzando una parola chiave: nonostante l'aumento della sicurezza del cifrario che si ottiene, questo stratagemma non è però utilizzato molto spesso.

Anche se lo spazio delle chiavi è molto vasto (26!, ≈ 288,4, o circa 88 bit), questo cifrario non è molto robusto e si rivela facile da violare. Dato un messaggio di lunghezza ragionevole (vedi sotto), mediante crittanalisi si può dedurre il probabile significato della maggior parte dei simboli più comuni analizzando la distribuzione di frequenze dell'analisi delle frequenze del testo cifrato. Ciò permette la formazione di parole parziali, che possono essere completate per tentativi, espandendo progressivamente la soluzione parziale. In alcuni casi, le parole cifrate possono essere determinate dal modello delle loro lettere: ad esempio, attract ed osseous sono le uniche parole della lingua inglese che corrispondono al modello ABBCADB. Molte persone risolvono questo tipo di cifrari per divertimento nelle rubriche di enigmistica dei giornali (sono i cosiddetti crittogrammi).

Stando alla distanza di unicità della lingua inglese, per violare un cifrario a sostituzione semplice con alfabeto mescolato sono richieste 27,6 lettere di testo cifrato. In pratica, però, ne occorrono in media 50, anche se alcuni messaggi possono essere violati con un numero inferiore se si presentano modelli inusuali nel testo. In altri casi, il testo in chiaro può essere manipolato per avere una distribuzione della frequenza delle lettere più piatta, ma ciò comporta il dover avere testi in chiaro più lunghi.

Sostituzione omofonica

Un primo tentativo di aumentare la difficoltà degli attacchi ai cifrari a sostituzione basati sull'analisi delle frequenze si ebbe cercando di mascherare la frequenza delle lettere dei messaggi in chiaro con lomofonia: in questi cifrari le lettere del messaggio in chiaro possono essere sostituite da più di un simbolo cifrato. In genere, più un simbolo del testo in chiaro ha una frequenza elevata e più sono i simboli cifrati corrispondenti: in questo modo la distribuzione delle frequenze viene appiattita, rendendo l'analisi più difficoltosa.

Dato che in questo modo occorrono più delle 26 lettere dell'alfabeto per formare tutti i caratteri dell'alfabeto cifrato, viene fatto in genere ricorso a diverse soluzioni per la creazione dei simboli mancanti: la soluzione più semplice è quella di utilizzare un "alfabeto" a sostituzione numerica, mentre un altro metodo consiste nell'uso di semplici varianti dell'alfabeto esistente (caratteri maiuscoli, minuscoli, dall'alto in basso, ecc.). Alcune soluzioni più stravaganti, anche se non necessariamente più sicure, utilizzano alfabeti completamente inventati e costituiti da simboli di fantasia (esempi sono il manoscritto Voynich ed il cifrario illustrato nel racconto Lo scarabeo d'oro di Edgar Allan Poe).

I nomenclatori Una variante più interessante è il nomenclator, o nomenclatore, così detto dal pubblico ufficiale che annunciava i titoli dei dignitari in visita alle corti reali: questo cifrario combinava un piccolo libro codice con grandi tabelle di sostituzione omofoniche. Originariamente il cifrario fu ristretto ai nomi di persone importanti, da cui il suo nome; ma nel corso degli anni arrivò ad includere molte parole di uso comune e nomi di luoghi noti. I simboli per queste parole (o nomi in codice) e queste lettere (o cifrari) non erano distinguibili nel testo cifrato. Il Grande Cifrario del Rossignol, usato da Luigi XIV di Francia ne è un esempio: i messaggi scritti con questo cifrario rimasero inviolati per diversi secoli.

I nomenclatori furono usati dall'inizio del XV secolo fino alla fine del XVIII secolo nella corrispondenza diplomatica, nello spionaggio e nelle cospirazioni politiche, nonostante molti di essi erano e rimasero crittograficamente poco sofisticati. Anche se dalla metà del XVI secolo i crittanalisti cominciarono a violare i nomenclatori ed altri sistemi più sicuri si erano già diffusi a partire dal 1467 (come il disco cifrante dell'Alberti), i loro utilizzatori continuavano a fidarsi di questi cifrari e rispondevano alla loro perdita di sicurezza semplicemente allargando le tabelle di sostituzione: alla fine del XVIII secolo, quando cessarono di essere utilizzati, alcuni nomenclatori avevano raggiunto la ragguardevole cifra di 50.000 simboli.

Nonostante ciò, non tutti i nomenclatori sono stati violati e la crittanalisi dei testi cifrati archiviati rimane un'area molto proficua della ricerca storica.

I libri codice e le scacchiere a diffusione (o straddling checkerboard in inglese) sono tipici esempi di cifrari omofonici.

Sostituzione polialfabetica

I cifrari a sostituzione polialfabetica furono descritti per la prima volta nel 1467 da Leone Battista Alberti, che li utilizzò per i suoi celebri dischi cifranti. Johannes Trithemius, nel suo libro Steganografia, che in greco antico significa "scrittura nascosta" (scritto all'incirca nel 1499 ma pubblicato solo nel 1606) presentava un cifrario basato sull'uso di "tabule", o tabelle di sostituzione, idea poi ripresa ed ampliata nel 1516 quando ideò la sua tabula recta, più nota però come tavola di Vigenère perché ripresa dall'omonimo matematico francese per il suo ben più noto cifrario. Una versione più sofisticata di questo tipo di cifrario, basato sull'uso di più cifrari, fu presentata da Giovanni Battista della Porta nel 1563 descrivendola nel suo libro De Furtivis Literarum Notis.

In un cifrario polialfabetico vengono utilizzati più cifrari alfabetici. Per facilitare la cifratura, tutti gli alfabeti sono scritti in genere in una grande tabella, tradizionalmente chiamata tabula, le cui dimensioni sono in genere di 26×26 caselle, così che siano disponibili 26 alfabeti di testo cifrato completi. Il metodo per riempire la tabula e per scegliere la successione degli alfabeti definisce il particolare cifrario polialfabetico. Tutti questi cifrari sono molto più facili da violare di quanto si creda se gli alfabeti a sostituzione sono ripetuti per messaggi in chiaro sufficientemente lunghi.