Bonghjornu Vogliu sparte a mo sperienza nantu à questu tema.
Rutoken hè solu suluzione hardware è software in u campu di l'autentificazione, a sicurità di l'infurmazioni è a firma elettronica. Essenzialmente, questu hè un flash drive chì pò almacenà e dati d'autentificazione chì l'utilizatore usa per accede à u sistema.
In questu esempiu, Rutoken EDS 2.0 hè utilizatu.
Per travaglià cù questu Rutoken avete bisognu.
Per Windows, installendu un solu driver assicura chì tuttu ciò chì hè necessariu hè stallatu in modu chì u SO vede u vostru Rutoken è pò travaglià cun ellu.
Pudete interagisce cù Rutoken in diverse manere. Pudete accede da u latu di u servitore di l'applicazione, o direttamente da u latu di u cliente. Questu esempiu hà da vede l'interazzione cù Rutoken da u cliente di l'applicazione.
A parte cliente di l'applicazione interagisce cù u rutoken attraversu u plugin rutoken. Questu hè un prugramma chì hè stallatu separatamente in ogni navigatore. Per Windows basta à scaricà è stallà u plugin, .
Hè questu, avà pudemu interagisce cù Rutoken da u cliente di l'applicazione.
Questu esempiu discute l'idea di implementà un algoritmu d'autorizazione d'utilizatori in u sistema utilizendu u schema sfida-risposta.
L'essenza di l'idea hè a siguenti:
- U cliente manda una dumanda d'autorizazione à u servitore.
- U servitore risponde à una dumanda da u cliente mandendu una stringa aleatoria.
- U cliente pads sta stringa cù 32 bit aleatoriu.
- U cliente firma a stringa ricevuta cù u so certificatu.
- U cliente manda u messagiu criptatu ricevutu à u servitore.
- U servitore verifica a firma ricevendu u missaghju originale micca criptatu.
- U servitore striscia l'ultimi 32 bits da u messagiu micca criptatu ricevutu.
- U servitore compara u risultatu ricevutu cù u missaghju chì hè statu mandatu quandu si dumanda l'autorizazione.
- Se i missaghji sò listessi, allora l'autorizazione hè cunsiderata successu.
In l'algoritmu sopra, ci hè una cosa cum'è un certificatu. Per questu esempiu, avete bisognu di capisce una teoria criptografica. Nantu à Habré ci hè .
In questu esempiu, avemu aduprà algoritmi di criptografia asimmetrica. Per implementà algoritmi asimmetrici, duvete avè una coppia di chjave è un certificatu.
Un paru di chjave hè custituitu da duie parti: una chjave privata è una chjave publica. A chjave privata, cum'è u so nome suggerisce, deve esse secreta. Avemu aduprà per decrypt l'infurmazioni. A chjave publica pò esse distribuita à qualcunu. Sta chjave hè usata per criptà e dati. Cusì, ogni utilizatore pò criptà e dati cù a chjave publica, ma solu u pruprietariu di a chjave privata pò decriptà sta informazione.
Un certificatu hè un documentu elettronicu chì cuntene infurmazioni nantu à l'utilizatore chì pussede u certificatu, è ancu una chjave publica. Cù un certificatu, l'utilizatore pò firmà qualsiasi dati è mandà à u servitore, chì pò verificà a firma è decifrare i dati.
Per firmà currettamente un missaghju cù un certificatu, avete bisognu di creà bè. Per fà questu, una coppia di chjave hè prima creata nantu à Rutoken, è dopu un certificatu deve esse ligatu à a chjave publica di questa coppia di chjave. U certificatu deve avè esattamente a chjave publica chì si trova nantu à Rutoken, questu hè impurtante. Se creemu simpricimenti una coppia di chjave è un certificatu immediatamente nantu à u latu di u cliente di l'applicazione, allora cumu pò u servitore decriptà stu missaghju criptatu? Dopu tuttu, ùn sà nunda di u paru chjave o di u certificatu.
Sè vo immerse più in questu tema, pudete truvà infurmazioni interessanti nantu à Internet. Ci sò certe autorità di certificazione chì avemu ovviamente fiducia. Queste autorità di certificazione ponu emette certificati à l'utilizatori; stallanu sti certificati in u so servitore. Dopu questu, quandu u cliente accede à stu servitore, vede stu certificatu stessu, è vede chì hè statu emessu da una autorità di certificazione, chì significa chì stu servitore pò esse fiduciale. Ci hè ancu assai infurmazione nantu à Internet nantu à cumu fà tuttu ciò chì hè currettamente. .
Se vultemu à u nostru prublema, a suluzione pare ovvia. Avete bisognu di qualchì manera di creà u vostru propiu centru di certificazione. Ma prima di questu, avete bisognu di capisce nantu à quale basa u centru di certificazione deve emette un certificatu à l'utilizatori, perchè ùn sapi nunda di questu. (Per esempiu, u so nome, cognome, etc.) Ci hè una cosa chjamata dumanda di certificatu. Più infurmazione nantu à stu standard pò esse truvata, per esempiu, in Wikipedia
Avemu aduprà a versione 1.7 - PKCS#10.
Descrivimu l'algoritmu per generà un certificatu nantu à Rutoken (fonte originale: ):
- Creemu una coppia di chjave nantu à u cliente è salvemu in Rutoken. (a salvezza si faci automaticamente)
- Creemu una dumanda di certificatu nantu à u cliente.
- Da u cliente mandemu sta dumanda à u servitore.
- Quandu ricevemu una dumanda per un certificatu nantu à u servitore, emettemu un certificatu da a nostra autorità di certificazione.
- Mandemu stu certificatu à u cliente.
- Salvemu u certificatu Rutoken nantu à u cliente.
- U certificatu deve esse ligatu à a coppia di chjave chì hè stata creata in u primu passu.
Avà diventa chjaru cumu u servitore serà capace di decrypt a firma di u cliente, postu chì ellu stessu hà emessu u certificatu per ellu.
In a prossima parte, daremu un sguardu più attentu à cumu cunfigurà a vostra autorità di certificatu basatu annantu à a libreria di criptografia open-source openSSL.
Source: www.habr.com
