SYSTEMD-CRYPTENROLL(1) systemd-cryptenroll SYSTEMD-CRYPTENROLL(1)

الاسم

systemd-cryptenroll - تسجيل وحدات/أجهزة الاستيثاق PKCS#11 و FIDO2 و TPM2 في مجلدات LUKS2 معماة

موجز

systemd-cryptenroll [OPTIONS...] [DEVICE]

الوصف

systemd-cryptenroll هي أداة لتسجيل وحدات وأجهزة الاستيثاق الأمنية العتادية في مجلد LUKS2 معمى، والتي يمكن استخدامها لاحقًا لفك تعمية المجلد أثناء الإقلاع. تدعم الأداة تسجيل وحدات الاستيثاق والاعتمادات من الأنواع التالية على وجه التحديد:

1.وحدات الاستيثاق الأمنية والبطاقات الذكية PKCS#11 التي قد تحمل زوج مفاتيح RSA أو EC (مثل مفاتيح YubiKey المتنوعة)
2.وحدات الاستيثاق الأمنية FIDO2 التي تدعم امتداد "hmac-secret" (معظم مفاتيح FIDO2، بما في ذلك مفاتيح YubiKey)
3.أجهزة TPM2 الأمنية
4.عبارات المرور العادية
5.مفاتيح الاسترداد. تشبه عبارات المرور العادية، إلا أنها تُولد عشوائيًا على الحاسوب وبالتالي تتمتع عادةً بعشوائية (entropy) أعلى من عبارات المرور التي يختارها المستخدم. صُممت مجموعة محارفها لضمان سهولة كتابتها مع الحفاظ على عشوائية عالية. كما يمكن مسحها ضوئيًا من الشاشة باستخدام رموز QR. يمكن استخدام مفاتيح الاسترداد لفك تعمية مجلدات 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-cryptsetup@.service(8).
•إلا أن العكس غير مضمون: قد لا يكون من الممكن فك تعمية المجلدات التي سُجلت باستخدام إصدار أحدث من systemd-cryptenroll باستخدام إصدار أقدم من systemd-cryptsetup.

ومع ذلك، يُنصح عمومًا باستخدام إصدارات متطابقة من systemd-cryptenroll و systemd-cryptsetup، حيث أن هذا هو الأكثر اختبارًا ودعمًا.

قد يكون من المستحسن إعادة تسجيل عمليات التسجيل الحالية للاستفادة من الميزات الأمنية الأحدث عند إضافتها إلى systemd.

فك التعمية

تُفهم الخيارات التالية التي يمكن استخدامها لفك تعمية الجهاز استعدادًا لعمليات التسجيل:

--unlock-key-file=PATH

استخدم ملفًا بدلاً من كلمة سر/عبارة مرور مقروءة من الدخل القياسي لفك تعمية المجلد. يتوقع المسار PATH إلى الملف الذي يحتوي على مفتاحك لفك تعمية المجلد. لا يوجد حاليًا ما يشبه --key-file-offset= أو --key-file-size= لذا يجب أن يحتوي هذا الملف على المفتاح الكامل فقط.

أُضيف في الإصدار 252.

--unlock-fido2-device=PATH

استخدم جهاز FIDO2 بدلاً من كلمة سر/عبارة مرور مقروءة من الدخل القياسي لفك تعمية المجلد. يتوقع جهاز hidraw يشير إلى جهاز FIDO2 (مثل /dev/hidraw1). بدلاً من ذلك، يمكن تحديد القيمة الخاصة "auto" لتحديد عقدة الجهاز لوحدة استيثاق أمنية موصلة حاليًا آليًا (والتي يجب أن تكون واحدة بالضبط). هذا الاكتشاف الآلي غير مدعوم إذا حُدد الخيار --fido2-device= أيضًا. لاحظ أن أجهزة FIDO2 المسجلة حاليًا بدون وحدة LUKS2 مصاحبة (أي --fido2-parameters-in-header=no) لا يمكن استخدامها لفك التعمية.

أُضيف في الإصدار 253.

--unlock-tpm2-device=PATH

استخدم جهاز TPM2 بدلاً من كلمة سر/عبارة مرور مقروءة من الدخل القياسي لفك تعمية المجلد. يتوقع مسار عقدة جهاز يشير إلى شريحة TPM2 (مثل /dev/tpmrm0). بدلاً من ذلك، يمكن تحديد القيمة الخاصة "auto" لتحديد عقدة الجهاز لجهاز TPM2 مكتشف حاليًا آليًا (والذي يجب أن يكون واحدًا بالضبط).

أُضيف في الإصدار 256.

التسجيل البسيط

تُفهم الخيارات التالية التي يمكن استخدامها لتسجيل فك تعمية بسيط قائم على مدخلات المستخدم:

--password

تسجيل كلمة سر/عبارة سر عادية. هذا الأمر يكافئ غالبا cryptsetup luksAddKey، ومع ذلك يمكن دمجه مع --wipe-slot= في استدعاء واحد، انظر أدناه.

أُضيف في الإصدار 248.

--recovery-key

تسجيل مفتاح استرداد. مفاتيح الاسترداد مطابقة لغالبية عبارات السر، لكنها تُنشأ بواسطة الحاسوب بدلا من اختيارها من قبل بشري، وبالتالي فهي تضمن اعتلاجًا عاليًا. يستخدم المفتاح مجموعة محارف يسهل كتابتها، ويمكن مسحها ضوئيًا من الشاشة عبر رمز الاستجابة السريعة (QR code).

أُضيف في الإصدار 248.

تسجيل PKCS#11

الخيار التالي مفهوم ويمكن استخدامه لتسجيل رموز PKCS#11:

--pkcs11-token-uri=المسار

تسجيل رمز أمان PKCS#11 أو بطاقة ذكية (مثل YubiKey). يتوقع مسار PKCS#11 يسمح بالعثور على شهادة X.509 أو مفتاح عام على الرمز. يجب أن يكون المسار مناسبا أيضًا للعثور على مفتاح خاص ذي صلة بعد تغيير نوع الكائن فيه. بدلاً من ذلك، يمكن تحديد القيمة الخاصة "auto"، من أجل تحديد المسار المناسب آليًا إذا وُصل رمز أمان واحد يحتوي على زوج مفاتيح واحد. يمكن استخدام القيمة الخاصة "list" لسرد جميع رموز PKCS#11 المناسبة الموصلة حاليًا.

يجب أن يحتوي رمز 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=مسار

تسجيل رمز أمان FIDO2 الذي ينفذ امتداد "hmac-secret" (على سبيل المثال YubiKey). يتوقع جهاز hidraw يشير إلى جهاز FIDO2 (مثل /dev/hidraw1). بدلاً من ذلك، يمكن تحديد القيمة الخاصة "auto"، من أجل تحديد عقدة الجهاز لرمز أمان موصل حاليًا آليًا (والذي يجب أن يكون هناك واحد فقط). هذا الاكتشاف الآلي غير مدعوم إذا حُدد خيار --unlock-fido2-device= أيضًا. يمكن استخدام القيمة الخاصة "list" لسرد جميع رموز FIDO2 المناسبة الموصلة حاليًا. لاحظ أن العديد من رموز الأمان المادية التي تنفذ FIDO2 تنفذ أيضًا معيار PKCS#11 الأقدم. عادةً ما يكون FIDO2 مفضلاً، نظرًا لأنه أبسط في الاستخدام وأكثر حداثة.

لفك قفل مجلد LUKS2 باستخدام رمز أمان FIDO2 مسجل، حدد خيار fido2-device= في سطر /etc/crypttab المعني:

myvolume /dev/sda1 none fido2-device=auto

انظر crypttab(5) للحصول على مثال أكثر شمولاً لاستدعاء systemd-cryptenroll وسطر /etc/crypttab المطابق له.

أُضيف في الإصدار 248.

--fido2-credential-algorithm=نص

تحديد خوارزمية COSE المستخدمة في إنشاء بيانات الاعتماد. القيمة المبدئية هي "es256". القيم المدعومة هي "es256" و "rs256" و "eddsa".

تشير "es256" إلى ECDSA عبر NIST P-256 مع SHA-256. بينما تشير "rs256" إلى RSA بطول 2048 بت مع حشوة PKCS#1.5 و SHA-256. وتشير "eddsa" إلى EDDSA عبر Curve25519 مع SHA-512.

لاحظ أن المستوثِق الخاص بك قد يختار عدم دعم بعض الخوارزميات.

أُضيف في الإصدار 251.

--fido2-salt-file=مسار

عند تسجيل رمز أمان FIDO2، يحدد المسار إلى ملف أو مقبس AF_UNIX الذي يجب أن نقرأ منه قيمة الملح (salt) لاستخدامها في عملية HMAC التي يقوم بها رمز أمان FIDO2. إذا لم يُحدد هذا الخيار، سيُنشأ الملح عشوائيًا.

أُضيف في الإصدار 257.

--fido2-parameters-in-header=قيمة_منطقية

عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيتم تخزين معلمات FIDO2 في رمز في كتلة LUKS2 الفائقة (superblock). المبدئي هو "yes". إذا ضُبط على "no"، فيجب تحديد خيار fido2-cid= يدويًا في سطر /etc/crypttab المعني جنبًا إلى جنب مع ملف مفتاح. انظر crypttab(5) للحصول على التفاصيل.

أُضيف في الإصدار 257.

--fido2-with-client-pin=قيمة_منطقية

عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب من المستخدم إدخال PIN عند فك قفل المجلد (ميزة FIDO2 "clientPin"). المبدئي هو "yes". (ملاحظة: هذا الإعداد ليس له أي تأثير إذا كان رمز الأمان لا يدعم ميزة "clientPin" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

أُضيف في الإصدار 249.

--fido2-with-user-presence=قيمة_منطقية

عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب من المستخدم التحقق من التواجد (النقر على الرمز، ميزة FIDO2 "up") عند فك قفل المجلد. المبدئي هو "yes". (ملاحظة: هذا الإعداد ليس له أي تأثير إذا كان رمز الأمان لا يدعم ميزة "up" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

أُضيف في الإصدار 249.

--fido2-with-user-verification=قيمة_منطقية

عند تسجيل رمز أمان FIDO2، يتحكم في ما إذا كان سيُطلب التحقق من المستخدم عند فك قفل المجلد (ميزة FIDO2 "uv"). المبدئي هو "no". (ملاحظة: هذا الإعداد ليس له أي تأثير إذا كان رمز الأمان لا يدعم ميزة "uv" على الإطلاق، أو لا يسمح بتمكينها أو تعطيلها.)

أُضيف في الإصدار 249.

تسجيل TPM2

الخيارات التالية مفهومة ويمكن استخدامها لتسجيل أجهزة TPM2:

--tpm2-device=مسار

تسجيل شريحة أمان TPM2. يتوقع مسار عقدة جهاز يشير إلى شريحة TPM2 (مثل /dev/tpmrm0). بدلاً من ذلك، يمكن تحديد القيمة الخاصة "auto"، من أجل تحديد عقدة الجهاز لجهاز TPM2 مكتشف حاليًا آليًا (والذي يجب أن يكون هناك واحد فقط). يمكن استخدام القيمة الخاصة "list" لسرد جميع أجهزة TPM2 المناسبة المكتشفة حاليًا.

لفك قفل مجلد 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=مسار

تسجيل شريحة أمان TPM2 باستخدام مفتاحها العام. يتوقع مسارًا يشير إلى مفتاح TPM2 العام بتنسيق TPM2B_PUBLIC. لا يمكن استخدامه مع --tpm2-device=، لأنه يؤدي نفس العملية، ولكن دون الاتصال بشريحة أمان TPM2؛ بدلاً من ذلك يُحسب التسجيل باستخدام مفتاح TPM2 المقدم. هذا مفيد في الحالات التي لا تتوفر فيها شريحة أمان TPM2 في وقت التسجيل.

يجب أن يكون المفتاح، في معظم الحالات، هو مفتاح جذر التخزين (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=مقبض

يضبط أي مفتاح أب يجب استخدامه للختم (sealing)، باستخدام مقبض (فهرس) TPM للمفتاح. يُستخدم هذا لـ "ختم" (تعمية) سر ويجب استخدامه لاحقًا لـ "فك ختم" (فك تعمية) السر. يتوقع عددًا صحيحًا سداسي عشر بطول 32 بت، مسبوقًا اختياريًا بـ "0x". القيم المسموح بها هي أي فهرس مقبض في النطاقات المستمرة ("0x81000000"-"0x81ffffff") أو العابرة ("0x80000000"-"0x80ffffff"). نظرًا لأن المقابض العابرة تُفقد بعد إعادة ضبط TPM، وقد تفرغ أثناء تبديل سياق TPM، فلا ينبغي استخدامها إلا لحالات استخدام محددة للغاية، مثل الاختبار.

المبدئي هو فهرس مقبض مفتاح جذر التخزين (SRK) "0x81000001". القيمة 0 ستستخدم المبدئي. بالنسبة لمقبض SRK، سيُنشئ مفتاح جديد ويُخزن في TPM إذا لم يكن موجودًا بالفعل؛ وبالنسبة لأي مقبض آخر، يجب أن يكون المفتاح موجودًا بالفعل في TPM عند فهرس المقبض المحدد.

لا ينبغي تغيير هذا إلا إذا كنت تعرف ما تفعله.

أُضيف في الإصدار 255.

--tpm2-pcrs=PCR[+PCR...]

يضبط سجلات تكوين المنصة (TPM2 PCRs) للارتباط بها عند طلب التسجيل عبر --tpm2-device=. يأخذ قائمة بمدخلات PCR، حيث يبدأ كل مدخل باسم أو فهرس رقمي في النطاق 0...23، متبوعًا اختياريًا بـ ":" واسم خوارزمية تجزئة (تحدد بنك PCR)، متبوعًا اختياريًا بـ "=" وقيمة ملخص التجزئة. تُفصل مدخلات PCR المتعددة بواسطة "+". إذا حُددت سلسلة فارغة، فسيُربط التسجيل بلا سجلات 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=قيمة_منطقية

عند تسجيل جهاز TPM2، يتحكم في ما إذا كان سيُطلب من المستخدم إدخال PIN عند فك قفل المجلد بالإضافة إلى الارتباط بـ PCR، بناءً على استيثاق سياسة TPM2. المبدئي هو "no". على الرغم من تسميته 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=مسار

يضبط سياسة PCR الموقعة من TPM2 لربط التعمية بها. يقبل خيار --tpm2-public-key= مسارًا لمفتاح RSA عام بترميز PEM، لربط التعمية به. إذا لم يُحدد هذا صراحةً، ولكن وُجد ملف tpm2-pcr-public-key.pem في أحد الأدلة /etc/systemd/ أو /run/systemd/ أو /usr/lib/systemd/ (بهذا الترتيب)، فسيُستخدم آليًا. يأخذ خيار --tpm2-public-key-pcrs= قائمة بفهارس TPM2 PCR للارتباط بها (نفس صيغة --tpm2-pcrs= الموضحة أعلاه). إذا لم يُحدد، فالمبدئي هو 11 (أي أن هذا يربط السياسة بأي صورة نواة موحدة يمكن تقديم توقيع PCR لها).

لاحظ الفرق بين --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=المسار

يضبط سياسة pcrlock الخاصة بـ TPM2 لربط التعمية بها. يتوقع مسارًا لملف سياسة pcrlock كما أُنشئ بواسطة أداة systemd-pcrlock(8). إذا سُجل جهاز TPM2 ولم يُستخدم هذا الخيار ولكن وُجد ملف pcrlock.json في /run/systemd/ أو /var/lib/systemd/ فسيُستخدم آليًا. عيّن سلسلة فارغة لإيقاف هذا السلوك.

أُضيف في الإصدار 255.

خيارات أخرى

الخيارات الإضافية التالية مفهومة:

--wipe-slot=الفتحة[,الفتحة...]

يمسح فتحة مفتاح LUKS2 واحدة أو أكثر. يأخذ قائمة مفصولة بفاصلة لفهارس الفتحات الرقمية، أو السلاسل الخاصة "all" (لمسح جميع فتحات المفاتيح)، أو "empty" (لمسح جميع فتحات المفاتيح التي تُفتح بعبارة سر فارغة)، أو "password" (لمسح جميع فتحات المفاتيح التي تُفتح بعبارة سر تقليدية)، أو "recovery" (لمسح جميع فتحات المفاتيح التي تُفتح بمفتاح استرداد)، أو "pkcs11" (لمسح جميع فتحات المفاتيح التي تُفتح برمز PKCS#11)، أو "fido2" (لمسح جميع فتحات المفاتيح التي تُفتح برمز FIDO2)، أو "tpm2" (لمسح جميع فتحات المفاتيح التي تُفتح بشريحة TPM2)، أو أي مزيج من هذه السلاسل أو الفهارس الرقمية، وفي هذه الحالة تُمسح جميع الفتحات التي تطابق أيًا منها. كإجراء أمان، تُرفض أي عملية تمسح جميع الفتحات دون استثناء (بحيث لا يمكن فك قفل المجلد على الإطلاق بعد الآن، ما لم يُعرف مفتاح المجلد).

يمكن استخدام هذا المفتاح بمفرده، وفي هذه الحالة تُنفذ عملية المسح المطلوبة فقط. يمكن استخدامه أيضًا بالاقتران مع أي من خيارات التسجيل المذكورة أعلاه، وفي هذه الحالة يُكتمل التسجيل أولاً، وفقط عند نجاحه تُنفذ عملية المسح — ودائمًا ما تُستثنى الفتحة المضافة حديثًا من المسح. وبالتالي يمكن استخدام دمج التسجيل ومسح الفتحات لتحديث التسجيلات الموجودة:

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

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

أُضيف في الإصدار 257.

-h، --help

اطبع نص مساعدة قصير واخرج.

--version

اطبع سلسلة إصدار قصيرة واخرج.

--no-pager

لا تمرر المخرجات إلى برنامج عرض (pager).

بيانات الاعتماد

يدعم systemd-cryptenroll منطق بيانات اعتماد الخدمة كما هو مُنفذ بواسطة ImportCredential=/LoadCredential=/SetCredential= (انظر systemd.exec(5) للحصول على التفاصيل). تُستخدم بيانات الاعتماد التالية عند تمريرها:

cryptenroll.passphrase، cryptenroll.new-passphrase

قد تحتوي على عبارة السر لفك قفل المجلد بها/لتسجيلها حديثًا.

أُضيف في الإصدار 256.

cryptenroll.tpm2-pin، cryptenroll.new-tpm2-pin

قد تحتوي على PIN الخاص بـ TPM2 لفك قفل المجلد به/لتسجيله حديثًا.

أُضيف في الإصدار 256.

cryptenroll.fido2-pin

إذا سُجل رمز FIDO2، فقد تحتوي هذه على PIN الخاص بالرمز.

أُضيف في الإصدار 256.

cryptenroll.pkcs11-pin

إذا سُجل رمز PKCS#11، فقد تحتوي هذه على 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