| NDCTL-WAIT-OVERWRITE(1) | ndctl Manual | NDCTL-WAIT-OVERWRITE(1) |
نام (NAME)
ndctl-wait-overwrite - در انتظار ماندن برای تکمیل عملیات بازنویسی (overwrite)
خلاصه دستور (SYNOPSIS)
ndctl wait-overwrite <nmem0> [<nmem1>..<nmemN>] [<options>]
توضیحات (DESCRIPTION)
هسته یک فایل sysfs با قابلیت POLL(2) (به نام security) فراهم میکند تا وضعیت بازنویسی (overwrite) را نشان دهد. این دستور منتظر تغییر در وضعیت این فایل در تمام dimmهای مشخصشده میماند.
گزینهها (OPTIONS)
<dimm>
-b, --bus=
-v, --verbose
اصول عملکرد (THEORY OF OPERATION)
مشخصات Intel Device Specific Methods (DSM) نسخهٔ ۱.۷ و ۱.۸ [1] عملیاتهای مدیریت امنیتی زیر را معرفی کرده است: فعالسازی گذرواژه (enable passphrase)، بهروزرسانی گذرواژه (update passphrase)، باز کردن قفل DIMM، غیرفعالسازی امنیت (disable security)، انجماد امنیت (freeze security)، پاکسازی امن رمزشناختی (secure crypto erase)، بازنویسی (overwrite)، فعالسازی گذرواژهٔ اصلی (master passphrase enable)، بهروزرسانی گذرواژهٔ اصلی (master passphrase update)، و پاکسازی امن گذرواژهٔ اصلی (master passphrase secure erase).
مدیریت امنیت برای NVDIMMها از دو بخش تشکیل شده است. بخش فرانتاند از چارچوب مدیریت کلید لینوکس (کلیدهای مورد اعتماد و رمزنگاریشده [2]) برای ذخیرهٔ گذرواژههای رمزگذاریشده در دستهکلید (keyring) تحت مدیریت هسته استفاده میکند. رابط این بخش ابزار keyutils است که از رابطهای برنامهنویسی (API) مدیریت کلید در هستهٔ لینوکس بهره میبرد. بخش بکاند بار دادهٔ (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 (Trusted Platform Module) روی سیستم ایجاد شود، یا متناوباً، از System Master Key نیز میتوان بهعنوان kek استفاده کرد.
برای اهداف آزمایشی، میتوان از یک کلید کاربری با بار داده تصادفی نیز بهعنوان 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
زیربخشهای بعدی جزئیات هر یک از قابلیتهای امنیتی را شرح میدهند..SS "بازگشایی قفل (UNLOCK)"
بازگشایی قفل توسط هسته انجام میشود، با این حال پیش از آنکه DSM بازگشایی قفل توسط هسته صادر شود، باید یک مرحلهٔ آمادهسازی صورت گیرد. انتظار میرود که از درون initramfs، یک دستور راهاندازی (ndctl load-keys) پیش از بارگذاری ماژول libnvdimm توسط modprobe اجرا شود. این دستور kek و عبارتهای عبور رمزگذاریشده را به دسته کلید کاربری هسته تزریق میکند. در طول فرایند probe گردانندهٔ libnvdimm، اقدامات زیر انجام خواهد شد:
اگر DIMM از پیش بازگشایی شده باشد، هسته تلاش خواهد کرد عبارت عبور را مجدداً اعتبارسنجی کند. اگر اعتبارسنجی مجدد عبارت عبور با شکست مواجه شود، هسته امنیت را منجمد (freeze) کرده و از هرگونه تغییرات بعدی در پیکربندی امنیتی جلوگیری میکند. یک پارامتر ماژول هسته برای نادیده گرفتن این رفتار در دسترس است.
راهاندازی عبارت عبور کاربر (SETUP USER PASSPHRASE)
برای راهاندازی عبارت عبور یک DIMM، انتظار میرود kek مورد استفاده در دسته کلید کاربری هسته موجود باشد. کلید kek عبارت عبور DIMM را با استفاده از قالب کلید enc32 رمزگذاری میکند. عبارت عبور متنآشکار (plaintext) هرگز توسط کاربر ارائه نشده و برای او قابل مشاهده نیست؛ در عوض، بهطور تصادفی توسط هسته تولید میشود و فضای کاربری دسترسی به آن ندارد. پس از رمزگذاری، یک حباب دودویی (binary 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 را قبل و بعد از عملیات صادر میکند تا از عدم خرابی دادهها بر اثر کش بیات پردازنده (stale 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)
این عملیات نیازی به عبارت عبور ندارد. این کار باعث میشود هرگونه فرمان امنیتی به غیر از پرسوجوی وضعیت (status query)، تا راهاندازی مجدد بعدی قفل شود.
راهاندازی، بهروزرسانی و پاکسازی رمزنگاریشده عبارت عبور اصلی (MASTER PASSPHRASE SETUP, UPDATE, and CRYPTO ERASE)
این عملیاتها مشابه فعالسازی و بهروزرسانی عبارت عبور کاربر هستند. تنها تفاوت این است که از یک عبارت عبور متفاوت استفاده میشود. عبارت عبور اصلی هیچ ارتباطی با کلید اصلی (kek) که برای رمزنگاری هر یک از عبارتهای عبور به کار میرود، ندارد.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر © 2016 - 2022، شرکت Intel. مجوز GPLv2: گنو GPL نسخه ۲ http://gnu.org/licenses/gpl.html. این یک نرمافزار آزاد است: شما برای تغییر و توزیع مجدد آن آزاد هستید. هیچگونه ضمانتی وجود ندارد، تا حدی که قانون اجازه میدهد.
همچنین ببینید (SEE ALSO)
ndctl-sanitize-dimm(1)
| 2026-06-30 | ndctl |