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)Le notizie sull'attività del SIS sono rare e difficilmente reperibili. Gli archivi del SIS furono, infatti, distrutti all'indomani dell'8 settembre 1943 per evitare che cadessero in mano ai nazisti. Le informazioni qui riportate sono tratte da alcuni articoli pubblicati dal Contrammiraglio Luigi Donini su Rivista Marittima. 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 giornalieraUn esempio di lista chiave US Navy si trova su http://www.maritime.org/csp1500key.htm .

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:

T N J U W A U Q T K C Z K N U T O T B C W A R M I O

A questo punto la macchina era pronta per cifrare o decifrare i messaggi.