# C-38

In crittografia, la C-38 è una cifrante meccanica portatile largamente impiegata durante la Seconda Guerra Mondiale, nelle sue differenti versioni, sia dagli Alleati, sia dalle forze dell'Asse.

## Storia e impiego

Nella seconda metà degli anni 30, partendo da un modello precedente (la C-36), il crittografo ed imprenditore svedese Boris Hagelin progettò una cifrante meccanica, denominata C-38, per soddisfare il requisito di un sistema crittografico portatile per impieghi tattici. La cifrante fu progressivamente impiegata dalle Forze Armate francesi, tedesche e da quelle degli Stati Uniti.
Gli americani la adottarono nel 1940 e la impiegarono principalmente nella Seconda Guerra Mondiale, sebbene sia rimasta in esercizio fino a tutta la Guerra di Corea (1953). Il suo primo impiego operativo avvenne nel corso dell'invasione del Nord Africa nel 1942. La versione per l'Esercito era indicata con la sigla M-209, mentre quella della US-Navy con la sigla CSP-1500.
La C-36 fu offerta dal suo inventore alla Regia Marina intorno al 1935, ma fu rifiutata dopo che il Servizio Informazioni Segrete (SIS) della Marina eseguì una accurata valutazione dell'apparato. Successivamente, nel 1938, Hagelin presentò la C-38 alla Regia Marina che la adottò. La cifrante entrò in servizio nel 1940 per la cifratura delle comunicazioni tra Alti Comandi sia a terra sia a bordo.
Complessivamente si valuta siano stai prodotti 140.000 esemplari di C-38/M-209, di cui 125.000 su licenza dalla ditta americana Smith-Corona. La produzione terminò nei primi anni '60. Dopo la guerra, Hagelin, diventato molto ricco, sviluppò un modello migliorato della M-209 che chiamò C-52. La C-52 aveva un periodo lungo fino a 2.765.205.443 caratteri, i rotori potevano essere estratti e inseriti con un ordine diverso mentre il rotore di stampa aveva un ordine alfabetico rimescolato. La C-52 fu una delle ultime macchine cifranti meccaniche. L'elettronica e le nuove tecnologie digitali avrebbero consentito lo sviluppo di cifranti di gran lunga più potenti.

## Descrizione meccanica

La C-38 è una cifrante meccanica manuale a rotori. Di dimensioni estremamente contenute, nella sua versione finale misura 83x140x178 mm e pesa circa 2,7 kg (6 libbre).
Sul lato destro della macchina si trova una grossa leva che serve ad azionare il meccanismo, mentre sulla sinistra si trova una manopola detta disco indicatore che è utilizzato dall'operatore per impostare la lettera da cifrare o decifrare. Coassiale al disco indicatore si trova il rotore di stampa sotto cui scorre un nastro di carta su cui è impresso il risultato dell'operazione. Sempre sul lato sinistro un selettore consente di scegliere l'operazione di cifra o decifra.
Aperto l'involucro esterno, si accede ai sei rotori della chiave di sessione sui quali sono incise le lettere dell'alfabeto (nella C-36 i rotori erano solo 5). Sul coperchio della cifrante, sei finestrelle consentono di leggere la lettera sulla sommità dei rotori. Sempre sul coperchio un'altra finestrella mostra un contatore che indica il numero di caratteri cifrati/decifrati.
Il numero delle lettere cambia a seconda del rotore. Da sinistra a destra, i rotori hanno:
* 26 lettere dalla “A” alla “Z”;
* 25 lettere dalla “A” alla “Z”, meno la “W”;
* 23 lettere dalla “A” alla “X”, meno la “W”;
* 21 lettere dalla “A” alla “U”;
* 19 lettere dalla “A” alla “S”;
* 17 lettere dalla “A” alla “Q”.
Questa differenza fu introdotta in modo che i numeri delle lettere dei vettori fossero primi tra loro e ciascuna configurazione si riallineasse dopo 26x25x23x21x19x17= 101.405.850 passi (periodo).
In corrispondenza di ciascuna lettera, sul rotore si trova in piccolo spinotto scorrevole che può essere spostato a destra o a sinistra rispetto al disco. A seconda della sua posizione, lo spinotto è attivo nel processo di cifratura (a sinistra) o inerte (a destra). Ciascun rotore è associato ad un braccetto oscillante metallico, azionato dagli spinotti in posizione attiva (a sinistra).
Dietro la fila dei sei rotori, si trova un tamburo cilindrico costituito da 27 barre orizzontali scorrevoli (25 nella C-26). Su ciascuna barra ci sono due alette mobili che possono essere allineate ad uno qualsiasi dei sei rotori o posizionate in una delle due posizioni “nulle”.
La combinazione delle posizioni (attivo/inattivo) dei 131 spinotti (26+25+23+21+19+17) sui sei rotori e delle 54 alette (2x27) sulle barre costituisce la chiave di sistema della cifrante, mentre la posizione iniziale dei sei rotori (indicata dalla sequenza delle sei lettere visualizzate nelle finestrelle sulla sommità dell'apparato) rappresenta la chiave di sessione.
Uno spinotto di un rotore in posizione attiva fa inclinare in avanti il corrispondente braccetto, fino a toccare il tamburo. Quando l'operatore aziona la leva, il tamburo cilindrico esegue per giro completo, facendo toccare alle 27 barre i braccetti attivi dei rotori. Se un braccetto tocca un'aletta, spinge la barra corrispondente verso sinistra facendo sporgere dal tamburo e andando a comporre, insieme alle altre barre scostate, un ingranaggio a denti variabili che, a sua volta fa girare il rotore di stampa di tanti scatti quante sono le barre sporgenti. In questo modo è selezionata la lettera risultato dell'operazione di cifra o decifra che è stampata sul nastro di carta.
Finito il ciclo, un retrattore spinge le barre indietro nella loro posizione di partenza, un insieme di ingranaggi intermedi fa avanzare i rotori di una posizione, il rotore di stampa si riallinea con il disco indicatore mentre un perno di bloccaggio ferma il tamburo per evitare una seconda cifra accidentale finché il disco indicatore non è pronto per la lettera successiva.

## Descrizione funzionale
### Principio di funzionamento del sistema di cifratura

Il sistema di cifratura impiegato dalla C-38 è una sostituzione polialfabetica conosciuta come cifrario di Beaufort. Quest'ultimo è un cifrario affine a quello di Vigenére in cui però si utilizzano gli alfabeti in ordine inverso (dalla Z alla A). In pratica, si utilizza una tabella come quella in figura dove la prima riga in alto rappresenta la chiave di selezione dell'alfabeto mentre la prima colonna a sinistra rappresenta l'alfabeto del testo in chiaro.
Per comprenderne il funzionamento è opportuno fare un esempio pratico, supponendo di voler cifrare la parola supermarina. Per fare ciò occorre un verme di cifratura pseudo casuale di 11 cifre comprese (una per ogni carattere del testo in chiaro) tra 0 e 25 (estremi inclusi) come il seguente:
24 – 0 – 21 – 9 – 12 – 4 – 4 – 20 – 0 – 11 – 18
Il verme di cifratura rappresenta l'alfabeto da utilizzare per ricavare le lettere del testo cifrato corrispondenti a quelle del testo in chiaro. Infatti associando a ciascuna lettera quella corrispondente dell'alfabeto indicato dal numero si ottiene:
* s → 24 → F
* u → 00 → F
* p → 21 → F
* e → 09 → E
* r → 12 → U
* m → 04 → R
* a → 04 → D
* r → 20 → C
* i → 00 → R
* n → 11 → X
* a → 18 → R
Per cui il risultato della cifratura è FFFEURDCRXR. Il sistema di cifratura è reciproco, per cui utilizzando il testo cifrato al posto del testo in chiaro otteniamo la decifra del testo:
* f → 24 → S
* f → 00 → U
* f → 21 → P
* e → 09 → E
* u → 12 → R
* r → 04 → M
* d → 04 → A
* c → 20 → R
* r → 00 → I
* x → 11 → N
* r → 18 → A
Il cifrario si presta anche ad una rappresentazione algebrica, che tornerà utile quando sarà affrontato il problema della crittoanalisi del sistema. In tale rappresentazione, si associano a ciascuna lettera dell'alfabeto del testo in chiaro abc…xyz e del testo cifrato ZYX…CBA i valori 0,1, 2,…, 23, 24, 25. Indicando con p il valore corrispondente alla lettera del testo in chiaro, c quello corrispondente alla lettera del testo cifrato e k quello del verme, l'operazione di cifra/decifra è la seguente: c = (p – k)mod 26. Nel caso dell'esempio precedente:
* s = 18 → (18 - 24)mod 26 = 20 → F
* u = 20 → (20 - 00)mod 26 = 20 → F
* p = 15 → (15 – 21)mod 26 = 20 → F
* e = 04 → (04 - 09)mod 26 = 21 → E
* r = 17 → (17 – 12)mod 26 = 05 → U
* m = 12 → (12 - 04)mod 26 = 08 → R
* a = 00 → (00 - 04)mod 26 = 22 → D
* r = 17 → (17 – 20)mod 26 = 23 → C
* i = 08 → (08 - 00)mod 26 = 08 → R
* n = 13 → (13 – 11)mod 26 = 02 → X
* a = 00 → (00 - 18)mod 26 = 08 → R
Analogamente per la decifra:
* f = 05 → (05 - 24)mod 26 = 07 → S
* f = 05 → (05 - 00)mod 26 = 05 → U
* f = 05 → (05 - 21)mod 26 = 10 → P
* e = 04 → (04 - 09)mod 26 = 21 → E
* u = 20 → (20 – 12)mod 26 = 08 → R
* r = 17 → (17 - 04)mod 26 = 13 → M
* d = 03 → (03 - 04)mod 26 = 25 → A
* c = 02 → (02 - 20)mod 26 = 08 → R
* r = 17 → (17 - 00)mod 26 = 17 → I
* x = 23 → (23 – 11)mod 26 = 12 → N
* r = 17 → (17 – 18)mod 26 = 25 → A
Questa operazione è replicata in maniera meccanica dalla C-38. Infatti, attraverso l'azione combinata di tamburo rotante e dei rotori della chiave, la macchina genera una sequenza pseudo casuale di valori compresi tra 0 e 26 con un periodo pari a 101.405.850 che poi utilizza per la sottrazione mod 26 facendo girare il rotore di stampa di tanti passi quanti sono le barre del tamburo slittate a sinistra.

### Esempio di impiego operativo

L'impiego operativo della C-38 era relativamente semplice. Per prima cosa, l'operatore doveva impostare i parametri della chiave di sistema, ovvero selezionare gli spinotti in posizione attiva sui sei rotori e le alette sulle barre tamburo rotante. Le liste chiavi del sistema riportavano, appunto, queste due serie di impostazioni. Per gli spinotti sui rotori, la lista chiave poteva essere simile alla seguente:
| Rotore | Impostazione degli spinotti |
| 1 | AB-D---HI-K-MN----ST-VW--- |
| 2 | A--DE-G--JKL—O--RS-U-X-- |
| 3 | AB----GH-J-LMN---RSTU-X |
| 4 | --C-EF-HI---MN-P--STU |
| 5 | -B-DEF-HI---MN-P--S |
| 6 | AB-D---H--K--NO-Q |
Le lettere presenti sulla tabella per il rotore indicavano il corrispondente spinotto in posizione attiva mentre per quelle assenti lo spinotto deve essere in posizione inerte. Per le alette sul tamburo rotante, la lista chiave poteva essere simile alla seguente:
| Barra | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| Alette | 3-6 | 0-6 | 1-6 | 1-5 | 4-5 | 0-4 | 0-4 | 0-4 | 0-4 |
| Barra | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| Alette | 2-0 | 2-0 | 2-0 | 2-0 | 2-0 | 2-0 | 2-0 | 2-0 | 2-0 |
| Barra | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| Alette | 2-0 | 2-5 | 2-5 | 0-5 | 0-5 | 0-5 | 0-5 | 0-5 | 0-5 |
La tabella indica che sulla barra 1, le alette devono essere in posizione 3 e 6, sulla barra 2 in posizione 0 e 6 e così via. L'operazione di configurazione iniziale è evidentemente laboriosa in quanto va a toccare 185 elementi (131 spinotti e 54 alette), per cui era eseguita non troppo frequentemente. Nella Regia Marina, le procedure di impiego della C-38 prevedevano una chiave di sistema comune a tutti gli utenti con validità mensile. Per quanto riguarda la US Navy, la posizione delle alette sulle barre del cilindro rotante era cambiata ogni 10 giorni, mentre la modifica dell'impostazione degli spinotti sui rotori era giornaliera.
Il passo successivo consisteva nella verifica della configurazione interna. Per tale operazione, l'operatore generalmente impostava i rotori sulla sequenza “AAAAAA” e procedeva alla cifratura di un messaggio costituito da tutte “A”. Il testo cifrato così ottenuto era confrontato con una lunga stringa di controllo che, per configurazione indicata, è la seguente:
A questo punto la macchina era pronta per cifrare o decifrare i messaggi.
Per cifrare un messaggio, l'operatore metteva il selettore “cifra/decifra” sulla posizione “cifra” e impostava la chiave di sessione, girando i rotori fino a ottenere una sequenza di 6 lettere. La chiave di sessione poteva essere scelta in maniera casuale e comunicata al destinatario su un canale sicuro, o selezionata da un catalogo contenuto nella lista chiave. In tal caso a ciascuna sequenza di sei lettere era associato un indicativo numerico che poteva essere trasmesso in chiaro.
La scelta della chiave di sessione doveva essere fatta tuttavia in modo da evitare che il verme di cifratura generato dalla macchina non fosse utilizzato anche parzialmente per cifrare un altro messaggio. Nella Regia Marina, le procedure radiotelegrafiche prevedevano che la massima lunghezza di un messaggio fosse di 500 caratteri, per cui fu scelta una distanza fissa tra le chiavi di sessione di 2.497 caratteri che riduceva il numero delle chiavi disponibili a circa 40.000 (40611 rispetto alle 101.405.850 disponibili).
Le liste chiavi del sistema contenevano le “Tabelle delle chiavi esterne” che per ciascun utente riportava, disposte in riga per colonna, le chiavi di sessione assegnate. L'operatore sceglieva di volta in volta la chiave di sessione tra quelle assegnate al suo Comando, smarcandole a matita per evitare un reimpiego accidentale prima di aver utilizzato tutte quelle disponibili e inserendo all'inizio e alla fine del messaggio un gruppo indicatore, che consentiva di ricavare la pagina, la riga e la colonna sulla lista chiave della chiave di sessione utilizzata.
Quindi l'operatore poteva cominciare a cifrare il messaggio. Egli selezionava sul disco indicatore la lettera da cifrare e girava la leva che azionava il meccanismo. Il corrispondente carattere cifrato era stampato sul nastro di carta, mentre ogni cinque caratteri la macchina lasciava automaticamente uno spazio per migliorare la leggibilità del testo.
I numeri erano scritti in lettere e i segni di interpunzione in lettere con abbreviazioni. L'unico carattere che non poteva essere scritto in lettere era lo “spazio” tra le parole. L'operatore inseriva pertanto al posto dello spazio il carattere “K” nella versione in dotazione alla Regia Marina o “Z” per quello in dotazione alle Forze Armate americane.
Per decifrare, dopo aver posizionato il selettore sulla posizione “decifra”, l'operatore impostava la chiave di sessione indicata dal mittente e cominciava a decifrare selezionando sul disco indicatore il carattere del testo cifrato e girando la leva. Il carattere del testo in chiaro era automaticamente stampato sul nastro. Nel caso fosse un “K” (o una “Z” nella versione americana), il carattere non era stampato e il nastro di carta avanzava di un passo. Le lettere “K”, eventualmente mancanti, erano manualmente inserite dall'operatore in base al contesto.
Un operatore addestrato impiegava dai due ai quattro secondi per cifrare o decifrare una lettera, cosicché l'operazione di cifra o decifra di un messaggio era relativamente veloce.

## Sicurezza del sistema

La Cifrante C-38m della Regia Marina fu bucata da Ultra nel corso del 1940, entro la fine dell'anno, o al più tardi al principio del 1941: i servizi di informazione britannici riuscivano a leggere quasi alla perfezione i codici della marina italiana, a cominciare da quelli impiegati per i convogli mercantili. In effetti i britannici avevano già bucato i codici italiani prima della guerra, ma nel luglio 1940 la Regia Marina decise di cambiare completamente i codici annullando il precedente lavoro britannico; ma nell'autunno 1940 Ultra bucò nuovamente il codice impiegato per i convogli mercantili e le loro scorte (fatto con la C-38m), e dalla primavera del 1941 anche quelli della Regia Aeronautica. Non riuscirono invece ad impadronirsi completamente dei codici della flotta (che per altro erano assai poco utilizzati, preferendo comunicare sempre per mezzo telegrafico quando le navi erano in porto), ma essendo la guerra nel Mediterraneo una lotta ai reciproci convogli questo fattore risultava secondario e veniva compensato dalla bucatura di quelli dell'aeronautica.
Questo fattore, unito all'arrivo nel corso del 1941 di consistenti aiuti tedeschi (che impiegavano Enigma, soprattutto nella versione dell'aeronautica, più facile da leggere per Ultra) permise alle forze alleate di leggere in tempo reale le informazioni relative ai convogli italiani in Nord Africa, muovendo aerosiluranti e unità navali (di superficie, come la forza K, o di profondità) a colpo sicuro.
Per illudere gli italiani della sicurezza del loro sistema i britannici inviavano sempre un ricognitore sui convogli italiani prima dell'attacco, in modo che si potesse credere nella casualità della scoperta (e nella straordinaria efficienza della ricognizione della RAF, che appariva ubiquitaria). Il SIM e la marina iniziarono a sospettare prima dei tedeschi (visto che gli affondamenti erano aumentati proprio in corrispondenza con l'arrivo dei germanici, cosa in effetti ragionevole visto che Ultra dava la massima priorità ad Enigma e "conosceva" l'Enigma dell'aeronautica molto meglio della C-38), poi di spie presenti nei porti e nei comandi italiani, scatenando una fastidiosa caccia alle streghe, che avrebbe portato a polemiche (anche storiografiche) fino agli anni '70.