Sunteți pe pagina 1din 12

2

Coduri detectoare/corectoare
de erori. Criptarea informaiei
1. Prezentare teoretic
n cadrul acestei lucrri de laborator se vor prezenta algotimii CRC i Reed-Solomon folosii
la detectarea i corectarea erorilor care pot aprea ntr-o transmisie de date. Algoritmii RSA
i IDEA prezentai sunt uzual folosii pentru criptarea informaiei i se bazeaz pe chei
publice. Implementrile hardware ale altor algoritmi de criptare, care se bazeaz pe metode
tradiionale (de exemplu algoritmul de criptare DES), pot fi studiate la http://www.csitsun.pub.ro/resources.

Sume de control
Scopul unei tehnici de detecie a erorilor este acela de a pune la dispoziia receptorului
unui mesaj, transmis printr-un canal cu zgomote (pasibil de introducere de erori), o
metod de a determina dac mesajul a fost corupt sau nu. Pentru a face posibil acest
lucru, emitorul construiete o valoare numit sum de control care este o funcie de
mesaj i o anexeaz acestuia. Receptorul poate s foloseasc aceeai funcie pentru a
calcula suma de control pentru mesajul primit, iar apoi s o compare cu suma de
control anexat (concatenat mesajului) pentru a vedea dac mesajul a fost receptat
corect.
Exemplu S se aleag o funcie care are ca rezultat (sum de control) suma octeilor din
mesaj modulo 256:
1

f ( x) =

(octeti

mesaj ) mod 256

(1)

Considernd toate valorile n zecimal, se obine:


mesaj
mesaj cu suma de control

:
:

7 24 3
7 24 3 34

mesaj dup transmisie

7 28 3 38

Al doilea octet al mesajului a suferit o modificare n timpul transmisiei, de la 24 la 28.


Cu toate acestea, receptorul poate determina prezena unei erori comparnd suma de
control transmis (34) cu cea calculat (38 = 7 + 28 + 3).
Dac nsi suma de control este corupt, un mesaj transmis corect poate fi (incorect)
interpretat drept unul eronat. Acesta nu este ns un eec periculos. Un eec periculos
are loc atunci cnd att mesajul ct i suma de control se modific astfel nct rezult
ntr-o transmisie consistent intern (interpretat ca neavnd erori).
Din pcate, aceast posibilitate nu poate fi evitat i cel mai bun lucru care se poate
realiza este de a minimiza probabilitatea ei de apariie prin creterea cantitii de
informaie din suma de control (de exemplu, lrgind dimensiunea ei la doi octei n loc
de unul).

Coduri CRC
Ideea de baz pentru algoritmii CRC este de a trata mesajul drept un numr
reprezentat n binar, de a-l mpri la un alt numr binar fixat i de a considera restul
drept sum de control. La primirea mesajului, receptorul poate efectua aceeai mprire
i poate compara restul cu suma de control primit (restul transmis).
Exemplu Considernd c mesajul care trebuie transmis este alctuit din 2 octei (6,
23), el este reprezentat n baza 16 ca numrul 0617 i n baza 2 ca 0000_0110_0001_0111.
Se presupune folosirea unei sume de control de l octet i a unui mpritor constant
1001. Atunci suma de control va fi restul mpririi 0000_0110-0001_0111 : 1001 = ...
0000010101101, rest 0010. Mesajul transmis de fapt va fi: 06172, unde 0617 este
mesajul iniial (informaia util), iar 2 este suma de control (restul).
Aritmetica binar fr transport
Toate calculele executate n cadrul algoritmilor CRC sunt realizate n binar, fr
transport. Deseori se folosete denumirea de aritmetic polinomial, dar n continuare
se va folosi denumirea de aritmetic CRC deoarece la implementarea cu polinoame s-a
renunat.
2

Adunarea a dou numere n aritmetica CRC, aa cum se poate observa n figura 1, este
asemntoare cu adunarea binar obinuit, ns nu exist transport. Aceasta nseamn
c fiecare pereche de bii corespondeni determin bitul corespondent din rezultat,
fr nici o referin la alt bit din alt poziie (aa cum se poate observa din exemplul
prezentat n figura 2 a). ).
Definiia operaiei de scdere este identic cu operaia de adunare i poate fi observat
n figura 1, iar un exemplu este prezentat n figura 2 b).
Se poate concluziona c att adunarea ct i scderea n aritmetica CRC sunt
echivalente cu operaia SAU EXCLUSIV (XOR), iar operaia XOR este propria sa
invers. Acest fapt reduce operaiile primului nivel de putere (adunare, scdere) la una
singur, care este propria sa invers (o proprietate foarte convenabil a acestei aritmetici).

Figura 1: Definirea operaiilor de adunare/scdere.

Pe baza adunrii, se poate defini i nmulirea, care se realizeaz natural, fiind suma dintre
primul numr deplasat corespunztor i cel de-al doilea numr (se folosete adunarea CRC).
Un exemplu pentru aceast operaie este prezentat n figura 2 c).
Pentru realizarea operaiei de mprire, este nevoie s se cunoasc cnd un numr este
cuprins n altul. De aceea, se va considera urmtoarea definiie: X este mai mare dect
sau egal cu Y dac poziia celui mai semnificativ bit l al lui X este mai mare sau aceeai cu
poziia celui mai semnificativ bit l al lui Y. Un exemplu complet este prezentat n figura 2 d).

Transmisia - recepia datelor folosind CRC


Aa cum s-a artat pn acum, calculul CRC este de fapt o simpl mprire. Pentru
realizarea unui calcul CRC este nevoie de un divizor, denumit n limbaj matematic
polinom generator. Lungimea polinomului uzual este de 16 sau 32 de bii, CRC-16,
CRC-32, i aceste dimensiuni sunt folosite n calculatoarele digitale moderne.
Lungimea unui polinom - W- este de fapt poziia celui mai semnificativ bit l (lungimea
polinomului 10011 este 4).
La transmitor, nainte de calculul CRC, se adaug W bii cu valoarea 0 la sfritul
mesajului care va fi mprit folosind aritmetica CRC la polinom, astfel nct toi biii
mesajului s participe la calculul CRC. Un exemplu este prezentat n figura 2 d).
mprirea produce un ct, care nu va fi ignorat i un rest, care este suma de control
3

calculat (CRC-ul). n mod uzual CRC-ul este apoi adugat mesajului, iar rezultatul este
trimis ctre receptor, n acest caz se transmite 11010110111110.

Figura 2: Exemplificarea operaiilor binare fr transport

Receptorul calculeaz suma de control pentru ntreg mesajul primit (fr adugare de
zerouri) i compar restul cu 0. Realizarea acestei operaii este motivat de faptul c
mesajul transmis T este multiplu de polinomul folosit drept divizor.

Implementarea direct
CRC-ul se poate calcula utiliznd noiunile teoretice prezentate pn acum. Algoritmul,
implementarea Verilog precum i rezultatele simulrii pot fi observate n figura 3.

Implementarea bazat pe tabel


Acest algoritm este o variant mbuntit a algoritmului anterior, el fiind foarte eficient
deoarece implic doar o deplasare, o operaie SAU, o operaie SAU EXCLUSIV i un
acces la memorie pentru fiecare octet. Algoritmul precum i rezultatele implementrii
sale n Verilog sunt prezentate n figura 4.

Figura 3: Implementare direct


5

Figura 4: Implementarea bazat pe tabel

Coduri Reed-Solomon
Codurile Reed-Solomon (RS) sunt coduri corectoare de erori n bloc inventate n 1960
de Irving Reed i Gustave Solomon. Aceste coduri au nceput s fie utilizate ncepnd cu
1990, atunci cnd progresele tehnologice au fcut posibil trimiterea datelor n
cantiti mari si la viteze ridicate. Actualmente aceste coduri sunt utilizate ntr-o gam
larg de echipamente electronice cum sunt:
dispozitivele pentru stocarea datelor (CD, DVD, hard-disk);
telefoanele mobile;
echipamentele folosite n comunicaiile prin satelit;
televiziunea digital;
modemurile de mare vitez (ADSL, xDSL).
Realizarea unei transmisii folosind codurile RS presupune ca, codificatorul RS s preia
un bloc de date i s adauge o informaie suplimentar caracteristic. Una dintre
caracteristicile importante ale codului RS const n faptul c acest cod va codifica
grupuri de simboluri de date.
Decodificatorul RS proceseaz fiecare bloc i ncearc s corecteze erorile aprute i
s recupereze datele trimise original.
6

Un cod RS este specificat ca RS(n, k) cu simboluri de s bii. Aceast descriere


semnific faptul c, codificatorul preia k simboluri de paritate astfel nct s rezulte
un cuvnt de cod de n simboli. Sunt n - k simboluri de paritate, de cte s bii fiecare.
Un decodificator RS poate corecta pn la t simboluri ce conin erori, cu 2t = n - k.
Un cod RS este obinut mprind mesajul original n blocuri de lungime fix. Fiecare
bloc este apoi mprit n simboluri de m bii. Fiecare simbol are lungime fix (ntre 3 si
8 bii). Natura liniar a acestui cod asigur faptul c fiecare cuvnt de m bii este valid
pentru codificare astfel nct se pot transmite date binare sau text.
Exemplu Un cod des folosit este RS(255, 233) cu simboluri de 8 bii. Fiecare cuvnt de
cod conine 255 de simboluri din care 233 sunt de date i 22 sunt de paritate. Pentru
acest cod se pot stabili urmtoarele relaii: n = 255, k 233, s = 8, t = 16.
Codurile RS pot fi scurtate dac la codificator se fac anumii bii zero, nu se transmit
dar sunt adugai la decodificator. Spre exemplu, codul RS(255, 233) poate fi scurtat la
(200, 168). Operaiile realizate de codificator sunt urmtoarele:
se preia un bloc de 168 de bii de date;
se adaug virtual 55 de bii de zero crend astfel un cod (255, 233);
se transmit doar 168 bii de date i 32 bii de paritate.
Un decodificator RS poate corecta un numr de t erori i pn la 2t tersturi. La
decodificarea unui cuvnt RS pot aprea urmtoarele variante:
dac 2s + r < 2t atunci codul original transmis poate fi corectat n ntregime;
decodificatorul indic faptul c nu poate reface codul original;
decodificatorul va genera un cuvnt decodat cu erori i nu va fi semnalat acest
lucru.
Arhitectura decodorului poate fi urmrit n figura 5.

Figura 5: Arhitectura unui decodificator RS.


7

Algoritmul de criptare RSA


Algoritmul RSA este un sistem criptografic ce utilizeaz chei publice i a fost creat
de un grup de cercettori de la MIT (Massachusetts Institute of Technology) cu scopul
de a asigura securitatea datelor schimbate prin intermediul Internet-ului.
Metodele tradiionale de criptare (spre exemplu algoritmul DES - implementrile
hardware i JAVA precum i simulrile acestor implementri pot fi vizualizate la
n (n 1)
chei, n timp ce algoritmii
http://www.csit-sun.pub.ro) folosesc un numr de
2
bazai pe chei publice utilizeaz un numr de cel mult n chei publice.
O alt deosebire const n faptul c n sistemele tradiionale de criptare, cheia de
criptare trebuie inut secret deoarece ea trebuie utilizat n cadrul procesului de
decriptare. n cazul criptrii cu chei publice, cheia de criptare/decriptare nu mai este
trimis receptorului, deci canalul de comunicaie dintre transmitor i receptor poate
s nu fie securizat.
Utilizarea algoritmului RSA implic crearea a dou chei de ctre transmitor: una
public i una privat. Cheia public este trimis oricrui destinatar la care trebuie trimis
mesajul criptat. Cheia privat sau secret este utilizat pentru decriptarea mesajului
criptat cu ajutorul cheii publice.
Modalitatea de realizare a unei comunicaii criptate cu ajutorul algoritmului RSA
este prezentat n figura 6.

Figura 6: Arhitectura unui decodor RS.

Transmisia folosind algoritmul RSA necesit parcurgerea a dou etape importante:


1. Generarea cheilor - se genereaz dou chei una public i una privat. Pentru
aceasta trebuie parcuri urmtorii pai:
8

1.

se aleg dou numere prime p i q cu aceeai magnitudine (lungime) i


se genereaz numrul n = p q ;

2.

se determin = ( p 1) (q 1) ;

3.

se alege e ca fiind un numr prim n raport cu , deci cel mai mare


divizor comun (notat gcd(e, )) al celor dou numere trebuie s fie 1. n
implementrile practice valoarea lui e este aleas ca fiind un numr
prim Fermat (3, 5, 17, 65537,...);

4.

se determin valoarea d care reprezint inversiunea modular a lui e i


:
1

d = rest e

Cheia public este alctuit din perechea (n, e), ct timp cheia privat este format din
perechea (n, d). Implementarea hardware a celui mai mare divizor comun se realizeaz
cu ajutorul algoritmului lui Euclid.

Algoritm EuclidExtins(a, b)
if b = 0 then
return (a, 1, 0)
else
a
(d, x, y) = EuclidExtins(b, rest )
b
a
return (d, y, x y' )
b
2. Transmisia informaiei - n cadrul acestei etape, att transmitorul ct i
receptorul trebuie s execute cteva operaii distincte. Transmitorul
realizeaz urmtoarele operaii:
a. obine cheia public (n, e) de la receptor;
b. convertete mesajul ntr-o mulime de ntregi pozitivi;
c. calculeaz textul criptat conform relaiei: c = me mod n;
d. transmite mesajul c la receptor.
Receptorul realizeaz urmtoarele operaii:
a. utilizeaz cheia privat (n, d) pentru a calcula m = cd mod n;
b. extrage textul din colecia de numere ntregi m.

Algoritmul de criptarea IDEA


IDEA este un algoritm bazat pe chei publice care cripteaz blocuri de cte 64 de bii
folosind o cheie de criptare de lungime 128 de bii. Criptarea i decriptarea presupun
utilizarea aceluiai algoritm. Implementarea acestui algoritm impune utilizarea a trei
operaii: XOR, adunarea modulo 65536 i nmulirea modulo 65537 care opereaz pe subblocuri de dimensiune 16 bii.
Funcionarea algoritmului const n parcurgerea a opt pai. Blocul de date de dimensiune
64 de bii este mprit n 4 pri X0, X1, X2 i X3, fiecare parte avnd dimensiunea de 16
bii. n fiecare pas, ntre cele 4 sub-blocuri se realizeaz o operaie XOR, de adunare sau de
nmulire, mpreun cu 6 subchei de dimensiune 16 bii fiecare.
ntre paii 2 i 3, sub-blocurile sunt interschimbate, iar n final cele 4 sub-blocuri sunt combinate mpreun cu 4 subchei pentru a forma ieirea. n cadrul fiecrui pas al algoritmului
se execut urmtoarea succesiune de operaii:
se nmulete X0 cu prima subcheie;
se adun X1 la a doua subcheie;
se adun X2 la a treia subcheie;
se nmulete X3 cu a patra subcheie;
XOR ntre rezultatele pailor l i 3;
XOR ntre rezultatele pailor 2 i 4;
se nmulete rezultatul pasului 5 cu subcheia numrul 5;
se adun rezultatele obinute n cadrul pailor 6 i 7;
se nmulete rezultatul de la pasul 8 cu subcheia numrul 6;
se adun rezultatele obinute la paii 7 i 9;
XOR ntre rezultatele pailor l i 9;
XOR ntre rezultatele pailor 3 i 9;
XOR ntre rezultatele pailor 2 i 10;
10

XOR ntre rezultatele pailor 4 i 10.


Cele patru rezultate sunt sub-blocurile obinute n urma pailor 11, 12, 13 si 14. Se
inter-schimb cele dou sub-blocuri din mijloc i astfel se obine intrarea pentru
urmtorul pas. Excepie face ultimul pas n care nu se mai execut interschimbarea celor
dou sub-blocuri din mijloc. Dup pasul opt se execut urmtoarea secven de operaii
pentru a determina rezultatul final:
se nmulete X0 cu prima subcheie;
se adun X1 la a doua subcheie;
se adun X2 la a treia subcheie;
se nmulete X3 cu a patra subcheie.
n final cele patru sub-blocuri se vor concatena pentru a forma blocul criptat de lungime
64 de bii.
Algoritmul utilizeaz 52 de subchei: 6 subchei pentru fiecare pas i 4 subchei pentru
pasul final. Generarea subcheilor pornete de la cheia de lungime 128 de bii care se
mparte n opt subchei. Acestea reprezint primele opt subchei utilizate n algoritm. La
pasul urmtor cheia este deplasat la stnga 25 de poziii i apoi mprit n opt pri.
Acest proces de generare a subcheilor este continuat pn se genereaz toate cele 52 de
subchei necesare funcionrii algoritmului.
Schema general a algoritmului de criptare IDEA este prezentat n figura 7.

Figura 7: Schema general a algoritmului de criptare cu chei publice IDEA.

11

2. Desfurarea lucrrii
Se va proiecta n Verilog utiliznd Xilinx WebPACK ISE 10.1 i se va simula un
circuit, care implementeaz algoritmul IDEA. Se va folosi schema general prezentat
n figura 7.

3. Probleme propuse
1. S se proiecteze n Verilog utiliznd Xilinx WebPACK ISE 10.1 i s se
simuleze un circuit, care implementeaz algoritmul CRC bazat pe tabel.
2. S se proiecteze n Verilog utiliznd Xilinx WebPACK ISE 10.1 i s se
simuleze un circuit, care implementeaz algoritmul de criptare RSA.

Indicaii

Este bine s se calculeze o tabel de conversie pentru fiecare dintre cele 256
valori de intrare posibile. Pentru a cripta mesajul va fi necesar doar accesul la o
memorie local care memoreaz tabela determinat. La decriptare se va utiliza
acelai artificiu.

Pentru a putea implementa n hardware expresia me mod n se va utiliza urmtorul


algoritm:
res = m;
for (i = 2; i<= e; i = i + 1) begin
res = res * m;
if (res > m) begin
res = res % n;
end
end
cypher(m, n, e) = res;

12

S-ar putea să vă placă și