Cod (criptografie) - Code (cryptography)

O porțiune din „ Telegrama Zimmermann ”, decriptată de codgebreakers-urile britanice de informații navale . Cuvântul Arizona nu se afla în manualul de cod german și, prin urmare, trebuia împărțit în silabe fonetice.

În criptologie , un cod este o metodă utilizată pentru a cripta un mesaj care funcționează la nivel de semnificație; adică cuvintele sau frazele sunt convertite în altceva. Un cod ar putea transforma „modificare” în „CVGDK” sau „cocktail lounge”. Agenția Națională de Securitate a SUA a definit un cod ca „Un criptosistem de substituție în care elementele în text simplu sunt în primul rând cuvinte, fraze sau propoziții, iar echivalenții codului (numiți„ grupuri de coduri ”) constau de obicei din litere sau cifre (sau ambele) în alt mod combinații fără sens de lungime identică. " Un codbook este necesar pentru a cripta și decripta frazele sau cuvintele.

În schimb, cifrele criptează mesajele la nivel de litere individuale sau grupuri mici de litere sau chiar, în cifrele moderne, biți individuali . Mesajele pot fi transformate mai întâi printr-un cod și apoi printr-un cifru. O astfel de criptare multiplă sau „supercriptare” are ca scop îngreunarea criptanalizei .

O altă comparație între coduri și cifre este că un cod reprezintă de obicei o literă sau grupuri de litere direct fără utilizarea matematicii. Ca atare, numerele sunt configurate pentru a reprezenta aceste trei valori: 1001 = A, 1002 = B, 1003 = C, ... Mesajul rezultat, atunci ar fi 1001 1002 1003 pentru a comunica ABC. Cu toate acestea, cifrele utilizează o formulă matematică pentru a reprezenta litere sau grupuri de litere. De exemplu, A = 1, B = 2, C = 3, .... Astfel, mesajul ABC rezultă înmulțind valoarea fiecărei litere cu 13. Mesajul ABC, atunci ar fi 13 26 39.

Codurile au o varietate de dezavantaje, inclusiv susceptibilitatea la criptanaliză și dificultatea de a gestiona cărțile de cod greoaie , astfel încât cifrele sunt acum tehnica dominantă în criptografia modernă.

În schimb, deoarece codurile sunt reprezentative, nu sunt susceptibile la analiza matematică a elementelor individuale ale codului. În exemplul nostru, mesajul 13 26 39 poate fi crăpat împărțind fiecare număr la 13 și apoi clasându-le alfabetic. Cu toate acestea, accentul criptanalizei codebook-ului este frecvența comparativă a elementelor de cod individuale care se potrivesc cu aceeași frecvență a literelor din mesajele în text simplu folosind analiza frecvenței . În exemplul de mai sus, grupul de coduri, 1001, 1002, 1003, s-ar putea să apară de mai multe ori și frecvența respectivă s-ar putea potrivi cu numărul de apariții ABC în mesajele text simplu.

(În trecut sau în contexte non-tehnice, codul și cifrarea sunt adesea folosite pentru a se referi la orice formă de criptare ).

Coduri dintr-o parte și două părți

Codurile sunt definite de „codebook-uri” (fizice sau noționale), care sunt dicționare ale grupurilor de cod listate cu textul lor clar corespunzător. Codurile aveau inițial grupurile de coduri alocate în „ordine simplă” pentru comoditatea codului proiectat sau a codificatorului. De exemplu, într-un cod care utilizează grupuri de coduri numerice, un cuvânt cu text simplu care începe cu „a” ar avea un grup cu valoare redusă, în timp ce unul care începe cu „z” ar avea un grup cu valoare ridicată. Același manual de coduri ar putea fi folosit pentru a „codifica” un mesaj text simplu într-un mesaj codat sau „codetext” și pentru a „decoda” un codetext înapoi în mesaj text simplu.

Pentru a face viața mai dificilă pentru întrerupătoarele de coduri, creatorii de coduri au proiectat coduri fără nicio relație previzibilă între grupurile de coduri și ordonarea textului simplu de potrivire. În practică, acest lucru însemna că acum erau necesare două cărți de coduri, unul pentru a găsi grupuri de coduri pentru codificare, celălalt pentru a căuta grupuri de coduri pentru a găsi text clar pentru decodare. Astfel de coduri „din două părți” au necesitat mai mult efort pentru a se dezvolta și de două ori mai mult efort pentru a distribui (și a arunca în siguranță atunci când sunt înlocuite), dar au fost mai greu de rupt. Telegrama Zimmermann în ianuarie 1917 a folosit „0075“ sistemul german diplomatic cod din două părți , care a conținut în sus de 10.000 de fraze și cuvinte individuale.

Cod unic

Un cod unic este un cuvânt, o frază sau un simbol prestabilit, care este destinat să fie folosit o singură dată pentru a transmite un mesaj simplu, de multe ori semnalul pentru a executa sau anula un plan sau pentru a confirma că a reușit sau a eșuat. Codurile unice sunt deseori concepute pentru a fi incluse în ceea ce pare a fi o conversație inocentă. Făcute în mod corespunzător, acestea sunt aproape imposibil de detectat, deși un analist instruit care monitorizează comunicările cuiva care a suscitat deja suspiciuni ar putea să recunoască un comentariu de genul „Mătușa Bertha a intrat în travaliu” ca având o semnificație de rău augur. Exemplul celebru de coduri unice include:

Uneori mesajele nu sunt prestabilite și se bazează pe cunoștințe partajate, sperăm că sunt cunoscute numai de către destinatari. Un exemplu este telegrama trimisă președintelui american Harry Truman , apoi la Conferința de la Potsdam pentru a se întâlni cu premierul sovietic Iosif Stalin , informându-l pe Truman despre primul test de succes al unei bombe atomice .

"A funcționat în această dimineață. Diagnosticul nu este încă finalizat, dar rezultatele par satisfăcătoare și depășesc deja așteptările. Comunicat de presă local necesar, deoarece interesul se extinde la mare distanță. Dr. Groves este mulțumit. Se întoarce mâine. Vă voi ține la curent."

A se vedea, de asemenea, un singur tampon , un algoritm de cifrare fără legătură

Cod idiot

Un cod idiot este un cod creat de părțile care îl utilizează. Acest tip de comunicare este asemănător semnalelor manuale folosite de armatele din teren.

Exemplu: Orice propoziție în care se utilizează „zi” și „noapte” înseamnă „atac”. Locația menționată în următoarea propoziție specifică locația care trebuie atacată.

  • Text simplu: atac X.
  • Codetext: Ne-am plimbat zi și noapte pe străzi, dar nu am găsit-o! Mâine ne vom îndrepta spre X.

O utilizare timpurie a termenului pare a fi făcută de George Perrault, un personaj din cartea științifico-fantastică Vineri de Robert A. Heinlein :

Cel mai simplu [cod] și, prin urmare, imposibil de rupt. Primul anunț a spus persoanei sau persoanelor în cauză să efectueze numărul șapte sau să se aștepte la numărul șapte sau a spus ceva despre ceva desemnat ca șapte. Acesta spune același lucru cu privire la articolul de cod numărul zece. Însă semnificația numerelor nu poate fi dedusă prin analize statistice, deoarece codul poate fi schimbat cu mult înainte de a ajunge la un univers statistic util. Este un cod idiot ... și un cod idiot nu poate fi rupt niciodată dacă utilizatorul are bunul simț să nu meargă prea des la fântână.

Expertul în terorism Magnus Ranstorp a spus că bărbații care au efectuat atacurile din 11 septembrie asupra Statelor Unite au folosit e-mailul de bază și ceea ce el numește „codul idiotului” pentru a discuta despre planurile lor.

Criptanaliza codurilor

În timp ce rezolvarea unui cifru de substituție monoalfabetic este ușoară, rezolvarea chiar și a unui cod simplu este dificilă. Decriptarea unui mesaj codat seamănă puțin cu încercarea de a traduce un document scris într-o limbă străină, sarcina echivalând practic cu construirea unui „dicționar” al grupurilor de coduri și a cuvintelor în text clar pe care le reprezintă.

O simplă apăsare pe un cod simplu este faptul că unele cuvinte sunt mai frecvente decât altele, cum ar fi „the” sau „a” în engleză. În mesajele telegrafice, grupul de coduri pentru „STOP” (adică sfârșitul propoziției sau paragraful) este de obicei foarte frecvent. Acest lucru ajută la definirea structurii mesajului în termeni de propoziții, dacă nu chiar a semnificației lor, iar acest lucru este util criptanalitic.

Se pot realiza progrese suplimentare în raport cu un cod prin colectarea mai multor codetexturi criptate cu același cod și apoi folosind informații din alte surse

  • spioni
  • presă
  • chat diplomatic de petrecere la cocktail
  • locația de unde a fost trimis un mesaj
  • unde a fost trimis (de exemplu, analiza traficului )
  • momentul trimiterii mesajului,
  • evenimentele care au avut loc înainte și după trimiterea mesajului
  • obiceiurile normale ale persoanelor care trimit mesajele codate
  • etc.

De exemplu, un anumit grup de coduri găsit aproape exclusiv în mesajele unei anumite armate și nicăieri altundeva nu ar putea indica foarte bine comandantul acelei armate. Un grup de coduri care apare în mesajele care preced un atac asupra unei anumite locații poate foarte bine să reprezinte locația respectivă.

Pătuțurile pot fi un cadou imediat la definițiile codegrupurilor. Pe măsură ce grupurile de coduri sunt determinate, ele pot forma treptat o masă critică, din ce în ce mai multe grupuri de coduri sunt dezvăluite din context și presupuneri educate. Codurile dintr-o singură parte sunt mai vulnerabile la astfel de presupuneri educate decât codurile din două părți, deoarece dacă numărul de cod „26839” al unui cod dintr-o singură parte este stabilit pentru „buldozer”, atunci codul inferior „17598” va reprezenta probabil un cuvânt cu text clar care începe cu „a” sau „b”. Cel puțin, pentru coduri simple dintr-o parte.

Diverse trucuri pot fi folosite pentru a „ planta ” sau „a semăna” informații într-un mesaj codat, de exemplu prin executarea unui raid la un anumit moment și locație împotriva unui inamic și apoi examinarea mesajelor de cod trimise după raid. Erorile de codare sunt o apăsare deosebit de utilă într-un cod; oamenii fac în mod fiabil erori, uneori dezastruoase. Plantarea datelor și exploatarea erorilor funcționează și împotriva cifrelor.

  • Cel mai evident și, cel puțin în principiu, cel mai simplu mod de a sparge un cod este de a fura manualul de coduri prin mită, spargere sau raiduri - proceduri glorificate uneori prin sintagma „criptografie practică” - și aceasta este o slăbiciune atât pentru coduri, cât și pentru cifre, deși cărțile de coduri sunt în general mai mari și utilizate mai mult decât cheile de cifrare . În timp ce un cod bun poate fi mai greu de rupt decât un cifru, nevoia de a scrie și distribui cărți de coduri este grav supărătoare.

Construirea unui cod nou este ca și cum ai construi un nou limbaj și ai scrie un dicționar pentru acesta; a fost o treabă deosebit de mare înainte de calculatoare. Dacă un cod este compromis, întreaga sarcină trebuie făcută din nou, ceea ce înseamnă multă muncă atât pentru criptografi, cât și pentru utilizatorii de cod. În practică, când codurile erau utilizate pe scară largă, acestea erau de obicei schimbate periodic pentru a frustra întrerupătoarele de coduri și pentru a limita durata de viață utilă a cărților de cod furate sau copiate.

Odată ce codurile au fost create, distribuția codebook-ului este neîndemânatică din punct de vedere logistic și crește șansele ca codul să fie compromis. Se spune că „Trei oameni pot păstra un secret dacă doi dintre ei sunt morți” ( Benjamin Franklin - Wikicitat ) și, deși poate fi ceva de exagerare, un secret devine mai greu de păstrat dacă este împărțit mai multor oameni. Codurile pot fi considerate destul de sigure dacă sunt folosite doar de câțiva oameni atenți, dar dacă armatele întregi folosesc același manual de coduri, securitatea devine mult mai dificilă.

În schimb, securitatea cifrelor depinde în general de protejarea cheilor de cifrare. Cheile cifrate pot fi furate, iar oamenii le pot trăda, dar sunt mult mai ușor de schimbat și distribuit.

Supercifrare

Era obișnuit să cifrați un mesaj după prima codificare, pentru a crește dificultatea criptanalizei. Cu un cod numeric, acest lucru se făcea de obicei cu un "aditiv" - pur și simplu un număr cheie lung care a fost adăugat cifră cu cifră grupurilor de coduri, modulul 10. Spre deosebire de cărțile de coduri, aditivii ar fi schimbați frecvent. Faimosul cod al marinei japoneze, JN-25 , era de acest design.

Referințe

  1. ^ A History of US Communications Security; prelegerile David G. Boak , Agenția Națională de Securitate (NSA), Volumele I, 1973, Volumele II 1981, lansate parțial 2008, porțiuni suplimentare declasificate 14 octombrie 2015
  2. ^ "16.2: Cifre de substituție" . Matematica LibreTexts . 22.01.2020 . Adus 1921-09-2021 .
  3. ^ "Zimmermann Telegram: The Original Draft" , 2007, Joachim von zur Gathen, "Cryptologia", Volumul 31, Numărul 1
  4. ^ Vineri (1982) de Robert A. Heinlein
  5. ^ Radio Free Europe / Radio Liberty: „Orientul Mijlociu: Militanții islamici duc jihadul pe internet” de Jeffrey Donovan , 16 iunie 2004.

Surse

  • Kahn, David (1996). The Codebreakers: Istoria cuprinzătoare a comunicării secrete din timpurile antice pe internet . Scribner.
  • Pickover, Cliff (2000). Cryptorunes: coduri și scriere secretă . Comunicări cu rodie. ISBN 978-0-7649-1251-1.
  • Boak, David G. (iulie 1973) [1966]. „Coduri” (PDF) . O istorie a securității comunicațiilor din SUA; prelegerile lui David G. Boak, vol. I (ed. Revizuirii declasificării 2015). Ft. George G. Meade, MD: Agenția Națională de Securitate a SUA. pp. 21–32 . Adus 23-04-2017 .

Vezi si