Системд хэрэглэгчдийг бүртгэх, зөвшөөрөл олгоход Rutoken технологийг ашиглаж байсан туршлагатай (1-р хэсэг)

Өдрийн мэнд Би энэ сэдвээр туршлагаа хуваалцахыг хүсч байна.

Rutoken нь баталгаажуулалт, мэдээллийн аюулгүй байдал, цахим гарын үсгийн салбарт техник хангамж, програм хангамжийн шийдэл юм. Үндсэндээ энэ нь хэрэглэгчийн системд нэвтрэхэд ашигладаг баталгаажуулалтын өгөгдлийг хадгалах боломжтой флаш диск юм.

Энэ жишээнд Rutoken EDS 2.0 ашигласан.

Энэ Rutoken-тэй ажиллахын тулд танд хэрэгтэй Windows дээр драйвер суулгах.

Windows-ийн хувьд зөвхөн нэг драйвер суулгаснаар үйлдлийн систем таны Rutoken-г харж, түүнтэй ажиллах боломжтой болохын тулд шаардлагатай бүх зүйл суулгасан байх болно.

Та Rutoken-тэй янз бүрийн аргаар харилцах боломжтой. Та үүнд програмын сервер талаас эсвэл шууд клиент талаас хандах боломжтой. Энэ жишээ нь програмын клиент талаас Rutoken-тэй харилцах харилцааг авч үзэх болно.

Програмын клиент хэсэг нь rutoken залгаасаар дамжуулан рутокентэй харилцдаг. Энэ бол хөтөч бүрт тусад нь суулгасан програм юм. Windows-ийн хувьд та залгаасыг татаж аваад суулгахад л хангалттай. энэ холбоос дээр байрладаг.

Ингээд л бид Rutoken-тэй програмын клиент талаас харьцаж болно.

Энэ жишээ нь сорилт-хариултын схемийг ашиглан хэрэглэгчийн зөвшөөрлийн алгоритмыг системд нэвтрүүлэх санааг авч үздэг.

Үзэл санааны мөн чанар нь дараах байдалтай байна.

  1. Үйлчлүүлэгч сервер рүү зөвшөөрлийн хүсэлт илгээдэг.
  2. Сервер нь үйлчлүүлэгчийн хүсэлтэд санамсаргүй мөр илгээх замаар хариу өгдөг.
  3. Үйлчлүүлэгч энэ мөрийг санамсаргүй 32 битээр зөөдөг.
  4. Үйлчлүүлэгч хүлээн авсан мөрөнд гэрчилгээтэй гарын үсэг зурдаг.
  5. Үйлчлүүлэгч хүлээн авсан шифрлэгдсэн мессежийг сервер рүү илгээдэг.
  6. Сервер нь шифрлэгдээгүй анхны мессежийг хүлээн авснаар гарын үсгийг баталгаажуулдаг.
  7. Сервер нь хүлээн авсан шифрлэгдээгүй мессежээс сүүлийн 32 битийг хасдаг.
  8. Сервер нь хүлээн авсан үр дүнг зөвшөөрөл хүсэх үед илгээсэн мессежтэй харьцуулдаг.
  9. Хэрэв мессежүүд ижил байвал зөвшөөрлийг амжилттай гэж үзнэ.

Дээрх алгоритмд гэрчилгээ гэх зүйл байдаг. Энэ жишээний хувьд та криптографийн онолыг ойлгох хэрэгтэй. Хабре дээр байдаг энэ сэдвээр гайхалтай нийтлэл.

Энэ жишээнд бид тэгш хэмт бус шифрлэлтийн алгоритмуудыг ашиглах болно. Тэгш хэмт бус алгоритмыг хэрэгжүүлэхийн тулд та түлхүүрийн хослол, гэрчилгээтэй байх ёстой.

Түлхүүр хос нь хувийн түлхүүр ба нийтийн түлхүүр гэсэн хоёр хэсгээс бүрдэнэ. Хувийн түлхүүр нь нэрнээс нь харахад нууц байх ёстой. Бид үүнийг мэдээллийн шифрийг тайлахад ашигладаг. Нийтийн түлхүүрийг хэнд ч тарааж болно. Энэ түлхүүр нь өгөгдлийг шифрлэхэд ашиглагддаг. Тиймээс ямар ч хэрэглэгч нийтийн түлхүүрийг ашиглан өгөгдлийг шифрлэх боломжтой боловч зөвхөн хувийн түлхүүр эзэмшигч нь энэ мэдээллийг тайлж чадна.

Сертификат гэдэг нь гэрчилгээг эзэмшдэг хэрэглэгчийн тухай мэдээлэл, түүнчлэн нийтийн түлхүүрийг агуулсан цахим баримт бичиг юм. Сертификаттай бол хэрэглэгч ямар ч өгөгдөлд гарын үсэг зурж, сервер рүү илгээх боломжтой бөгөөд энэ нь гарын үсгийг баталгаажуулж, өгөгдлийг тайлах боломжтой.

Сертификаттай зурваст зөв гарын үсэг зурахын тулд та үүнийг зөв үүсгэх хэрэгтэй. Үүнийг хийхийн тулд эхлээд Rutoken дээр түлхүүрийн хослолыг үүсгэсэн бөгөөд дараа нь гэрчилгээг энэ хосын нийтийн түлхүүртэй холбосон байх ёстой. Сертификат нь Rutoken дээр байрладаг нийтийн түлхүүртэй байх ёстой, энэ нь чухал юм. Хэрэв бид програмын клиент тал дээр нэн даруй түлхүүрийн хослол болон гэрчилгээ үүсгэвэл сервер энэ шифрлэгдсэн мессежийг хэрхэн тайлах вэ? Эцсийн эцэст тэр түлхүүрийн хослол эсвэл гэрчилгээний талаар юу ч мэдэхгүй.

Хэрэв та энэ сэдвийг гүнзгийрүүлбэл Интернетээс сонирхолтой мэдээлэл олж авах боломжтой. Бидний итгэдэг зарим баталгаажуулалтын байгууллагууд байдаг. Эдгээр баталгаажуулалтын байгууллагууд нь хэрэглэгчдэд гэрчилгээ олгох боломжтой бөгөөд тэдгээр гэрчилгээг сервер дээрээ суулгадаг. Үүний дараа үйлчлүүлэгч энэ серверт хандахдаа энэ гэрчилгээг харж, гэрчилгээжүүлэх байгууллагаас олгосон болохыг хардаг бөгөөд энэ нь серверт итгэж болно гэсэн үг юм. Интернет дээр бүх зүйлийг хэрхэн зөв тохируулах талаар маш их мэдээлэл байдаг. Жишээлбэл, та үүнээс эхэлж болно.

Хэрэв бид асуудалдаа эргэн орвол шийдэл нь тодорхой юм шиг санагддаг. Та ямар нэгэн байдлаар өөрийн гэрчилгээжүүлэх төвийг бий болгох хэрэгтэй. Гэхдээ үүнээс өмнө та гэрчилгээжүүлэх төв ямар үндэслэлээр хэрэглэгчдэд гэрчилгээ олгох ёстойг олж мэдэх хэрэгтэй, учир нь тэр энэ талаар юу ч мэдэхгүй. (Жишээ нь түүний нэр, овог гэх мэт) Гэрчилгээний хүсэлт гэж ийм зүйл байдаг. Энэ стандартын талаарх дэлгэрэнгүй мэдээллийг, жишээлбэл, Википедиа дээрээс олж болно ru.wikipedia.org/wiki/PKCS
Бид 1.7 - PKCS#10 хувилбарыг ашиглах болно.

Rutoken дээр гэрчилгээ үүсгэх алгоритмыг тайлбарлая (анхны эх сурвалж: баримт бичиг):

  1. Бид үйлчлүүлэгч дээр түлхүүрийн хослол үүсгэж, Rutoken дээр хадгалдаг. (хадгалалт автоматаар хийгддэг)
  2. Бид үйлчлүүлэгч дээр гэрчилгээний хүсэлтийг үүсгэдэг.
  3. Үйлчлүүлэгчээс бид энэ хүсэлтийг сервер рүү илгээдэг.
  4. Сервер дээр гэрчилгээ авах хүсэлтийг хүлээн авах үед бид гэрчилгээжүүлэх байгууллагаас гэрчилгээ олгодог.
  5. Бид энэ гэрчилгээг үйлчлүүлэгч рүү илгээдэг.
  6. Бид Rutoken гэрчилгээг үйлчлүүлэгч дээр хадгалдаг.
  7. Сертификат нь эхний алхамд үүсгэсэн түлхүүрийн хослолтой холбоотой байх ёстой.

Сервер өөрөө түүнд гэрчилгээ олгосон тул үйлчлүүлэгчийн гарын үсгийг хэрхэн тайлах боломжтой болох нь одоо тодорхой боллоо.

Дараагийн хэсэгт бид бүрэн эрхт нээлттэй эхийн криптографийн номын сан openSSL дээр тулгуурлан гэрчилгээ олгох эрхээ хэрхэн байгуулах талаар нарийвчлан авч үзэх болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх