1 / 18

Cyfer – biblioteka kriptografskih funkcija

Cyfer – biblioteka kriptografskih funkcija. Senko Rašić. Vrste kriptografskih algoritama. Funkcije za izračunavanje sažetka poruke ( message digest, hash algorithms ) Simetrični kriptografski algoritmi ( symmetric block ciphers, symmetric stream ciphers )

aran
Download Presentation

Cyfer – biblioteka kriptografskih funkcija

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cyfer – biblioteka kriptografskih funkcija Senko Rašić

  2. Vrste kriptografskih algoritama • Funkcije za izračunavanje sažetka poruke (message digest, hash algorithms) • Simetrični kriptografski algoritmi (symmetric block ciphers, symmetric stream ciphers) • Asimetrični kriptografski algoritmi (asymmetric ciphers, public-key algorithms) • Razmjena ključeva (key-exchange)

  3. Način rada hash algoritma • Funkcija sa izračunavanje sažetka poruke na osnovu poruke proizvoljno velike duljine računa sažetak točno određene duljine • Poruka se nadopunjava i dijeli u blokove određene duljine • Nad svakim blokom obavlja se funkcija sažimanja • Krajnji izlaz funkcije je sažetak poruke

  4. Simetrični kriptografski algoritmi • Jasni tekst se kriptira enkripcijskom funkcijom čiji je parametar tajni ključ • Kriptirani tekst ne daje nikakve informacije o jasnom tekstu ili ključu • Isti ključ koristi se i za enkripciju i za dekripciju (problem) • Algoritmi rade nad blokovima ili tokovima podataka

  5. Rad simetričnog blok-algoritma (DES)

  6. Asimetrični kriptografski algoritmi • Različiti ključevi za enkripciju i dekripciju – riješen problem distribucije ključeva • Dodatno omogućuju elektroničke potpise razmjenu sjedničkih ključeva • Baziraju se na jednosmjernim funkcijama s tajnim vratima – često korišten problem je rastavljanje vrlo velikih brojeva na proste faktore • Spori – koriste se u kombinaciji sa funkcijama za izračunavanje sažetka poruke i simetričnim kriptografskim algoritmima

  7. Rad asimetričnih algoritama (RSA) • Generiranje ključeva: • generirati velike proste brojeve p i q • izračunati n = pq, z = (p – 1)(q – 1) • odabrati e tako da e i z budu relativno prosti • izračunati d takav da je ed≡ 1 (mod z) • Enkripcija: • poruka je cijeli broj m [0, n – 1] • kriptirana poruka je c = me mod n • Dekripcija: • kriptirana poruka je cijeli broj c [0, n – 1] • originalna poruka je m = cd mod n • Elektronički potpis je enkripcija privatnim ključem (d, n) • Provjera potpisa obavlja se javnim ključem (e, n)

  8. Biblioteke kripto-algoritama • Sakrivaju od aplikacijskog programera zamorne detalje rada algoritama • Pružaju standardizirano programsko sučelje (API) za korištenje svih podržanih algoritama • Omogućuju izmjenu i dodavanje novih algoritama bez promjene aplikacija koje ih koriste • Većinom organizirane oko infrastrukture javnog ključa

  9. Što je Cyfer? • Cyfer je low-level biblioteka kriptografskih funkcija • Ne sadrži podršku za infrastrukturu javnog ključa • Ciljevi: • Jednostavan API • Implementacija što više algoritama • Modularnost, proširivost • Prenosivost na različite platforme • Podrška za različite programske jezike

  10. Organizacija biblioteke

  11. Podržani algoritmi • Funkcije za izračunavanje sažetka poruke: • MD2, MD4, MD5, RIPEMD-160, SHA-1, SHA-256, Snefru • Simetrični algoritmi: • AES, Blowfish, DEAL, DES, DESX, TripleDES, IDEA, RC2, RC4, RC5, RC6, ThreeWay • Načini rada simetričnih blok algoritama: • ECB, CBC, CFB, OFB • Asimetrični algoritmi: • RSA, ElGamal, LUC, Diffie-Hellman

  12. Korištenje biblioteke (I) • Primjer računanja sažetka poruke (C): int l; // odabir algoritma int type = CYFER_Hash_Select(“SHA-256”, &l); char *hash = malloc(l); // kreiranje konteksta CYFER_HASH_CTX *ctx = CYFER_Hash_Init(type); // obrada bloka podataka CYFER_Hash_Update(ctx, “poruka”, 6); // završetak algoritma, dobavljanje rezultata CYFER_Hash_Finish(ctx, hash);

  13. Korištenje biblioteke (II) • Primjer kriptiranja bloka podataka (Java): byte[] kljuc = “Tajni kljuc”.getBytes(); byte[] poruka = “skriveno”.getBytes(); // inicijalizacija algoritma BlockCipher c = new cyfer.BlockCipher( “Blowfish”, kljuc, “OFB”, null); // enkripcija byte[] rezultat = c.Encrypt(poruka); String kriptirano = new String(rezultat);

  14. Korištenje biblioteke (III) • Primjer korištenja kriptografije javnog ključa (Python): # inicijalizacija RSA algoritma ctx = cyfer.pk.Pk(“RSA”) # stvaranje privatnog i javnog ključa ctx.GenerateKey(1024) # izvoz ključeva kljucevi = ctx.ExportKey() # enkripcija kriptirano = ctx.Encrypt(“Poruka...”)

  15. Modularnost • Jednostavno proširivanje novim algoritmima • Novi algoritmi odmah dostupni aplikaciji koja koristi biblioteku, bez ponovnog prevođenja • Moguće izdvajanje pojedinog modula i korištenje izvan biblioteke • Elegantni dizajn smanjuje složenost sustava i mogućnost grešaka te olakšava održavanje programske podrške

  16. Prenosivost • Cyfer se ne oslanja na posebnosti pojedinih operacijskih sustava • Ostvarenja algoritama ne ovise o poretku okteta u riječi, niti o duljini riječi (minimum je 32 bita) • Prenosivost na gotovo sve platforme za koje postoji C prevodioc • Biblioteka je testirana na x86 (Linux, FreeBSD, Windows) i SPARC (Solaris) platformama

  17. Podržani programski jezici • Niti jedan programski jezik nije savršen • Podržati što više programskih jezika kako se programera ne bi sputavalo • Biblioteka je pisana u C-u, za ostale jezike napravljeni su omotači (wrappers) • Programsko sučelje (API) je konzistentno za sve jezike, no pojedini omotači koriste posebnosti jezika (npr. objekte) • Podržani su: C, C++, C#, Java, Python, Perl, PHP

  18. Literatura • L. Budin, “Operacijski sustavi 2 – bilješke s predavanja”, 2004 • Menzes, Oorschot, Vanstone, “Handbook of Applied Cryptography”, 1996 • “Radovi studenata iz područja računalne sigurnosti”, http://sigurnost.zemris.fer.hr/ • Specifikacije algoritama, standardi i razni članci na Internetu

More Related