| NDCTL-SANITIZE-DIMM(1) | ndctl Manual | NDCTL-SANITIZE-DIMM(1) |
نام (NAME)
ndctl-sanitize-dimm - تخریب رمزنگاریشده یا رونویسی محتویات NVDIMM(های) مشخصشده
خلاصه دستور (SYNOPSIS)
ndctl sanitize-dimm <nmem0> [<nmem1>..<nmemN>] [<options>]
توضیحات (DESCRIPTION)
دستور sanitize-dimm یک تخریب رمزنگاریشده از محتویات NVDIMM مشخصشده را انجام میدهد. این دستور دادهها و هرگونه فراداده یا بلوکهای اطلاعاتی (info-blocks) را درهمریزی (scramble) میکند، اما برچسبهای فضای نام (namespace labels) را تغییر نمیدهد. بنابراین، فضاهای نام روی نواحی مرتبط با NVDIMM مشخصشده حفظ میشوند، اما در نهایت در حالت خام (raw) قرار خواهند گرفت.
علاوه بر این، پس از اتمام اجرای این دستور، امنیت و عبارت عبور برای NVDIMM مشخصشده غیرفعال میشود و عبارت عبور و تمامی کلیدهای مربوطه نیز از جاکلیدی (keyring) و دایرکتوری کلیدهای ndctl در مسیر /etc/ndctl/keys حذف خواهند شد.
این دستور از دو روش مختلف برای پاکسازی رمزنگاریشده پشتیبانی میکند. حالت پیشفرض crypto-erase است، اما علاوه بر آن، گزینه overwrite نیز موجود است که نه تنها ناحیه دادهها، بلکه ناحیه برچسبها را نیز بازنویسی میکند و در نتیجه سابقه هرگونه فضای نامی که NVDIMM مشخصشده در آن مشارکت دارد از بین میرود.
گزینهها (OPTIONS)
<dimm>
-b, --bus=
-c, --crypto-erase
-o, --overwrite
-m, --master-passphrase
-z, --zero-key
--verbose
نحوه عملکرد (THEORY OF OPERATION)
مشخصات روشهای اختصاصی دستگاه اینتل (Intel DSM) نگارشهای ۱.۷ و ۱.۸ [1] عملیات مدیریت امنیتی زیر را معرفی کردهاند: فعالسازی عبارت عبور، بهروزرسانی عبارت عبور، بازگشایی قفل DIMM، غیرفعالسازی امنیت، انجماد امنیت، پاکسازی امن (رمزنگاریشده)، رونویسی و امحاء، فعالسازی عبارت عبور ارشد، بهروزرسانی عبارت عبور ارشد، و پاکسازی امن با عبارت عبور ارشد.
مدیریت امنیت برای حافظههای NVDIMM از دو بخش تشکیل شده است. بخش فرانتاند از چارچوب مدیریت کلید لینوکس (کلیدهای معتمد و رمزگذاریشده [2]) برای ذخیره عبارتهای عبور رمزگذاریشده در جاکلیدی (keyring) تحت مدیریت کرنل استفاده میکند. رابط کاربری برای این کار ابزار keyutils است که از رابطهای برنامهنویسی (API) مدیریت کلید در هسته لینوکس استفاده میکند. بخش بکاند محموله رمزگشاییشده (که همان عبارت عبور DIMM است) را دریافت کرده و آن را به DIMM منتقل میکند.
برخلاف سایر DSMها که توسط libndctl ساخته شده و از طریق ioctl به کرنل ارسال میشوند، DSMهای امنیتی از طریق ویژگی sysfs با نام security در زیر دستگاه dimm مدیریت میگردند. یک key-ID در ویژگی security نوشته میشود و کرنل کلیدهای مرتبط را از جاکلیدی کاربر که توسط هسته نگهداری میشود، دریافت میکند.
فرایند امنیتی با تولید یک کلید ارشد (master key) آغاز میشود که برای مهر و موم کردن (رمزگذاری) عبارت عبور DIMM به کار میرود. میتواند یک کلید ارشد مشترک برای رمزگذاری عبارت عبور همه DIMMها وجود داشته باشد، یا برای هر DIMM یک کلید جداگانه تولید شود. به کلید ارشد، key-encryption-key (یا kek) نیز گفته میشود. kek میتواند توسط ماژول بستر معتمد (TPM) روی سیستم ایجاد شود، یا متناوباً از کلید ارشد سیستم به عنوان 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
بخشهای زیر ویژگیهای خاص هر قابلیت امنیتی را شرح میدهند.
بازگشایی قفل (UNLOCK)
بازگشایی قفل توسط کرنل انجام میشود، اما پیش از آنکه دستور DSM بازگشایی قفل توسط هسته صادر شود، باید یک مرحله آمادهسازی انجام گیرد. انتظار میرود از درون initramfs، یک دستور راهاندازی (ndctl load-keys) پیش از بارگذاری ماژول libnvdimm توسط modprobe اجرا شود. این دستور kek و عبارتهای عبور رمزگذاریشده را به جاکلیدی کاربر در کرنل تزریق میکند. در طول فرایند کاوش (probe) درایور libnvdimm، اقدامات زیر انجام میشوند:
اگر DIMM از قبل باز شده باشد، هسته تلاش میکند عبارت عبور را مجدداً اعتبارسنجی کند. اگر اعتبارسنجی مجدد عبارت عبور ناموفق باشد، هسته امنیت را منجمد کرده و از هرگونه تغییرات بعدی در پیکربندی امنیتی جلوگیری میکند. یک پارامتر ماژول هسته برای نادیده گرفتن این رفتار در دسترس است.
تنظیم عبارت عبور کاربر (SETUP USER PASSPHRASE)
برای تنظیم عبارت عبور یک DIMM، انتظار میرود که kek مورد استفاده در جاکلیدی کاربر در هسته موجود باشد. کلید kek عبارت عبور DIMM را با استفاده از قالب کلید enc32 رمزگذاری میکند. عبارت عبور متنی ساده هرگز توسط کاربر ارائه نمیشود و برای وی قابل مشاهده نیست؛ بلکه به صورت تصادفی توسط هسته تولید شده و فضای کاربری به آن دسترسی ندارد. پس از رمزگذاری، یک داده باینری (blob) از عبارت عبور در دایرکتوری ذخیره دادههای عبارت عبور (/etc/ndctl/keys) نوشته میشود. تهیه نسخه پشتیبان از این فایلهای باینری عبارت عبور در یک مکان امن بر عهده کاربر است.
بهروزرسانی عبارت عبور کاربر (UPDATE USER PASSPHRASE)
عملیات بهروزرسانی عبارت عبور کاربر از همان دستور DSM فعالسازی عبارت عبور کاربر استفاده میکند. بیشتر کارها در سمت مدیریت کلید انجام میشود. کاربر این امکان را دارد که یک kek جدید برای عبارت عبور جدید ارائه دهد، اما ادامه استفاده از kek موجود نیز قابل قبول است. عملیاتهای زیر برای update-passphrase انجام میشوند:
حذف عبارت عبور کاربر (REMOVE USER PASSPHRASE)
شناسه کلید (key-ID) مربوط به عبارت عبوری که باید حذف شود، در sysfs نوشته میشود. سپس هسته DSM غیرفعالسازی امنیت را ارسال میکند، و عبارت عبور از جاکلیدی حذف شده و فایل باینری عبارت عبور مرتبط پاک میگردد.
پاکسازی امن رمزنگاریشده (CRYPTO (SECURE) ERASE)
این عملیات شبیه به remove-passphrase است. کرنل قبل و بعد از عملیات دستور WBINVD را اجرا میکند تا اطمینان حاصل شود که به دلیل حافظه موقت (cache) کهنه پردازنده، هیچگونه خرابی دادهای رخ نمیدهد. برای انجام این عملیات از دستور sanitize-dimm متعلق به ndctl با گزینه --crypto-erase استفاده کنید.
رونویسی و امحاء (OVERWRITE)
این کار با استفاده از گزینه --overwrite در دستور ndctl sanitize-dimm فراخوانی میشود. عملیات رونویسی کل 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 نسخه ۲ http://gnu.org/licenses/gpl.html. این نرمافزار آزاد است: شما مجاز به تغییر و توزیع مجدد آن هستید. هیچ ضمانتی وجود ندارد، تا حدی که قانون مجاز دانسته است.
همچنین ببینید (SEE ALSO)
ndctl-wait-overwrite(1), https://trustedcomputinggroup.org/wp-content/uploads/TCG_SWG_SIIS_Version_1_07_Revision_1_00.pdf
| 2026-06-30 | ndctl |