ASN.1
لغة تدوين بناء الجملة المجردة رقم 1 ( ASN.1 ) هي لغة وصف واجهة قياسية (IDL) لتعريف هياكل البيانات التي يمكن تسلسلها وفك تسلسلها بطريقة متعددة المنصات. وهي تُستخدم على نطاق واسع في الاتصالات وشبكات الحاسوب ، وخاصة في علم التشفير . [ 1 ]
يُعرّف مطورو البروتوكولات هياكل البيانات في وحدات ASN.1، والتي تُشكّل عادةً جزءًا من وثيقة معايير أوسع مكتوبة بلغة ASN.1. وتكمن الميزة في أن وصف ASN.1 لترميز البيانات مستقل عن أي حاسوب أو لغة برمجة مُحددة. ولأن ASN.1 قابلة للقراءة البشرية والآلية ، يُمكن لمُترجم ASN.1 ترجمة الوحدات إلى مكتبات من التعليمات البرمجية، تُسمى برامج الترميز ، والتي تقوم بفك أو ترميز هياكل البيانات. كما يُمكن لبعض مُترجمات ASN.1 إنتاج تعليمات برمجية لترميز أو فك ترميز عدة ترميزات، مثل الترميز المُعبأ، أو ترميز الخطأ الأساسي (BER) ، أو XML .
يُعدّ ASN.1 معيارًا مشتركًا بين قطاع تقييس الاتصالات التابع للاتحاد الدولي للاتصالات (ITU-T) ضمن مجموعة الدراسة 17 التابعة له ، والمنظمة الدولية للتقييس / اللجنة الكهروتقنية الدولية (ISO/IEC)، وقد وُضع في الأصل عام 1984 كجزء من معيار CCITT X.409 :1984. [ 2 ] في عام 1988، انتقل ASN.1 إلى معيار مستقل، هو X.208 ، نظرًا لتطبيقاته الواسعة. أما النسخة المُعدّلة بشكل كبير لعام 1995، فتُغطّيها سلسلة X.680 – X.683 . [ 3 ] أحدث نسخة مُعدّلة من سلسلة توصيات X.680 هي الإصدار 6.0، الذي نُشر عام 2021. [ 4 ]
بناء
- يُحدد معيار X.680 العناصر المعجمية الأساسية للغة ASN.1 (الرموز الخاصة، وتنسيق القيم الحرفية الأساسية، وما إلى ذلك). كما يُحدد بنية "تعريف الوحدة"، أي تعريف الوحدة ضمن البروتوكول. ويمكن أن يحتوي تعريف الوحدة على أنواع بيانات، وكائنات معلومات مُعرَّفة مسبقًا مكتوبة بتلك الأنواع (بنية مُفصَّلة في X.681)، وعناصر قيود (بنية مُفصَّلة في X.682)، بالإضافة إلى عناصر أخرى.
- يُحدد معيار X.681 بنية كائن المعلومات ، مما يسمح بتمثيل الكائنات ذات أنواع البيانات المخصصة في اللغة (على غرار تمثيل الكائنات الحرفية في لغات أخرى). كما يُحدد طريقة للإشارة إلى قيمة محددة من كائن باستخدام رمز النقطة كما لو كان جدولًا.
- يحدد X.682 عناصر القيد ، والتي يمكن استخدامها لتطبيق قيود أكثر تقدماً في وحدة نمطية.
- يسمح معيار X.683، الخاص بتحديد معلمات مواصفات ASN.1 ، بتغيير التعيينات والتعريفات وفقًا للمعلمات.
الدعم اللغوي
ASN.1 هو صيغة لتعريف أنواع البيانات، ولا يُحدد كيفية التعامل مع متغير من هذا النوع. يُحدد التعامل مع المتغيرات في لغات أخرى مثل SDL (لغة المواصفات والوصف) لنمذجة البرامج القابلة للتنفيذ، أو TTCN-3 (صيغة الاختبار والتحكم في الاختبار) لاختبار المطابقة. تدعم كلتا اللغتين تعريفات ASN.1 بشكل أصلي. من الممكن استيراد وحدة ASN.1 وتعريف متغير من أي نوع من أنواع ASN.1 المُعرّفة في الوحدة.
التطبيقات
يُستخدم معيار ASN.1 لتعريف عدد كبير من البروتوكولات. ولا تزال استخداماته الأكثر انتشارًا في مجالات الاتصالات السلكية واللاسلكية والتشفير والقياسات الحيوية.
| بروتوكول | مواصفة | قواعد التشفير المحددة أو المعتادة | الاستخدامات |
|---|---|---|---|
| بروتوكول الربط بين السجلات | مواصفات ILPV4 | قواعد ترميز الأوكتيت | |
| بروتوكول إدارة النقل NTCIP 1103 | NTCIP 1103 | قواعد ترميز الأوكتيت | إدارة المرور والنقل والبنية التحتية |
| خدمات دليل X.500 | سلسلة توصيات الاتحاد الدولي للاتصالات X.500 | قواعد التشفير الأساسية، قواعد التشفير المتميزة | LDAP، شهادات TLS ( X.509 )، المصادقة |
| بروتوكول الوصول إلى الدليل الخفيف (LDAP) | RFC 4511 | قواعد التشفير الأساسية | |
| معايير التشفير PKCS | معايير التشفير PKCS | قواعد التشفير الأساسية وقواعد التشفير المتميزة | المفاتيح غير المتماثلة، وحزم الشهادات |
| معالجة رسائل X.400 | سلسلة توصيات الاتحاد الدولي للاتصالات X.400 | منافس مبكر للبريد الإلكتروني | |
| EMV | منشورات EMVCo | بطاقات الدفع | |
| مؤتمرات الوسائط المتعددة T.120 | سلسلة توصيات الاتحاد الدولي للاتصالات T.120 | قواعد التشفير الأساسية، قواعد التشفير المعبأة | بروتوكول سطح المكتب البعيد من مايكروسوفت (RDP) |
| بروتوكول إدارة الشبكة البسيط (SNMP) | RFC 1157 | قواعد التشفير الأساسية | إدارة ومراقبة الشبكات وأجهزة الكمبيوتر، ولا سيما الخصائص المتعلقة بالأداء والموثوقية |
| بروتوكول المعلومات الإدارية المشتركة (CMIP) | توصية الاتحاد الدولي للاتصالات X.711 | يُعدّ منافسًا لبروتوكول إدارة الشبكة البسيط (SNMP) ، ولكنه أكثر كفاءة وأقل شيوعًا بكثير. | |
| نظام الإشارات رقم 7 (SS7) | سلسلة توصيات الاتحاد الدولي للاتصالات Q.700 | إدارة اتصالات الهاتف عبر شبكة الهاتف العامة المحولة ( PSTN ) | |
| بروتوكولات الوسائط المتعددة من السلسلة H للاتحاد الدولي للاتصالات | سلسلة توصيات الاتحاد الدولي للاتصالات H.200 و H.300 و H.400 | بروتوكول نقل الصوت عبر الإنترنت ( VoIP ) | |
| بروتوكول التفاعل بين المواد الصيدلانية الحيوية (BIP) | ISO/IEC 24708:2008 | ||
| إطار عمل تنسيقات التبادل البيومتري الشائعة (CBEFF) | NIST IR 6529-A | قواعد التشفير الأساسية | |
| سياقات المصادقة للقياسات الحيوية (ACBio) | ISO/IEC 24761:2019 | ||
| تطبيقات الاتصالات المدعومة بالحاسوب (CSTA) | قواعد التشفير الأساسية | ||
| الاتصالات المخصصة قصيرة المدى (DSRC) | SAE J2735 | قواعد التشفير المعبأ | الاتصال بالمركبات |
| IEEE 802.11p (IEEE WAVE) | IEEE 1609.2 | الاتصال بالمركبات | |
| أنظمة النقل الذكية (ETSI ITS) | ETSI EN 302 637 2 (CAM) ETSI EN 302 637 3 (DENM) | قواعد ترميز الحزمة غير المتوافقة | الاتصال بالمركبات |
| النظام العالمي للاتصالات المتنقلة (GSM) | اتصالات الهاتف المحمول من الجيل الثاني | ||
| خدمة الراديو العامة للبيانات (GPRS) / معدلات البيانات المحسّنة لتطور نظام GSM (EDGE) | اتصالات الهاتف المحمول من الجيل 2.5 | ||
| نظام الاتصالات المتنقلة العالمي (UMTS) | اتصالات الهاتف المحمول من الجيل الثالث | ||
| التطور طويل الأمد (LTE) | اتصالات الهاتف المحمول من الجيل الرابع | ||
| الجيل الخامس | اتصالات الهواتف المحمولة من الجيل الخامس | ||
| بروتوكول التنبيه المشترك (CAP) | قواعد ترميز XML | تبادل معلومات التنبيهات، مثل تنبيهات آمبر | |
| اتصالات وصلة البيانات بين المراقب والطيار (CPDLC) | اتصالات الطيران | ||
| خدمات تمديد وصلة الفضاء (SLE) | اتصالات أنظمة الفضاء | ||
| مواصفات رسائل التصنيع (MMS) | ISO 9506-1:2003 | تصنيع | |
| نقل الملفات والوصول إليها وإدارتها (FTAM) | كان منافسًا مبكرًا وأكثر كفاءة لبروتوكول نقل الملفات ، ولكنه نادرًا ما يُستخدم الآن. | ||
| بروتوكول عنصر خدمة العمليات عن بعد (ROSE) | توصيات الاتحاد الدولي للاتصالات X.880 و X.881 و X.882 | شكل مبكر من أشكال استدعاء الإجراءات عن بعد | |
| عنصر خدمة التحكم في الجمعية (ACSE) | توصية الاتحاد الدولي للاتصالات X.227 | ||
| بروتوكول شبكات أتمتة المباني والتحكم (BACnet) | ASHRAE 135-2020 | قواعد ترميز BACnet | أنظمة أتمتة المباني والتحكم بها، مثل أنظمة إنذار الحريق والمصاعد وأنظمة التدفئة والتهوية وتكييف الهواء ، وما إلى ذلك. |
| كيربيروس | RFC 4120 | قواعد التشفير الأساسية | مصادقة آمنة |
| واي ماكس 2 | شبكات واسعة النطاق | ||
| شبكة ذكية | سلسلة توصيات الاتحاد الدولي للاتصالات Q.1200 | الاتصالات السلكية واللاسلكية وشبكات الحاسوب | |
| X2AP | قواعد التشفير الأساسية المتراصة والمضغوطة | ||
| واجهة تسليم الاعتراض القانوني (LI) | ETSI TS 102 232-1 | الاعتراض القانوني |
الترميزات
يرتبط معيار ASN.1 ارتباطًا وثيقًا بمجموعة من قواعد التشفير التي تحدد كيفية تمثيل بنية البيانات كسلسلة من البايتات. تتضمن قواعد التشفير القياسية لمعيار ASN.1 ما يلي:
| قواعد التشفير | معرّف الكائن | مواصفة | وحدة التسلسل | عناصر مشفرة يمكن تمييزها دون معرفة مسبقة بالمواصفات | ثمانية متوازية | التحكم في التشفير | وصف | |
|---|---|---|---|---|---|---|---|---|
| منقط | IRI | |||||||
| قواعد التشفير الأساسية (BER) [ 5 ] | 2.1.1 | /Joint ‑ ISO ‑ ITU ‑ T/ASN.1/ | ITU X.690 | ثمانية | نعم | نعم | لا | تُحدد قواعد التشفير الأولى. تُشفّر العناصر كسلاسل من نوع TLV (الوسم-الطول-القيمة). عادةً ما توفر عدة خيارات لكيفية تشفير قيم البيانات. تُعد هذه إحدى أكثر قواعد التشفير مرونة. |
| قواعد التشفير المميزة (DER) [ 6 ] | 2.1.2.1 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.690 | ثمانية | نعم | نعم | لا | مجموعة فرعية محدودة من BER. تُستخدم عادةً للأشياء الموقعة رقميًا لأنه نظرًا لأن DER يسمح بخيارات ترميز أقل، ولأن القيم المشفرة بواسطة DER من المرجح أن يُعاد ترميزها على نفس البايتات بالضبط، فإن التوقيعات الرقمية الناتجة عن قيمة مجردة معينة ستكون متطابقة عبر التطبيقات، وستكون التوقيعات الرقمية المنتجة على بيانات مشفرة بواسطة DER أقل عرضة للهجمات القائمة على التصادم. |
| قواعد الترميز الأساسية (CER) [ 7 ] | 2.1.2.0 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.690 | ثمانية | نعم | نعم | لا | مجموعة فرعية محدودة من BER. تستخدم جميع القيود نفسها تقريبًا مثل DER ولكن الاختلاف الجدير بالذكر هو أن CER يحدد أنه يجب "تقسيم" العديد من القيم الكبيرة (خاصة السلاسل) إلى عناصر سلسلة فرعية فردية عند علامة 1000 بايت أو 1000 حرف (حسب نوع البيانات). |
| قواعد التشفير المعبأة غير المحاذية (PER-U/UPER) [ 8 ] | 2.1.3.0.1 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.691 | قليل | لا | لا | لا | يشفر القيم على مستوى البتات. ويُطلق عليه أحيانًا ببساطة "PER". تتميز خوارزميات PER عمومًا بقدرتها على إنتاج ترميزات مضغوطة للغاية، ولكن على حساب التعقيد؛ كما أنها تعتمد بشكل كبير على القيود المفروضة على أنواع البيانات. |
| قواعد التشفير المعبأة المتوافقة (PER-A/APER) [ 8 ] | 2.1.3.0.0 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.691 | قليل | لا | نعم | لا | يقوم بتشفير القيم على البتات، ولكن إذا لم تكن البتات المشفرة قابلة للقسمة بالتساوي على ثمانية، تتم إضافة بتات الحشو حتى يتم تشفير القيمة بعدد صحيح من الثمانيات. |
| قواعد التشفير المعبأة غير المتوافقة (CPER-U) [ 8 ] | 2.1.3.1.1 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.691 | قليل | لا | لا | لا | نوعٌ من أنواع PER-U يُحدد طريقةً واحدةً لترميز القيم. يُطلق عليه أحيانًا ببساطة "CPER". وترتبط CPERs بـ PERs بعلاقةٍ مشابهةٍ لعلاقة DER وCER بـ BER. |
| قواعد التشفير المعبأة المتعارف عليها (CPER-A) [ 8 ] | 2.1.3.1.0 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.691 | قليل | لا | نعم | لا | نوع مختلف من PER-A يحدد طريقة واحدة لترميز القيم. |
| قواعد ترميز XML الأساسية (XER) [ 9 ] | 2.1.5.0 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.693 | شخصية | نعم | نعم | شبكة الاتصالات الإلكترونية | يقوم بتشفير بيانات ASN.1 بصيغة XML. |
| قواعد ترميز XML الأساسية (CXER) [ 9 ] | 2.1.5.1 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.693 | شخصية | نعم | نعم | شبكة الاتصالات الإلكترونية | نوع من أنواع XER ينتج ترميزًا واحدًا ممكنًا فقط لقيمة معينة. |
| قواعد ترميز XML الموسعة (EXER) [ 9 ] | 2.1.5.2 | /مشترك - ISO - ITU - T/ASN.1/ | ITU X.693 | شخصية | نعم | نعم | شبكة الاتصالات الإلكترونية | نسخة معدلة من XER تضيف خيارات وتعليمات تتحكم في الخيارات الأسلوبية للمشفر. |
| قواعد ترميز الأوكتيت (OER) [ 10 ] | 2.1.6.0 | /مشترك - المنظمة الدولية للمعايير - الاتحاد الدولي للاتصالات - T/ASN.1/ | ITU X.696 | ثمانية | لا | نعم | لا | مجموعة من قواعد التشفير التي تُشفّر القيم على شكل وحدات ثمانية، ولكنها لا تُشفّر العلامات أو مُحدّدات الطول كما يفعل بروتوكول BER. غالبًا ما تبدو قيم البيانات المُشفّرة باستخدام OER مشابهة لتلك الموجودة في البروتوكولات "القائمة على السجلات". صُمّمت OER لتكون سهلة التنفيذ ولإنتاج تشفيرات أكثر إحكامًا من تلك التي يُنتجها BER. بالإضافة إلى تقليل جهد تطوير المُشفّرات/المُفكّكات، يُمكن أن يُقلّل استخدام OER من استهلاك عرض النطاق الترددي (وإن لم يكن بنفس قدر PER)، ويُوفّر دورات وحدة المعالجة المركزية، ويُقلّل من زمن استجابة التشفير/فك التشفير. يُشتق معيار ITU X.696 OER من معيار OER متوافق إلى حد كبير، مُعرّف في معيار NEMA 's NTCIP 1102. ويُعدّ معيار NEMA's OER بدوره نسخة مُوضّحة ومُوسّعة من قواعد ترميز NEMA المُعبأة (NEMA PER)، والتي تحمل اسمًا غير مُناسب. [ 11 ] : 27 |
| قواعد ترميز الأوكتيت الأساسية (COER) [ 10 ] | 2.1.6.1 | /مشترك - المنظمة الدولية للمعايير - الاتحاد الدولي للاتصالات - T/ASN.1/ | ITU X.696 | ثمانية | لا | نعم | لا | نوع من أنواع OER حيث يكون لكل قيمة تمثيل ثماني واحد ممكن فقط. |
| قواعد ترميز JSON (JER) [ 12 ] | 2.1.7 | ITU X.697 | شخصية | نعم | نعم | شبكة الاتصالات الإلكترونية | يقوم بتشفير بيانات ASN.1 بصيغة JSON. النسخة التي تحتوي على ASCII فقط هي النسخة القياسية، أي أن لكل قيمة تمثيل ثماني واحد فقط. أما باقي القيم فليست كذلك. | |
| قواعد ترميز السلاسل العامة (GSER) [ 13 ] | 1.2.36. | /ISO/Member ‑ Body/AU/Adacel/0/GSER | RFC 3641 | شخصية | نعم | نعم | RFC 4792 | يُستخدم GSER لتمثيل البيانات المُشفّرة للمستخدم أو البيانات المُدخلة منه، بتنسيق بسيط للغاية يُشبه ترميز القيم في ASN.1. صُمم GSER في الأصل لبروتوكول الوصول إلى الدليل الخفيف (LDAP)، ونادرًا ما يُستخدم خارجه. يُنصح بتجنب استخدام GSER في البروتوكولات الفعلية، نظرًا لعدم إمكانية إعادة إنتاج جميع ترميزات السلاسل النصية التي يدعمها ASN.1 فيه. يتم تخصيص الترميز من خلال ECN بدلاً من ECN. |
| قواعد ترميز XML القوية (RXER) | 1.2.36. | /ISO/Member ‑ Body/AU/Adacel/0/RXER | RFC 4910 | شخصية | نعم | نعم | RFC 4911 | تنسيق XML مصمم لبروتوكول الوصول إلى الدليل الخفيف (LDAP). |
| قواعد ترميز BACnet (BACnetER) | ASHRAE 135 ISO 16484-5 | ثمانية | نعم | نعم | شبكة الاتصالات الإلكترونية | يُشفّر العناصر على شكل تسلسلات من نوع tag-length-value (TLV) كما تفعل قواعد التشفير الأساسية (BER). يمكن الاطلاع على أمثلة للرسائل في Karg (2012)؛ [ 14 ] كما يُدير Karg تطبيقًا مفتوح المصدر لمكدس BACnet ، حيث يمكن العثور على شفرة لقراءة وكتابة هذا التنسيق. [ 15 ] | ||
| الإشارة إلى قواعد التشفير المحددة (SER) | وثيقة داخلية لقسم البحث والتطوير في شركة فرانس تيليكوم | ثمانية | نعم | نعم | لا | يُستخدم بشكل أساسي في البروتوكولات المتعلقة بالاتصالات، مثل GSM وSS7. وهو مصمم لإنتاج ترميز مطابق من ASN.1 الذي تنتجه البروتوكولات الموجودة مسبقًا والتي لم يتم تحديدها في ASN.1. | ||
| قواعد التشفير الخفيفة (LWER) | وثيقة داخلية صادرة عن المعهد الوطني للبحوث في علوم الحاسوب والتحكم الآلي (INRIA). | كلمة الذاكرة | نعم | لا | نشأت هذه الصيغة من وثيقة داخلية صادرة عن المعهد الوطني للبحوث في علوم الحاسوب والتحكم الآلي (INRIA ) تُفصّل "صيغة الشجرة المسطحة خفيفة الوزن" (FTLWS). [ 16 ] تم التخلي عنها عام 1997 نظرًا للأداء المتفوق لقواعد التشفير المعبأة (PER). [ 17 ] : 319 يمكن اختياريًا استخدام نظام الإرسال Big-Endian أو Little-Endian، بالإضافة إلى كلمات الذاكرة ذات 8 بت، و16 بت، و32 بت. (وبالتالي، توجد ستة متغيرات، نظرًا لوجود ستة تركيبات لهذه الخيارات). | |||
| قواعد ترميز الحد الأدنى للبتات (MBER) | قليل | لا | لا | لا | طُرحت هذه القاعدة في ثمانينيات القرن العشرين. وكان الهدف منها أن تكون مضغوطة قدر الإمكان، على غرار قواعد التشفير المعبأة (PER) اللاحقة. ولم تُعمم قط على جميع أنواع بيانات ASN.1. [ 17 ] : 319 | |||
| قواعد البرمجة عالية السرعة | "قواعد الترميز للشبكات عالية السرعة" [ 18 ] | لا | كان تعريف قواعد الترميز هذه نتيجة ثانوية لعمل INRIA على بناء الجملة الخفيف الوزن للشجرة المسطحة (FTLWS). | |||||
ترميز التحكم
تُقدّم توصيات ASN.1 عددًا من قواعد التشفير المُعرّفة مسبقًا. إذا لم تكن أيٌّ من قواعد التشفير الموجودة مناسبة، فإنّ تدوين التحكم في التشفير (ECN، X.692) يُتيح للمستخدم تعريف قواعد التشفير المُخصّصة الخاصة به.
العلاقة بتشفير البريد المحسن للخصوصية (PEM)
إن ترميز البريد المحسن للخصوصية (PEM) لا علاقة له إطلاقاً بـ ASN.1 وبرامج الترميز الخاصة به، ولكن بيانات ASN.1 المشفرة، والتي غالباً ما تكون ثنائية، غالباً ما يتم ترميزها باستخدام PEM بحيث يمكن إرسالها كبيانات نصية، على سبيل المثال عبر خوادم SMTP، أو من خلال مخازن النسخ/اللصق.
كملفات حاسوبية
لا تحدد مواصفات لغة وتشفير ASN.1 تفاصيل مثل امتداد اسم الملف الذي يجب استخدامه عند تخزين جزء من البيانات كملف على جهاز كمبيوتر. ومع ذلك، فقد ظهرت بعض الاصطلاحات:
- نص لغة ASN.1: امتدادات
.asn1[ 19 ] وقد.allاستُخدمت للملفات العامة..asnاستُخدمت للملفات التي تحتوي فقط على تعريفات الوحدات النمطية.prtوللملفات التي تحتوي فقط على تعريفات القيم. [ 20 ] .berتم استخدام البيانات المشفرة بتقنية BER . [ 21 ] كما يوجد نوع MIMEapplication/ber-streamمقترح يتضمنprotocolمُعاملًا يُحدد مُعرّف الكائن المرتبط به. [ 22 ]- البيانات المشفرة بصيغة DER: . بالنسبة لشهادات X.509
.derالمشفرة بصيغة DER ، بالإضافة إلى . نوع MIME مخصص تحديدًا للشهادات المشفرة بصيغة DER، وليس لبيانات DER العامة..cer.crt.derapplication/x-x509-ca-cert - بيانات مشفرة أخرى:
asn1cملفات نموذجية تستخدم.xerلـ XER،.perوPER، و.coerCOER.
مثال
الوحدة والقيد
هذا مثال على وحدة ASN.1 التي تحدد الرسائل (هياكل البيانات) لبروتوكول Foo وهمي :
تعريفات بروتوكول Foo ::= ابدأFooQuestion ::= SEQUENCE { trackingNumber INTEGER , question IA5String }FooAnswer ::= SEQUENCE { questionNumber INTEGER , answer BOOLEAN }نهايةقد يكون هذا وصفًا منشورًا من قِبل مُنشئي بروتوكول Foo. لم تُحدد تدفقات المحادثة، وتبادل المعاملات، والحالات في ASN.1، بل تُركت لرموز أخرى ووصف نصي للبروتوكول.
يدعم معيار ASN.1 القيود المفروضة على القيم والأحجام، بالإضافة إلى إمكانية التوسع. يمكن تغيير المواصفات المذكورة أعلاه إلى:
تعريفات بروتوكول Foo ::= ابدأFooQuestion ::= SEQUENCE { trackingNumber INTEGER ( 0. . 199 ), question IA5String }FooAnswer ::= SEQUENCE { questionNumber INTEGER ( 10. . 20 ), answer BOOLEAN }FooHistory ::= SEQUENCE { questions SEQUENCE ( SIZE ( 0. . 10 )) OF FooQuestion , answers SEQUENCE ( SIZE ( 1. . 10 )) OF FooAnswer , anArray SEQUENCE ( SIZE ( 100 )) OF INTEGER ( 0. . 1000 ), ... }نهايةيُقيد هذا التغيير قيمة trackingNumbers لتكون بين 0 و199 شاملةً، وقيمة questionNumbers لتكون بين 10 و20 شاملةً. يمكن أن يتراوح حجم مصفوفة الأسئلة بين 0 و10 عناصر، بينما يتراوح حجم مصفوفة الإجابات بين 1 و10 عناصر. حقل anArray عبارة عن مصفوفة ثابتة الطول مكونة من 100 عنصر من الأعداد الصحيحة، ويجب أن تكون ضمن النطاق من 0 إلى 1000. تشير علامة التوسعة '...' إلى أن مواصفات رسالة FooHistory قد تحتوي على حقول إضافية في الإصدارات المستقبلية؛ يجب أن تكون الأنظمة المتوافقة مع إصدار معين قادرة على استقبال وإرسال المعاملات من إصدار لاحق، مع قدرتها على معالجة الحقول المحددة في الإصدار السابق فقط. ستُنشئ مُجمِّعات ASN.1 الجيدة (بلغات C، C++، Java، إلخ) شفرة مصدرية تتحقق تلقائيًا من أن المعاملات تقع ضمن هذه القيود. لا ينبغي قبول المعاملات التي تُخالف هذه القيود من التطبيق أو عرضها عليه. إن إدارة القيود في هذه الطبقة تبسط بشكل كبير مواصفات البروتوكول لأن التطبيقات ستكون محمية من انتهاكات القيود، مما يقلل من المخاطر والتكاليف.
تستخدم الأمثلة المذكورة أعلاه فقط الصيغة من X.680. أما القيود الأكثر تقدماً من X.682 فلا يتم استخدامها.
مثال على وحدة بيانات البروتوكول
بافتراض وجود رسالة تتوافق مع بروتوكول Foo وسيتم إرسالها إلى الطرف المتلقي، فإن هذه الرسالة المحددة ( وحدة بيانات البروتوكول (PDU)) هي:
myQuestion FooQuestion ::= { trackingNumber 5 , question "هل من أحد هناك؟" }لإرسال رسالة myQuestion عبر الشبكة، تُحوّل الرسالة إلى سلسلة من البايتات باستخدام إحدى قواعد التشفير . يجب أن يحدد بروتوكول Foo صراحةً مجموعة واحدة من قواعد التشفير المستخدمة، لكي يعرف مستخدمو بروتوكول Foo أي قاعدة يجب عليهم استخدامها وتوقعها.
ما سبق هو مثال على X.681، وتحديداً على بنية ObjectAssignment .
مثال مشفر بصيغة DER
فيما يلي بنية البيانات الموضحة أعلاه بصيغة myQuestion المشفرة بتنسيق DER (جميع الأرقام بالنظام الست عشري):
30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f
يُعد DER ترميزًا من نوع-طول-قيمة ، لذا يمكن تفسير التسلسل أعلاه، بالرجوع إلى أنواع SEQUENCE وINTEGER وIA5String القياسية، على النحو التالي:
30 — نوع الوسم الذي يشير إلى التسلسل 13 — طول القيمة التي تلي ذلك بالوحدات الثمانية 02 — نوع الوسم الذي يشير إلى عدد صحيح 01 — طول القيمة التي تلي ذلك بالوحدات الثمانية 05 — القيمة (5) 16 — علامة النوع التي تشير إلى IA5String (تعني IA5 مجموعة ISO 646 الكاملة ذات 7 بت، بما في ذلك المتغيرات، لكنها عمومًا من نوع US-ASCII) 0e — طول القيمة التي تلي ذلك بالوحدات الثمانية 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f — قيمة ("هل من أحد هناك؟")
مثال مشفر بصيغة XER
بدلاً من ذلك، يمكن ترميز بنية بيانات ASN.1 نفسها باستخدام قواعد ترميز XML (XER) لتحقيق سهولة قراءة أكبر من قِبل المستخدم أثناء نقل البيانات عبر الشبكة. ستظهر حينها على شكل 108 بايتات التالية (يشمل عدد المسافات المسافات المستخدمة للمسافة البادئة):
<FooQuestion> <trackingNumber> 5 </trackingNumber> <question> هل يوجد أحد هنا؟ </question> </FooQuestion>مثال مشفر بصيغة PER، سواء كان محاذيًا أو غير محاذي
بدلاً من ذلك، إذا تم استخدام قواعد التشفير المعبأة غير المحاذية، فسيتم إنتاج الـ 122 بت التالية (16 بايت تساوي 128 بت، ولكن هنا 122 بت فقط تحمل المعلومات والـ 6 بتات الأخيرة هي مجرد حشو):
01 05 0e 83 ب سي 2d f9 3c a0 e9 a3 2f 2c af c0
في هذا التنسيق، لا تُشفّر علامات النوع للعناصر المطلوبة، لذا لا يمكن تحليله دون معرفة المخططات المتوقعة المستخدمة في التشفير. بالإضافة إلى ذلك، تُعبأ بايتات قيمة IA5String باستخدام وحدات 7 بت بدلاً من 8 بت، لأن المُشفّر يعلم أن تشفير قيمة بايت IA5String يتطلب 7 بتات فقط. مع ذلك، لا تزال بايتات الطول مُشفّرة هنا، حتى بالنسبة لعلامة العدد الصحيح الأولى 01 (لكن يمكن لمُعبّئ PER حذفها إذا كان يعلم أن نطاق القيم المسموح به يتناسب مع 8 بتات، ويمكنه حتى ضغط بايت القيمة المفردة 05 بأقل من 8 بتات، إذا كان يعلم أن القيم المسموح بها لا تتناسب إلا مع نطاق أصغر).
يتم حشو آخر 6 بتات في PER المشفر ببتات فارغة في أقل 6 بتات أهمية من البايت الأخير c0 : قد لا يتم إرسال هذه البتات الإضافية أو استخدامها لتشفير شيء آخر إذا تم إدخال هذا التسلسل كجزء من تسلسل PER غير محاذي أطول.
هذا يعني أن بيانات PER غير المحاذية هي في الأساس سلسلة مرتبة من البتات، وليست سلسلة مرتبة من البايتات كما هو الحال مع بيانات PER المحاذية، وأن فك تشفيرها بواسطة البرامج على المعالجات التقليدية سيكون أكثر تعقيدًا بعض الشيء، لأنه سيتطلب إزاحة بتات سياقية إضافية وإخفاءً، وليس عنونة مباشرة للبايتات (لكن الملاحظة نفسها تنطبق على المعالجات الحديثة ووحدات الذاكرة/التخزين التي يزيد الحد الأدنى لوحدة العنونة فيها عن ثمانية بتات). مع ذلك، تتضمن المعالجات الحديثة ومعالجات الإشارات دعمًا ماديًا لفك التشفير الداخلي السريع لسلاسل البتات مع معالجة تلقائية لوحدات الحوسبة التي تتجاوز حدود وحدات التخزين القابلة للعنونة (وهذا ضروري للمعالجة الفعالة في برامج ترميز البيانات للضغط/فك الضغط أو مع بعض خوارزميات التشفير/فك التشفير).
للمقارنة، ينتج برنامج Packed Encoding Rules Aligned بدلاً من ذلك ما يلي:
01 05 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f
هذا التنسيق مُحاذي للثمانيات. في هذه الحالة، يتم ملء كل ثماني بشكل فردي ببتات فارغة على البتات الأكثر أهمية غير المستخدمة.
أدوات
معظم الأدوات التي تدعم ASN.1 تقوم بما يلي:
- تحليل ملفات ASN.1،
- يقوم بإنشاء الإعلان المكافئ في لغة برمجة (مثل C أو C++)،
- يقوم بإنشاء وظائف التشفير وفك التشفير بناءً على التصريحات السابقة.
يمكن العثور على قائمة بالأدوات التي تدعم ASN.1 على صفحة الويب الخاصة بأدوات ITU-T .
أدوات عبر الإنترنت
مقارنة بالمخططات المماثلة
يُشابه بروتوكول ASN.1 في غرضه واستخدامه بروتوكول Google Protocol Buffers وبروتوكول Apache Thrift ، وهما أيضاً لغتان لوصف واجهات تسلسل البيانات عبر المنصات. وكما هو الحال في هاتين اللغتين، يمتلك ASN.1 مخططاً (يُسمى "وحدة" في ASN.1)، ومجموعة من الترميزات، عادةً ما تكون ترميزات النوع-الطول-القيمة. وعلى عكسهما، لا يُوفر ASN.1 تطبيقاً واحداً مفتوح المصدر وجاهزاً للاستخدام، بل يُنشر كمواصفة ليتم تنفيذها من قِبل جهات خارجية. مع ذلك، فإن ASN.1، الذي تم تعريفه عام 1984، يسبقهما بسنوات عديدة. كما أنه يتضمن مجموعة أوسع من أنواع البيانات الأساسية، بعضها قديم، ويُوفر خيارات أكثر للتوسع. يُمكن لرسالة ASN.1 واحدة أن تتضمن بيانات من وحدات متعددة مُعرّفة في معايير متعددة، حتى لو كانت هذه المعايير مُعرّفة بفارق سنوات.
يتضمن معيار ASN.1 أيضًا دعمًا مدمجًا للقيود المفروضة على القيم والأحجام. على سبيل المثال، يمكن لوحدة نمطية تحديد حقل عدد صحيح يجب أن يكون ضمن النطاق من 0 إلى 100. كما يمكن تحديد طول سلسلة من القيم (مصفوفة)، إما كطول ثابت أو كنطاق من الأطوال المسموح بها. ويمكن أيضًا تحديد القيود كمجموعات منطقية من القيود الأساسية.
يمكن أن تكون القيم المستخدمة كقيود إما قيمًا حرفية مُستخدمة في مواصفات وحدة بيانات البروتوكول (PDU)، أو قيم ASN.1 مُحددة في مكان آخر في ملف المخطط. تُتيح بعض أدوات ASN.1 هذه القيم للمبرمجين في شفرة المصدر المُولّدة. وباستخدامها كثوابت للبروتوكول المُعرّف، يُمكن للمطورين استخدامها في التنفيذ المنطقي للبروتوكول. وبالتالي، يُمكن تعريف جميع وحدات بيانات البروتوكول وثوابت البروتوكول في المخطط، وتعتمد جميع تطبيقات البروتوكول، بأي لغة مدعومة، على هذه القيم. هذا يُغني المطورين عن كتابة ثوابت البروتوكول يدويًا في شفرة المصدر الخاصة بتطبيقاتهم. يُسهم هذا بشكل كبير في تطوير البروتوكول؛ إذ يُمكن تعديل ثوابت البروتوكول في مخطط ASN.1، ويتم تحديث جميع التطبيقات ببساطة عن طريق إعادة التجميع، مما يُعزز دورة تطوير سريعة ومنخفضة المخاطر.
إذا طبّقت أدوات ASN.1 فحص القيود بشكل صحيح في الكود المصدري المُولّد، فإن ذلك يُسهم في التحقق التلقائي من صحة بيانات البروتوكول أثناء تشغيل البرنامج. عادةً ما تتضمن أدوات ASN.1 فحص القيود في إجراءات التسلسل/فك التسلسل المُولّدة، مع إظهار أخطاء أو استثناءات في حال مصادفة بيانات خارج النطاق. يُعدّ تطبيق جميع جوانب قيود ASN.1 في مُصرّف ASN.1 أمرًا معقدًا. لا تدعم جميع الأدوات النطاق الكامل لتعبيرات القيود الممكنة. يدعم كل من مخطط XML ومخطط JSON مفاهيم قيود مماثلة. يختلف دعم الأدوات للقيود، ويتجاهلها مُصرّف xsd.exe من مايكروسوفت.
ترجمة المخطط
تستطيع بعض أدوات ASN.1 الترجمة بين ASN.1 ومخطط XML (XSD). وتُوحّد هذه الترجمة من قِبل الاتحاد الدولي للاتصالات (ITU). وهذا يُتيح تعريف البروتوكول باستخدام ASN.1، وكذلك تلقائيًا باستخدام XSD. وبالتالي، يُمكن (وإن كان غير مُستحسن) تضمين مخطط XSD في مشروع ما، حيث تُجمّع أدوات ASN.1 هذا المخطط لإنتاج شفرة مصدرية تُحوّل الكائنات من وإلى تنسيق JSON. أما الاستخدام الأكثر عمليةً فهو السماح للمشاريع الفرعية الأخرى باستخدام مخطط XSD بدلًا من مخطط ASN.1، بما يتناسب مع توافر الأدوات للغة المُختارة في المشروع الفرعي، مع استخدام XER كتنسيق للبروتوكول.
توفر مكتبة نوكالفا مفتوحة المصدر أداةً لتحويل كائن بيانات JSON أو مخطط JSON إلى تعريف ASN.1. [ 23 ] ولا توجد حتى الآن أداة لإنشاء مخطط JSON يصف بنية بيانات ASN.1 المشفرة بصيغة JER.
كما يوفر برنامج نوكالفا مفتوح المصدر أداة لتحويل مخطط بروتوكول بافرز إلى تعريف ASN.1. [ 24 ]
تنسيقات اختيارية للمخطط
تُعرّف العديد من لغات البرمجة صيغ تسلسل خاصة بها. على سبيل المثال، وحدة "pickle" في بايثون ووحدة "Marshal" في روبي. لا تتطلب هذه الصيغ مخططًا. وهي عادةً خاصة بكل لغة، مما يُسهّل استخدامها في سيناريوهات التخزين المخصصة، لكنها غير مناسبة لبروتوكولات الاتصالات.
لا يتطلب كل من JSON و XML مخططًا، مما يجعلهما سهلي الاستخدام. كما أنهما معياران متعددا المنصات يحظيان بشعبية واسعة في بروتوكولات الاتصالات، لا سيما عند دمجهما مع مخطط JSON أو مخطط XML .
تعريفات البروتوكول على مستويات مختلفة
يُشابه ASN.1 ظاهريًا صيغة باكوس-ناور المُعززة (ABNF)، المُستخدمة لتعريف العديد من بروتوكولات الإنترنت مثل HTTP و SMTP . مع ذلك، يختلفان عمليًا اختلافًا كبيرًا: يُعرّف ASN.1 بنية بيانات يُمكن ترميزها بطرق مُتعددة (مثل JSON وXML والثنائي). بينما تُعرّف ABNF الترميز ("البنية النحوية") في الوقت نفسه الذي تُعرّف فيه بنية البيانات ("الدلالات"). يُستخدم ABNF غالبًا لتعريف البروتوكولات النصية سهلة القراءة، ولا يُستخدم عادةً لتعريف ترميزات النوع-الطول-القيمة.
يتشابه ASN.1 بصريًا مع CSN.1 . ومع ذلك، يحدد CSN.1 أيضًا ترميز الكائن، وتحديدًا على مستوى البت.
انظر أيضاً
مراجع
- ↑ "مقدمة إلى ASN.1" . الاتحاد الدولي للاتصالات . مؤرشف من الأصل بتاريخ 2021-04-09 . تم الاطلاع عليه بتاريخ 2021-04-09 .
- ^ "قاعدة بيانات توصيات قطاع تقييس الاتصالات" . الاتحاد الدولي للاتصالات . تم الاسترجاع 2017/03/06 .
- ↑ ITU-T X.680 - مواصفات الترميز الأساسي
- ↑ تستند هذه المقالة إلى مواد مأخوذة من ASN.1 في قاموس الحوسبة المجاني على الإنترنت قبل 1 نوفمبر 2008 وتم دمجها بموجب شروط "إعادة الترخيص" الخاصة بـ GFDL ، الإصدار 1.3 أو أحدث.
- ↑ ITU-T X.690 - قواعد التشفير الأساسية (BER)
- ↑ ITU-T X.690 - قواعد التشفير المميزة (DER)
- ↑ ITU-T X.690 - قواعد التشفير الأساسية (CER)
- 1 2 3 4 ITU-T X.691 - قواعد ترميز الحزم (PER)
- 1 2 3 ITU-T X.693 - قواعد ترميز XML (XER)
- 1 2 ITU-T X.696 - قواعد التشفير الثماني (OER)
- ↑ NTCIP 1102:2004 بروتوكول الاتصالات الوطنية للنقل لأنظمة النقل الذكية (ITS) - قواعد ترميز الأوكتيت (OER) - البروتوكول الأساسي (PDF) .
- ↑ ITU-T X.697 - قواعد ترميز تدوين كائنات جافا سكريبت (JER)
- ↑ RFC 3641 - قواعد ترميز السلاسل العامة (GSER)
- ↑ كارغ، إس (2012). "فهم ترميز BACnet MS/TP" (PDF) .
- ↑ "bacnet-stack/bacnet-stack" . حزمة بروتوكولات BACnet. 14 يونيو 2025.
- ↑ هويتيما، سي.؛ دوغري، أ. (أكتوبر 1989). "تحديد صيغ نقل أسرع لبروتوكول عرض OSI". مجلة ACM SIGCOMM لمراجعة اتصالات الحاسوب . 19 (5): 44-55 . doi : 10.1145/74681.74685 .
- 1 2 لارموث، جون (1999). ASN.1 الكامل . حلول الأنظمة المفتوحة. ISBN 9780122334351.
- ↑ بيفر، مارتن؛ شافر، أولريش (1 يونيو 1992). "قواعد الترميز للشبكات عالية السرعة" . وقائع المؤتمر الدولي IFIP TC6/WG6.5 حول بروتوكولات الطبقات العليا، والهياكل، والتطبيقات . دار نشر إلسيفير للعلوم: 119-132 . ISBN 978-0-444-89766-4.
- ↑ "الفصل 7. تنسيق بيانات ملف ASN.1 | مرجع مكونات Apache Camel | Red Hat Fuse | 7.2 | وثائق Red Hat" . docs.redhat.com .
- ↑ "AsnLib: معالجة ASN.1" . www.ncbi.nlm.nih.gov .
- ↑ "صفحة دليل أوبونتو: unber -- برنامج فك تشفير ASN.1 BER" . manpages.ubuntu.com .
- ↑ وال، مارك (13 مارس 1996). "نوع محتوى MIME لوحدات بيانات بروتوكول ASN.1" . فريق عمل هندسة الإنترنت.
- ↑ "JSON2ASN" . asn1.io .
- ↑ "Proto2ASN" . asn1.io .
روابط خارجية
- دليل مبسط لمجموعة فرعية من بروتوكولات ASN.1 وBER وDER: مقدمة جيدة للمبتدئين
- موقع الاتحاد الدولي للاتصالات - تقييس الاتصالات - مقدمة إلى ASN.1
- مقدمة فيديو لـ ASN.1
- شرح أساسيات ASN.1
- شرح ASN.1
- مُترجم مفتوح المصدر من ASN.1 إلى C++؛ يتضمن بعض مواصفات ASN.1 ، مُترجم ASN.1 إلى C++ عبر الإنترنت
- يسمح برنامج فك تشفير ASN.1 بفك تشفير الرسائل المشفرة بـ ASN.1 إلى مخرجات XML.
- مدقق بناء الجملة ASN.1 ومشفر/فك تشفير يقوم بفحص بناء جملة مخطط ASN.1 ويقوم بتشفير/فك تشفير الرسائل.
- يقوم مشفر/فك تشفير رسائل 3GPP ASN.1 بتشفير/فك تشفير رسائل 3GPP ASN.1 ويتيح تحرير هذه الرسائل بسهولة.
- كتب مجانية عن ASN.1
- قائمة أدوات ASN.1 في مشروع IvmaiAsn
- نظرة عامة على قواعد ترميز الأوكتيت (OER)
- نظرة عامة على قواعد ترميز JSON (JER)
- أداة TypeScript Node لتحليل رسائل ASN.1 والتحقق من صحتها
- ASN.1
- لغات نمذجة البيانات
- تنسيقات تسلسل البيانات
- توصيات سلسلة ITU-T X
