بنية الأمان: المجموعة الفنية الكاملة
Vaultaire لا يعتمد على خوارزمية واحدة أو خدعة ذكية واحدة. ويستخدم بنية تشفير ذات طبقات حيث يكون لكل مكون وظيفة محددة، ولا يؤدي فشل أي طبقة إلى المساس بالطبقات الأخرى. إليك كل قرار بشأن التشفير والبروتوكول والتصميم الذي يقف بين بياناتك الخاصة وبقية العالم. يستخدم مكدس أمان
يستخدم Vaultaire التشفير الموثّق AES-256-GCM لفهارس الخزائن والمفاتيح المغلّفة ورؤوس الملفات والمحتوى والصور المصغرة والبيانات الوصفية. يشتق PBKDF2-HMAC-SHA512 مفتاح خزنة محليًا من النمط ومن قيمة salt على مستوى الجهاز مخزّنة في Keychain. يغلّف مفتاح الخزنة هذا مفتاحًا رئيسيًا عشوائيًا منفصلًا بطول 256 بت، وهو الذي يشفّر الملفات عبر CryptoKit داخل عملية التطبيق.
مكدس التشفير
يستخدم Vaultaire عدة آليات تشفير تعمل معًا، وكل واحدة مختارة لمهمة محددة. يحوّل PBKDF2 بيانات الاعتماد البشرية إلى مفتاح خزنة أو مفتاح استرداد. يحمي AES-256-GCM الفهارس والأغلفة والبيانات الوصفية والصور المصغرة ومحتوى الملفات. يفصل المفتاح الرئيسي العشوائي تشفير الملفات طويل الأمد عن النمط القابل للتغيير. يحمي Keychain وحماية البيانات في iOS قيمة salt وسجلات الاسترداد المرتبطة بالجهاز أثناء قفله. لا يوجد مفتاح فك تشفير لدى المزوّد يمنح المطوّر وصولًا روتينيًا إلى النص الصريح للخزنة.
هذا ليس تعقيدًا لذاته. تعالج كل طبقة سطح هجوم مختلفًا. يجمع AES-256-GCM بين السرية والمصادقة، فيفشل النص المشفر المعدَّل في التحقق. يرفع PBKDF2 تكلفة اختبار كل نمط أو عبارة. ويعني المفتاح الرئيسي العشوائي أن تغيير النمط يعيد تغليف مفتاح واحد بدل إعادة تشفير كل ملف. تحمي حماية بيانات Keychain قيمة salt وسجلات الاسترداد المحلية، بينما يقرّ التطبيق بأن التشفير المتماثل يجري في ذاكرة العملية.
تشكّل هذه الطبقات معًا بنية دفاع متعدد الطبقات، لكنها ليست كلها حواجز مستقلة. يمكن التحقق من نمط مخمَّن عبر اسم ملف الفهرس ومصادقة AES-GCM، ويستطيع جهاز مكسور الحماية ومخترَق أن يراقب المفاتيح أو النص الصريح داخل عملية التطبيق. لذلك تعتمد البنية على إنتروبيا بيانات الاعتماد وتكلفة PBKDF2 وحماية جهاز iOS والتعامل الصحيح مع التشفير الموثّق، إضافة إلى قوة AES نفسها.
تخيّل التسلسل الهرمي في Vaultaire مجموعة من الحاويات المقفلة المتداخلة. يفتح مفتاح الخزنة المشتق من النمط الفهرس الموثّق. يُطلق الفهرس مفتاحًا رئيسيًا عشوائيًا مغلّفًا. يحمي هذا المفتاح الرئيسي الملفات والبيانات الوصفية. يساهم كل من PBKDF2 وAES-GCM وKeychain وحماية البيانات في iOS بخصائص مختلفة، لكن ادعاء الأمان لا يتجاوز قوة السلسلة كاملة.
AES-256-GCM: تشفير الملفات
كل صورة وفيديو ومستند مخزّن في Vaultaire مشفّر بـ AES-256-GCM، أي معيار التشفير المتقدم بمفتاح 256 بت في وضع Galois/Counter. يستخدم Vaultaire أيضًا AES-GCM لفهارس الخزائن ورؤوس الملفات والصور المصغرة وأغلفة المفاتيح. الخوارزمية وحجم المفتاح قياسيان؛ لكن أمان Vaultaire ما زال يعتمد على التعامل مع قيم nonce وإدارة المفاتيح وقوة بيانات الاعتماد وصحة التنفيذ.
يشير “256” في AES-256 إلى طول المفتاح بالبت. يحتوي المفتاح 256 بت على 2256 القيم المحتملة. لوضع هذا الرقم في منظوره الصحيح: هناك ما يقرب من 10 ذرات80 في الكون المرئي. لو كانت كل ذرة عبارة عن كمبيوتر عملاق يختبر مليار مفتاح في الثانية، ويعمل منذ الانفجار الكبير، لكانوا قد اكتشفوا أقل من تريليون من تريليون من واحد بالمائة من مساحة المفتاح. AES-256 تشفير بالقوة الغاشمة. ليس اليوم. ليس هذا القرن. ليس قبل أن تحترق النجوم
لماذا يعتبر وضع GCM مهمًا
AES عبارة عن كتلة تشفير، تقوم بتشفير البيانات في أجزاء 128 بت. يحدد “mode” كيفية دمج هذه القطع. يوفر GCM (وضع Galois/Counter) شيئين لا توفرهما الأوضاع الأبسط مثل CBC: التشفير المتوازي والمصادقة المضمنة.
تعتبر قطعة المصادقة بالغة الأهمية. يقوم GCM بإنشاء علامة تشفير لكل ملف مشفر. تعمل هذه العلامة كختم للعبث. إذا تم تعديل حتى بت واحد من النص المشفر، سواء بواسطة ممثل ضار أو قطاع قرص تالف، فلن تتطابق علامة المصادقة، وسيفشل فك التشفير. لا تحصل على بيانات تالفة. تحصل على إشارة واضحة بأن هناك خطأ ما. تسمى هذه الخاصية التشفير المصادق عليه، وهي تمنع فئة كاملة من الهجمات حيث يقوم الخصم بتعديل البيانات المشفرة لمعالجة المخرجات التي تم فك تشفيرها.
PBKDF2: اشتقاق المفتاح
يشتق Vaultaire مفاتيح مختلفة لمهام مختلفة. يمرّ النمط وقيمة salt على مستوى الجهاز مخزّنة في Keychain عبر PBKDF2-HMAC-SHA512 بعدد 600000 تكرار لإنتاج مفتاح الخزنة المحلي. ينتج اشتقاق حتمي من النمط مفتاح النسخ الاحتياطي السحابي المنفصل. وتمرّ عبارة الاسترداد بعد توحيد صيغتها عبر 800000 تكرار من PBKDF2 لإنتاج مفتاح مغلّف الاسترداد. لا يحوّل أي من هذه الاشتقاقات بيانات اعتماد بشرية إلى 256 بت من الإنتروبيا لمجرد أن طول الناتج 256 بت.
كيف يحمي PBKDF2 النمط الخاص بك
الفكرة الأساسية في PBKDF2 هي العمل المتعمَّد. يأخذ النمط بعد تسلسله أو العبارة بعد توحيد صيغتها ويشغّل مئات الآلاف من تكرارات HMAC-SHA512. يدفع المستخدم الشرعي هذه التكلفة مرة واحدة عند كل محاولة فتح أو استرداد. أما المهاجم فيدفعها عن كل مرشَّح، مع أن العتاد المتوازي وخيارات التنفيذ تحدد معدل التخمين الحقيقي.
يضبط Vaultaire خوارزمية PBKDF2 على 600000 تكرار للمفاتيح المشتقة من الأنماط. هذا يجعل كل تخمين أغلى، لكن أي تقدير مسؤول للهجوم يجب أن يذكر زمنًا مقاسًا لكل مرشَّح وافتراضات العتاد. عند مللي ثانية واحدة بالضبط لكل مرشَّح، تستغرق مليار محاولة متتالية نحو 11.6 يومًا، لا سنوات. ولا يوسّع الناتج بطول 256 بت إنتروبيا نمط يمكن توقعه.
يستخدم اشتقاق النمط المحلي قيمة salt عشوائية واحدة على مستوى الجهاز، مخزّنة كعنصر Keychain من فئة WhenUnlockedThisDeviceOnly. قيمة salt ليست سرًا، وتتشاركها الخزائن الموجودة على هذا الجهاز. تمنع استخدام جدول مُعَدّ لجهاز واحد مباشرة على جهاز آخر له قيمة salt مختلفة، لكنها لا تجبر المهاجم على البدء من جديد لكل خزنة على الجهاز نفسه.
AES-256-GCM: حماية البيانات الوصفية
تشفير محتويات الملف ليس كافيًا. أسماء الملفات وتواريخ الإنشاء وأبعاد الصور المصغرة وبنية المخزن كلها بيانات تعريف، ويمكن أن تكون بيانات التعريف كاشفة تمامًا مثل البيانات نفسها. يخبر الملف المسمى “tax-return-2025.pdf” المهاجم بما بداخله بالضبط حتى لو كانت المحتويات مشفرة. يظهر الطابع الزمني عندما استخدمت المخزن. يكشف حجم الصورة المصغرة ما إذا كان الشيء عبارة عن صورة أم مقطع فيديو. يقوم
يحمي Vaultaire هذه البيانات الوصفية بـ AES-256-GCM، لا بـ ChaCha20. تُرمَّز أسماء الملفات وأنواع MIME داخل رؤوس الملفات المشفرة. يحتوي فهرس الخزنة المشفر على سجلات الملفات والتواريخ ومعلومات الحجم وتخطيط التخزين والمفتاح الرئيسي المغلّف. وتُشفَّر بيانات الصور المصغرة أيضًا بالمفتاح الرئيسي العشوائي.
لماذا التشفير المصادق عليه للبيانات الوصفية؟
تحتاج البيانات الوصفية إلى السلامة كما تحتاج إلى السرية. ينتج AES-GCM وسم مصادقة لكل قيمة مشفرة، فيستطيع Vaultaire رفض رأس أو فهرس أو صورة مصغرة أو مغلّف معدَّل بدل قبول نص صريح يتحكم فيه المهاجم. يستخدم التصميم عمدًا بنية تشفير موثّق واحدة عبر صيغ التخزين هذه بدل ادعاء تنوع في الشفرات لا يقدمه التنفيذ.
الشفرة نفسها لا تعني إعادة استخدام المفتاح نفسه أو قيمة nonce نفسها دون تمييز. يحمي مفتاح الخزنة الفهرس ويغلّف المفتاح الرئيسي العشوائي؛ ويحمي المفتاح الرئيسي مادة الملفات. ينشئ CryptoKit صناديق مختومة موثّقة بقيم nonce جديدة، بينما تشتق صيغة البث في Vaultaire قيمة nonce مميزة لكل قطعة مرقّمة. تأتي الضمانات المهمة من فصل المفاتيح وانضباط قيم nonce والمصادقة، لا من شفرة ثانية للبيانات الوصفية.
بنية المعرفة الصفرية
هنا سؤال يستحق طرحه حول أي تطبيق أمان: ماذا يحدث إذا تم اختراق الشركة التي تقف وراءه، أو تم استدعاؤها، أو ببساطة تحولت إلى شركة ضارة؟
مع معظم التطبيقات، تكون الإجابة غير مريحة. فهي تحتفظ ببياناتك أو مفاتيحك أو كليهما. أمر من المحكمة يجبرها على تسليمها. يكشف خرق البيانات ذلك. وقد يصل إليها موظف مارق. أمن التطبيق لا يزيد قوةً على الأمن التشغيلي للشركة، والتاريخ يوضح أن الشركات تتعرض للاختراق بانتظام.
لا يشغّل Vaultaire حسابًا أو خدمة تخزين تتلقى نمطك أو عبارتك السرية أو مفاتيح فك التشفير أو محتويات الخزنة المقروءة. يجري التشفير وفك التشفير داخل عملية التطبيق على جهازك. عند تفعيل النسخ الاحتياطي على iCloud، يرسل التطبيق نصًا مشفرًا موثّقًا إلى قاعدة بيانات CloudKit الخاصة بك، لا إلى خدمة خزائن يتحكم فيها Vaultaire.
ماذا تعني المعرفة الصفرية في الممارسة العملية
إذا سلّمت جهة إنفاذ قانون إلى Vaultaire أمر استدعاء يطلب النص الصريح للخزنة، فإن الشركة لا تملك النمط أو عبارة الاسترداد أو مفتاح الخزنة أو مفتاح النسخ الاحتياطي أو المفتاح الرئيسي اللازم لفك تشفيره. تقع سجلات iCloud المشفرة في قاعدة بيانات CloudKit الخاصة بالمستخدم. أما على الجهاز فتُحفظ مواد الاسترداد في قاعدة بيانات Keychain مشفرة، وتوجد المفاتيح المتماثلة في ذاكرة التطبيق بينما يشفّر CryptoKit خزنة مفتوحة أو يفك تشفيرها.
حدود المزوّد هذه خاصية معمارية، لا وعدًا بأن كل جزء من بيئة العميل يقع خارج نموذج الثقة. لا يملك Vaultaire مفتاح فك تشفير على الخادم يستطيع تسليمه لاسترداد الخزائن روتينيًا. أما التطبيق المنشور وiOS والجهاز غير المكسور وتنفيذ التشفير فما زالت تعالج بيانات مقروءة، ويجب الوثوق بها بناءً على ذلك.
تزيل حدود المزوّد في Vaultaire مفتاح فك التشفير الذي تملكه الشركة من التصميم العادي. هذا يقلل ما يمكن أن يكشفه اختراق Vaultaire نفسه. لكنه لا يلغي الحاجة إلى الوثوق بالعميل المنشور أو iOS أو حالة الجهاز أو تنفيذ التسلسل الهرمي للمفاتيح الموثّقة. ويجب تقييم هذه الحدود كلًّا على حدة بدل دمجها في وعد مطلق.
Keychain وحدود عملية التطبيق
يستطيع Secure Enclave من Apple حماية المفاتيح الخاصة المدعومة ويشارك في أجزاء من بنية أمان المنصة، لكن واجهاته البرمجية العامة لا تقبل مفتاحًا متماثلًا عشوائيًا مشتقًا عبر PBKDF2 ولا تنفّذ عمليات AES-GCM على ملفات Vaultaire داخل المعالج المساعد. لذلك لا يصف Vaultaire شفرة خزنته بأنها AES داخل Secure Enclave.
يستخدم Vaultaire عناصر كلمات مرور عامة عادية في iOS Keychain لقيمة salt العشوائية للجهاز، ولقاعدة بيانات الاسترداد المشفرة، وللمفتاح العشوائي الذي يحمي تلك القاعدة. تستخدم هذه العناصر فئة الوصول WhenUnlockedThisDeviceOnly. ينشئ Keychain وحماية البيانات حدودًا فعلية للجهاز، خاصة أثناء قفل الهاتف، لكن هذه البنية تختلف عن مفتاح Secure Enclave غير قابل للتصدير.
عندما ترسم النمط، يشتق CommonCrypto مفتاح الخزنة داخل عملية التطبيق. ثم يستخدم CryptoKit ومحرك CryptoEngine في Vaultaire بايتات المفاتيح المتماثلة في تلك العملية لمصادقة الفهرس وفك تشفيره، وفك تغليف المفتاح الرئيسي، ومعالجة الملفات. يمسح التطبيق الحالة النشطة عند القفل، لكن مهاجمًا يملك صلاحيات كافية ويراقب جلسة مفتوحة يحظى بفرصة مختلفة عن فاحص لا يملك إلا النص المشفر لجهاز مقفل.
يستطيع نظام تشغيل مكسور الحماية أو مخترَق أن يستهدف إدخال النمط أو ذاكرة التطبيق أو المعاينات المفكوكة أو الملفات المصدَّرة أو الشاشة. يوصي Vaultaire بجهاز iPhone حديث التحديث وغير مكسور الحماية لأن التصميم يعتمد على عزل العمليات في iOS وعلى Keychain وحماية البيانات. ولا يدّعي أن الاختراق على مستوى الجذر يجعل المفاتيح المتماثلة لخزنة مفتوحة بعيدة المنال.
متجهات التهيئة لكل ملف
عندما تقوم بتشفير ملفين متطابقين بنفس المفتاح، فإن التنفيذ الساذج قد ينتج نصًا مشفرًا متطابقًا. هذه مشكلة. المهاجم الذي يرى نقطتين متماثلتين مشفرتين يعرف، دون فك تشفير أي شيء، أن الملفين الأصليين متماثلان. في خزنة مليئة بالصور، يمكن لهذا النوع من تحليل الأنماط الكشف عن المعلومات حتى من خلال التشفير.
يتجنب Vaultaire النص المشفر الحتمي بتوليد قيمة nonce جديدة لكل عملية ختم بـ AES-256-GCM. تُختم رؤوس الملفات ومحتواها كلٌّ على حدة، وتستخدم الملفات الكبيرة صيغة بث موثّقة بقيمة nonce أساسية عشوائية وقيمة nonce مميزة لكل قطعة مرقّمة. لذلك لا تنتج نسختان من الصورة نفسها التمثيل المشفر نفسه.
تُخزَّن قيم nonce مع النص المشفر وليست سرية؛ شرطها الأمني هو التفرد تحت مفتاح معين. يطلب Vaultaire قيم nonce بطول 96 بت من مولّد Apple العشوائي الآمن تشفيريًا للتشفير لمرة واحدة، ويسجل قيمة nonce الأساسية في رأس البث. يتحدد خطر التصادم بعدد عمليات التشفير تحت مفتاح واحد، لذلك يولّد التنفيذ قيمًا جديدة بدل تقديم حجم 96 بت على أنه ضمان ثابت مدى الحياة بنسبة واحد إلى 296.
إدارة الذاكرة: مسح حالة المفتاح النشط
من الأخطاء الشائعة في برامج الأمان ترك البيانات الحساسة في الذاكرة بعد عدم الحاجة إليها. يمكن أن تستمر مفاتيح التشفير وكلمات المرور المشتقة والبيانات التي تم فك تشفيرها في ذاكرة الوصول العشوائي (RAM) لفترة طويلة بعد انتهاء التطبيق من استخدامها. يمكن لأدوات التحليل الجنائي تفريغ ذاكرة الجهاز والبحث عن هذه البقايا، وهي تقنية تُعرف باسم هجوم التمهيد البارد أو تحليل تفريغ الذاكرة.
يحدّ Vaultaire من مدة بقاء حالة المفتاح النشط وبيانات الواجهة المفكوكة متاحة. عندما يُقفل التطبيق أو تنتهي الجلسة، تتبع شيفرته عدة مسارات تنظيف:
- تُسقَط حالة الخزنة النشطة. يزيل التطبيق جلسة مفتاح الخزنة الحالية ويتطلب فتحًا آخر قبل عرض محتوى الخزنة.
- تعمل أغلفة المفاتيح على مسح المخازن المؤقتة المملوكة. تقوم حاويات البايت الآمنة في Vaultaire بالكتابة فوق المخازن المؤقتة التي تمتلكها عندما يتم إلغاء تخصيص تلك الحاويات.
- تم إبطال حالة المفتاح الرئيسي المخزنة مؤقتًا. يتم تجاهل المفتاح الرئيسي الذي تم فك تشفيره والمحتفظ به للفهرس المفتوح على مسارات القفل وإعادة تعيين ذاكرة التخزين المؤقت ذات الصلة.
- يتم مسح ذاكرة التخزين المؤقت لواجهة المستخدم التي تم فك تشفيرها حيث يتم التحكم فيها بواسطة Vaultaire. تعمل عملية تنظيف الصور المصغرة والمعاينة على تقليل حالة التطبيق المتبقية، دون المطالبة بالتحكم في كل نسخة يتم إجراؤها بواسطة Swift، iOS، أو عملية أخرى.
في المرة التالية التي يُفتح فيها Vaultaire في حالة القفل، ترسم النمط فيشتق التطبيق مفتاح الخزنة من جديد قبل أن يتمكن من مصادقة الفهرس وفك تغليف المفتاح الرئيسي. هذا تنظيف للجلسة، لا ادعاء بأن كل نسخة عابرة في الذاكرة خضعت لمسح متعدد المرات يمكن إثباته أو بأن مرجع مفتاح في Secure Enclave قد أُتلف. يؤدي الانهيار إلى استعادة iOS لموارد العملية، لكن شيفرة التنظيف لا تستطيع العمل بعد كل إنهاء مفاجئ.
الأسئلة المتداولة
هل AES-256 غير قابل للكسر حقًا؟
AES-256 شفرة كتلية قياسية خضعت لتحليل مكثف. لا يُعرف علنًا أي هجوم عملي على AES-256-GCM المنفّذ تنفيذًا صحيحًا بمفتاح عشوائي بطول 256 بت، لكن هذا لا يجعل الخزنة كلها غير قابلة للاختراق. تبقى إنتروبيا بيانات الاعتماد وتكلفة PBKDF2 والتعامل مع قيم nonce وحفظ المفاتيح والاسترداد وحالة الجهاز وعيوب التنفيذ مسارات للهجوم.
لماذا نستخدم PBKDF2 لاشتقاق المفتاح؟
يستخدم Vaultaire خوارزمية PBKDF2-HMAC-SHA512 عبر CommonCrypto: عدد 600000 تكرار للأنماط و800000 لعبارات الاسترداد. يستخدم اشتقاق النمط المحلي قيمة salt عشوائية واحدة على مستوى الجهاز مخزّنة في Keychain. يرفع PBKDF2 تكلفة كل تخمين لكنه لا يضيف إنتروبيا إلى النمط، لذلك يعتمد زمن الهجوم على قوة بيانات الاعتماد وسرعة العتاد المقاسة والتوازي.
ما هي البيانات التي يرسلها Vaultaire إلى خوادمه؟
خوادم Vaultaire لا تتلقى أبدًا ملفاتك أو نمطك أو مفاتيحك. يتصل التطبيق بأربعة أنواع من الخدمات. النسخ الاحتياطي المشفر على iCloud مفعّل افتراضيًا ويخزّن نصًا مشفرًا في حساب iCloud الخاص بك، مشفرًا على جهازك بمفتاح لا تملكه Apple؛ ويمكنك إيقافه. تذهب بيانات الاستخدام والأعطال المجهولة إلى PostHog افتراضيًا، ويمكنك إيقافها من الإعدادات. إذا أرسلت ملاحظات، تتلقى خدمة الملاحظات لدينا رسالتك وبريد الرد الاختياري ولغتك وإصدار التطبيق. أثناء تفعيل التحليلات، يمر رمز إسناد إعلانات Apple ومعرّف تثبيت عشوائي عبر خدمتنا إلى Apple. تمر المزامنة والمشاركة، عند استخدامهما، عبر Apple CloudKit.
هل يمكن لجهاز iPhone مكسور الحماية أن يعرّض خزنتي للخطر؟
كسر حماية الجهاز (jailbreak) يُضعف حدود الجهاز إضعافًا ملموسًا. تجري عمليات AES-GCM في Vaultaire داخل عملية التطبيق عبر CryptoKit، لذلك توجد بايتات المفاتيح المتماثلة في ذاكرة التطبيق أثناء فتح الخزنة. يستطيع الاختراق على مستوى الجذر استهداف الإدخال أو الذاكرة أو لقطات الشاشة أو المخرجات المفكوكة. ما زال Keychain وحماية البيانات يضيفان حواجز أثناء قفل الجهاز، لكن Vaultaire لا يدّعي أن مفاتيح AES الخاصة به تبقى معزولة داخل Secure Enclave.
كيف يتم تشفير البيانات الوصفية؟
لا يستخدم Vaultaire خوارزمية ChaCha20 للبيانات الوصفية للخزنة. أسماء الملفات وأنواع MIME والطوابع الزمنية وبيانات الصور المصغرة وبنية الخزنة والمفتاح الرئيسي المغلّف كلها محمية داخل نص مشفر موثّق بـ AES-256-GCM. استخدام بنية موثّقة واحدة يُبقي فحوص السرية والسلامة متسقة عبر صيغة التخزين.
ماذا يحدث لمفاتيحى إذا تعطل التطبيق؟
يستعيد iOS موارد العملية المنتهية، ويتطلب التشغيل التالي فتحًا جديدًا قبل أن يستعيد Vaultaire حالة المفتاح النشط. لا ينشئ Vaultaire مراجع AES في Secure Enclave مرتبطة بالجلسة. ومع أن أغلفة المفاتيح تمسح مخازنها المؤقتة عند تحرير الذاكرة وأن مسارات القفل تُسقط الحالة النشطة، فإن Swift وiOS لا يسمحان بضمان الكتابة فوق كل نسخة عابرة قبل الانهيار.
شاهد المكدس أثناء العمل
تشفير موثّق، ومفاتيح متعددة الطبقات، واشتقاق مكلف، ولا مفتاح خزنة لدى المزوّد. نزّل Vaultaire لتستخدم البنية الموضحة هنا، مع حدود الجهاز وبيانات الاعتماد مذكورة بوضوح.
تنزيل Vaultaire مجانًا