Locked History Actions

Secure Sockets Layer Module

Žodis angliškai

Secure Sockets Layer Module

Santrumpa

mod_ssl

Žodis lietuviškai

Saugiųjų jungimų lygmens protokolo modulis


Apibrėžimas

Šis modulis suteikia patikimą kriptografiją Apache žiniatinklio serveriui per SSL ir TLS protokolus, naudodamasis puikia SSL/TLS realizacijos biblioteka. SSL – saugiųjų jungimų lygmens protokolas.


Paaiškinimai

Žiniatinklo serveryje SSL protokolo palaikymas gali būt įgyvendintas įdiegus mod_ssl modulį arba Apache-SSL modulį. SSL protokolas užtikrina saugias operacijas tarp kliento ir serverio. Abu šie moduliai naudoja atviro kodo SSL realizaciją, kuri vadinama OpenSSL. Naudojant simetrinę ir asimetrinę šyfravimo schemas buvo sukurtas nepatentuotas protokolas, kuris vadinamas saugiųjų sujungimų protokolu (SSL). Šis protokolas suteikia ir užtikrina duomenų šifravimą, serverio tapatumo nustatymą, duomenų vientisumą ir kliento tapatumo nustatymą TCP/IP pagrindu pagrįstai komunikacijai. Kaip SSL sąveikauja su taikomosiomis programomis yra pateikiama žemiau esačiame paveiksle.

SSL sąveika su taikomosiomis programomis.jpg

SSL protokolas veikia virš TCP/IP ir žemiau aukštesnio lygmens, taikomųjų programų sluoksnio protokolų, tokių kaip: HTTP, FTP, IMAP ir kitų. Šis protokolas naudoja TCP/IP, taikomųjų programų sluoksnio naudai ir proceso metu leidžia serveriui su įgalintu SSL nustatyti savo tapatumą kliente su įgalintu SSL, leidžia klientui nustatyti savo tapatumą serveryje ir taip pat leidžia abiems nustatyti šfruotą ryšį. SSL veikimo pagrindas yra šifravimas. SSL apibrėžia kiek ir koks užšifravimas yra naudojamas, kad būtų apsaugotas tinklo ryšys. Kai duomenys keliauja internete iš vieno taško į kitą, jie keliauja per daugelį kompiuterių, pavyzdžiui, maršrutizatorius, tinklo vartus ir kitus tinklo prietaisus. Todėl keliaujančius duomenis galima perimti ir sustabdyti bet kuriame iš šių mazgų. Nors duomenų paketai keliauja dideliu greičiu, duomenų perėmimo ir sustabdymo pavojai vistiek išlieka. Todėl yra reikalingas apsaugos mechanizmas, norint keistis privačiais ir slaptais duomenimis. Apsauga yra pasiekiama šifravimu. Techniškai kalbant, šifravimas yra matematinė kodavimo schema, kuri užtikrina, kad tik numatytieji gavėjai gali gauti prieigą prie duomenų. Šifravimo schemos plačiai naudojamos siekiant apriboti prieiga prie išteklių. Egzistuoja dvi šifravimo schemos:

Simetrinis šifravimas. Ši schema veikia tarsi raktai ir spynos. Simetriniame šifravime vienas raktas yra naudojamas užšifravimo ir iššifravimo reikmėms. Kadangi schemoje naudojamas vienas raktas, visos susijusios šalys turi žinoti koks tai raktas, kad schema veiktų. Šios schemos veikimas pateiktas žemiau esačiame paveiksle.

Simetrinio šifravimo schema.jpg

Asimetrinis šifravimas. Asimetrinis šifravimas veikia šiek tiek kitaip nei simetrinis. Šioje schemoje yra naudojami du raktai: viešasis ir privatus raktai. Papildomas raktas šioje schemoje lyginant su simetriniu šifravimu yra viešasis raktas, kadangi ši schema yra žinoma kaip viešojo rakto šifravimas. Kai duomenys yra užšifruojami viešuoju raktu, jie gali būti iššifruojami tik naudojant privatų raktų ir atvirkščiai. Skirtingai nei simetrinio šifravimo atveju, šiai schemai nereikia, kad siuntėjas žinotų privatų raktą, kurio gavėjui reikia duomenims iššifruoti. Viešas raktas yra plačiai taikomas, todėl kiekvienas norintis naudotis saugiu duomenų perdavimu gali juo naudotis. Privatus raktas niekada neplatinamas ir visada laikomas paslaptyje. Šios schemos veikimas pateiktas žemiau esačiame paveiksle.

Asimetrinio šifravimo schema.jpg.

Modulio mod_ssl veikimas pagrįstas ir sertifikatų naudojimu. Sertifikatas yra užšifruota informacija, kuri susieja vieša raktą su tikrąja asmens, serverio arba kokio nors kito subjekto tapatybe. Jis taip pat apima sertifikato išdavėjo parašo nustatymą. Sertifikatų išdavėjas yra žinomas kaip liudijimų įstaigą. Sertifikatas paprastai perduodamas dvejetainiu arba užkoduotu tekstiniu formatu. Sertifikatą sudaro laukai su tam tikra informacija.

Sertifikatu yra pagristos vykdomos operacijos. SSL pagrįstoje operacijoje serveris siunčia sertifikatą kliento sistemai. Liudijimų įstaigą paprastai išduoda sertifikatus. Serfitikatas yra užšifruotas naudojant liudijimų įstaigos privatųjį raktą. Klientas iššifruoja sertifikatą naudodamas liudijimų įstaigos viešąjį raktą. Kadangi sertifikate yra serverio viešasis raktas, klientas gali iššifruoti bet kokius užšifruotus duomenis, kuriuos atsiunčia serveris. Šerveris siunčia dalį duomenų, kuriais nustatomas jo tapatybė, paminėta sertifikate. Tada serveris sukuria maišos pranešimą iš tų pačių duomenų, kuriuos jis ankščiau nusiuntė savo tapatumo nustatymui. Maiša užšifruota naudojant serverio pritavųjį raktą. Dabar klientas turi sertifikatą iš žinomos liudijimų įstaigos, kuriame nurodoma, koks turėtų būti serverio viešasis raktas, tapatumo pranešimas iš serverio ir užšifruotas maišos pranešimas. Naudojant serverio viešąjį raktą, klientas gali iššifruoti maišos pranešimą. Tada kleintas sukuria tapatumo pranešimo maišą ir palygina jį su serverio atsiųsta maiša. Kei yra atitikimas, tai reiškia, kad serveris yra tas, kuo tvirtina esąs. Iš pradžių serveris atsiuntė žinomos liudijimų įstaigos pasirašytą sertifikatą, todėl klientas visiškai tikras kam priklauso šis viešasis raktas. Tačiau klientui reikėjo įrodymo, kad serveris, kuris atsiuntė sertifikatą, yra tas, kuo tvirtina esąs, todėl serveris atsiuntė paprastą tapatumo pranešimą kartu su viešuoju raktu užšifruota to paties pranešimo maiša. Jeigu serveris nebūtų turėjas tinkamo privataus rakto, jis būtų negalėjęs parinkti tokios pačios maišos, kurią klientas sukūrė iš tapatumo pranešimo. Dabar klientas gali siųsti simetrinį šifravimo raktą serveriui užšifruodamas jį naudodamas serverio viešąjį raktą. Tada serveris gali naudoti šį naująjį raktą duomenims šifruoti ir perduoti klientui. Pasirodo, kad simetrinis šifravimas yra kur kas greitesnis, nei simetrinis šifravimas. Simetrinis šifravimas (privatus arba viešasis raktai) yra naudojamas saugiai perduoti atsitiktinai sugeneruotą simetrinį raktą iš kliento į serverį. Šis raktas vėliau naudojamas greitam apsaugotam komunikacijos kanalui. Jeigu tarp kliento ir serverio sistemų yra apsišaukelis ir gali sustabdyti ir perimti perduodamus duomenis, jis negali nustatyti duomenų turinio, nes nežino slapto simetrinio kodo, kurį naudoja klientas ir serveris. Tačiau į duomenis jis gali įterpti neteisingus duomenis, į duomenų paketus įterpdamas savo duomenis. Siekiant to išvengti SSL protokolas leidžia naudoti pranešimo tapatumo nustatymo kodą (MAC). MAC yra duomenų dalis, sukurta naudojant simetrinį raktą ir duomenis, kuriuos ketinama perduoti. Kadangi apgavikas nežino simetrinio rakto, jis negali sukurti teisingos MAC reikšmės.

Prieš naudojant Apache su SSL, reikia sukurti tinkamą serverio sertifikatą. Sertifikatą galima gauti iš komercinės liudijimų įstaigos arba galima susikurti savo liudijimų įstaigą ir tada kurti sertifikatus savo klientams ir serveriams.

Toliau trumpai aptariama, kaip nustatomas seansas tarp kliento ir serverio. SSL seansas nustatomas rankų paspaudimo seka tarp kliento ir serverio. Tai parodyta žemiau esančiame paveiksle. Ši seka gali būti įvairi, priklausomai nuo to ar serveris sukonfigūruotas teikti serverio sertifikatą ar prašyti kliento sertifikato. Rankų paspaudimo etapai, kuriuos naudoja klientas ir serveris:

  1. Susitarti dėl šifrų komplekto, kuris bus naudojamas perduodant duomenis.
  2. Nustatyti ir dalintis seanso raktu tarp kliento ir serverio.
  3. Pasirinktinai nustatyti serverio tapatumą klientui.
  4. Pasirinktinai nustatyti kliento tapatumą serveriui.

Pirmas etpas leidžia klientui ir serveriui pasirinkti šifrų komplektą, kurį jie abu palaiko. Komplektą sudaro šie komponentai:

  1. Raktų pasikeitimo metodas – kaip klientas ir serveris susitaria dėl slapto simetrinės kriptografijos rakto, kuris naudojamas taikomosios programos duomenų perdavimui.
  2. Šifras duomenų perdavimui – įprastas kriptografijos algoritmas naudojamas pranešimų šifravimui seanso metu.
  3. Pranešimo maiša pranešimo tapatumo nustatymo kodui (MAC) sukurti – nustato kaip maiša sukuriama iš įrašo vieneto.

Seanso nustatymas tarp kliento ir serverio.jpg.

Nustato protokolo versiją, seanso ID, šifrų komplektą, glaudinimo metodą, pasikeičia atsitiktinėm reikšmėm (1). Pasirinktinai siunčia serverio sertifikatą ir prašo kliento sertifikato (2). Siunčia kliento sertifikato atsakymą, jeigu prašoma (3). Pasikeičia šifrų komplektu ir baigia ranklų paspaudima (4).

Taigi SSL yra naudojamas žiniatinklio HTTP komunikacijos tarp naršyklės ir žiniatinklio serverio saugumui užtikrinti. Saugi versija yra paprastas HTTP virš SSL, tačiau yra vienas skirtumas. Jis naudoja URL schemą https, o ne http, ir kitą serverio prievadą (443). Tai yra būtent tai, ką mod_ssl suteikia Apache žiniatinklio serveriui.


Naudota literatūra

  1. Mohammed J. Kabir. 2002. Apache Server 2 Bible. New York: Hungry Minds, Inc.
  2. http://www.modssl.org/docs/2.8/


CategoryŽodis