| NDCTL-UPDATE-PASSPHRASE(1) | ndctl Manual | NDCTL-UPDATE-PASSPHRASE(1) |
نام (NAME)
ndctl-update-passphrase - بهروزرسانی یا تنظیم گذرواژه امنیتی کلیدهای NVDIMM
خلاصه دستور (SYNOPSIS)
ndctl update-passphrase <nmem0> [<nmem1>..<nmemN>] [<گزینهها>]
توضیحات (DESCRIPTION)
بهروزرسانی گذرواژه امنیتی برای یک یا چند NVDIMM. پیشنیازها برای اجرای موفقیتآمیز دستور:
دادههای دودویی (blob) بهروزرسانیشده کلید در دایرکتوری /etc/ndctl/keys با فرمت نام فایل "nvdimm_<dimm-unique-id>_<hostname>.blob" ایجاد خواهند شد.
گزینهها (OPTIONS)
<dimm>
-b, --bus=
-k, --key_handle=
نکته: انتظار میرود kek از قبل در جاکلیدی کاربر بارگذاری شده باشد.
-m, --master-passphrase
-v, --verbose
نحوه عملکرد (THEORY OF OPERATION)
مشخصات روشهای ویژه دستگاه اینتل (Intel DSM) نسخه ۱.۷ و ۱.۸ [1] عملیات مدیریت امنیت زیر را معرفی کرد: فعالسازی گذرواژه، بهروزرسانی گذرواژه، باز کردن قفل DIMM، غیرفعالسازی امنیت، تثبیت امنیت (freeze security)، پاکسازی امن (رمزنگاریشده)، بازنویسی، فعالسازی گذرواژه اصلی، بهروزرسانی گذرواژه اصلی و پاکسازی امن گذرواژه اصلی.
مدیریت امنیت برای NVDIMMها از دو بخش تشکیل شده است. بخش فرانتاند (Front end) از چارچوب مدیریت کلید لینوکس (کلیدهای مورد اعتماد و رمزگذاریشده [2]) برای ذخیره گذرواژههای رمزگذاریشده در جاکلیدی تحت مدیریت هسته استفاده میکند. رابط کاربری برای این منظور، ابزار کاربردی keyutils است که از APIهای مدیریت کلید در هسته لینوکس استفاده میکند. بخش بکاند (Back end) بار داده (payload) رمزگشاییشده را (که همان گذرواژه DIMM است) دریافت کرده و به DIMM منتقل میکند.
برخلاف سایر DSMها که توسط libndctl ساخته شده و از طریق یک ioctl به هسته ارسال میشوند، DSMهای امنیتی از طریق ویژگی sysfs با نام security در زیر دستگاه dimm مدیریت میشوند. یک key-ID در ویژگی security نوشته میشود و هسته دادههای کلید مرتبط را از جاکلیدی کاربری که توسط هسته نگهداری میشود، فراخوانی میکند.
فرآیند امنیت با تولید یک کلید اصلی (master key) آغاز میشود که برای پلمپ کردن (رمزگذاری) گذرواژه DIMM استفاده میشود. میتواند یک کلید اصلی مشترک وجود داشته باشد که برای رمزگذاری گذرواژه همه DIMMها به کار میرود، یا میتوان یک کلید مجزا برای هر DIMM تولید کرد. کلید اصلی همچنین به عنوان کلید رمزگذاری کلید (key-encryption-key یا kek) شناخته میشود. kek میتواند توسط TPM (ماژول پلتفرم مورد اعتماد) روی سیستم تولید شود، یا در غیر این صورت، کلید اصلی سیستم (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
بخشهای فرعی زیر ویژگیهای خاص هر قابلیت امنیتی را شرح میدهند.
باز کردن قفل (UNLOCK)
باز کردن قفل توسط هسته انجام میشود، با این حال یک مرحله آمادهسازی باید پیش از صدور DSM باز کردن قفل توسط هسته رخ دهد. انتظار میرود از درون initramfs، یک دستور راهاندازی (ndctl load-keys) قبل از بارگذاری ماژول libnvdimm توسط modprobe اجرا شود. این دستور kek و گذرواژههای رمزگذاریشده را به جاکلیدی کاربری هسته تزریق میکند. در طول فرآیند بررسی (probe) راهانداز libnvdimm، اقدامات زیر انجام خواهد شد:
اگر DIMM از قبل باز باشد، هسته تلاش میکند تا گذرواژه را مجدداً اعتبارسنجی کند. اگر اعتبارسنجی مجدد گذرواژه با شکست مواجه شود، هسته وضعیت امنیتی را تثبیت (freeze) کرده و هرگونه تغییرات پیکربندی امنیتی بیشتر را غیرمجاز میسازد. یک پارامتر ماژول هسته برای نادیده گرفتن این رفتار در دسترس است.
راهاندازی گذرواژه کاربر (SETUP USER PASSPHRASE)
برای راهاندازی گذرواژه یک DIMM، انتظار میرود kek مورد استفاده در جاکلیدی کاربری هسته وجود داشته باشد. کلید kek گذرواژه DIMM را با استفاده از قالب کلید enc32 رمزگذاری میکند. گذرواژه متن ساده هرگز توسط کاربر ارائه نمیشود و برای او قابل مشاهده نیست. در عوض، به صورت تصادفی توسط هسته تولید میشود و فضای کاربری به آن دسترسی ندارد. پس از رمزگذاری، یک داده دودویی (blob) از گذرواژه در دایرکتوری ذخیرهسازی blob گذرواژه (/etc/ndctl/keys) نوشته میشود. کاربر مسئول تهیه نسخه پشتیبان از blobهای گذرواژه در یک مکان امن است.
بهروزرسانی گذرواژه کاربر (UPDATE USER PASSPHRASE)
عملیات بهروزرسانی گذرواژه کاربر از همان دستور DSM فعالسازی گذرواژه کاربر استفاده میکند. بیشتر کار در سمت مدیریت کلید انجام میشود. کاربر این امکان را دارد که یک kek جدید برای گذرواژه جدید ارائه دهد، اما ادامه استفاده از kek موجود نیز قابل قبول است. عملیات زیر برای update-passphrase انجام میشود:
حذف گذرواژه کاربر (REMOVE USER PASSPHRASE)
مقدار key-ID برای گذرواژهای که قرار است حذف شود، در sysfs نوشته میشود. سپس هسته DSM را برای غیرفعالسازی امنیت ارسال میکند و پس از آن گذرواژه از جاکلیدی حذف شده و blob گذرواژه مرتبط پاک میشود.
پاکسازی رمزنگاریشده یا امن (CRYPTO (SECURE) ERASE)
این عملیات مشابه remove-passphrase است. هسته یک دستورالعمل WBINVD را قبل و بعد از عملیات صادر میکند تا اطمینان حاصل شود که هیچ خرابی دادهای ناشی از حافظه نهان (کش) قدیمی پردازنده رخ نمیدهد. برای انجام این عملیات از دستور 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)
Copyright © 2016 - 2022, Intel Corporation. License GPLv2: GNU GPL نسخه 2 http://gnu.org/licenses/gpl.html. این یک نرمافزار آزاد است: شما مختارید آن را تغییر دهید و بازتوزیع کنید. هیچ ضمانتی وجود ندارد، تا حدی که قانون اجازه میدهد.
همچنین ببینید (SEE ALSO)
ndctl-setup-passphrase(1), ndctl-remove-passphrase(1)
| 2026-06-30 | ndctl |