DEENESPTFRRUARHIKOZHNL

وحدة ara::crypto — Cryptography

Spezifikation: AUTOSAR_AP_SWS_Cryptography.pdf (R25-11) · 387 API-Records

دليل الوحدةمولَّد بالذكاء الاصطناعي

يوفر عمليات تشفير معزولة وإدارة المفاتيح وخدمات شهادات X.509 للتطبيقات.
مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: b84ff51de547 المصدر أسئلة مفتوحة (1)
المرساة السببية: R25-11 صالح اعتبارًا من R25-11 مُركَّب حديثًا لهذا الإصدار من المواصفة.
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

يوفر عمليات تشفير معزولة وإدارة المفاتيح وخدمات شهادات X.509 للتطبيقات.

توفر المجموعة الوظيفية Cryptography خدمات أمان موحدة للتشفير المتماثل وغير المتماثل والتحقق من التوقيع بالإضافة إلى الإدارة الآمنة للمفاتيح والشهادات (PlatformDesign ص. 71). ويتم الوصول إلى العمليات التشفيرية ومواضع المفاتيح الدائمة بشكل معزول تماماً عبر مزودين خاصين بالمنصة ومحددات مثيلات مثبتة تصريحياً في البيان (SWS Cryptography ص. 39). ويمنع فرض قيود الاستخدام في الوقت نفسه المساس بمادة المفاتيح الحساسة ([SWS_CRYPT_50092]).

توفر المجموعة الوظيفية Cryptography (ara::crypto) بنية أمان شاملة لـ AUTOSAR Adaptive Platform (PlatformDesign ص. 71). وللحماية من تطبيقات المستخدم المعرضة للاختراق، يتم عادةً تغليف حفظ المفاتيح والتنفيذ التشفيري في عفريت منصة معزول أو وحدة أمان أجهزة (HSM) (AUTOSAR AP EXP SWArchitecture ص. 97، SWS Cryptography ص. 87). وتنقسم الوظائف الكلية إلى CryptoProvider متخصصة للبدائيات الحسابية، ومنطقة تخزين المفاتيح لمواضع المفاتيح الدائمة (KeySlots)، بالإضافة إلى X509Provider على مستوى الجهاز لإدارة شهادات PKI (SWS Cryptography ص. 39).

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

مخطط السياق: علاقات البنية والمكونات للمجموعة الوظيفية Cryptography بين التطبيق والعفريت والمزودين. المصادر: SWS Cryptography ص. 39، PlatformDesign ص. 71، AUTOSAR AP EXP SWArchitecture ص. 97.

تنشئ التطبيقات سياقات تشفيرية مثل الشيفرات المتماثلة ([SWS_CRYPT_20742])، والشيفرات الموثقة ([SWS_CRYPT_20745])، ودوال التجزئة ([SWS_CRYPT_20747])، أو مثيلات التوقيع والتحقق ([SWS_CRYPT_20756]، [SWS_CRYPT_20757]) عبر المزود الخاص بها (AUTOSAR AP EXP SWArchitecture ص. 99). وتتبع المعالجة دورة حياة حتمية: فبعد ربط المفتاح (SetKey)، تبدأ عملية التحويل عبر Start()، ويتم دفقها عبر Update() وتكتمل مع Finish() (AUTOSAR AP TR SystemTests ص. 206، EXP SWArchitecture ص. 104). وتمنع AllowedUsageFlags غير القابلة للتغيير الاستخدام غير المصرح به للمفاتيح بفعالية ([SWS_CRYPT_50092]، AUTOSAR AP TR SystemTests ص. 177).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

مخطط الحالة: دورة حياة سياقات التحويل التشفيري من التخصيص حتى إعادة التعيين. المصادر: [SWS_CRYPT_20742]، [SWS_CRYPT_23911]، [SWS_CRYPT_23625]، [SWS_CRYPT_50046]، [SWS_CRYPT_50212].

تتم إدارة الشهادات وطلبات CSR عبر X509Provider ([SWS_CRYPT_40099]، [SWS_CRYPT_40640])، بينما تتحقق سياقات التحقق من صحة سلاسل الشهادات مع مراعاة قوائم إبطال الشهادات CRL ([SWS_CRYPT_50183]) واستجابات OCSP ([SWS_CRYPT_50124]) (AUTOSAR AP TR SystemTests ص. 194). ويتم تخصيص مواضع KeySlots والشهادات للتطبيقات بصورة قائمة على النموذج في البيان عبر InstanceSpecifier (AUTOSAR AP TPS ManifestSpecification ص. 245، AUTOSAR AP TPS ManifestSpecification ص. 649). وتعمل جميع الواجهات بقيم إرجاع ara::core::Result خالية من الاستثناءات، وتشير إلى الأخطاء عبر CryptoErrorDomain ([SWS_CRYPT_19902]، SWS Cryptography ص. 208).

البنية، ونطاقات الأمان، وعزل العفريت

تشكل المجموعة الوظيفية Cryptography (ara::crypto) قاعدة الأمان المركزية لـ AUTOSAR Adaptive Platform، وتوفر الآليات التشفيرية الأساسية وإدارة المفاتيح وخدمات الشهادات (PlatformDesign ص. 71). ووفقاً لنموذج الثقة الخاص بالمنصة، تُعد المجموعات الوظيفية للمنصة جزءاً من الأساس الموثوق به، في حين يتم تشغيل Adaptive Applications في مساحة المستخدم غير المميزة (SWS Cryptography ص. 37). ولحماية مادة المفاتيح والعمليات التشفيرية بفعالية حتى في حالة حدوث اختراق محتمل لأحد التطبيقات، تم تصميم البنية عادةً لتكون قائمة على العفريت؛ حيث يظل التنفيذ الفعلي وحفظ المفاتيح ضمن عملية منصة معزولة أو في بيئة تنفيذ آمنة (AUTOSAR AP EXP SWArchitecture ص. 97، SWS Cryptography ص. 87).

تقسم البنية الوظائف التشفيرية إلى ثلاثة نطاقات أساسية: CryptoProvider للبدائيات الحسابية وتحويلات المفاتيح، ومنطقة تخزين المفاتيح (ara::crypto::keys) لحفظ الكائنات الدائم، بالإضافة إلى X509Provider (ara::crypto::x509) لإدارة الشهادات (SWS Cryptography ص. 39، SWS Cryptography ص. 87). ويمكن أن تتواجد عدة مثيلات متخصصة من CryptoProvider بالتوازي على وحدة تحكم إلكترونية واحدة، على سبيل المثال لربط وحدات أمان أجهزة مختلفة (HSM، TPM) أو برامج تشغيل برمجية (SWS Cryptography ص. 39). ومع ذلك، لا يوجد عمدياً أي توافق تشغيلي بين المزودين المختلفين: إذ ينتمي الكائن التشفيري أو المفتاح تحديداً إلى مزود واحد ولا يمكن معالجته بواسطة مزود آخر (SWS Cryptography ص. 39). ويُعزى هذا التغليف الصارم في المقام الأول إلى أن نطاقات أمان الأجهزة تفرض حدود مفاتيحها مادياً، ولا تكون مقابض المفاتيح صالحة عبر النطاقات المختلفة. سؤال Q-63efe107cf111983 (مفتوح)

diag_crypto_arch App Adaptive Application Daemon Cryptography Daemon (ara::crypto) App->Daemon IPC / C++ API CryptoProvider CryptoProvider (HSM / Driver / Software) Daemon->CryptoProvider Primitive Execution KeyStorage Key Storage Provider (KeySlots) Daemon->KeyStorage Key Lifecycle X509Prov X.509 Provider (Certificates / CRL) Daemon->X509Prov PKI Services KeyStorage->CryptoProvider Key Deployment

مخطط السياق: علاقات البنية والمكونات للمجموعة الوظيفية Cryptography بين التطبيق والعفريت والمزودين. المصادر: SWS Cryptography ص. 39، PlatformDesign ص. 71، AUTOSAR AP EXP SWArchitecture ص. 97.

نقاط الدخول وتهيئة مزودي التشفير

تتم نقطة الدخول إلى الوحدة عبر دوال دخول عامة تعمل كمصانع لواجهات التجريد المركزية (SWArchitecture ص. 71). وتقوم التطبيقات بإنشاء أو تحميل مثيل من CryptoProvider عبر الدالة [SWS_CRYPT_20099] مع تحديد ara::core::InstanceSpecifier تمت نمذجته. وبالنسبة لإدارة الشهادات، يوجد مزود شهادات عام واحد بالضبط في النظام بأكمله، ويتم تحميله عبر [SWS_CRYPT_40099] (SWS Cryptography ص. 39). بالإضافة إلى ذلك، تتوفر خدمات مساعدة عامة، بما في ذلك التوليد المباشر للبيانات العشوائية عبر [SWS_CRYPT_30098] والاستعلام عن عداد أمان مدعوم بالأجهزة عبر [SWS_CRYPT_20098] (SWArchitecture ص. 71).

لا يتم إنشاء موارد المفاتيح الدائمة مباشرة، بل يتم تحميلها عبر مواضع مفاتيح منطقية (KeySlots). ولهذا الغرض، توفر بيئة التشغيل الدالتين [SWS_CRYPT_50004] لعمليات الوصول المقتصرة على القراءة و[SWS_CRYPT_50005] لمواضع المفاتيح القابلة للكتابة، واللتين تتحققان من صحة معرّف المثيل الممرر مقابل تكوين الأذونات (SWS Cryptography ص. 87، AUTOSAR AP TPS ManifestSpecification ص. 649). وعبر مثيل KeySlot الذي تم الحصول عليه، يمكن الاستعلام عن مثيل المزود المرتبط باستخدام [SWS_CRYPT_30403]، مما يضمن الحفاظ على الارتباط الوثيق بين موقع التخزين وبيئة التنفيذ (SWS Cryptography ص. 39).

بمجرد أن يصبح مثيل CryptoProvider متاحاً، فإنه يعمل كمصنع مركزي لإنشاء سياقات عمل تشفيرية محددة (AUTOSAR AP EXP SWArchitecture ص. 99). وتشمل السياقات القابلة للإنشاء، من بين أمور أخرى، سياقات لمولدات الأرقام العشوائية ([SWS_CRYPT_20741])، وشيفرات الكتل والتدفق المتماثلة ([SWS_CRYPT_20742])، والتشفير الموثق ([SWS_CRYPT_20745])، ورموز مصادقة الرسائل ([SWS_CRYPT_20746])، ودوال التجزئة التشفيرية ([SWS_CRYPT_20747])، والتشفير أو فك التشفير غير المتماثل ([SWS_CRYPT_20750]، [SWS_CRYPT_20751])، بالإضافة إلى سياقات التوقيع والتحقق ([SWS_CRYPT_20756]، [SWS_CRYPT_20757]) (EXP SWArchitecture ص. 99).

سياقات التحويل التشفيري ومعالجة البيانات

تتبع معالجة البيانات التشفيرية في ara::crypto دورة حياة صارمة قائمة على الحالة، والتي تضمن فك الارتباط بين تكوين الخوارزميات، وربط المفاتيح، ومعالجة الدفق (AUTOSAR AP TR SystemTests ص. 211). وبعد تخصيص السياق عبر المزود، يكون السياق في البداية في حالة غير مهيأ. ولا ينتقل السياق إلى الحالة الجاهزة إلا من خلال تمرير مفتاح متوافق عبر التحميلات الزائدة الخاصة بالنوع لـ SetKey() – على سبيل المثال للمفاتيح المتماثلة ([SWS_CRYPT_23911])، أو المفاتيح الخاصة ([SWS_CRYPT_23515])، أو مباشرة من KeySlot ([SWS_CRYPT_50043]) (AUTOSAR AP TR SystemTests ص. 206).

بالنسبة لعمليات المعالجة بالتدفق، يتم بدء التحويل عبر Start()، اختياريًا مع تمرير متجه تهيئة أو سياق ([SWS_CRYPT_22110]، [SWS_CRYPT_23625]، [SWS_CRYPT_50020]). بعد ذلك، يمكن تغذية كتل البيانات تدريجيًا عبر Update() ([SWS_CRYPT_21113]، [SWS_CRYPT_22113]، [SWS_CRYPT_50139]). في التشفير الموثق (AEAD)، تفصل الواجهة بشكل صارم بين البيانات المقترنة، التي تتم معالجتها عبر [SWS_CRYPT_20313]، وحمولة البيانات السرية عبر [SWS_CRYPT_50074] (EXP SWArchitecture ص. 104). يتم إتمام التحويل عبر Finish() أو FinishEncrypt() ([SWS_CRYPT_21115]، [SWS_CRYPT_23618]، [SWS_CRYPT_50075])، وبناءً على ذلك يمكن قراءة وسوم التوثيق أو مجاميع التحقق عبر GetDigest() ([SWS_CRYPT_21116]، [SWS_CRYPT_22116]).

إلى جانب وضع التدفق، تدعم فئات السياق مثل الشفرات المتماثلة والشفرات الموثقة الاستدعاءات الفردية المدمجة عبر [SWS_CRYPT_50047] أو [SWS_CRYPT_50078]، مما يتيح تشفير أو فك تشفير الحمولات القصيرة بكفاءة دون استدعاء بروتوكولي متعدد المراحل (SWS Cryptography ص. 58). وإذا تطلب الأمر إلغاء عملية قيد التشغيل، فإن استدعاء Cancel() ([SWS_CRYPT_50023]، [SWS_CRYPT_50046]) أو Reset() ([SWS_CRYPT_50212]) يعيد السياق بصورة حتمية إلى الحالة الأولية المطهرة (EXP SWArchitecture ص. 100).

diag_context_state Uninit Uninitialized Ready Ready (Key Deployed) Uninit->Ready SetKey() Ready->Uninit Reset() Streaming Processing (Started / Update) Ready->Streaming Start() Streaming->Uninit Cancel() / Reset() Streaming->Streaming Update() / UpdateConfidentialData() Finished Finished / Digest Available Streaming->Finished Finish() / FinishEncrypt() Finished->Uninit Reset() Finished->Ready Start() (Re-use)

مخطط الحالة: دورة حياة سياقات التحويل التشفيري من التخصيص حتى إعادة التعيين. المصادر: [SWS_CRYPT_20742]، [SWS_CRYPT_23911]، [SWS_CRYPT_23625]، [SWS_CRYPT_50046]، [SWS_CRYPT_50212].

إدارة المفاتيح، والتغليف، وإنفاذ الصلاحيات

يتم تصنيف المفاتيح التشفيرية في نموذج الكائنات كـ CryptoObject أو RestrictedUseObject (AUTOSAR AP EXP SWArchitecture ص. 111، EXP SWArchitecture ص. 111). يميز معيار المنصة بين المفاتيح المتماثلة (SymmetricKey)، والمفاتيح اللامتماثلة الخاصة (PrivateKey)، والمفاتيح العامة (PublicKey) (SWS Cryptography ص. 291). يمكن إنشاء مادة المفاتيح مباشرة عبر CryptoProvider ([SWS_CRYPT_20721]، [SWS_CRYPT_20722]) أو اشتقاقها من مادة مفاتيح موجودة عن طريق تهيئة KeyDerivationFunctionCtx ([SWS_CRYPT_20748]) بمفتاح أساسي وتنفيذه عبر [SWS_CRYPT_21515] (EXP SWArchitecture ص. 108).

لإنفاذ مبدأ الحد الأدنى من الامتيازات، يحمل كل كائن مفتاح قيود استخدام غير قابلة للتغيير (AllowedUsageFlags)، والتي يمكن الاستعلام عنها عبر [SWS_CRYPT_50092] (AUTOSAR AP TR SystemTests ص. 177). تتحقق حزمة التشفير عند كل محاولة ربط (SetKey) مما إذا كانت عملية السياق الهدف (مثل التشفير، أو التوقيع، أو الاشتقاق، أو التصدير) مصرحًا بها بواسطة أعلام المفتاح، وترفض الاستخدامات غير المسموح بها بشكل صارم (AUTOSAR AP TR SystemTests ص. 177، SWArchitecture ص. 95). يمكن تحديد التعيين الافتراضي لخوارزمية ما عبر [SWS_CRYPT_20955].

للتبادل الآمن للمفاتيح، تنفذ الوحدة عدة إجراءات قياسية: في الاتفاق اللامتماثل على المفاتيح (Diffie-Hellman / ECDH)، يتم عبر [SWS_CRYPT_20758] إنشاء KeyAgreementPrivateCtx يُربط به المفتاح الخاص ([SWS_CRYPT_21313])؛ ثم تحسب الدالة [SWS_CRYPT_21312] المفتاح المتماثل الهدف المشترك مع مراعاة المفتاح العام للطرف المقابل (AUTOSAR AP TR SystemTests ص. 179). في آلية تغليف المفاتيح (KEM)، يقوم KeyEncapsulatorPublicCtx ([SWS_CRYPT_20752]) بتغليف مفتاح متماثل بواسطة [SWS_CRYPT_21813]، بينما يجري الطرف المقابل فك التغليف عبر KeyDecapsulatorPrivateCtx ([SWS_CRYPT_20753]) بواسطة [SWS_CRYPT_21412] (AUTOSAR AP TR SystemTests ص. 173، AUTOSAR TR AdaptivePlatformSystemTests ص. 188). وللنقل المحمي للمفاتيح، يتوفر تغليف المفاتيح ([SWS_CRYPT_24014]، [SWS_CRYPT_24016]) والتصدير الآمن ([SWS_CRYPT_20728]) (AUTOSAR AP TR SystemTests ص. 174، AUTOSAR AP TR SystemTests ص. 182).

الاتفاق غير المتماثل على المفاتيح (ECDH) والاشتقاق المتماثلApp (CRYPTOApp01)CryptoProviderKeyAgreementPrivateCtxSymmetricKeyCreateKeyAgreementPrivateCtx(algId)Result<KeyAgreementPrivateCtx::Sptr>SetKey(privKey)Result<void>AgreeKey(otherSidePublicKey, targetAlgId, allowedUsage)إنشاء كائن مفتاح متماثلResult<SymmetricKey::Sptr>

مخطط تسلسلي: الاتفاق اللامتماثل على المفاتيح عبر Diffie-Hellman واشتقاق مفاتيح الاستخدام المتماثلة. المصادر: [SWS_CRYPT_20758]، [SWS_CRYPT_21313]، [SWS_CRYPT_21312]، AUTOSAR AP TR SystemTests ص. 179.

تتم معالجة التوقيعات اللامتماثلة عبر سياقات منفصلة: يتم التوقيع عبر SignerPrivateCtx ([SWS_CRYPT_20756]) والدالة [SWS_CRYPT_23512]، بينما يتم التحقق عبر VerifierPublicCtx ([SWS_CRYPT_20757]) والدالة [SWS_CRYPT_24112] (AUTOSAR AP TR SystemTests ص. 164، SWArchitecture ص. 84). وإذا تم تحديث KeySlot في الخلفية بواسطة خدمات إدارة ذات امتيازات (مثل تجديد المفاتيح عبر OTA)، فيمكن إخطار المكتبات المستهلكة عبر مراقب تحديث بواسطة [SWS_CRYPT_30404] لإعادة تحميل مادة المفاتيح الخاصة بها بشكل متزامن (AUTOSAR AP SWS Cryptography ص. 36).

إنشاء التوقيع والتحقق منه عبر SignerPrivateCtx و VerifierPublicCtxApplikationCryptoProviderSignerPrivateCtxVerifierPublicCtxCreateSignerPrivateCtx(algId)Result<SignerPrivateCtx::Sptr>SetKey(privKey)Result<void>Sign(message, signatureBuffer, format)Result<std::size_t> (حجم التوقيع)Use Case: التحقق من التوقيعCreateVerifierPublicCtx(algId)Result<VerifierPublicCtx::Sptr>SetKey(pubKey)Result<void>Verify(message, signature, format)Result<bool> (صالح / غير صالح)

مخطط تسلسلي: مسار إنشاء التوقيع والتحقق منه باستخدام سياقات خاصة وعامة منفصلة. المصادر: [SWS_CRYPT_20756]، [SWS_CRYPT_23515]، [SWS_CRYPT_23512]، [SWS_CRYPT_20757]، [SWS_CRYPT_24115]، [SWS_CRYPT_24112]، AUTOSAR AP TR SystemTests ص. 164.

إدارة شهادات X.509، والتحقق من صحتها، ومجموعاتها

يوفر النظام الفرعي ara::crypto::x509 وظائف قياسية للبنى التحتية للمفاتيح العامة (PKI) (EXP SWArchitecture ص. 116). يدعم X509Provider المركزي ([SWS_CRYPT_40099]) كلاً من ذاكرة الجلسة المؤقتة ومستودعات التخزين الدائمة (SWS Cryptography ص. 39). يتم تحليل الشهادات وسلاسل الشهادات من مخازن البايتات المؤقتة عبر [SWS_CRYPT_40614] أو [SWS_CRYPT_40616]. لطلب شهادات هوية جديدة، يمكن للتطبيقات عبر [SWS_CRYPT_40640] إنشاء طلبات توقيع شهادات (CSR) موقعة تشفيريًا، حيث يتم تمرير سياق الموقع والاسم المميز (DN) عبر [SWS_CRYPT_50186] (AUTOSAR AP TR SystemTests ص. 189).

للتحقق من المطابقة والصلاحية، ينشئ التطبيق عبر [SWS_CRYPT_50125] نسخة من CertificateValidationCtx. تُضاف مراسي الثقة (Trust Anchors) إلى هذا السياق عبر [SWS_CRYPT_50117]، وتُحدد خيارات التحقق عبر [SWS_CRYPT_50120]، وتُودع الطوابع الزمنية المرجعية عبر [SWS_CRYPT_50121]. يتم فحص السلسلة الهرمي مقابل سلسلة الثقة عبر [SWS_CRYPT_50122] أو [SWS_CRYPT_50123] (AUTOSAR AP TR SystemTests ص. 194). لتسجيل إلغاءات الشهادات، يمكن استيراد قوائم إلغاء الشهادات (CRL) ([SWS_CRYPT_50183]) أو دمج استعلامات حالة الشهادات عبر الإنترنت (OCSP وفقًا للمعيار RFC 6960) في حالة التحقق عبر [SWS_CRYPT_40626] و[SWS_CRYPT_50185] و[SWS_CRYPT_50124] (AUTOSAR AP TR SystemTests ص. 194).

لفصل مستهلكي الشهادات عن مثيلات الشهادات الفردية عند تغيير المفاتيح، يدعم البيان مفهوم CryptoCertificateGroup (AUTOSAR AP TPS ManifestSpecification ص. 657). تحمّل التطبيقات المستهلكة عبر [SWS_CRYPT_50126] كامل مجموعة الشهادات المرتبطة منطقيًا، بينما يمكن لخدمات الإدارة ذات الامتيازات استبدال الشهادات أو تطهيرها ديناميكيًا عبر [SWS_CRYPT_50127] و[SWS_CRYPT_50128] (AUTOSAR AP TPS ManifestSpecification ص. 657).

التحقق من صحة شهادة X.509 مع سلسلة الشهادات و CRL و OCSPApplikationX509ProviderValidationCtxCreateCertificateValidationCtx()Result<CertificateValidationCtx::Sptr>AddTrustedCertificate(rootCert)Result<void>ImportCrl(instanceSpecifier, crlBytes, format)Result<CertificateValidationStatus>AddOcspResponse(ocspResponse, issuerCert)Result<CertificateValidationStatus>ValidateCertificate(targetCert)Result<CertificateValidationResult::Sptrc>

مخطط تسلسلي: التحقق من صحة شهادة X.509 مع سلسلة الشهادات واستيراد CRL وفحص حالة OCSP عبر الإنترنت. المصادر: [SWS_CRYPT_40099]، [SWS_CRYPT_50125]، [SWS_CRYPT_50122]، [SWS_CRYPT_50183]، [SWS_CRYPT_50124]، AUTOSAR AP TR SystemTests ص. 194.

نمذجة البيان، وواجهات المنافذ، والنشر

يتم دمج الموارد التشفيرية في بنية المركبة الكلية بشكل تعريفي عبر النموذج التعريفي لـ AUTOSAR في بيان ARXML (AUTOSAR AP TPS ManifestSpecification ص. 244). تنمذج مكونات البرمجيات متطلباتها الأمنية على مستوى التصميم عبر منافذ (RPortPrototype)، والتي يتم تصنيفها بواسطة تخصصات من CryptoInterface: CryptoKeySlotInterface لمواضع المفاتيح، وCryptoCertificateInterface لموارد الشهادات، وCryptoProviderInterface للوصول إلى موفري التنفيذ (TPS ManifestSpecification ص. 167، AUTOSAR AP TPS ManifestSpecification ص. 245). تحدد سمات الواجهات بشكل غير قابل للتغيير ما إذا كانت حقوق القراءة أو الكتابة ممنوحة (writeAccess) وما هي أنواع الكائنات المسموح بها (TPS ManifestSpecification ص. 168، TPS ManifestSpecification ص. 438).

في بيان النشر، يربط تكوين الهدف (Target Configuration) نماذج المنافذ الأولية المجردة بموارد المنصة المادية الفعلية (AUTOSAR AP TPS ManifestSpecification ص. 649). يعيّن عنصر النموذج التعريفي CryptoKeySlotToPortPrototypeMapping منفذ إحدى العمليات إلى CryptoKeySlot مصرّح به في CryptoModuleInstantiation الخاص بالجهاز (TPS ManifestSpecification ص. 614، TPS ManifestSpecification ص. 646). وبطريقة مماثلة، يخصص CryptoCertificateToPortPrototypeMapping الشهادات (TPS ManifestSpecification ص. 655). في وقت التشغيل، يمثل مسار المنفذ في البيان ara::core::InstanceSpecifier، الذي يمرره كود التطبيق إلى دوال التحميل مثل [SWS_CRYPT_50004] (ManifestSpecification ص. 154).

لتفاعلات المنصة بين المجموعات الوظيفية – على سبيل المثال بين Communication Management (SecOC، وIPsec، وTLS) وحزمة التشفير – لا توجد نماذج منافذ أولية تقليدية (TPS ManifestSpecification ص. 861). هنا يتم بدلاً من ذلك تكوين InstanceSpecifier بواسطة عناصر مشتقة من FunctionalClusterInteractsWithFunctionalClusterMapping، على سبيل المثال ComKeyToCryptoKeySlotMapping أو SecOcJobMapping (TPS ManifestSpecification ص. 861، TPS ManifestSpecification ص. 864، ManifestSpecification ص. 411). كذلك يدمج تأمين الدوام (Persistency Deployment) ومجاميع تحقق مجموعات البرمجيات مفاتيحها وموفريها عبر تعيينات البيان القياسية هذه (TPS ManifestSpecification ص. 867، TPS ManifestSpecification ص. 896).

التصرف في حالة الخطأ

يتبع مفهوم معالجة الأخطاء في وحدة التشفير الإرشادات الصارمة لـ Adaptive Platform الخاصة بالكود الآمن من الأخطاء والخالي من الاستثناءات (noexcept) (SWS Cryptography ص. 145). ترجع جميع العمليات المتزامنة حالات الأخطاء عبر نوع النتيجة العام ara::core::Result<T, ara::core::ErrorCode> (SWS Cryptography ص. 208). رموز الأخطاء متجذرة في نطاق أخطاء خاص، والذي يتم تمثيله عبر [SWS_CRYPT_19902]؛ ويمكن الاستعلام عن اسمه عبر [SWS_CRYPT_19950] وعن الوصف النصي للخطأ عبر [SWS_CRYPT_19953]. بالنسبة للتطبيقات التي تستخدم معالجة الاستثناءات صراحة، توفر الحزمة نوع الاستثناء CryptoException ([SWS_CRYPT_19906]) والدالة المساعدة [SWS_CRYPT_19954].

تتضمن رموز الأخطاء الوظيفية النموذجية انتهاكات السياق مثل CryptoErrc::kUninitializedContext، عند بدء عمليات تشفيرية قبل استدعاء SetKey()، أو CryptoErrc::kInvalidInputSize، إذا كانت المخازن المؤقتة لبيانات الإدخال الممررة لا تتطابق مع شبكة الكتل المطلوبة (SWS Cryptography ص. 208). في عمليات التسلسل والتحويل، يشير CryptoErrc::kUnknownIdentifier إلى قيم وسائط غير مدعومة وCryptoErrc::kIncompatibleArguments إلى مجموعات معلمات غير متوافقة (SWS Cryptography ص. 145). عند الوصول إلى موارد المفاتيح، تمنع الحزمة عمليات الوصول غير المصرح بها عن طريق إرجاع kAccessViolation (SWS Cryptography ص. 87). وعند تحليل امتدادات شهادات X.509 المخصصة المعيبة، يتوقف المحلل مع CryptoErrc::kRuntimeFault (SWS Cryptography ص. 280، SWS Cryptography ص. 356).

لاستعادة حالة محددة في السياق بعد حدوث خطأ، وتجنب تسرب الذاكرة أو بقاء مخازن التدفق المؤقتة معلقة في الخفي (daemon)، يجب على المتصل تطهير السياق. يتم ذلك إما بشكل محدد عبر استدعاء Cancel() ([SWS_CRYPT_50046]، [SWS_CRYPT_50089])، مما يؤدي إلى تجاهل التحويلات غير المكتملة، أو عبر Reset() ([SWS_CRYPT_50212])، وهو ما يعيد السياق بالكامل إلى الحالة التي كان عليها قبل ربط المفتاح (EXP SWArchitecture ص. 100).

أدلة تفصيلية إضافية

تستند مواصفات وحدة Cryptography إلى مجموعة من المتطلبات المركزية ووثائق البنية، التي يتم تصنيفها فيما يلي:

تم إنشاء دليل الوحدة هذا بواسطة مساعد إشراف يعمل بالذكاء الاصطناعي بناءً على مواصفة AUTOSAR Adaptive الإصدار R25-11.

function: 261 type alias: 43 variable: 43 class: 34 enumeration: 5 struct: 1

خريطة المواضيع

عرض التفاصيل

اختر عنصرًا من المخطط.

ara::crypto

Crypto Error Domain class that provides interfaces as defined by ara::core::ErrorDomain such as a name of the Crypto Error Domain or message

يرث من ara::core::ErrorDomain

Exception type thrown for CRYPTO errors.

يرث من ara::core::Exception

Formatter فئة

Formatter object interface.

128 bit secure counter made up of two uint64_t’s representing the most significant and least significant bits

Serializable object interface.

Return a reference to the global CryptoErrorDomain.

constexpr const ara::core::ErrorDomain & GetCryptoErrorDomain () noexcept;

This factory method shall create or return the existing instance of a specific Crypto Provider.

ara::core::Result< cryp::CryptoProvider::Sptr > LoadCryptoProvider (const ara::core::InstanceSpecifier &iSpecify) noexcept;
LoadFormatter دالة

Factory that creates a Formatter.

ara::core::Result< Formatter::Sptr > LoadFormatter () noexcept;
LoadKeySlot دالة

Load a read-only key slot. This factory method shall load the information associated with the specified KeySlot into a KeySlot object.

ara::core::Result< cryp::KeySlot::Sptr > LoadKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;

Load a writeable key slot. This factory method shall load the information associated with the specified KeySlot into a WriteableKeySlot object.

ara::core::Result< cryp::WriteableKeySlot::Sptr > LoadWriteableKeySlot (const ara::core::InstanceSpecifier &iSpecify) noexcept;

This factory method shall create or return the existing instance of the singleton X.509 Provider.

ara::core::Result< x509::X509Provider::Sptr > LoadX509Provider () noexcept;
MakeErrorCode دالة

Makes Error Code instances from the Crypto Error Domain. The returned ErrorCode instance always references to CryptoErrorDomain.

constexpr ara::core::ErrorCode MakeErrorCode (CryptoErrorDomain::Errc code, ara::core::ErrorDomain::SupportDataType data) noexcept;
CryptoErrc تعداد

Defines the error codes for the ara::crypto::CryptoErrorDomain

enum class CryptoErrc : ara::core::ErrorDomain::CodeType {...};
CryptoObjectType تعداد

Enumeration of all types of crypto objects, i.e. types of content that can be stored to a key slot.

enum class CryptoObjectType : std::uint8_t {...};
CryptoTransform تعداد

Enumeration of cryptographic transformation directions.

enum class CryptoTransform : std::uint8_t {...};
AlgId اسم نوع بديل

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgId = ara::core::StringView;
AlgIdString اسم نوع بديل

Type for holding String of algorithm according to standardized format described in the chapter ’Naming Convention’.

using AlgIdString = ara::core::String;
AllowedUsageFlags اسم نوع بديل

Type for holding bit-flags of allowed usages of a key.

using AllowedUsageFlags = std::uint32_t;
FormatId اسم نوع بديل

A container type for the encoding format identifiers.

using FormatId = std::uint32_t;
LoadCryptoProvider اسم نوع بديل

Type for holding StringView of algorithm according to standardized format described in the chapter ’Naming Convention’.

ReadOnlyMemRegion اسم نوع بديل

Read-Only Memory Region (intended for [in] arguments)

using ReadOnlyMemRegion = ara::core::Span<const std::uint8_t>;
ReadWriteMemRegion اسم نوع بديل

Read-Write Memory Region (intended for [out] or [in/out] arguments)

using ReadWriteMemRegion = ara::core::Span<std::uint8_t>;
Timestamp اسم نوع بديل

The key can be used for data decryption.

constexpr AllowedUsageFlags kAllowDataDecryption {0x0002};

The following constants define 1-bit values representing allowed usages. The key can be used for data encryption

constexpr AllowedUsageFlags kAllowDataEncryption {0x0001};

The derived key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowDerivedPlaintextExport {0x4000};

The key can be used as input to a HashFunctionCtx.

constexpr AllowedUsageFlags kAllowHashCalculation {0x1000};

The key can be used as private or public input to key agreement.

constexpr AllowedUsageFlags kAllowKeyAgreement {0x0020};

The key can be used for key derivation.

constexpr AllowedUsageFlags kAllowKeyDerivation {0x0040};

The key can be used as a key encryption key for key unwrapping or key decapsulation.

constexpr AllowedUsageFlags kAllowKeyUnwrapping {0x0100};

The key can be used as a key encryption key for key wrapping or key encapsulation.

constexpr AllowedUsageFlags kAllowKeyWrapping {0x0080};
kAllowMac متغير

The key can be used for MAC generation and verification.

constexpr AllowedUsageFlags kAllowMac {0x0004};
kAllowPersist متغير

The key can persisted.

constexpr AllowedUsageFlags kAllowPersist {0x0200};

The key can be exported in plaintext.

constexpr AllowedUsageFlags kAllowPlaintextExport {0x2000};
kAllowRngInit متغير

The symmetric key can be used for seeding of a RandomGeneratorCtx.

constexpr AllowedUsageFlags kAllowRngInit {0x0800};

The key can be securely exported (protected export)

constexpr AllowedUsageFlags kAllowSecuredExport {0x0400};

The key can be used for signature generation.

constexpr AllowedUsageFlags kAllowSigGeneration {0x0008};

The key can be used for signature verification.

constexpr AllowedUsageFlags kAllowSigVerification {0x0010};

Export DER-encoded value of an object.

constexpr FormatId kFormatDerEncoded {2};

Export PEM-encoded value of an object.

constexpr FormatId kFormatPemEncoded {3};

Export only raw value of an object, i.e., a plain byte array for symmetric keys and ISO/IEC 7816-8 / IEEE P1363 encoding for combined values.

constexpr FormatId kFormatRawValueOnly {1};

Proprietary format that is only valid in the context of a CryptoProvider.

constexpr FormatId kProprietaryFormat {0};

ara::crypto::cryp

Authenticated Cipher Context interface.

يرث من CryptoContext

A common interface for all cryptographic objects recognizable by the Crypto Provider.

يرث من ara::crypto::Serializable

أساس لـ PrivateKey, PublicKey, SymmetricKey

CryptoProviderInterface representing one implementation of a set of cryptographic primitives with a key storage.

Interface for asymmetric decryption.

يرث من CryptoContext

Interface for asymmetric encryption.

يرث من CryptoContext

Hash function interface.

يرث من CryptoContext

Key Agreement Private key Context interface.

يرث من CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Private key Context interface.

يرث من CryptoContext

Key Derivation Function interface.

يرث من CryptoContext

Asymmetric Key Encapsulation Mechanism (KEM) Public key Context interface.

يرث من CryptoContext

KeySlot فئة

KeySlot interface representing a storage location for a key in a CryptoProvider.

أساس لـ WriteableKeySlot

Keyed Message Authentication Code Context interface definition.

يرث من CryptoContext

PrivateKey فئة

Generalized Asymmetric Private Key interface.

يرث من CryptoObject

A contexts for importing secured data such as secret key-material.

يرث من CryptoContext

PublicKey فئة

General Asymmetric Public Key interface.

يرث من CryptoObject

Interface of Random Number Generator Context.

يرث من CryptoContext

Signature Private key Context interface.

يرث من CryptoContext

Interface for Symmetric Cipher Operations.

يرث من CryptoContext

Symmetric Key interface.

يرث من CryptoObject

Context of a symmetric key wrap algorithm.

يرث من CryptoContext

Signature Verification Public key Context interface.

يرث من CryptoContext

WriteableKeySlot interface representing a writeable storage location for a key in a Crypto Provider.

يرث من KeySlot

ara::crypto::x509

X.509 Certificate interface.

يرث من ara::crypto::Serializable

Certificate Validation Context.

X.509 Certificate Validation Result.

Certificate Signing Request (CSR) object interface.

يرث من ara::crypto::Serializable

Interface of OcspResponse.

X509DN فئة

Interface of X.509 Distinguished Name (DN).

يرث من ara::crypto::Serializable

X.509 Provider interface.

Certificate Validation Status.

enum class CertificateValidationStatus : std::uint8_t {...};

On-line Certificate Status Protocol (OCSP) Response Status.

enum class OcspResponseStatus : std::uint8_t {...};
CertificateValidationOptions اسم نوع بديل

Type for holding bit-flags of certificate validation options.

using CertificateValidationOptions = std::uint32_t;
X509ExtendedKeyUsage اسم نوع بديل

X.509 v3 Extended Key Usage type definition.

using X509ExtendedKeyUsage = std::uint32_t;
X509KeyUsage اسم نوع بديل

X.509 v3 Key Usage type definition.

using X509KeyUsage = std::uint32_t;
kClientAuth متغير

TLS WWW client authentication.

constexpr X509ExtendedKeyUsage kClientAuth {0x4000};
kCodeSigning متغير

Signing of downloadable executable code.

constexpr X509ExtendedKeyUsage kCodeSigning {0x2000};
kConstrCrlSign متغير

The key can be used for Certificates Revokation Lists (CRL) signing.

constexpr X509KeyUsage kConstrCrlSign {0x0200};

The key can be used for data encipherment.

constexpr X509KeyUsage kConstrDataEncipherment {0x1000};

The enciphermet key can be used for deciphering only.

constexpr X509KeyUsage kConstrDecipherOnly {0x0080};

The key can be used for digital signature production.

constexpr X509KeyUsage kConstrDigitalSignature {0x8000};

The enciphermet key can be used for enciphering only.

constexpr X509KeyUsage kConstrEncipherOnly {0x0100};

The key can be used for a key agreement protocol execution.

constexpr X509KeyUsage kConstrKeyAgreement {0x0800};

The key can be used for certificates signing.

constexpr X509KeyUsage kConstrKeyCertSign {0x0400};

The key can be used for key encipherment.

constexpr X509KeyUsage kConstrKeyEncipherment {0x2000};

The key can be used in cases requiring the "non-repudiation" guarantee.

constexpr X509KeyUsage kConstrNonRepudiation {0x4000};
kEmailProtection متغير

Email protection.

constexpr X509ExtendedKeyUsage kEmailProtection {0x1000};
kIgnoreCrl متغير

ignore previously imported CRLs

constexpr CertificateValidationOptions kIgnoreCrl {0x0008};
kIgnoreNotAfter متغير

ignore the NotAfter field

constexpr CertificateValidationOptions kIgnoreNotAfter {0x0002};
kIgnoreNotBefore متغير

ignore the NotBefore field

constexpr CertificateValidationOptions kIgnoreNotBefore {0x0001};

ignore all unknown critical extensions

constexpr CertificateValidationOptions kIgnoreUnknownCritical Extensions {0x0004};
kOcspOff متغير

do not require OCSP response during certificate validation. This is the default behavior.

constexpr CertificateValidationOptions kOcspOff {0x0040};

require OCSP response for all certificates of chain

constexpr CertificateValidationOptions kOcspResponseCompleteChain {0x0010};

require OCSP response only for target certificate

constexpr CertificateValidationOptions kOcspResponseTargetOnly {0x0020};
kOCSPSigning متغير

Signing OCSP responses.

constexpr X509ExtendedKeyUsage kOCSPSigning {0x0400};
kServerAuth متغير

TLS WWW server authentication.

constexpr X509ExtendedKeyUsage kServerAuth {0x8000};
kTimeStamping متغير

Binding the hash of an object to a time.

constexpr X509ExtendedKeyUsage kTimeStamping {0x0800};

نطاقات الأسماء

مخطط الفئات UML للوحدة

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::crypto cluster_2 ara::crypto::cryp cluster_3 ara::crypto::x509 nara__crypto__Serializable855 Serializable nara__crypto__CryptoErrorDomain690 CryptoErrorDomain nara__core__ErrorDomain335 ara::core::ErrorDomain nara__crypto__CryptoErrorDomain690->nara__core__ErrorDomain335 nara__crypto__CryptoException764 CryptoException nara__core__Exception792 ara::core::Exception nara__crypto__CryptoException764->nara__core__Exception792 nara__crypto__Formatter631 Formatter nara__crypto__SecureCounter126 «struct» SecureCounter nara__crypto__cryp__AuthCipherCtx142 AuthCipherCtx nara__crypto__cryp__CryptoContext85 CryptoContext nara__crypto__cryp__AuthCipherCtx142->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__CryptoObject679 CryptoObject nara__crypto__cryp__CryptoObject679->nara__crypto__Serializable855 nara__crypto__cryp__DecryptorPrivateCtx616 DecryptorPrivateCtx nara__crypto__cryp__DecryptorPrivateCtx616->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__EncryptorPublicCtx829 EncryptorPublicCtx nara__crypto__cryp__EncryptorPublicCtx829->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__HashFunctionCtx412 HashFunctionCtx nara__crypto__cryp__HashFunctionCtx412->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyAgreementPrivateCtx203 KeyAgreementPrivateCtx nara__crypto__cryp__KeyAgreementPrivateCtx203->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDecapsulatorPrivateCtx748 KeyDecapsulatorPrivateCtx nara__crypto__cryp__KeyDecapsulatorPrivateCtx748->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyDerivationFunctionCtx485 KeyDerivationFunctionCtx nara__crypto__cryp__KeyDerivationFunctionCtx485->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeyEncapsulatorPublicCtx699 KeyEncapsulatorPublicCtx nara__crypto__cryp__KeyEncapsulatorPublicCtx699->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__KeySlot637 KeySlot nara__crypto__cryp__MessageAuthnCodeCtx845 MessageAuthnCodeCtx nara__crypto__cryp__MessageAuthnCodeCtx845->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PrivateKey762 PrivateKey nara__crypto__cryp__PrivateKey762->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__ProtectedKeyImportCtx279 ProtectedKeyImportCtx nara__crypto__cryp__ProtectedKeyImportCtx279->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__PublicKey940 PublicKey nara__crypto__cryp__PublicKey940->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__RandomGeneratorCtx512 RandomGeneratorCtx nara__crypto__cryp__RandomGeneratorCtx512->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SignerPrivateCtx943 SignerPrivateCtx nara__crypto__cryp__SignerPrivateCtx943->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricCipherCtx167 SymmetricCipherCtx nara__crypto__cryp__SymmetricCipherCtx167->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__SymmetricKey111 SymmetricKey nara__crypto__cryp__SymmetricKey111->nara__crypto__cryp__CryptoObject679 nara__crypto__cryp__SymmetricKeyWrapperCtx465 SymmetricKeyWrapperCtx nara__crypto__cryp__SymmetricKeyWrapperCtx465->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__VerifierPublicCtx35 VerifierPublicCtx nara__crypto__cryp__VerifierPublicCtx35->nara__crypto__cryp__CryptoContext85 nara__crypto__cryp__WriteableKeySlot529 WriteableKeySlot nara__crypto__cryp__WriteableKeySlot529->nara__crypto__cryp__KeySlot637 nara__crypto__cryp__CryptoProvider844 CryptoProvider nara__crypto__x509__Certificate240 Certificate nara__crypto__x509__Certificate240->nara__crypto__Serializable855 nara__crypto__x509__CertSignRequest934 CertSignRequest nara__crypto__x509__CertSignRequest934->nara__crypto__Serializable855 nara__crypto__x509__X509DN930 X509DN nara__crypto__x509__X509DN930->nara__crypto__Serializable855 nara__crypto__x509__CertificateValidationCtx565 CertificateValidationCtx nara__crypto__x509__CertificateValidationResult372 CertificateValidationResult nara__crypto__x509__OcspResponse358 OcspResponse nara__crypto__x509__X509Provider937 X509Provider