'\" t .\" Title: ndctl-wait-overwrite .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-06-30 .\" Manual: ndctl Manual .\" Source: ndctl .\" Language: English .\" .TH "NDCTL\-WAIT\-OVERWRITE" "1" "2026-06-30" "ndctl" "ndctl Manual" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" ndctl-wait-overwrite \- در انتظار ماندن برای تکمیل عملیات بازنویسی (overwrite) .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fIndctl wait\-overwrite\fP [..] [] .fi .br .SH "توضیحات (DESCRIPTION)" .sp هسته یک فایل sysfs با قابلیت POLL(2) (به نام \fIsecurity\fP) فراهم می‌کند تا وضعیت بازنویسی (overwrite) را نشان دهد. این دستور منتظر تغییر در وضعیت این فایل در تمام dimmهای مشخص‌شده می‌ماند. .SH "گزینه‌ها (OPTIONS)" .sp .RS 4 نام یک دستگاه \fInmemX\fP یا شماره شناسهٔ dimm. عملیات را به dimm(های) مشخص‌شده محدود می‌کند. کلمهٔ کلیدی \fIall\fP می‌تواند برای مشخص کردن عدم وجود هرگونه محدودیت به کار رود، هرچند این کار معادل تعیین نکردن گزینهٔ \-\-dimm است. .RE .sp \-b, \-\-bus= .RS 4 شماره شناسهٔ گذرگاه (bus) یا یک رشتهٔ ارائه‌دهنده (مانند "ACPI.NFIT"). عملیات را به گذرگاه(های) مشخص‌شده محدود می‌کند. کلمهٔ کلیدی \fIall\fP می‌تواند برای مشخص کردن عدم وجود هرگونه محدودیت به کار رود، هرچند این کار معادل تعیین نکردن گزینهٔ \-\-bus است. .RE .sp \-v, \-\-verbose .RS 4 نمایش پیام‌های اشکال‌زدایی. .RE .SH "اصول عملکرد (THEORY OF OPERATION)" .sp مشخصات 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). .sp مدیریت امنیت برای NVDIMMها از دو بخش تشکیل شده است. بخش فرانت‌اند از چارچوب مدیریت کلید لینوکس (کلیدهای مورد اعتماد و رمزنگاری‌شده [2]) برای ذخیرهٔ گذرواژه‌های رمزگذاری‌شده در دسته‌کلید (keyring) تحت مدیریت هسته استفاده می‌کند. رابط این بخش ابزار \fIkeyutils\fP است که از رابط‌های برنامه‌نویسی (API) مدیریت کلید در هستهٔ لینوکس بهره می‌برد. بخش بک‌اند بار دادهٔ (payload) رمزگشایی‌شده (که همان گذرواژهٔ DIMM است) را دریافت کرده و به DIMM ارسال می‌کند. .sp برخلاف سایر DSMها که توسط libndctl ساخته شده و از طریق یک ioctl به هسته ارسال می‌شوند، DSMهای امنیتی از طریق ویژگی sysfs به نام \fIsecurity\fP در زیر دستگاه \fIdimm\fP مدیریت می‌شوند. یک \fIkey\-ID\fP درون ویژگی \fIsecurity\fP نوشته می‌شود و هسته داده‌های کلید مربوطه را از دسته‌کلید کاربر (user keyring) که توسط هسته نگهداری می‌شود، واکشی می‌کند. .sp فرایند امنیتی با ایجاد یک \fImaster key\fP آغاز می‌شود که برای مهر و موم کردن (رمزگذاری) گذرواژهٔ DIMM به کار می‌رود. می‌تواند یک \fImaster key\fP مشترک وجود داشته باشد که برای رمزگذاری گذرواژهٔ همهٔ DIMMها استفاده شود، یا اینکه می‌توان یک کلید جداگانه برای هر DIMM ایجاد کرد. به \fImaster key\fP همچنین \fIkey\-encryption\-key\fP (به اختصار kek) نیز گفته می‌شود. \fIkek\fP می‌تواند توسط ماژول TPM (Trusted Platform Module) روی سیستم ایجاد شود، یا متناوباً، از \fISystem Master Key\fP نیز می‌توان به‌عنوان \fIkek\fP استفاده کرد. .sp برای اهداف آزمایشی، می‌توان از یک کلید کاربری با بار داده تصادفی نیز به‌عنوان \fIkek\fP استفاده کرد. برای جزئیات به [2] مراجعه کنید. برای انجام هرگونه عملیات امنیتی، انتظار می‌رود که \fIkek\fP همان‌طور که در مثال زیر نشان داده شده است، به دسته‌کلید کاربر در هسته افزوده شده باشد: .sp .if n .RS 4 .nf .fam C # keyctl show Session Keyring 736023423 \-\-alswrv\& 0\& 0\& keyring: _ses 675104189 \-\-alswrv\& 0 65534\& \(rs_ keyring: _uid.0 680187394 \-\-alswrv\& 0\& 0\& \(rs_ trusted: nvdimm\-master .fam .fi .if n .RE .sp پیش از انجام هر یک از عملیات‌های امنیتی، تمام ناحیه‌های (regions) مرتبط با DIMM مربوطه باید غیرفعال شوند. برای عملیات \fIoverwrite\fP، علاوه بر \fIregions\fP، خود دستگاه \fIdimm\fP نیز باید غیرفعال گردد. .sp [1] \c .URL "http://pmem.io/documents/NVDIMM_DSM_Interface\-V1.8.pdf" "" .br [2] \c .URL "https://www.kernel.org/doc/Documentation/security/keys/trusted\-encrypted.rst" "" "" .sp زیربخش‌های بعدی جزئیات هر یک از قابلیت‌های امنیتی را شرح می‌دهند..SS "بازگشایی قفل (UNLOCK)" .sp بازگشایی قفل توسط هسته انجام می‌شود، با این حال پیش از آنکه DSM بازگشایی قفل توسط هسته صادر شود، باید یک مرحلهٔ آماده‌سازی صورت گیرد. انتظار می‌رود که از درون initramfs، یک دستور راه‌اندازی (ndctl \fIload\-keys\fP) پیش از بارگذاری ماژول libnvdimm توسط modprobe اجرا شود. این دستور \fIkek\fP و عبارت‌های عبور رمزگذاری‌شده را به دسته کلید کاربری هسته تزریق می‌کند. در طول فرایند \fIprobe\fP گردانندهٔ libnvdimm، اقدامات زیر انجام خواهد شد: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ . sp -1 . IP " 1." 4.2 .\} بررسی وضعیت امنیتی دستگاه و بررسی اینکه آیا DIMM قفل است یا خیر .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ . sp -1 . IP " 2." 4.2 .\} درخواست عبارت عبور رمزگذاری‌شدهٔ مرتبط از دسته کلید کاربری هسته .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ . sp -1 . IP " 3." 4.2 .\} استفاده از \fIkek\fP برای رمزگشایی عبارت عبور .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ . sp -1 . IP " 4." 4.2 .\} ایجاد DSM بازگشایی قفل و رونوشت بار مفید رمزگشایی‌شده به درون DSM .RE .sp .RS 4 .ie n \{\ \h'-04' 5.\h'+01'\c .\} .el \{\ . sp -1 . IP " 5." 4.2 .\} صدور DSM برای بازگشایی قفل DIMM .RE .sp اگر DIMM از پیش بازگشایی شده باشد، هسته تلاش خواهد کرد عبارت عبور را مجدداً اعتبارسنجی کند. اگر اعتبارسنجی مجدد عبارت عبور با شکست مواجه شود، هسته امنیت را منجمد (freeze) کرده و از هرگونه تغییرات بعدی در پیکربندی امنیتی جلوگیری می‌کند. یک پارامتر ماژول هسته برای نادیده گرفتن این رفتار در دسترس است. .SS "راه‌اندازی عبارت عبور کاربر (SETUP USER PASSPHRASE)" .sp برای راه‌اندازی عبارت عبور یک DIMM، انتظار می‌رود \fIkek\fP مورد استفاده در دسته کلید کاربری هسته موجود باشد. کلید \fIkek\fP عبارت عبور DIMM را با استفاده از قالب کلید \fIenc32\fP رمزگذاری می‌کند. عبارت عبور متن‌آشکار (plaintext) هرگز توسط کاربر ارائه نشده و برای او قابل مشاهده نیست؛ در عوض، به‌طور تصادفی توسط هسته تولید می‌شود و فضای کاربری دسترسی به آن ندارد. پس از رمزگذاری، یک حباب دودویی (binary blob) از عبارت عبور در پوشهٔ ذخیره‌سازی blob عبارت عبور (/etc/ndctl/keys) نوشته می‌شود. مسئولیت پشتیبان‌گیری از blobهای عبارت عبور در مکانی امن بر عهدهٔ کاربر است. .SS "بروزرسانی عبارت عبور کاربر (UPDATE USER PASSPHRASE)" .sp عملیات بروزرسانی عبارت عبور کاربر از همان دستور DSM فعال‌سازی عبارت عبور کاربر استفاده می‌کند. بیشتر کار در سمت مدیریت کلید انجام می‌شود. کاربر این گزینه را دارد که یک \fIkek\fP جدید برای عبارت عبور جدید ارائه دهد، اما ادامهٔ استفاده از \fIkek\fP موجود نیز قابل قبول است. عملیات زیر برای \fIupdate\-passphrase\fP انجام می‌شود: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ . sp -1 . IP " 1." 4.2 .\} حذف عبارت عبور رمزگذاری‌شده از دسته کلید کاربری هسته. .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ . sp -1 . IP " 2." 4.2 .\} تغییر نام blob عبارت عبور به old. .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ . sp -1 . IP " 3." 4.2 .\} بارگذاری این blob عبارت عبور قدیمی در دسته کلید با نام "old". .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ . sp -1 . IP " 4." 4.2 .\} ایجاد عبارت عبور جدید و رمزگذاری آن با \fIkek\fP. .RE .sp .RS 4 .ie n \{\ \h'-04' 5.\h'+01'\c .\} .el \{\ . sp -1 . IP " 5." 4.2 .\} ارسال DSM همراه با عبارت‌های عبور رمزگشایی‌شدهٔ قدیمی و جدید. .RE .sp .RS 4 .ie n \{\ \h'-04' 6.\h'+01'\c .\} .el \{\ . sp -1 . IP " 6." 4.2 .\} حذف عبارت عبور قدیمی و blob عبارت عبور از دسته کلید. .RE.SS "حذف عبارت عبور کاربر (REMOVE USER PASSPHRASE)" .sp مقدار \fIkey\-ID\fP برای عبارت عبوری که باید حذف شود در sysfs نوشته می‌شود. سپس هسته DSM را برای غیرفعال کردن امنیت ارسال می‌کند و پس از آن عبارت عبور از keyring حذف شده و blob مرتبط با عبارت عبور پاک می‌شود. .SS "پاک‌سازی رمزنگاری‌شده [امن] (CRYPTO (SECURE) ERASE)" .sp این عملیات مشابه remove\-passphrase است. هسته یک دستورالعمل WBINVD را قبل و بعد از عملیات صادر می‌کند تا از عدم خرابی داده‌ها بر اثر کش بیات پردازنده (stale CPU cache) اطمینان حاصل شود. برای انجام این عملیات از دستور sanitize\-dimm در ndctl به همراه گزینه \f(CR\-\-crypto\-erase\fP استفاده کنید. .SS "بازنویسی (OVERWRITE)" .sp این عملیات با استفاده از گزینه \f(CR\-\-overwrite\fP برای \fIsanitize\-dimm\fP در ndctl فراخوانی می‌شود. عملیات بازنویسی کل NVDIMM را پاک می‌کند. این عملیات می‌تواند زمان قابل توجهی طول بکشد. نکته: هنگامی که دستور با موفقیت بازمی‌گردد، صرفاً به این معناست که بازنویسی با موفقیت آغاز شده است، نه اینکه بازنویسی کامل شده باشد. متعاقباً، می‌توان از \fIndctl wait\-overwrite\fP برای منتظر ماندن جهت تکمیل NVDIMMهایی که در حال انجام بازنویسی هستند استفاده کرد. پس از تکمیل موفقیت‌آمیز بازنویسی، دستورالعمل WBINVD توسط هسته صادر می‌شود. اگر هر دو گزینه \-\-crypto\-erase و \-\-overwrite ارائه شده باشند، ابتدا crypto\-erase پیش از overwrite انجام می‌شود. .SS "تثبیت امنیتی (SECURITY FREEZE)" .sp این عملیات نیازی به عبارت عبور ندارد. این کار باعث می‌شود هرگونه فرمان امنیتی به غیر از پرس‌وجوی وضعیت (status query)، تا راه‌اندازی مجدد بعدی قفل شود. .SS "راه‌اندازی، به‌روزرسانی و پاک‌سازی رمزنگاری‌شده عبارت عبور اصلی (MASTER PASSPHRASE SETUP, UPDATE, and CRYPTO ERASE)" .sp این عملیات‌ها مشابه فعال‌سازی و به‌روزرسانی عبارت عبور کاربر هستند. تنها تفاوت این است که از یک عبارت عبور متفاوت استفاده می‌شود. عبارت عبور اصلی هیچ ارتباطی با کلید اصلی (\fIkek\fP) که برای رمزنگاری هر یک از عبارت‌های عبور به کار می‌رود، ندارد. .SH "کپی‌رایت و تکثیر (COPYRIGHT)" .sp حق نشر \(co 2016 \- 2022، شرکت Intel. مجوز GPLv2: گنو GPL نسخه ۲ \c .URL "http://gnu.org/licenses/gpl.html" "" "." این یک نرم‌افزار آزاد است: شما برای تغییر و توزیع مجدد آن آزاد هستید. هیچ‌گونه ضمانتی وجود ندارد، تا حدی که قانون اجازه می‌دهد. .SH "همچنین ببینید (SEE ALSO)" .sp ndctl\-sanitize\-dimm(1)