| SYSTEMD-CRYPTENROLL(1) | systemd-cryptenroll | SYSTEMD-CRYPTENROLL(1) |
الاسم
systemd-cryptenroll - تسجيل وحدات/أجهزة الاستيثاق PKCS#11 و FIDO2 و TPM2 في مجلدات LUKS2 معماة
موجز
systemd-cryptenroll [OPTIONS...] [DEVICE]
الوصف
systemd-cryptenroll هي أداة لتسجيل وحدات وأجهزة الاستيثاق الأمنية العتادية في مجلد LUKS2 معمى، والتي يمكن استخدامها لاحقًا لفك تعمية المجلد أثناء الإقلاع. تدعم الأداة تسجيل وحدات الاستيثاق والاعتمادات من الأنواع التالية على وجه التحديد:
بالإضافة إلى ذلك، يمكن استخدام الأداة لسرد وحدات الاستيثاق الأمنية المسجلة حاليًا ومسح مجموعة فرعية منها. يمكن دمج العملية الأخيرة مع عملية تسجيل وحدة استيثاق أمنية جديدة، بغرض تحديث أو استبدال عمليات التسجيل.
تدعم الأداة مجلدات LUKS2 فقط، لأنها تخزن معلومات وصف وحدة الاستيثاق في منطقة وحدات الاستيثاق LUKS2 JSON، وهي غير متوفرة في تنسيقات التعمية الأخرى.
تعمل systemd-cryptsetup على الجهاز الذي يسند /var/ إذا لم يُحدد جهاز صراحةً، ولم تُطلب عملية مسح. (لاحظ أنه في الحالة النموذجية حيث تكون /var/ على نفس نظام الملفات كنظام الملفات الرئيس، فإن هذا يسجل مفتاحًا في الجهاز الساند لنظام الملفات الرئيس.)
سياسات و PCRs الخاصة بـ TPM2
تسمح سجلات تكوين المنصة (PCRs) بربط تعمية الأسرار بإصدارات برمجية محددة وحالة نظام معينة، بحيث لا يمكن الوصول إلى المفتاح المسجل (أو "فك ختمه") إلا إذا استخدمت برمجيات أو تهيئة محددة وموثوقة. يمكن إنشاء مثل هذه الارتباطات باستخدام الخيار --tpm2-pcrs= الموضح أدناه.
يمكن أيضًا ربط الأسرار بشكل غير مباشر: تُقدم سياسة موقعة لحالة مزيج معين من قيم PCR، ويُربط السر بالجزء العام من المفتاح المستخدم لتوقيع هذه السياسة. هذا يعني أن مالك المفتاح يمكنه توليد تسلسل من السياسات الموقعة، لإصدارات برمجية وحالات نظام محددة، ويمكن فك تعمية السر طالما كانت حالة الآلة تطابق إحدى تلك السياسات. على سبيل المثال، قد يوفر المورد سياسة كهذه لكل تحديث لنواة+initrd، مما يسمح للمستخدمين بتعمية الأسرار بحيث يمكن فك تعميتها عند تشغيل أي نواة+initrd موقعة من قبل المورد. يمكن إنشاء مثل هذه الارتباطات باستخدام الخيارات --tpm2-public-key= و --tpm2-public-key-pcrs= و --tpm2-signature= الموضحة أدناه.
راجع UAPI.7 Linux TPM PCR Registry[1] للحصول على قائمة رسمية بـ PCRs وكيفية تحديثها. يحتوي الجدول أدناه على مرجع سريع يصف على وجه الخصوص PCRs التي يعدلها نظام systemd.
الجدول 1. تعريفات
PCR المعروفة
| PCR | الاسم | الشرح |
| 0 | platform-code | الشيفرة التنفيذية للبرمجيات الثابتة للنظام الأساس؛ تتغير عند تحديثات البرمجيات الثابتة |
| 1 | platform-config | بيانات البرمجيات الثابتة للنظام الأساس/تهيئة منصة المضيف؛ تحتوي عادةً على الأرقام التسلسلية وأرقام الطراز، وتتغير عند استبدال العتاد الأساسي/المعالج/الرامات |
| 2 | external-code | الشيفرة التنفيذية الممتدة أو القابلة للتوصيل؛ تشمل ذاكرات القراءة فقط (ROMs) الخيارية في العتاد القابل للتوصيل |
| 3 | external-config | بيانات البرمجيات الثابتة الممتدة أو القابلة للتوصيل؛ تشمل معلومات عن العتاد القابل للتوصيل |
| 4 | boot-loader-code | محمل الإقلاع والتعريفات الإضافية، وثنائيات PE التي يستدعيها محمل الإقلاع؛ تتغير عند تحديثات محمل الإقلاع. تقيس sd-stub(7) صور ملحقات النظام المقروءة من ESP هنا أيضًا (راجع systemd-sysext(8)). |
| 5 | boot-loader-config | جدول أقسام GPT؛ يتغير عند إضافة الأقسام أو تعديلها أو إزالتها |
| 7 | secure-boot-policy | حالة الإقلاع الآمن؛ تتغير عند تفعيل/تعطيل وضع الإقلاع الآمن UEFI، أو عند تغيير شهادات البرمجيات الثابتة (PK، KEK، db، dbx، ...). |
| 9 | kernel-initrd | تقيس نواة لينكس جميع ملفات initrds التي تتلقاها في PCR هذا. |
| 10 | ima | يقيس مشروع IMA حالة وقت التشغيل الخاصة به في PCR هذا. |
| 11 | kernel-boot | تقيس systemd-stub(7) صورة نواة ELF، و initrd المضمنة وغيرها من حمولات صورة PE التي وُضعت فيها في PCR هذا. تقيس خدمة systemd-pcrphase.service(8) سلاسل أطوار الإقلاع في PCR هذا عند مراحل بارزة مختلفة من عملية الإقلاع. |
| 12 | kernel-config | تقيس systemd-boot(7) سطر أوامر النواة في PCR هذا. وتقيس systemd-stub(7) أي سطر أوامر نواة مُحدد يدويًا (أي سطر أوامر نواة يتجاوز ذلك المضمن في صورة PE الموحدة) والاعتمادات المحملة في PCR هذا. |
| 13 | sysexts | تقيس systemd-stub(7) أي صور systemd-sysext(8) تمررها إلى النواة المقلعة في PCR هذا. |
| 14 | shim-policy | يقيس مشروع shim شهادات "MOK" الخاصة به وبصماتها في PCR هذا. |
| 15 | system-identity | تقيس systemd-cryptsetup(8) اختياريًا مفتاح المجلد لمجلدات LUKS المنشطة في PCR هذا. تقيس خدمة systemd-pcrmachine.service(8) معرف الآلة machine-id(5) في PCR هذا. تقيس خدمة systemd-pcrfs@.service(8) نقاط الوصل، ومعرفات نظام الملفات UUIDs، واللصائق، ومعرفات UUID للأقسام لأنظمة ملفات الجذر و /var/ في PCR هذا. |
| 16 | debug | تنقيح |
| 23 | application-support | دعم التطبيقات |
بشكل عام، تُرابط المجلدات المعماة بمزيج من PCRs 7 و 11 و 14 (في حال استخدام shim/MOK). للسماح بتحديثات إصدارات البرمجيات الثابتة ونظام التشغيل، لا يُنصح عادةً باستخدام PCRs مثل 0 و 2، حيث أن شيفرة البرامج التي تغطيها يجب أن تكون مغطاة بالفعل بشكل غير مباشر من خلال الشهادات المقاسة في PCR 7. يُفضل عادةً التحقق من خلال بصمات الشهادات على التحقق من خلال القياسات المباشرة لأنها أقل عرضة للكسر في سياق تحديثات نظام التشغيل/البرمجيات الثابتة: ستتغير القياسات مع كل تحديث، لكن التواقيع يجب أن تظل دون تغيير. راجع UAPI.7 Linux TPM PCR Registry[1] لمزيد من المناقشة.
القيود
لاحظ أنه عند تسجيل مفتاح جديد من أحد الأنواع الخمسة المدعومة والمذكورة أعلاه حاليًا، يلزم أولاً تقديم عبارة مرور، أو مفتاح استرداد، أو وحدة استيثاق FIDO2، أو مفتاح TPM2. لا يُدعم حاليًا فك تعمية جهاز باستخدام مفتاح PKCS#11 بغرض تسجيل مفتاح PKCS#11 جديد. لذلك، إذا رُغب في تبديل المفاتيح مستقبلاً، يُنصح عمومًا بضمان تسجيل عبارة مرور، أو مفتاح استرداد، أو وحدة استيثاق FIDO2، أو مفتاح TPM2 دائمًا.
لاحظ أيضًا أن دعم تسجيل وحدات استيثاق FIDO2 المتعددة محدود حاليًا. عند تسجيل وحدات استيثاق FIDO2 متعددة، ستقوم systemd-cryptsetup بطلبات مسبقة لمحاولة تحديد أي من الوحدات المسجلة موصلة حاليًا. ومع ذلك، لا يمكن ذلك لوحدات FIDO2 التي تتطلب تحقق المستخدم (UV، عادةً عبر المقاييس الحيوية)، وفي هذه الحالة ستلجأ إلى تجربة كل وحدة مسجلة واحدة تلو الأخرى. سيؤدي هذا إلى مطالبات متعددة برمز PIN وتحقق المستخدم. لا ينطبق هذا القيد على وحدات PKCS#11.
التوافقية
تتطور التكنولوجيا الأمنية في systemd وفي الصناعة العامة باستمرار. لتقديم أفضل الضمانات الأمنية، تُحدث طريقة تسجيل أجهزة TPM2 و FIDO2 و PKCS#11 بانتظام في الإصدارات الأحدث من systemd. وعند حدوث ذلك، تُعطى ضمانات التوافقية التالية:
ومع ذلك، يُنصح عمومًا باستخدام إصدارات متطابقة من systemd-cryptenroll و systemd-cryptsetup، حيث أن هذا هو الأكثر اختبارًا ودعمًا.
قد يكون من المستحسن إعادة تسجيل عمليات التسجيل الحالية للاستفادة من الميزات الأمنية الأحدث عند إضافتها إلى systemd.
فك التعمية
تُفهم الخيارات التالية التي يمكن استخدامها لفك تعمية الجهاز استعدادًا لعمليات التسجيل:
--unlock-key-file=PATH
أُضيف في الإصدار 252.
--unlock-fido2-device=PATH
أُضيف في الإصدار 253.
--unlock-tpm2-device=PATH
أُضيف في الإصدار 256.
التسجيل البسيط
تُفهم الخيارات التالية التي يمكن استخدامها لتسجيل فك تعمية بسيط قائم على مدخلات المستخدم:
--password
أُضيف في الإصدار 248.
--recovery-key
أُضيف في الإصدار 248.
تسجيل PKCS#11
الخيار التالي مفهوم ويمكن استخدامه لتسجيل رموز PKCS#11:
--pkcs11-token-uri=المسار
يجب أن يحتوي رمز PKCS#11 على زوج مفاتيح RSA أو EC والذي سيُستخدم لفك قفل مجلد LUKS2. بالنسبة لـ RSA، يُعمى مفتاح مجلد مُنشأ عشوائيًا بمفتاح عام في الرمز، ويُخزن في منطقة ترويسة رمز LUKS2 JSON. لفك قفل المجلد، فك تُعمى مفتاح المجلد المخزن بمفتاح خاص في الرمز. بالنسبة لـ ECC، تُستخدم خوارزمية ECDH: نُنشئ زوجًا من مفاتيح EC في نفس مجموعة EC، ثم نشتق سرًا مشتركًا باستخدام المفتاح الخاص المنشأ والمفتاح العام في الرمز. يُستخدم السر المشترك المشتق كمفتاح للمجلد. يُخزن المفتاح العام المنشأ في منطقة ترويسة رمز LUKS2 JSON. ويُمسح المفتاح الخاص المنشأ. لفك قفل مجلد، نشتق السر المشترك بالمفتاح العام المخزن ومفتاح خاص في الرمز.
لفك قفل مجلد LUKS2 باستخدام رمز أمان PKCS#11 مسجل، حدد خيار pkcs11-uri= في سطر /etc/crypttab المعني:
myvolume /dev/sda1 none pkcs11-uri=auto
انظر crypttab(5) للحصول على مثال أكثر شمولاً لاستدعاء systemd-cryptenroll وسطر /etc/crypttab المطابق له.
أُضيف في الإصدار 248.
تسجيل FIDO2
الخيارات التالية مفهومة ويمكن استخدامها لتسجيل رموز FIDO2:
--fido2-device=مسار
لفك قفل مجلد LUKS2 باستخدام رمز أمان FIDO2 مسجل، حدد خيار fido2-device= في سطر /etc/crypttab المعني:
myvolume /dev/sda1 none fido2-device=auto
انظر crypttab(5) للحصول على مثال أكثر شمولاً لاستدعاء systemd-cryptenroll وسطر /etc/crypttab المطابق له.
أُضيف في الإصدار 248.
--fido2-credential-algorithm=نص
تشير "es256" إلى ECDSA عبر NIST P-256 مع SHA-256. بينما تشير "rs256" إلى RSA بطول 2048 بت مع حشوة PKCS#1.5 و SHA-256. وتشير "eddsa" إلى EDDSA عبر Curve25519 مع SHA-512.
لاحظ أن المستوثِق الخاص بك قد يختار عدم دعم بعض الخوارزميات.
أُضيف في الإصدار 251.
--fido2-salt-file=مسار
أُضيف في الإصدار 257.
--fido2-parameters-in-header=قيمة_منطقية
أُضيف في الإصدار 257.
--fido2-with-client-pin=قيمة_منطقية
أُضيف في الإصدار 249.
--fido2-with-user-presence=قيمة_منطقية
أُضيف في الإصدار 249.
--fido2-with-user-verification=قيمة_منطقية
أُضيف في الإصدار 249.
تسجيل TPM2
الخيارات التالية مفهومة ويمكن استخدامها لتسجيل أجهزة TPM2:
--tpm2-device=مسار
لفك قفل مجلد LUKS2 باستخدام شريحة أمان TPM2 مسجلة، حدد خيار tpm2-device= في سطر /etc/crypttab المعني:
myvolume /dev/sda1 none tpm2-device=auto
انظر crypttab(5) للحصول على مثال أكثر شمولاً لاستدعاء systemd-cryptenroll وسطر /etc/crypttab المطابق له.
استخدم --tpm2-pcrs= (انظر أدناه) لضبط فهارس TPM2 PCR التي سيُربط التسجيل بها.
أُضيف في الإصدار 248.
--tpm2-device-key=مسار
يجب أن يكون المفتاح، في معظم الحالات، هو مفتاح جذر التخزين (SRK) من شريحة أمان TPM2 محلية. إذا استخدم مفتاح من مقبض مختلف (ليس SRK)، فيجب تحديد فهرس المقبض الخاص به باستخدام --tpm2-seal-key-handle=.
تكتب خدمة systemd-tpm2-setup.service(8) مفتاح SRK في /run/systemd/tpm2-srk-public-key.tpm2b_public آليًا أثناء الإقلاع، بالتنسيق الصحيح.
بدلاً من ذلك، يمكنك استخدام systemd-analyze srk لاسترداد SRK من شريحة أمان TPM2 صراحةً. انظر systemd-analyze(1) للحصول على التفاصيل. مثال:
systemd-analyze srk > srk.tpm2b_public
أُضيف في الإصدار 255.
--tpm2-seal-key-handle=مقبض
المبدئي هو فهرس مقبض مفتاح جذر التخزين (SRK) "0x81000001". القيمة 0 ستستخدم المبدئي. بالنسبة لمقبض SRK، سيُنشئ مفتاح جديد ويُخزن في TPM إذا لم يكن موجودًا بالفعل؛ وبالنسبة لأي مقبض آخر، يجب أن يكون المفتاح موجودًا بالفعل في TPM عند فهرس المقبض المحدد.
لا ينبغي تغيير هذا إلا إذا كنت تعرف ما تفعله.
أُضيف في الإصدار 255.
--tpm2-pcrs=PCR[+PCR...]
مثال: --tpm2-pcrs=boot-loader-code+platform-config+boot-loader-config يحدد وجوب استخدام سجلات PCR رقم 4 و1 و5.
مثال: --tpm2-pcrs=7:sha256 يحدد وجوب استخدام سجل PCR رقم 7 من بنك SHA256.
مثال: --tpm2-pcrs=4:sha1=3a3f780f11a4b49969fcaa80cd6e3957c33b2275 يحدد وجوب استخدام سجل PCR رقم 4 من بنك SHA1، وستُستخدم قيمة ملخص التجزئة 3a3f780f11a4b49969fcaa80cd6e3957c33b2275 بدلاً من قراءة قيمة PCR الحالية.
أُضيف في الإصدار 248.
--tpm2-with-pin=قيمة_منطقية
لاحظ أن إدخال PIN غير صحيح عند فك القفل يؤدي إلى زيادة آلية حظر هجوم القاموس في TPM، وقد يحظر المستخدمين لفترة طويلة، اعتمادًا على ضبطه. آلية الحظر هي خاصية عامة لـ TPM، ولا يتحكم systemd-cryptenroll في آلية الحظر أو يضبطها. يمكنك استخدام أدوات tpm2-tss لفحص أو ضبط حظر هجوم القاموس، باستخدام الأمرين tpm2_getcap(1) و tpm2_dictionarylockout(1) على التوالي.
أُضيف في الإصدار 251.
--tpm2-public-key=مسار، --tpm2-public-key-pcrs=PCR[+PCR...]، --tpm2-signature=مسار
لاحظ الفرق بين --tpm2-pcrs= و --tpm2-public-key-pcrs=: الأول يربط فك التعمية بقيم PCR الحالية والمحددة؛ بينما الثاني يربط فك التعمية بأي مجموعة من قيم PCR التي يمكن تقديم توقيع لها بواسطة المفتاح العام المحدد. وبالتالي فإن الأخير أكثر فائدة في السيناريوهات التي يجب أن تكون فيها تحديثات البرامج ممكنة دون فقدان الوصول إلى جميع مجلدات LUKS2 المعماة سابقًا. كما هو الحال مع --tpm2-pcrs=، يمكن أيضًا استخدام الأسماء المحددة في الجدول أعلاه لتحديد السجلات، على سبيل المثال --tpm2-public-key-pcrs=boot-loader-code+system-identity.
يأخذ خيار --tpm2-signature= مسارًا لملف توقيع TPM2 PCR كما أُنشئ بواسطة أداة systemd-measure(1). إذا لم يُحدد هذا صراحةً، فسيُبحث عن ملف توقيع مناسب tpm2-pcr-signature.json في /etc/systemd/ و /run/systemd/ و /usr/lib/systemd/ (بهذا الترتيب) ويُستخدم. إذا حُدد ملف توقيع أو وُجد، فسيُستخدم للتحقق مما إذا كان يمكن فك قفل المجلد به في ظل حالة PCR الحالية، قبل كتابة الفتحة (slot) الجديدة على القرص. يهدف هذا إلى أن يكون شبكة أمان لضمان عدم فقدان الوصول إلى مجلد إذا سُجل مفتاح عام لا يتوفر له توقيع صالح لحالة PCR الحالية. إذا كان التوقيع المقدم لا يفك قفل حالة PCR الحالية ومزيج المفتاح العام، فلن تُسجل أي فتحة وستفشل العملية. إذا لم يُحدد ملف توقيع أو لم يُعثر عليه، فلن يُجرى مثل هذا التحقق من الأمان.
أُضيف في الإصدار 252.
--tpm2-pcrlock=المسار
أُضيف في الإصدار 255.
خيارات أخرى
الخيارات الإضافية التالية مفهومة:
--wipe-slot=الفتحة[,الفتحة...]
يمكن استخدام هذا المفتاح بمفرده، وفي هذه الحالة تُنفذ عملية المسح المطلوبة فقط. يمكن استخدامه أيضًا بالاقتران مع أي من خيارات التسجيل المذكورة أعلاه، وفي هذه الحالة يُكتمل التسجيل أولاً، وفقط عند نجاحه تُنفذ عملية المسح — ودائمًا ما تُستثنى الفتحة المضافة حديثًا من المسح. وبالتالي يمكن استخدام دمج التسجيل ومسح الفتحات لتحديث التسجيلات الموجودة:
systemd-cryptenroll /dev/sda1 --wipe-slot=tpm2 --tpm2-device=auto --unlock-tpm2-device=auto
الأمر أعلاه سيسجل شريحة TPM2، ثم يمسح جميع تسجيلات TPM2 التي أُنشئت سابقًا على مجلد LUKS2، تاركًا التسجيل المنشأ حديثًا فقط. يمكن أيضًا استخدام دمج المسح والتسجيل لاستبدال التسجيلات من أنواع مختلفة، على سبيل المثال للتغيير من تسجيل PKCS#11 إلى تسجيل FIDO2:
systemd-cryptenroll /dev/sda1 --wipe-slot=pkcs11 --fido2-device=auto
أو لاستبدال كلمة سر فارغة مسجلة بـ TPM2:
systemd-cryptenroll /dev/sda1 --wipe-slot=empty --tpm2-device=auto
أُضيف في الإصدار 248.
--list-devices
أُضيف في الإصدار 257.
-h، --help
--version
--no-pager
بيانات الاعتماد
يدعم systemd-cryptenroll منطق بيانات اعتماد الخدمة كما هو مُنفذ بواسطة ImportCredential=/LoadCredential=/SetCredential= (انظر systemd.exec(5) للحصول على التفاصيل). تُستخدم بيانات الاعتماد التالية عند تمريرها:
cryptenroll.passphrase، cryptenroll.new-passphrase
أُضيف في الإصدار 256.
cryptenroll.tpm2-pin، cryptenroll.new-tpm2-pin
أُضيف في الإصدار 256.
cryptenroll.fido2-pin
أُضيف في الإصدار 256.
cryptenroll.pkcs11-pin
أُضيف في الإصدار 256.
حالة الخروج
عند النجاح، يُعاد الرقم 0، وإلا فيُعاد رمز فشل غير صفري.
أمثلة
يحتوي crypttab(5) و systemd-measure(1) على أمثلة متنوعة تستخدم systemd-cryptenroll.
انظر أيضًا
systemd(1)، systemd-cryptsetup@.service(8)، crypttab(5)، cryptsetup(8)، systemd-measure(1)
ملاحظات
- 1.
- سجل UAPI.7 Linux TPM PCR
ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 260.1 |