Përvojë në përdorimin e teknologjisë Rutoken për regjistrimin dhe autorizimin e përdoruesve në sistem (pjesa 1)

Mirembrema Unë dua të ndaj përvojën time në këtë temë.

Rutoken është zgjidhje harduerike dhe softuerike në fushën e vërtetimit, sigurisë së informacionit dhe nënshkrimit elektronik. Në thelb, ky është një flash drive që mund të ruajë të dhënat e vërtetimit që përdoruesi përdor për të hyrë në sistem.

Në këtë shembull, përdoret Rutoken EDS 2.0.

Për të punuar me këtë Rutoken ju duhet instaloni shoferin në Windows.

Për Windows, instalimi i vetëm një drejtuesi siguron që gjithçka që nevojitet është instaluar në mënyrë që OS të shohë Rutoken-in tuaj dhe të mund të punojë me të.

Ju mund të ndërveproni me Rutoken në mënyra të ndryshme. Mund ta përdorni nga ana e serverit të aplikacionit, ose direkt nga ana e klientit. Ky shembull do të shikojë ndërveprimin me Rutoken nga ana e klientit të aplikacionit.

Pjesa e klientit të aplikacionit ndërvepron me rutoken përmes shtojcës rutoken. Ky është një program që instalohet veçmas në çdo shfletues. Për Windows ju vetëm duhet të shkarkoni dhe instaloni shtojcën, ndodhet në këtë lidhje.

Kjo është ajo, tani ne mund të ndërveprojmë me Rutoken nga ana e klientit të aplikacionit.

Ky shembull diskuton idenë e zbatimit të një algoritmi të autorizimit të përdoruesit në sistem duke përdorur skemën sfidë-përgjigje.

Thelbi i idesë është si më poshtë:

  1. Klienti dërgon një kërkesë autorizimi në server.
  2. Serveri i përgjigjet një kërkese nga klienti duke dërguar një varg të rastësishëm.
  3. Klienti plotëson këtë varg me 32 bit të rastësishëm.
  4. Klienti nënshkruan vargun e marrë me certifikatën e tij.
  5. Klienti dërgon mesazhin e marrë të koduar në server.
  6. Serveri verifikon nënshkrimin duke marrë mesazhin origjinal të pakriptuar.
  7. Serveri heq 32 bitet e fundit nga mesazhi i marrë i pakriptuar.
  8. Serveri krahason rezultatin e marrë me mesazhin që është dërguar kur kërkon autorizim.
  9. Nëse mesazhet janë të njëjta, atëherë autorizimi konsiderohet i suksesshëm.

Në algoritmin e mësipërm ekziston një gjë e tillë si një certifikatë. Për këtë shembull, ju duhet të kuptoni disa teori kriptografike. Në Habré ka artikull i madh për këtë temë.

Në këtë shembull, ne do të përdorim algoritme të enkriptimit asimetrik. Për të zbatuar algoritme asimetrike, duhet të keni një çift çelësash dhe një certifikatë.

Një çift çelësash përbëhet nga dy pjesë: një çelës privat dhe një çelës publik. Çelësi privat, siç sugjeron emri i tij, duhet të jetë sekret. Ne e përdorim atë për të deshifruar informacionin. Çelësi publik mund t'i shpërndahet kujtdo. Ky çelës përdoret për të enkriptuar të dhënat. Kështu, çdo përdorues mund të enkriptojë të dhënat duke përdorur çelësin publik, por vetëm pronari i çelësit privat mund të deshifrojë këtë informacion.

Një certifikatë është një dokument elektronik që përmban informacione për përdoruesin që zotëron certifikatën, si dhe një çelës publik. Me një certifikatë, përdoruesi mund të nënshkruajë çdo të dhënë dhe t'i dërgojë në server, i cili mund të verifikojë nënshkrimin dhe të deshifrojë të dhënat.

Për të nënshkruar saktë një mesazh me një certifikatë, duhet ta krijoni atë saktë. Për ta bërë këtë, fillimisht krijohet një çift çelësash në Rutoken, dhe më pas një certifikatë duhet të lidhet me çelësin publik të këtij çifti çelësash. Certifikata duhet të ketë saktësisht çelësin publik që ndodhet në Rutoken, kjo është e rëndësishme. Nëse thjesht krijojmë një çift çelësash dhe një certifikatë menjëherë në anën e klientit të aplikacionit, atëherë si mundet serveri të deshifrojë këtë mesazh të koduar? Në fund të fundit, ai nuk di asgjë fare as për çiftin e çelësave, as për certifikatën.

Nëse zhyteni më thellë në këtë temë, mund të gjeni informacione interesante në internet. Ka disa autoritete certifikimi që ne padyshim u besojmë. Këto autoritete certifikimi mund të lëshojnë certifikata për përdoruesit; ata i instalojnë këto certifikata në serverin e tyre. Pas kësaj, kur klienti hyn në këtë server, ai sheh pikërisht këtë certifikatë dhe sheh se është lëshuar nga një autoritet certifikues, që do të thotë se ky server mund të besohet. Ka gjithashtu shumë informacione në internet se si të vendosni gjithçka në mënyrë korrekte. Për shembull, mund të filloni me këtë.

Nëse i kthehemi problemit tonë, zgjidhja duket e qartë. Ju duhet të krijoni disi qendrën tuaj të certifikimit. Por para kësaj, duhet të kuptoni se mbi çfarë baze qendra e certifikimit duhet t'i lëshojë një certifikatë përdoruesit, sepse ai nuk di asgjë për të. (Për shembull, emri, mbiemri i tij etj.) Ekziston një gjë e tillë që quhet kërkesë për certifikatë. Më shumë informacion rreth këtij standardi mund të gjenden, për shembull, në Wikipedia ru.wikipedia.org/wiki/PKCS
Ne do të përdorim versionin 1.7 - PKCS#10.

Le të përshkruajmë algoritmin për gjenerimin e një certifikate në Rutoken (burimi origjinal: dokumentacionin):

  1. Ne krijojmë një çift çelësash në klient dhe e ruajmë atë në Rutoken. (ruajtja ndodh automatikisht)
  2. Ne krijojmë një kërkesë për certifikatë për klientin.
  3. Nga klienti ne e dërgojmë këtë kërkesë në server.
  4. Kur marrim një kërkesë për një certifikatë në server, ne lëshojmë një certifikatë nga autoriteti ynë i certifikimit.
  5. Ne ia dërgojmë këtë certifikatë klientit.
  6. Ne e ruajmë certifikatën Rutoken te klienti.
  7. Certifikata duhet të lidhet me çiftin e çelësave që u krijua në hapin e parë.

Tani bëhet e qartë se si serveri do të jetë në gjendje të deshifrojë nënshkrimin e klientit, pasi ai vetë i ka lëshuar certifikatën atij.

Në pjesën tjetër, ne do të hedhim një vështrim më të afërt se si të konfiguroni autoritetin tuaj të certifikatës bazuar në bibliotekën e plotë të kriptografisë me burim të hapur openSSL.

Burimi: www.habr.com

Shto një koment