| NDCTL-SETUP-PASSPHRASE(1) | ndctl Manual | NDCTL-SETUP-PASSPHRASE(1) |
نام (NAME)
ndctl-setup-passphrase - راهاندازی و فعالسازی عبارت عبور امنیتی برای یک NVDIMM
خلاصه دستور (SYNOPSIS)
ndctl setup-passphrase <nmem0> [<nmem1>..<nmemN>] -k <key_handle> [<options>]
توضیحات (DESCRIPTION)
راهاندازی و فعالسازی یک عبارت عبور امنیتی برای یک یا چند NVDIMM.
برای اجرای موفقیتآمیز این دستور، انتظار میرود کلید اصلی (master key) از قبل در دستهکلید کاربر (user keyring) بارگذاری شده باشد. اطلاعات بیشتر درباره نحوه انجام این کار را میتوانید در مستندات هسته در نشانی زیر بیابید: https://www.kernel.org/doc/html/latest/security/keys/trusted-encrypted.html
دادههای باینری عبارت عبور (blobها) در دایرکتوری /etc/ndctl/keys با قالب نام فایل "nvdimm_<dimm-unique-id>_<hostname>.blob" ایجاد میشوند.
اگر عبارت عبور از پیش در دستهکلید کاربر موجود باشد یا فایل blob عبارت عبور از قبل در /etc/ndctl/keys وجود داشته باشد، این دستور با شکست مواجه خواهد شد.
گزینهها (OPTIONS)
<dimm>
-b, --bus=
-k, --key_handle=
نکته: انتظار میرود kek از قبل در دستهکلید کاربر بارگذاری شده باشد.
-m, --master-passphrase
-v, --verbose
مشخصات Intel Device Specific Methods (DSM) نسخهٔ ۱.۷ و ۱.۸ [1] عملیات مدیریت امنیت زیر را معرفی کرده است: فعالسازی عبارتعبور (enable passphrase)، بهروزرسانی عبارتعبور (update passphrase)، باز کردن قفل DIMM (unlock 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) بار دادهٔ (payload) رمزگشاییشده (که همان عبارتعبور DIMM است) را دریافت کرده و به DIMM منتقل میکند.
برخلاف سایر DSMها که توسط libndctl تشکیل شده و از طریق یک ioctl به هسته ارسال میشوند، DSMهای امنیتی از طریق مشخصهٔ sysfs به نام security ذیل دستگاه dimm مدیریت میشوند. یک key-ID در مشخصهٔ security نوشته میشود و هسته محتوای کلید مربوطه را از دستهکلید کاربر (user keyring) که توسط هسته نگهداری میشود، دریافت میکند.
فرآیند امنیتی با ایجاد یک master key (کلید اصلی) آغاز میشود که برای مهر و موم (رمزگذاری) عبارتعبور DIMM به کار میرود. میتواند یک master key مشترک برای رمزگذاری عبارتعبور همهٔ DIMMها وجود داشته باشد، یا برای هر DIMM یک کلید جداگانه تولید شود. به master key اصطلاحاً key-encryption-key (kek) نیز گفته میشود. kek میتواند توسط TPM (ماژول پلتفرم معتمد) در سیستم تولید شود، یا متناوباً، از System Master Key نیز میتوان بهعنوان kek استفاده کرد
برای اهداف آزمایشی، یک کلید کاربری (user key) با محمولهٔ تصادفی نیز میتواند بهعنوان یک kek استفاده شود. برای جزئیات به [2] مراجعه کنید. برای انجام هرگونه عملیات امنیتی، انتظار میرود که kek همانطور که در مثال زیر نشان داده شده، به دستهکلید کاربرِ هسته اضافه شده باشد:
# 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 و عبارتهای عبور رمزگذاریشده را به دستهکلید کاربرِ هسته تزریق میکند. در طول فرایند probe درایور libnvdimm، این درایور موارد زیر را انجام خواهد داد:
اگر DIMM از قبل باز (قفلگشایی) شده باشد، هسته تلاش خواهد کرد عبارتعبور را مجدداً اعتبارسنجی کند. در صورت عدم موفقیت در اعتبارسنجی مجدد عبارتعبور، هسته وضعیت امنیت را منجمد (freeze) کرده و مانع هرگونه تغییرات پیکربندی امنیتی بیشتر خواهد شد. یک پارامتر ماژول هسته برای نادیده گرفتن این رفتار در دسترس است..SS "راهاندازی عبارت عبور کاربر (SETUP USER PASSPHRASE)"
برای راهاندازی عبارت عبور برای یک DIMM، انتظار میرود که kek مورد استفاده در user keyring هسته موجود باشد. کلید kek عبارت عبور DIMM را با استفاده از قالب کلید enc32 رمزگذاری میکند. عبارت عبور متنساده (plaintext) هرگز توسط کاربر ارائه نشده و برای او قابل مشاهده نخواهد بود؛ در عوض بهصورت تصادفی توسط هسته تولید میشود و فضای کاربری (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 خراب نمیشود. برای اجرای این عملیات از دستور sanitize-dimm ابزار ndctl به همراه گزینه --crypto-erase استفاده کنید.
بازنویسی (OVERWRITE)
این عمل با استفاده از گزینه --overwrite در دستور sanitize-dimm ابزار ndctl فراخوانی میشود. عملیات بازنویسی کل NVDIMM را پاک میکند. این عملیات میتواند زمان قابل توجهی به طول بینجامد. نکته: بازگشت موفقیتآمیز دستور صرفاً به این معناست که عملیات بازنویسی با موفقیت آغاز شده است، نه اینکه بازنویسی به پایان رسیده باشد. متعاقباً میتوان از دستور ndctl wait-overwrite برای انتظار جهت تکمیل کار NVDIMMهایی که در حال بازنویسی هستند، استفاده کرد. پس از اتمام موفقیتآمیز بازنویسی، دستورالعمل WBINVD توسط هسته صادر میشود. اگر هر دو گزینه --crypto-erase و --overwrite ارائه شوند، ابتدا crypto-erase پیش از overwrite اجرا خواهد شد.
انجماد امنیتی (SECURITY FREEZE)
این عملیات به عبارت عبور نیازی ندارد. این کار باعث میشود هرگونه دستور امنیتی به غیر از پرسوجوی وضعیت (status query)، تا بوت بعدی مسدود و قفل شود.
راهاندازی، بهروزرسانی و پاکسازی رمزی عبارت عبور اصلی (MASTER PASSPHRASE SETUP, UPDATE, and CRYPTO ERASE)
این عملیاتها مشابه فعالسازی و بهروزرسانی عبارت عبور کاربر هستند. تنها تفاوت این است که از عبارت عبور متفاوتی استفاده میشود. عبارت عبور اصلی ارتباطی با کلید اصلی (kek) که برای رمزنگاری هر یک از عبارتهای عبور به کار میرود، ندارد.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر © 2016 - 2022، شرکت Intel Corporation. مجوز GPLv2: گنو GPL نسخه 2 http://gnu.org/licenses/gpl.html. این نرمافزار آزاد است: شما مختارید آن را تغییر داده و توزیع کنید. هیچگونه ضمانتی وجود ندارد، تا حدی که قانون اجازه میدهد.
همچنین ببینید (SEE ALSO)
ndctl-update-passphrase(1), ndctl-remove-passphrase(1)
| 2026-06-30 | ndctl |