| NDCTL-LOAD-KEYS(1) | ndctl Manual | NDCTL-LOAD-KEYS(1) |
نام (NAME)
ndctl-load-keys - بارگذاری kek و عبارتهای عبور رمزگذاریشده در دستهکلید (keyring)
خلاصه دستور (SYNOPSIS)
ndctl load-keys [<گزینهها>]
توضیحات (DESCRIPTION)
دستور load-keys کلید اصلی (kek) و عبارتهای عبور رمزگذاریشده را برای تمام NVDIMMها در دستهکلید کاربر (user keyring) که توسط هسته مدیریت میشود، بارگذاری میکند. انتظار میرود این دستور در طول مقداردهی اولیه و پیش از بارگذاری ماژول هسته libnvdimm، معمولاً از طریق یک initrd، فراخوانی شود. این سازوکار معمولاً با استفاده از یک پیکربندی modprobe تنظیم میشود که دستور را پیش از بارگذاری ماژول اجرا میکند.
نکته
انتظار
میرود
تمام
فایلهای
کلید در این
قالب باشند:
nvdimm_<id>_hostname
نویسه '_'
برای
جداسازی
بخشهای
مختلف در
نام فایل
استفاده
میشود. در
داخل hostname،
استفاده از
نویسه '_'
مجاز است
زیرا آخرین
بخش از نام
فایل به
شمار
میرود.
نکته
این دستور معمولاً هرگز به صورت مستقیم توسط کاربر فراخوانی نمیشود.
گزینهها (OPTIONS)
-p, --key-path=
-t, --tpm-handle=
مشخصات فنی Intel Device Specific Methods (DSM) نگارش v1.7 و v1.8 [1] عملیاتهای مدیریت امنیت زیر را معرفی کرده است: enable passphrase (فعالسازی عبارت عبور)، update passphrase (بهروزرسانی عبارت عبور)، unlock DIMM (قفلگشایی DIMM)، disable security (غیرفعالسازی امنیت)، freeze security (انجماد امنیت)، secure (crypto) erase (پاکسازی امن رمزنگاریشده)، overwrite (بازنویسی)، master passphrase enable (فعالسازی عبارت عبور اصلی)، master passphrase update (بهروزرسانی عبارت عبور اصلی)، و master passphrase secure erase (پاکسازی امن عبارت عبور اصلی).
مدیریت امنیت برای NVDIMMها از دو بخش تشکیل شده است. بخش پیشانه (front end) از چارچوب مدیریت کلید لینوکس (کلیدهای معتمد و رمزگذاریشده [2]) برای ذخیره عبارات عبور رمزگذاریشده در keyring مدیریتشده توسط هسته استفاده میکند. رابط این بخش ابزار keyutils است که از APIهای مدیریت کلید در هسته لینوکس بهره میبرد. بخش پسانه (back end) محموله رمزگشاییشده (که همان عبارت عبور DIMM است) را دریافت کرده و آن را به DIMM منتقل میکند.
برخلاف سایر DSMها که توسط libndctl ساخته شده و از طریق یک ioctl به هسته ارسال میشوند، DSMهای امنیتی از طریق مشخصه sysfs مربوط به security در زیر دستگاه dimm مدیریت میشوند. یک key-ID در مشخصه security نوشته میشود و هسته دادههای کلید مربوطه را از keyring کاربری که توسط هسته نگهداری میشود، واکشی میکند.
فرایند امنیتی با تولید یک master key (کلید اصلی) آغاز میشود که برای مهروموم کردن (رمزگذاری) عبارت عبور DIMM به کار میرود. میتواند یک master key مشترک وجود داشته باشد که برای رمزگذاری عبارت عبور تمام DIMMها استفاده شود، یا یک کلید مجزا برای هر DIMM تولید گردد. به master key اصطلاحاً key-encryption-key (kek) نیز گفته میشود. kek میتواند هم توسط TPM (ماژول بستر قابل اعتماد) روی سامانه تولید شود، یا در غیر این صورت، از System Master Key نیز میتوان به عنوان kek استفاده کرد.
برای اهداف آزمایشی، از یک کلید کاربری با محموله تصادفی نیز میتوان به عنوان یک kek استفاده کرد. برای جزئیات به [2] مراجعه کنید. برای انجام هرگونه عملیات امنیتی، انتظار میرود که kek همانند مثال زیر به keyring کاربری هسته اضافه شده باشد:
# keyctl show Session Keyring 736023423 --alswrv 0 0 keyring: _ses 675104189 --alswrv 0 65534 \_ keyring: _uid.0 680187394 --alswrv 0 0 \_ trusted: nvdimm-master
پیش از انجام هر یک از عملیاتهای امنیتی، تمام ناحیهها (regions) مرتبط با DIMM مورد نظر باید غیرفعال شوند. برای عملیات overwrite، علاوه بر regions، خود dimm نیز باید غیرفعال گردد.
[1]
http://pmem.io/documents/NVDIMM_DSM_Interface-V1.8.pdf
[2]
https://www.kernel.org/doc/Documentation/security/keys/trusted-encrypted.rst
زیربخشهای زیر جزئیات مربوط به هر ویژگی امنیتی را شرح میدهند.
قفلگشایی (UNLOCK)
قفلگشایی توسط هسته انجام میشود، با این حال پیش از آنکه DSM قفلگشایی بتواند توسط هسته صادر شود، باید یک مرحله آمادهسازی رخ دهد. انتظار میرود که از درون initramfs، یک دستور راهاندازی (ndctl load-keys) پیش از بارگذاری ماژول libnvdimm توسط modprobe اجرا شود. این دستور، kek و عبارات عبور رمزگذاریشده را به keyring کاربری هسته تزریق میکند. در طول فرایند probe درایور libnvdimm، اقدامات زیر انجام خواهد شد:
اگر DIMM از پیش قفلگشایی شده باشد، هسته تلاش میکند تا عبارت عبور را مجدداً اعتبارسنجی کند. در صورت عدم موفقیت در اعتبارسنجی مجدد عبارت عبور، هسته امنیت را منجمد (freeze) کرده و هرگونه تغییرات بعدی در پیکربندی امنیتی را غیرمجاز میسازد. یک پارامتر ماژول هسته برای لغو این رفتار در دسترس است..SS "راهاندازی عبارت عبور کاربر (SETUP USER PASSPHRASE)"
برای راهاندازی عبارت عبور برای یک DIMM، انتظار میرود kek مورد استفاده در keyring کاربر هسته وجود داشته باشد. کلید kek عبارت عبور DIMM را با استفاده از قالب کلید enc32 رمزگذاری میکند. عبارت عبور به صورت متن آشکار هرگز توسط کاربر ارائه نشده و برای او قابل مشاهده نیست. در عوض، به صورت تصادفی توسط هسته تولید میشود و فضای کاربری (userspace) به آن دسترسی ندارد. پس از رمزگذاری، یک blob باینری از عبارت عبور در دایرکتوری ذخیرهسازی blob عبارت عبور (/etc/ndctl/keys) نوشته میشود. کاربر مسئول تهیهٔ نسخهٔ پشتیبان از blobهای عبارت عبور در یک مکان امن است.
بهروزرسانی عبارت عبور کاربر (UPDATE USER PASSPHRASE)
عملیات بهروزرسانی عبارت عبور کاربر از همان دستور DSM فعالسازی عبارت عبور کاربر استفاده میکند. بیشتر کار در سمت مدیریت کلید انجام میشود. کاربر این گزینه را دارد که یک kek جدید برای عبارت عبور جدید ارائه دهد، اما ادامهٔ استفاده از kek موجود نیز قابل قبول است. عملیاتهای زیر برای update-passphrase انجام میشوند:
شناسه کلید (key-ID) عبارتعبوری که قرار است حذف شود، در sysfs نوشته میشود. سپس هسته DSM را برای غیرفعالسازی امنیت ارسال میکند، پس از آن عبارتعبور از keyring حذف شده و حباب (blob) عبارتعبور مرتبط با آن پاک میشود.
پاکسازی رمزنگارانه (ایمن) (CRYPTO (SECURE) ERASE)
این عملیات مشابه remove-passphrase است. هسته پیش و پس از این عملیات، دستورالعمل WBINVD را صادر میکند تا از عدم خرابی دادهها ناشی از کَش بیات پردازنده (CPU cache) اطمینان حاصل شود. برای انجام این عملیات، از دستور sanitize-dimm ابزار ndctl به همراه گزینه --crypto-erase استفاده کنید.
بازنویسی (OVERWRITE)
این عملیات با استفاده از گزینه --overwrite برای sanitize-dimm در ndctl فراخوانی میشود. عملیات بازنویسی کل NVDIMM را پاک میکند. این عملیات میتواند زمان قابلتوجهی طول بکشد. نکته: بازگشت موفقیتآمیز دستور، صرفاً به این معناست که بازنویسی با موفقیت آغاز شده است، نه اینکه بازنویسی به اتمام رسیده باشد. در ادامه، میتوان از ndctl wait-overwrite برای انتظار جهت اتمام NVDIMMهایی که در حال انجام بازنویسی هستند استفاده کرد. پس از تکمیل موفقیتآمیز یک بازنویسی، دستورالعمل WBINVD توسط هسته صادر میشود. اگر هر دو گزینه --crypto-erase و --overwrite ارائه شوند، ابتدا crypto-erase پیش از overwrite انجام میگیرد.
انجماد امنیتی (SECURITY FREEZE)
این عملیات نیازی به عبارتعبور ندارد. این کار باعث میشود هرگونه دستور امنیتی به جز استعلام وضعیت، تا راهاندازی بعدی سیستم مسدود شود.
راهاندازی، بهروزرسانی و پاکسازی رمزنگارانه عبارتعبور اصلی (MASTER PASSPHRASE SETUP, UPDATE, and CRYPTO ERASE)
این عملیاتها مشابه فعالسازی و بهروزرسانی عبارتعبور کاربر هستند. تنها تفاوت این است که از یک عبارتعبور متفاوت استفاده میشود. عبارتعبور اصلی هیچ ارتباطی با کلید اصلی (kek) که برای رمزنگاری هر یک از عبارتهای عبور به کار میرود، ندارد.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر © 2016 - 2022, Intel Corporation. مجوز GPLv2: گنو GPL نسخه ۲ http://gnu.org/licenses/gpl.html. این یک نرمافزار آزاد است: شما مجاز به تغییر و بازتوزیع آن هستید. هیچگونه ضمانتی وجود ندارد، تا حدی که قانون اجازه میدهد.
| 2026-06-30 | ndctl |