Drošība / Security - PowerPoint PPT Presentation

dro ba security n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Drošība / Security PowerPoint Presentation
Download Presentation
Drošība / Security

play fullscreen
1 / 73
Drošība / Security
190 Views
Download Presentation
jase
Download Presentation

Drošība / Security

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Drošība / Security

  2. Ievads • Pašā sakumā datortīklus pamata izmantoja universitātes pētnieki e-pasta rakstīšanai un korporatīvie darbinieki printeru koplietošanai • Tādos apstākļos par drošību daudz nedomāja... • Tagad miljoni cilvēku izmanto Internetu, lai • Pārvaldīt banka rēķinus • Aizpildīt nodokļu deklarācijas • Iepirkties e-veikalos • Līdz ar to problēma kļūst ļoti aktuāla!

  3. Pakrāpēji • Visvairāk drošības problēmas rādās ļaundarīgu personu dēļ, kuri mēģina iegūt labumu sev, jeb kaitēt citiem • Pakrāpēju kategorijas: • Students - intereses pēc • Biznesmenis - uzzināt konkurentu plānus • Afērists - nozagt kredītkaršu numurus • Spiegs - nozagt pretinieka militāru informāciju

  4. Drošības problēmas Drošības problēmas var sadalīt četros apgabalos: • Slepenums • Lai informācija nenokļūtu pie ne-autorizēta lietotāja • Autentifikācija • Lietotāja identitātes noskaidrošana • Saistību izpildīšanas stingrā nodrošināšana • Digitālais paraksts • Integritātes nodrošināšana • Atklāt gadījumus, kad informācija ceļā ir modificēta

  5. TCP/IP protokolu steks Tīklu drošība ir tāds aspekts, kurš aptver visus TCP/IP modeļa protokolu līmeņus

  6. IPsec • A suite of protocols for securing Internet Protocol (IP) communications by authenticating and/or encrypting each IP packet in a data stream • Operates at the network layer of the TCP/IP model • For an application to use IPsec no code change is required • Mandatory part of IPv6 (mandatory to implement, not mandatory to use), optional for use with IPv4

  7. Informācijas drošības pamati Visos līmeņos (izņemot fizisko) informācijas aizsardzība balstās uz KRIPTOGRĀFIJAS

  8. Kriptogrāfijas pamati • Kriptogrāfija – nogrieķu: • κρυπτός kryptós“noslēpts" • γράφω gráfo“rakstīt" • Kriptogrāfijai ir gara un krāsaina vēsture

  9. Kriptogrāfijas pamatjēdzieni • Šifrēšana / Atšifrēšana • Atklāts teksts  [šifrs]  Šifrēts teksts • Šifrs – algoritmu pāris, ar kuriem var šifrēt/atšifrēt • Atslēga – slepens (mainīgais) parametrs • Kerkgofa (Kerckhoff) princips [1883]: • Šifrēšanas algoritmi ir atklāti, • tikai atslēgas ir slepenas

  10. Kriptogrāfiskie algoritmi Kriptogrāfiskie algoritmi sadalās divās grupās: • Algoritmi ar simetrisku atslēgu • AES (Rjindael) • DES (tripple-DES) • RC4 • Algoritmi ar publisku atslēgu • RSA • Diffie-Hellman

  11. Algoritmi ar simetrisku atslēgu • Viena atslēga tiek izmantota gan šifrēšanai, gan atšifrēšanai • Sadalījums: • Stream ciphers • Iešifrē ziņojuma bitus pa vienam • Block ciphers • Iešifrē bitu blokus (64-256 biti vienā blokā) • Priekšrocība: Strādā daudz ātrāk nekā publiskās atslēgas algoritmi • Trūkums: Atslēgas pārvaldība

  12. AES (Rjindael) • Advanced Encryption Standard: Simetriskais bloku šifrs, kuru ASV valdība izvēlējas par šifrēšanas standartu (2002) • Aizvietoja DES algoritmu, kurš bija atzīts par nedrošu • Algoritma struktūra: Substitūciju-permutāciju tīkls • Bloka izmērs: 128 biti • Atslēgas garums: 128, 192 vai 256 biti

  13. AES vienas iterācijas soļi 1 3 2 4 http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

  14. Algoritmi ar publisku atslēgu • 1976. gadā Stenfordas universitātes pētnieki Diffie un Hellman piedāvāja radikāli jaunu kriptosistēmu –šifrēšanas un atšifrēšanas atslēgas bija dažādas! • Publiskās atslēgas kriptogrāfijas pamata principi: • Šifrēšanas atslēga ir publiska • Atšifrēšanas atslēga ir privāta un to praktiski nevar iegūt no publiskās atslēgas • Lietojumi: • Sazināšanas konfidencialitāte • Digitālais paraksts

  15. Darbības principi http://en.wikipedia.org/wiki/Public-key_cryptography

  16. RSA • Izvēlēties divus lielus skaitļus p un q • Aprēķināt n=pq un z=(p-1)(q-1) • Izvēlēties skaitļi d, kas ar z ir savstarpēji pirmskaitļi • Atrast tādu skaitļi e, lai de=1(mod z) Lai iešifrēt ziņojumu P izmanto formulu: Lai atšifrēt atpakaļ:

  17. Digitālais paraksts • Lai elektroniskie ziņojumi varētu aizvietot fiziskus dokumentus ir nepieciešams atrisināt paraksta jautājumu • Ir vajadzīga tāda ziņojumu sūtīšanas sistēma, lai: • Saņēmējs varētu pārbaudīt sūtītāja personību • Sūtītājs vēlāk nevarētu noliegt ziņojuma saturu • Saņēmējs nevarētu vēlāk samainīt saņemtu ziņojumu • Parasti digitāla paraksta algoritmi balstās uz asimetriskās (publiskās atslēgas) kriptogrāfijas

  18. Digitāla paraksta princips Šifrēšanas funkcija E un atšifrēšanas funkcija D ar īpašībām: • D(E(m))=m un E(D(m))=m

  19. Digitāla paraksta shēma • Tipiski sastāv no trīs algoritmiem: • Atslēgu ģenerācijas algoritms, kas izveido publisku atslēgu PK un privātu atslēgu SK paraksta īpašniekam • Parakstīšanas algoritms: • S(m, SK)=k • Paraksta verifikācijas algoritms: • V(m, PK, k)={true/false} • Digital Signature Algorithm (DSA): ASV digitāla paraksta standarts (1991)

  20. Message Digest • Parasti nav nepieciešams šifrēt visu ziņojumu, bet vajag tikai izveidot digitālu parakstu autora autentifikācijas mērķim • Ideja – izmantot neatgriezenisku heš-funkciju • Ieeja: patvaļīga garuma bitu virkne • Izeja: fiksēta garuma (128, 160) bitu virkne

  21. Prasības ziņojuma profila funkcijai Heš-funkciju MD sauc par ziņojuma profilu un tai ir jāizpildās sekojošiem nosacījumiem: • Dotam tekstam P ir vienkārši aprēķināt MD(P) • Zinot MD(P) praktiski nav iespējams aprēķināt P • Dotam P praktiski nav iespējams atrast tādu P’, lai MD(P)=MD (P’) • Pat viena bita izmaiņa ieejas virkne noved pie ļoti atšķirīga rezultāta

  22. Digitālais paraksts ar profila izmantošanu m - ziņojums DA – Alises privātā atslēga MD – ziņojuma profila (message digest) funkcija

  23. Digitālais paraksts http://gdp.globus.org/gt4-tutorial/singlehtml/progtutorial_0.2.1.html#id2563251

  24. Message Digest algoritmi Divi populāri heš-funkciju algoritmi: • MD5 (Message-Digest algorithm 5) • Digest size: 128 bits • Designer: Ron Rivest, 1991 • Internet standard • Widely used to check integrity of files • SHA-1 (Secure Hash Algorithm) • Digest size: 160 bits • Applications: Digital Signature Algorithm, TLS/SSL, PGP, SSH, S/MIME, and IPsec

  25. Российские стандартыалгоритмов • ГОСТ 28147-89 - советский и российский стандарт симметричного шифрования, введённый в 1990 году (КГБ) • ГОСТ Р34.11-94 - процедура вычисления хэш-функции, введён в 1995 году • ГОСТ Р34.10-2001 - стандарт, описывающий алгоритмы формирования и проверки электронной цифровой подписи

  26. Java Security

  27. Platform Security • The Java™ platform was designed with a strong emphasis on security • Core language features: • Strong data typing • Automatic memory management • Garbage collection • Range-checking on arrays • Access modifiers (public, protected, private) • Byte-code verification • Secure class loading

  28. Java Security Technology Java security technology includes a large set of APIs, tools, and implementations of commonly used security algorithms, mechanisms, and protocols • cryptography • public key infrastructure • secure communication • authentication • access control

  29. Basic Security Architecture Security APIs were designed around the following principles • Implementation independence • Applications do not need to implement security themselves, they can request security services from the Java platform via providers • Implementation interoperability • Providers are interoperable across applications • Algorithm extensibility • The Java platform includes a number of built-in providers, supports the installation of custom providers

  30. Security Providers • Implementation independence is achieved using a "provider"-based architecture • Provider - a package or set of packages that implement one or more security services import java.security.*; Provider[] providers = Security.getProviders(); for (Provider p: providers){ System.out.println(p.toString()); } SUN version 1.6 SunRsaSign version 1.5 SunJSSE version 1.6 SunJCE version 1.6 SunJGSS version 1.0 SunSASL version 1.5 XMLDSig version 1.0 SunPCSC version 1.6 SunMSCAPI version 1.6 Java 6.0

  31. Cryptographic engines • Algorithm independence is achieved by defining types of cryptographic "engines" (services) • An engine class provides the interface to a specific type of cryptographic service, independent of a particular cryptographic algorithm or provider • Examples: • SecureRandom • MessageDigest • Signature • Cipher

  32. Listing provider services Provider[] providers = Security.getProviders(); for (Provider p: providers){ System.out.println(p.toString()); Set<Service> services = p.getServices(); for (Service s: services){ System.out.println(" " + s.getType() + " --> " + s.getAlgorithm()); } }

  33. SUN version 1.6 services

  34. Requesting service To use the JCA, an application • requests a particular type of object (such as a MessageDigest) • and a particular algorithm or service (such as the "MD5" algorithm) • and gets an implementation from one of the installed providers try { MessageDigest md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { // no such algorithm provided }

  35. Provider selection md = MessageDigest.getInstance("MD5"); md = MessageDigest.getInstance("MD5", "ProviderC");

  36. The SecureRandom Class • Provides the functionality of a Random Number Generator • Produces cryptographically strong random numbers SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); System.out.println("Int: " + random.nextInt()); System.out.println("Float: " + random.nextFloat()); System.out.println("Long: " + random.nextLong()); System.out.println("Boolean: " + random.nextBoolean()); Int: 256421598 Float: 0.63456607 Long: 7589616350181670704 Boolean: true

  37. The MessageDigest Class • Designed to provide the functionality of cryptographically secure message digests such as SHA-1 or MD5 • The MD5 algorithm produces a 16 byte digest, and SHA-1's is 20 bytes • Message digests are used to produce unique and reliable identifiers of data, sometimes called "checksums" or the "digital fingerprints" of the data

  38. Computing aMessageDigestobject MessageDigest sha = MessageDigest.getInstance("SHA-1"); byte[] i1 = "Hello World".getBytes(); sha.update(i1); byte[] hash = sha.digest(); System.out.println((new BASE64Encoder()).encode(hash)); byte[] i2 = "Hello World!".getBytes(); sha.update(i2); hash = sha.digest(); System.out.println((new BASE64Encoder()).encode(hash)); sha.update(i1); hash = sha.digest(); System.out.println((new BASE64Encoder()).encode(hash)); Ck1VqNd45QIvq3AZd8XYQLvEhtA= Lve95gjOVATpfV8EL5X4nxwjKHE= Ck1VqNd45QIvq3AZd8XYQLvEhtA=

  39. The Signature Class Provide the functionality of a cryptographic digital signature algorithm such as DSA

  40. Signature Object States • Signature objects are modal objects • Signature object is always in a given state, where it may only do one type of operation • The three states a Signature object may have are: UNINITIALIZED initSign() initVerify() SIGN VERIFY

  41. Generating a Pair of Keys • First step is to generate public/private key pair • All key pair generators share the concepts of a keysize and a source of randomness KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA"); SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); keyGen.initialize(1024, random); KeyPair pair = keyGen.generateKeyPair(); PrivateKey privateKey = pair.getPrivate(); PublicKey publicKey = pair.getPublic();

  42. Generating/verifying a signature byte[] data = "Data to be signed".getBytes(); // generating a signature Signature dsaForSign = Signature.getInstance("SHA1withDSA"); dsaForSign.initSign(privateKey); dsaForSign.update(data); byte[] signature = dsaForSign.sign(); // verifying a signature Signature dsaForVerify = Signature.getInstance("SHA1withDSA"); dsaForVerify.initVerify(publicKey); dsaForVerify.update(data); boolean verifies = dsaForVerify.verify(signature); System.out.println("Signature verifies: " + verifies);

  43. The Cipher Class Provides the functionality of a cryptographic cipher used for encryption and decryption for (String a: Security.getAlgorithms("Cipher")){ System.out.println(a); }

  44. Using Encryption (AES) // Generate AES key KeyGenerator keygen = KeyGenerator.getInstance("AES"); SecretKey aesKey = keygen.generateKey(); // Initialize cipher object Cipher aesCipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); aesCipher.init(Cipher.ENCRYPT_MODE, aesKey); byte[] cleartext = "Data to be encoded".getBytes(); // Encrypt the cleartext byte[] ciphertext = aesCipher.doFinal(cleartext); // Initialize the same cipher for decryption aesCipher.init(Cipher.DECRYPT_MODE, aesKey); // Decrypt the ciphertext byte[] cleartext1 = aesCipher.doFinal(ciphertext);

  45. Encryption Exceptions try { // algorithm from previous slide . . . System.out.println("Cipher successful!"); } catch (NoSuchAlgorithmException e1) {. . .} catch (NoSuchPaddingException e2) {. . .} catch (BadPaddingException e3) {. . .} catch (InvalidKeyException e4) {. . .} catch (IllegalBlockSizeException e5) {. . .}

  46. HTTPS

  47. HTTPS • Hypertext Transfer Protocol Secure • HTTP protokola paplašinājums, kas atbalsta šifrēšanu • Dati, kas tiek pārraidīti pa HTTP tiek “iepakoti” kriptogrāfiskā protokolā SSL vai TLS, līdz ar ko tiek nodrošināta aizsardzība • Tiek izmantots URL prefikss https:// • Porta numurs pēc noklusējuma: 443

  48. HTTPS • Sistēmu izstrādāja Netscape Communications Corporation, lai nodrošināt autentifikāciju unšifrētu savienojumu • HTTPS tiek plaši izmantots Web aplikāciju pasaulē, kur ir svarīga savienojuma drošība, piemērām, maksājumu sistēmās • HTTPS aizsarga datus pārraides gaitā no slepus noklausīšanas un "man-in-the-middle" tipa uzbrukumiem

  49. HTTPS • Stingri ņemot, HTTPS nav atsevišķs protokols: • Lai sagatavot Web serveri HTTPS savienojumu pieņemšanai administratoram ir jāizveido publiskas atslēgas sertifikātu • HTTPS izmanto atslēgas garumu tikai 40, 56 vai 128 biti, kas ir nepietiekami • Līdz ar to nevajadzētu uzskatīt, ka HTTPS nodrošina augstu drošības līmeni HTTPS = HTTP + SSL/TLS

  50. SSL/TLS