خبرة في استخدام تقنية Rutoken لتسجيل المستخدمين وترخيصهم في النظام (الجزء الأول)

مساء الخير أريد أن أشارك تجربتي حول هذا الموضوع.

Rutoken هي حلول الأجهزة والبرامج في مجال المصادقة وأمن المعلومات والتوقيع الإلكتروني. في الأساس، هذا محرك أقراص محمول يمكنه تخزين بيانات المصادقة التي يستخدمها المستخدم لتسجيل الدخول إلى النظام.

في هذا المثال، يتم استخدام Rutoken EDS 2.0.

للعمل مع هذا Rutoken الذي تحتاجه تثبيت برنامج التشغيل على ويندوز.

بالنسبة لنظام التشغيل Windows، يضمن تثبيت برنامج تشغيل واحد فقط تثبيت كل ما هو مطلوب حتى يتمكن نظام التشغيل من رؤية Rutoken الخاص بك ويمكنه العمل معه.

يمكنك التفاعل مع 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

إضافة تعليق