Criptografie

Embed Size (px)

DESCRIPTION

basdf

Citation preview

  • Sisteme de programepentru timp realUniversitatea Politehnica din Bucuresti2007-2008Adina Magda Floreahttp://turing.cs.pub.ro/sptr_08si curs.cs.pub.ro

  • Curs Nr. 2Criptologie si criptosistemeNumere aleatoareOperatii aritmetice cu numere mariCriptologie generalitatiCriptosisteme conventionaleCriptosisteme publiceStandarde actuale*

  • 1. Numere aleatoare

    Numar intreg/real aleator intr-un domeniu dat si cu o precizie fixata / Numar pseudoaleatorGenerator de numere aleatoare - o multime de stari S, o functie f:S S si o stare initiala s0 - samanta.Starile generatorului evolueaza dupa relatia:si=f(si-1), cu i =1,2,...g:S (0,1)Perioada unui generator de numere aleatoare este cel mai mic intreg pozitiv p a.i.si+p=si , i > p 0*

  • Sunt numere aleatoare?TestulN numere intregi in intervalul [ 0, r ), frecventa fiecarui numar din interval fiind fi ( i = 0, r-1 )

    Distributii uniforme (aceeasi probabilitate)*

  • 1.1 Metoda congruent multiplicativa f (si+1) = ( b*si + c ) mod mg ( si ) = si/m s0 - samanta , b, c < m, pozitivif(si) [ 0, m-1 ]

    int a [ Max ]a [ 0 ] = sam ;for ( i = 1; i

  • 1.1 Metoda congruent multiplicativaCum se aleg m, s0 si b ?m trebuie sa fie mare = perioada maxima (aproape de limita cuvantului calculatorului); m poate fi primb trebuie sa fie prim relativ la m. O alegere este: b sa se termine cu ...x21 si x sa fie par.Cum calculez ?Fiecare valoare este mai mica decat cel mai mare intreg, dar prima operatie a*b+1 duce la overflowCum se elimina overflow-ul?

    *

  • Cum se elimina overflow-ul?Reprezentare pe 32 de biti - intereseaza pentru rezultat numai ultimii 8 digiti.Alegem a = 1234567b = 31415821a si b se reprezinta ca doua polinoame in fct. de x.

    grad(p) N-1grad(q) N-1grad(p*q) 2N-2p = 104 * p1 + p0q = 104 * q1 + q0p * q = ( 104 *p1 + p0 ) ( 104 q1 + q0 ) =108 * p1 * q1 + 104 * ( p1 * q0 + p0 * q1 ) + p0 * q0 *(a*b +1) mod m

  • Generare numere aleatoare#define m 100000000#define m1 10000#define b 31415821long int a =1234567;long int mult( long int p , long int q ){long int p0, p1, q0, q1;p1 = p / m; p0 = p % m1; q1 = q / m1; q0 = q % m1;return ((p0 * q1 + p1 * q0) % m1)*m1 + p0* q0)% m ;}long int random( ){a = ( mult( a, b ) + 1 ) % m ;return a;}// nr. aleatoare [0,m-1]// echiv rand() RAND_MAX=m-1*108 * p1 * q1 + 104 * ( p1 * q0 + p0 * q1 ) + p0 * q0

  • 1.2 Metoda congruent-aditivaRegistru de deplasare cu feed-backAdunare

    11110111, 0011, 0001, 1000, ... Pt. n biti se pot obtine secvente de max. 2n-1 numere distincten = 31 sunt bune pozitiile 0 si una din pozitiile 4, 7, 8, 14, 19, 25, 26 sau 29. *

  • Metoda congruent-aditivaAdunare

    Considerand un sir de numere aleatoare a0 ak, se obtin numere aleatoare in continuare in [ 0, m-1 ], astfel a [ k ] = ( a [ k-b] + a [ k-c ] ) % m ( b < c )min 2c-1 numere distincteValori b = 31, c = 55 a coada circulara

    bc*

  • 2 Operatii aritmetice cu numere mari ReprezentareIntregul 0120200103110001200004012314 cu N = 28 digiti se reprezinta prin p(10) unde p este polinomul

    Calcul eficient al inmultirii a doua polinoame p(x) si q(x) de grad N-1Produs de grad 2N-2 cu 2N-1 termeniProdus calculat direct N2 inmultiriDivide and conquerN par => 2 polinoame de grad N/2

    *

  • Utilizare Divide and conquer p( x ) = p0 + p1x + ... + pN-1xN-1pi( x ) = p0 + p1 + ... +pN/2-1xN/2-1ps( x ) = pN/2 + ... + pN-1xN/2-1

    Pentru a calcula p ( x ) * q ( x ) sunt necesare numai 3 inmultiri

    Doua polinoame de grad N pot fi inmultite folosind inmultiri

    *

  • 3 Criptologie - generalitatiCriptografia - Proiectarea sistemelor de comunicatie secretaCriptoanaliza - Studiul metodelor de intelegere a comunicatiilor secrete Doua scopuri de baza

    Doua tipuri de criptosisteme:- conventionale (criptosisteme simetrice)- publice (criptosisteme asimetrice)*

  • 4 Criptosisteme conventionale*

  • Criptosisteme conventionaleMetode simpleCifrul lui Cezar a N-a litera din alfabet se inlocuieste cu litera (N+k) din alfabet, unde k este constant (Cezar lua k = 3)Substitutie simpla - Matrice cu 26 linii si 2 coloane care defineste substitutia literelor Cifrul Vigenere: se utilizeaza o cheie pentru a determina valorile lui k care trebuie adaugate fiecarei litere.Fie cheia c1c2...cm.j 0pentru fiecare litera li din mesaj executali din mesaj are indexul p in alfabetj ( j+1 ) mod malege cj din cheiefie k indexul lui cj in alfabetinlocuieste li cu litera din alfabet de index ( k + p )sfarsit*

  • Criptosisteme conventionaleCifrul Vigenere se poate combina cu substitutia simplaDaca cheie mesaj Cifrul Vernam (one time pad)Masini de criptare/decriptare - primeste un numar de chei adevarate, numite criptovariabile, care sunt utilizate pentru a genera chei lungiGenerarea pseudocheii din criptovariabile este asemanatoare cu metoda congruent aditiva (cu registru) de la numere aleatoarePericolDificultati ale sistemelor conventionale*

  • 5 Criptosisteme publiceIdee: fiecare utilizator are o cheie publica P care poate fi cunoscuta de oricine si o cheie secreta S cunoscuta numai de el. Mesaj M E - cheia publica P a receptorului - C = P ( M ) R - cheia secreta S - M = S ( C )

    *

  • Criptosisteme publiceConditii S ( P ( M ) ) = M pentru fiecare mesaj M Toate perechile ( S, P ) sa fie distincte Deducerea lui S din P sa fie la fel de dificila ca si decriptarea lui C Atat S cat si P sunt usor de calculat *

  • 6. Standarde actualeConventionaleDES Data Encryption StandardAES Advanced Encryption StandardPubliceRSA - Ron Rivest, Adi Shamir, and Leonard Adelman DSA Digital Signature AlgorithmDSS Digital Signature StandardNIST (National Institute of Standards and Technology, USA) lucreaza la Federal Public Key Infrastructure va sustine semnaturile digitale

  • 7 Criptosistemul public RSA Cheia de incriptare P este o pereche de intregi ( N, p ) cu p publicCheia de decriptare S este o pereche de intregi ( N, s ) unde s este secret.Aceste numere trebuie sa fie foarte mari, in mod tipic N - 200 digiti iar p si s aproximativ 100 digiti

    Metoda de criptare/decriptare1. Se imparte mesajul in k grupri de biti M1Mk2. Se incripteaza mesajul astfel: C = P(M) = C1Ckunde Ci = (Mpi) mod N R3. Receptorul decripteaza mesajul M = S(C) = M1...Mk unde Mi = (Csi) mod N

    *

  • Modul de alegere a p si s 1.Se genereaza trei numere aleatoare prime mari ( 100 digiti ) x, y, z.2.Cel mai mare dintre acestea este ales ca valoare a lui s.3.Fie celelalte doua numere x si y.4.N = x * y5.p se alege astfel incat p * s mod ( x-1 ) * ( y-1 ) = 1.

    Se poate demonstra ca, pt. aceste alegeri,

    Este sigur?*

  • Cum se genereaza un nr. prim f. mare? Se genereaza un nr. aleator f. mare + se testeaza daca este primFie w numarul pentru care se testeaza daca este prim.1. i 1, n 502. Determina a si m a.i. w=1+2am , unde m este impar si a este cea mai mare putere a lui 2 care divide w-1.3. Genereaza un numar aleator b ( 1, w )4. j 0, z bm mod wdaca (( j=0 ) si ( z=1 )) sau ( z=w-1 )atunci executa pasul 96.daca ( j>0 ) si ( z=1 ) atunci executa pasul 8*

  • Cum se genereaza un nr. prim f. mare? Iterat de n ori va raspunde incorect ca numarul este prim cu o probabilitate de cel mult 1/4n

    7. j j + 1daca j

  • Discutie criptosisteme publice Toate abordarile se bazeaza pe calcule NPProblema: daca se inlocuieste p (cu s asociat) cu p (si s asociat)Managementul de chei implicaGenererarea cheilorCautarea cheilorDistribuirea cheilorIncredere in cheile publiceCheile publice certificate de cheie (digitale)Cheia secreta cheie incriptata cu o parola

    *

  • Certificate digitale Certificate digitale: verifica daca o cheie publica apartine unui individUn certificat contine:Un nume si cheia publicaData de expirareNumele autoritatii de certificareNumar de serieSemnatura digitala a autoritatii de certificareReceptorul verifica un certificat folosind cheia publica a autoritatii de certificareSe autentifica astfel semnaturile digitale ale mesajelorLungimea cheii 1024 bits.512 bits nesigur2048 , 4096 bits. In practica, 512-bit key. *

  • 8. Criptosisteme conventionale - DESCriptare sirCriptare blocuriSimetrice mai rapideSimetrice fnct de incriptare reversibilaCriptare pe blocurip1,p2 -> p2,p1 --- rundap2= p2 + f(p1,cheie)f - functie hash unidirectionalaDim bloc: 64, 128 bits sau variabilaDim cheie: 40, 56, 64, 80, 128, 192, 256 bits*

  • Functie hash unidirectionalaF hash cu proprietati suplimentare securitatea informatieifiind dat h greu de aflat m al h = hash(m)fiind dat m1- greu de gasit m2m1 ai hash(m1)=hash(m2)greu de gasit m1 si m2 ai hash(m1)=hash(m2)F hash mesaj de lungime variabila intr-o iesire de lungime fixaImparte intrarea in 2 parti, fiecare se comprima cu o functie de compresie*

  • DES Data Encryption StandardData Encryption Standard (DES) adoptat ca standard in USA in 1977 (IBM Lucifer) de FIPS (Federal Information Processing Standard of USA)Foloseste o cheie de 56-bits insuficientVarianta Triple-DES (TDES or 3DES) foloseste o cheie mai lungaAdvanced Encryption Standard (AES) se crede ca va fi mai bun ca DES (si 3DES) *

  • DES Mod de functionareCriptarea si decriptarea utilizeaza aceeasi cheie k decriptarea este reversul criptariiAlgoritm lucreaza pe blocurilor de date de 64 de biti pe baza unei chei de 56 de biti.16 runde de criptarePermutare initiala IP si finala FPBlocul spart in 2 blocuri de 32 biti prelucrate alternativ schema FeistelInitial proiectat pt incriptare hardwareSigur pt scopuri comercialeUn calculator foarte puternic poate sparge DES prin forta bruta*

  • DES Mod de functionareAlgoritm pt. criptarea si decriptarea blocurilor de date de 64 de biti pe baza unei chei de 56 (64) de biti.

    Blocul de criptat:1) Permutare initiala IP2) Calcul complex care depinde de cheie = o functie f - functia de criptare (Feistel), si o functie KS - planificarea cheii (selecteaza 56 de biti)3) Permutare inversa a cele initiale FP = IP-1*

  • DES Mod de functionare2) Calcul16 iteratii; functia f opereaza asupra a 2 blocuri: unul de 32 biti si unul de 48 de biti un bloc de 32 de bitiBlocul de intrare = 64 biti = L (32) R (32)K un bloc de 48 biti ales din cheia KEY de 56 bitiLa fiecare iteratie, blocul K este diferitKn = KS(n,KEY)n[1,16], Kn functie care permuta o selectie de biti din KEYPt un bloc Ln-1Rn-1, iesirea LnRn a unei iteratii este:Ln = Rn-1Rn = Ln-1 f(Rn-1,Kn)*

  • DES Mod de functionare*

  • DES Mod de functionareFunctia de criptare (f)E (bloc de 32) Cheie (48) produce 32 biti4 etape:Expansiune permutare de expansiune E de la 32 la 48Mixare cheie XOR cu 48 biti din cheie planif cheie (16 subchei)Substitutie 8 bucati de 6 biti 8 bucati de 4 biti transformare neliniara tabela de substitutie Permutare biti rearanjati printr-o permutare finalaAlternarea substitutiei cu permutarea si expansiunea creeaza confuzie si difuzie Shannon*

  • DES Mod de functionarePlanificarea cheiiPermuta cheia de 64 PC1Selecteaza 56 biti initialImpart in 2 bucati de 28 bitiLa fiecare runda ambele bucati sunt rotite la stanga cu 1,2 biti si apoi selectez subcheia de 48 de biti printr-o functie de permutare PC2: 24 biti din stanga si 24 biti din dreapta*

  • DES AtacCheia: 56 biti de incercat 72,057,594,037,927,936 chei posibile

    1998 - Electronic Frontier Foundation (EFF)Au construit un calculator dedicat DESCHALL care poate decripta un mesaj care incearca toate cheile posibile in mai putin de 3 zile.Cost calculator: < $250,000 Cauta 88 miliarde chei/secCOPACOBANA = Cost Optimized Parallel Code Breaker Germania*

  • DES Modele de operareECB Electronic Codebook DES directCBC Cipher Block Chaining DES extins care inlantuie blocuri de text incifratCFB Cipher Feedback utilizeaza text incriptat anterior ca intrare pt. DES si genereaza iesiri care sunt combinate cu textul neincriptat pentru a produce text incriptatTDES Triple Data Encryption Standard

    *

  • Triple DESTriple-DES dupa ce s-a aratat vulnerabilitatea DESFoloseste 3 chei DES de 56 biti lungime cheie totala 168 bitiIncriptare folosind DES cu prima cheie de 56 bitiIncriptare folosind DES cu a doua cheie de 56 bitiIncriptare folosind DES cu a treia cheie de 56 bitiDecriptarea la fel, in sens invers*

  • 9 Sisteme combinateRSA si DES pot fi folosite impreunaDES viteza mare, RSA management convenabilUn mesaj incriptat cu DESEmitatorul utilizeaza cheia publica (RSA) a receptorului pt incriptarea cheii DESMesajul DES incriptat + cheia DES incriptata cu RSA sunt trimise receptorului intr-un plic digital RSA.Cand plicul este primit de receptor, receptorul decripteaza cheia DES cu cheia lui RSA privata apoi utilizeaza cheia DES pt decriptare mesaj.*

  • *

  • Criptarea conventionala cam de 1, 000 de ori mai rapida decat cea publicaO cheie conventionala de 80 biti este echivalenta ca putere cu o cheie publica de 1024 bitiO cheie conventionala de 128 biti este echivalenta ca putere cu o cheie publica de 3000 biti*

  • PGP (Phil Zimmermann, 1991)PGP combina avantajele sistemelor publice si conventionaleCriptosistem hibridIntai comprima textulDe ce?Mai scurt, mai repede de transmisCreste securitatea prin eliminarea sabloanelor(fisierele care sunt prea scurte sau care nu se comprima bine nu sunt comprimate)*

  • PGP creaza o cheie de sesiune, o cheie secreta one-time-only. Cheia numar aleator generat pe baza miscarilor mouse si taste apasateSe foloseste cheia intr-un sistem conventionalCheia de sesiune se incripteaza cu cheia publica a receptoruluiSe transmite cheia de sesiune criptata + textul incriptatDecriptarea - invers*

  • Certificat digital PGPUn certificat PGP: Numarul versiunii PGP identifica versiunea de PGP utilizata pentru crearea cheii asociata certificatuluiCheia publica din certificat a persoanei cheia publica + algoritmul cheii: RSA, DH (Diffie-Hellman), or DSA (Digital Signature Algorithm). Informatii referitor la persoana nume, id, poza, etc.Semnatura digitala a proprietarului certificatului self-signature semnatura ce utilizeaza cheia privata corespunzatoare cheii publice din certificatPerioada de validitate a certificatului data de incepere a validitatii si data de expirare Algoritmul de criptare simetric preferat pentru cheie CAST, IDEA or Triple-DES.

    *