البنية التحتية للمفتاح العام: أداة إنشاء طلب الشهادات المؤهلة

الصورة أحد العناصر المركزية للبنية التحتية للمفتاح العام (PKI / PKI) جنبًا إلى جنب مع زوج المفاتيح هو شهادة ، وهي اليوم في الواقع تناظرية لجواز السفر المدني.

يمكن للمواطن ، بعد الحصول على شهادة في يديه ، الوصول إلى بوابة خدمات الدولة ، ودفع الضرائب ، وحماية بريده الإلكتروني ، وتوقيع وتشفير المستندات ، والمزيد.

يتم إصدار شهادة ، مثل جواز السفر ، على أساس الطلب وتقديم عدد من الوثائق. قائمة الوثائق للحصول على شهادة موجودة في أي مركز اعتماد معتمد من قبل وزارة الاتصالات (الاسم الجديد هو وزارة التنمية الرقمية والاتصالات والاتصالات الجماهيرية). يحتوي طلب جواز السفر على توقيع خطي مقدم الطلب. عند استلام جواز السفر ، يضع مقدم الطلب توقيعه على جواز السفر ، والذي سيصدق عليه موظف مكتب الجوازات والختم الرسمي. صورة وقدرة المالك على استنساخ توقيعه والسماح له بتحديد صاحب جواز سفر معين.

يتم استخدام مخطط مماثل للحصول على شهادة مفتاح التحقق من التوقيع الإلكتروني (SKEPEP). أولاً ، يجب على المواطن الذي يريد الحصول على شهادة أن يكتسب "المهارة" في تثبيت توقيعه. يتم تحقيق هذه "المهارة" من خلال استلام مقدم الطلب لزوج من المفاتيح يحتوي على المفتاح العام أو مفتاح التحقق من التوقيع الإلكتروني (KEPP) والمفتاح الخاص أو مفتاح التوقيع الإلكتروني ، والذي يسمح لك في الواقع بإنشاء توقيع إلكتروني وتوقيع مستند إلكتروني. يتم تحديد التوقيع الإلكتروني بموجب مستند وفقًا للخوارزمية التالية. من الشهادة ، يتم تحديد المفتاح الذي تم توقيع الوثيقة (GOST R 34.10-2001 ، GOST R 34.10-2012 بطول مفتاح 64 أو 128 بايت). يحدد نوع المفتاح خوارزمية التجزئة التي تم استخدامها عند توقيع المستند. يمكن أن يكون GOST R 34.11-94 أو GOST R 34.11-2012 بطول تجزئة 256 أو 512 بت. وفقًا للخوارزمية المحددة ، تم اعتبار التجزئة من المستند المصدر. وبفضل قيمة التجزئة المحسوبة من المستند المصدر والمفتاح العام (KEPP) ومعلماته (كل هذا مأخوذ من شهادة SKEPEP) ، يتم التحقق من صحة التوقيع الإلكتروني تحت المستند.

لإنشاء زوج مفاتيح ، يتم استخدام وسائل مختلفة لحماية معلومات التشفير (CPSI) تدعم خوارزميات التشفير GOST R 34.10-2001 و GOST R 34.10-2012. يجب أن نتذكر أن استخدام نظام توقيع GOST R 34.10-2001 لتوليد توقيع بعد 31 ديسمبر 2018 غير مسموح به! يمكن أن تكون أدوات حماية معلومات التشفير التي تنفذ العديد من خوارزميات التشفير والبروتوكولات برامج وأجهزة. يتم الوصول إلى حماية معلومات التشفير من خلال واجهات التشفير. تدعم الغالبية العظمى من أنظمة حماية معلومات التشفير المعتمدة مع التشفير الروسي إما واجهة التشفير PKCS # 11 العالمية ، والتي يتم دعمها على جميع الأنظمة الأساسية ، أو واجهة CSP و CryptoAPI من Microsoft على أنظمة MS Windows (يشار إليها فيما يلي باسم MS CSP). هذه الواجهتان المشفرتان مدعومتان ، على سبيل المثال ، من قبل بوابة خدمات الدولة . سيتم النظر في هذين النوعين من حماية معلومات التشفير بشكل أكبر:


يجب أن يوضع في الاعتبار أنه إذا كانت هناك رغبة أو حاجة للعمل مع توقيع إلكتروني ليس فقط على نظام Windows الأساسي ، ولكن أيضًا على منصات أخرى (Linux و macOS ، إلخ) ، فيجب اختيار الرموز المميزة لـ PKCS # 11 مع دعم التشفير الروسي.

بالإضافة إلى الوظيفة الرئيسية المتعلقة بإنشاء طلب ، توفر الأداة المساعدة وظائف للعمل مع الرموز المميزة والشهادات:


الحقل المشترك (combobox) "حدد رمزًا مميزًا:" في النافذة الرئيسية يحتوي على قائمة بأدوات حماية معلومات التشفير المتاحة لإنشاء زوج مفاتيح. إذا كانت أداة إنشاء الطلبات قيد التشغيل على نظام Windows الأساسي وتم تثبيت موفري التشفير CSP مع دعم التشفير الروسي عليه ، فسيتم تحديد الرمز المميز MS_CSP الافتراضي في قائمة أدوات حماية معلومات التشفير المتاحة ("حدد رمزًا مميزًا:"). لذلك ، إذا كانت هناك رغبة في استخدام موفر التشفير MS CSP ، فيجب تثبيته على النظام قبل بدء تشغيل الأداة.

لإضافة دعم لرمز PKCS # 11 الجديد ، ما عليك سوى تحديد عنصر القائمة "إدارة الرمز المميز>> إضافة رمز مميز". تتمثل إضافة دعم للرمز المميز الجديد في اختيار مكتبة PKCS # 11 لنوع المكونات الإضافية / البطاقات الذكية وتعيين اسم مناسب (لقب). عند إضافة دعم لنوع جديد من الرموز المميزة (وكذلك عند بدء تشغيل الأداة المساعدة ، إذا تمت إضافة دعم الرمز المميز سابقًا) برمز متصل (تم إدراجه) ، فسيطلب رمز PIN للوصول إليه:


لكن هذا لن يحدث إلا إذا لم يكن الرمز المميز متصلاً فقط ، ولكن أيضًا في حالة عمل ، أي تم التهيئة. تحقق من الرمز المميز ، وإذا لزم الأمر ، قم بتهيئته ، وقم بتغيير رمز PIN للوصول إليه ، وما إلى ذلك. مريح مع أداة p11conf :


من خلال تحديد عنصر "إدارة الرمز المميز-> آليات الرمز المميز" ، يمكنك رؤية آليات التشفير لرمز معين ، على سبيل المثال ، هل هناك دعم لخوارزمية GOST R 34.10-2012. بالنسبة للرمز الظاهري MS_CSP ، يتم سرد جميع موفري CSP الذين يدعمون خوارزميات GOST والآليات التي يدعمونها:


إذا كان الرمز المميز المحدد لا يدعم النوع المحدد من زوج المفاتيح ، فسيتم عرض رسالة مقابلة:


قبل الشروع مباشرة في ملء حقول الطلب ، من الضروري تحديد الغرض المطلوب من الشهادة ، أي حدد "دور الشهادة". واليوم ، تراكمت هذه الأدوار أكثر من اثني عشر:


وكل دور مرتبط بالعديد من OIDs المختلفة المضمنة في الشهادة. لذا ، على سبيل المثال ، للوصول إلى بوابة الخدمات العامة ، يلزم وجود الأويضات التالية:

{} {clientAuth, emailProtection, 1.3.6.1.4.1.311.20.2.2, 1.2.643.100.2.1, 1.2.643.2.2.34.6, 1.3.6.1.5.5.7.3.2, 1.3.6.1.5.5.7.3.4, 1.2.643.5.1.24.2.1.3, 1.2.643.6.14, 1.2.643.3.215.4, 1.2.643.3.215.5, 1.2.643.3.215.6, 1.2.643.3.215.7, 1.2.643.3.215.8, 1.2.643.3.215.9, 1.2.643.3.215.11, 1.2.643.3.215.12, 1.2.643.3.215.13, 1.3.6.1.4.1.40870.1.1.1, 1.2.643.2.64.1.1.1, 1.2.643.3.5.10.2.12, 1.2.643.6.3.2, 1.2.643.5.1.24.2.46, 1.2.643.6.45.1.1.1, 1.2.643.5.1.24.2.30, 1.2.643.5.1.28.2, 1.2.643.5.1.28.3, 1.2.643.3.202.1.8} 

OIDs للأدوار الأخرى (على سبيل المثال ، "Gazprombank Site" ، "Alcohol Consumer" ، إلخ.) يمكن العثور عليها في شفرة مصدر الأداة المساعدة (متغير oid_roles_bad ، عامل التشغيل:

 set oid_roses_bad {. . .} 
)
من الصعب فهم وجود العديد من الأويضات. نحن نتحدث عن الشهادات المؤهلة ، حيث يوجد OID TIN و PSRN و SNILS وما إلى ذلك ، والتي تحدد بشكل فريد كل من الفرد والكيان القانوني ، ويبدو أن هذا سيكون كافيًا للوصول إلى بوابة خدمات الدولة ، وغيرها أيضًا. لكن ، Dura lex ، sed lex - القانون قاسي ، لكنه قانون.

في حقل "اسم CIPF" ، من الضروري الإشارة إلى اسم CIPF (الرمز المميز / البطاقة الذكية ، CSP) ، المكتوب في شهادة المطابقة (لا يجب الخلط بينه وبين شهادة X509) من خدمة الأمن الفيدرالية في روسيا أو أي مستند مشابه آخر ، يجب تقديم نسخة منه في وقت شراء CIPF. بعد ذلك ، سيتم تضمين قيمة هذا الحقل في الشهادة.

لذلك ، بعد أن قررت نظام حماية معلومات التشفير وزوج المفاتيح ، يمكنك المتابعة لملء الطلب / الطلب الإلكتروني لشهادة مفتاح التحقق من التوقيع الإلكتروني (SKEPEP):


الحقل الأول الذي يجب ملؤه هو "الاسم الشائع" ، حيث يتم إدخال الاسم الكامل لحامل الشهادة المستقبلي. بالنسبة للفرد ، هذا هو الاسم الكامل كما هو الحال في جواز السفر. بالنسبة للكيان القانوني ، هذا هو اسم الشركة من السجل. سيتم نسخ هذه المعلومات للكيان القانوني تلقائيًا في الحقل "اسم المؤسسة" ("O"):


عند ملء النموذج ، يتم التحقق من صحة ملء حقول TIN و BIN و SNILS (إذا قمت بإدخال رقم ، يتحول الحقل إلى اللون الأحمر ، وتتحول الحقول المعبئة بشكل صحيح إلى اللون الأخضر) ، وعناوين البريد الإلكتروني:


بعد ملء جميع حقول الطلب والنقر على زر "إنهاء" ، سيتم استلام طلب الشهادة في النهاية:


في عملية إنشاء طلب ، سيتم إنشاء زوج مفاتيح على الرمز المميز المحدد. في الوقت نفسه ، إذا تم تحديد الرمز المميز الافتراضي "MS_CSP" كرمز مميز ، والذي بدوره يدعم الوسائط المختلفة لتخزين زوج المفاتيح ، فسيتم اقتراح اختيار وسيط محدد:


تذكر أن زوج المفاتيح يحتوي على مفتاحين: خاص وعام. يتم إرسال المفتاح العام ، الذي يسمى أيضًا مفتاح التحقق من التوقيع الإلكتروني ، إلى طلب الشهادة. لعرض الطلب الذي تم إنشاؤه ، والذي يحتوي على المفتاح العام ، استخدم القائمة "الشهادات-> عرض الطلب":


يبقى المفتاح الخاص مع مقدم الطلب على رمزه المميز ، رمز PIN (كلمة المرور) الذي يجب تخزينه منه كتفاحة عينه. ونظرًا لوجود مراسلات لا لبس فيها بين المفاتيح العامة والخاصة ، يمكنك دائمًا التحقق من مالك طلب الشهادة ، وبعد ذلك الشهادة نفسها ، والتوقيع على المستند ، إلخ.

الآن مع جميع المستندات اللازمة ، مع الطلب الذي تم إنشاؤه على محرك أقراص محمول ، يمكنك الذهاب إلى أقرب مركز شهادات والحصول على شهادة. لذا ، يأتي الطلب لإصدار شهادة في أحد CAs ، التي تم إنشاؤها مع مراعاة القانون الاتحادي في 6 أبريل 2011. رقم 63- "في التوقيع الإلكتروني":


يمر الطلب إلى المرجع المصدق (CA) عبر مراحل الاستيراد والمراجعة والموافقة وإصدار شهادة لهذا الطلب:


سيتم نشر الشهادة الصادرة في إحدى خدمات CA ، حيث يمكن تنزيلها. والآن يكفي أن يتم تصدير الشهادة الصادرة إلى محرك الأقراص المحمول لمقدم الطلب:


والآن ، عند استلام الشهادة ، يبقى وضعها على CIPF (PKCS # 11 ، MS CSP) (الشهادات-> استيراد x509):


للتحقق من وجود الشهادة على الرمز المميز ، يمكنك عرض محتويات الرمز / البطاقة الذكية (الشهادات-> عرض x509 على الرمز المميز):


حسنًا ، بحيث كان "درعًا" (أعطني مثل هذه الورقة! الورقة النهائية ، درع. (Dog Heart c / f)) ، قم بتوصيل الرمز المميز لمتصفح Firefox مع دعم التشفير الروسي والعثور على الشهادة الصادرة في الشهادات الشخصية (بما في ذلك هذه الشهادات ، حيث يحتوي الرمز المميز على مفتاح خاص):


تم تطوير الأداة المساعدة CreateCSRCAFL63 على Tcl / Tk . للوصول إلى وظائف التشفير للرموز المميزة لـ MS CSP و PKCS # 11 ، تم تطوير حزمة cwapi التي تنفذ متطلبات مكتبات C بواسطة Tcl. ليس من الصعب تنفيذ هذه المتطلبات ، ولكن في بعض الأحيان يستغرق الأمر الكثير من الوقت بسبب روتينه. وهنا تأتي المساعدة العامة SWIG إلى الإنقاذ . ، والذي يسمح لك بإنشاء وحدات واجهة بين مكتبات C / C ++ ولغات أخرى. هذه ليست Tcl فقط ، ولكن أيضًا Java وغيرها. المشروع موثق جيدًا ولديه أمثلة رائعة. ليس من الصعب استخدامه. في حالتنا ، للحصول على وحدة الواجهة ، تمت كتابة ملف مصدر بسيط cwapi.i لأداة swig المساعدة:

 %module cwapi %inline %{ #include "cwapi.h" %} %include "cwapi_SWIG.h" 

يحتوي ملف cwapi.h على أوصاف الدوال من مشروع cwapi الرئيسي:
 #ifdef __cplusplus extern "C" { #endif int CW_Initialize (char *configdir); int CW_Finalize (); int addp11mod (char *nickname, char *library); int remp11mod (char *nickname); char * lmod (); char * ltok (); char * lcert (char *token, int priv_cert); char* createreq (char *token, char *subject, char *keyusage, int keyparams, int pem, char *skzi, char* role); char* viewx509 (char *nickname, int CertOrReq); char* x509pem (char *nickname); char* x509fromfile(char *token, char *infile, char *trusts); int delcert (char *nickname, int priv_cert); int p12tofile (char *token, char *nickname, char *outfile); char* p12fromfile(char *token, char *infile); char* lmech(char* token); char* tinfo(char* token); #ifdef __cplusplus } #endif 

عن طريق تشغيل الأمر:

 $export SWIG_LIB=/usr/local/swig-3.0.12/Lib $/usr/local/swig-3.0.12/swig -tcl8 -o cwapi_wrap.c cwapi_.i $ 

في ملف cwapi_wrap.c نحصل على وحدة واجهة جاهزة. أضفه إلى مشروع cwapi وأعد بناءه واحصل على حزمة جديدة يتم استخدامها في هذه الأداة المساعدة.
للحصول على مجموعة التوزيع ، من السهل جدًا استخدام أداة freewrap ، في حين يتم تضمين مكتبة cwapi أيضًا في حزمة التوزيع مباشرة. تتوفر أدوات وتوزيعات التعليمات البرمجية المصدر لأنظمة Windows و Linux.

أود أن أذكر فائدة أخرى ، وهي tcl2c . هذه الأداة المساعدة "تلتف" رمز tcl / tk إلى رمز C.

للحصول على الكود القابل للتنفيذ ، فقط قم بتشغيل الأمر:

 $cc -o create_csr_ create_csr.c -ltcl -ltk $ 

تتضمن توزيعات منصة Linux أيضًا توزيع C مع اتصال ثابت لحزمة cwapi.

Source: https://habr.com/ru/post/ar412993/


All Articles