CRYPTSETUP-LUKSCHANGEKEY(8) دستورهای مدیریتی و نگهداری CRYPTSETUP-LUKSCHANGEKEY(8)

cryptsetup-luksChangeKey - تغییر گذرواژه یا کلید موجود در دستگاه LUKS

cryptsetup luksChangeKey [<گزینهها>] <دستگاه> [<فایل کلید جدید>]

یک گذرواژه موجود را تغییر می‌دهد. گذرواژه‌ای که قرار است تغییر کند باید به‌صورت تعاملی یا از طریق --key-file ارائه شود. گذرواژه جدید می‌تواند به‌صورت تعاملی یا در فایلی که به عنوان آرگومان موضعی داده می‌شود، ارائه گردد.

اگر یک اسلات کلید مشخص شود (از طریق --key-slot)، باید گذرواژه آن اسلات کلید وارد شود و گذرواژه جدید جایگزین اسلات کلید مشخص‌شده خواهد شد. اگر اسلات کلیدی مشخص نشود و هنوز اسلات کلید خالی وجود داشته باشد، گذرواژه جدید پیش از پاک شدن اسلات کلید حاوی گذرواژه قدیمی، در یک اسلات کلید آزاد قرار می‌گیرد. اگر هیچ اسلات کلید آزادی وجود نداشته باشد، اسلات کلید با گذرواژه قدیمی مستقیماً بازنویسی (overwrite) می‌شود.

هشدار: اگر یک اسلات کلید بازنویسی شود، بروز خطای رسانه در حین این عملیات می‌تواند باعث شکست بازنویسی پس از پاک شدن گذرواژه قدیمی شود و دسترسی به کانتینر LUKS را غیرممکن سازد. LUKS2 با عدم بازنویسی مستقیم ناحیه اسلات کلید موجود تا زمانی که فضای خالی برای حداقل یک اسلات کلید دیگر در ناحیه اسلات‌ها وجود داشته باشد، این خطر را کاهش می‌دهد.

نکته: برخی پارامترها تنها در صورتی موثر هستند که با قالب LUKS2 استفاده شوند؛ قالبی که از پارامترهای مجزا برای هر اسلات کلید پشتیبانی می‌کند. برای LUKS1، نوع PBKDF و الگوریتم هش همیشه برای تمام اسلات‌های کلید یکسان است.

<گزینهها> می‌تواند شامل موارد زیر باشد:
[--key-file, --keyfile-offset, --keyfile-size, --new-keyfile-offset, --iter-time, --pbkdf, --pbkdf-force-iterations, --pbkdf-memory, --pbkdf-parallel, --new-keyfile-size, --key-slot, --force-password, --hash, --header, --disable-locks, --type, --keyslot-cipher, --keyslot-key-size, --timeout, --verify-passphrase].

--batch-mode, -q

همه پرسش‌های تاییدی را نادیده می‌گیرد و لغو می‌کند. با احتیاط استفاده کنید!

اگر گزینه --verify-passphrase مشخص نشده باشد، این گزینه اعتبارسنجی مجدد گذرواژه را نیز خاموش می‌کند.

--debug یا --debug-json

اجرا در حالت اشکال‌زدایی با گزارش‌های تشخیصی کامل. خطوط خروجی اشکال‌زدایی همیشه دارای پیشوند # هستند.

در صورت استفاده از --debug-json، ساختارهای داده اضافی JSON مربوط به LUKS2 نیز چاپ می‌شوند.

--disable-locks

غیرفعال کردن قفل حفاظتی برای متادیتا روی دیسک. این گزینه تنها برای LUKS2 معتبر است و برای سایر قالب‌ها نادیده گرفته می‌شود.

هشدار: از این گزینه استفاده نکنید مگر اینکه cryptsetup را در یک محیط محدود که در آن امکان قفل‌گذاری وجود ندارد (جایی که دایرکتوری /run قابل استفاده نیست) اجرا کنید.

--force-password

بررسی کیفیت گذرواژه را برای گذرواژه‌های جدید LUKS غیرفعال می‌کند.

اگر cryptsetup بدون پشتیبانی از بررسی کیفیت گذرواژه ساخته شده باشد، این گزینه نادیده گرفته می‌شود.

برای اطلاعات بیشتر درباره بررسی کیفیت گذرواژه، به صفحه راهنمای pwquality.conf(5) و passwdqc.conf(5) مراجعه کنید.

--hash, -h <مشخصه_هش>

هش مشخص‌شده برای PBKDF2 و تقسیم‌کننده AF استفاده می‌شود.

--header <دستگاه یا فایل ذخیره‌کننده هدر LUKS>

استفاده از یک فایل یا دستگاه متادیتای جداشده (مستقل) که هدر LUKS در آن ذخیره شده است. این گزینه امکان نگهداری متن رمزشده و هدر LUKS را روی دستگاه‌های مختلف فراهم می‌کند.

برای دستورهایی که هدر LUKS را تغییر می‌دهند (مانند luksAddKey)، دستگاه یا فایل حاوی هدر LUKS را مستقیماً به عنوان دستگاه LUKS مشخص کنید.

--help, -?

نمایش متن راهنما و پارامترهای پیش‌فرض.

--iter-time, -i <تعداد میلی‌ثانیه‌ها>

مدت زمان پردازش گذرواژه با PBKDF بر حسب میلی‌ثانیه. مشخص کردن مقدار ۰ پیش‌فرض زمان کامپایل را انتخاب می‌کند.

--key-file, -d نام_فایل

خواندن گذرواژه از فایل.

اگر نام داده‌شده "-" باشد، گذرواژه از ورودی استاندارد (stdin) خوانده خواهد شد. در این حالت، خواندن با رسیدن به نویسه خط جدید متوقف نمی‌شود.

گذرواژه ارائه‌شده از طریق --key-file همواره گذرواژه اسلات کلید موجود است که دستور درخواست می‌کند.

اگر می‌خواهید گذرواژه جدید را از طریق فایل کلید تنظیم کنید، باید از یک آرگومان موضعی استفاده کنید.

برای اطلاعات بیشتر، بخش NOTES ON PASSPHRASE PROCESSING را در cryptsetup(8) ببینید.

--keyfile-offset مقدار

رد کردن مقدار بایت از ابتدای فایل کلید.

--keyfile-size, -l مقدار

خواندن حداکثر مقدار بایت از فایل کلید. حالت پیش‌فرض خواندن کل فایل تا سقف حداکثر تعریف‌شده در زمان کامپایل است که می‌توان آن را با --help استعلام کرد. ارائه داده‌های بیشتر از حداکثر تعریف‌شده در زمان کامپایل، عملیات را لغو می‌کند.

این گزینه به عنوان مثال برای حذف خطوط جدید پایانی (trailing newlines) مفید است. اگر --keyfile-offset نیز داده شده باشد، شمارش اندازه از پس از آفست آغاز می‌شود.

--key-slot, -S <0-N>

برای عملیات‌های LUKS که ماده کلید اضافه می‌کنند، این گزینه امکان مشخص کردن اسلات کلید انتخاب‌شده برای کلید جدید را فراهم می‌سازد.

حداکثر تعداد اسلات‌های کلید به نسخه LUKS بستگی دارد. LUKS1 می‌تواند تا ۸ اسلات کلید داشته باشد. LUKS2 بر اساس اندازه ناحیه اسلات کلید و اندازه کلید می‌تواند تا ۳۲ اسلات کلید داشته باشد، اما شناسه معتبر اسلات کلید برای LUKS2 همواره می‌تواند بین ۰ تا ۳۱ باشد.

--keyslot-cipher <مشخصه_رمز>

این گزینه می‌تواند برای تنظیم رمزنگاری سایفر مشخص برای ناحیه اسلات کلید LUKS2 استفاده شود.

--keyslot-key-size <تعداد_بیت>

این گزینه می‌تواند برای تنظیم اندازه مشخص کلید برای ناحیه اسلات کلید LUKS2 استفاده شود.

--new-keyfile-offset مقدار

نادیده گرفتن مقدار بایت از ابتدا هنگام افزودن یک گذرواژه جدید از فایل کلید.

--new-keyfile-size مقدار

خواندن حداکثر مقدار بایت هنگام افزودن یک گذرواژه جدید از فایل کلید. پیش‌فرض خواندن کل فایل تا حداکثر طول تعریف‌شده در زمان کامپایل است که می‌توان با --help استعلام کرد. ارائه بیشتر از حداکثر کامپایل‌شده عملیات را لغو می‌کند. زمانی که --new-keyfile-offset نیز داده شده باشد، خواندن از بعد از آفست آغاز می‌شود.

--pbkdf <مشخصه_PBKDF>

تنظیم الگوریتم تابع اشتقاق کلید مبتنی بر گذرواژه (PBKDF) برای اسلات کلید LUKS. این تابع PBKDF می‌تواند: pbkdf2 (برای PBKDF2 مطابق با RFC2898)، argon2i برای Argon2i یا argon2id برای Argon2id باشد (برای اطلاعات بیشتر به Argon2 https://www.cryptolux.org/index.php/Argon2 مراجعه کنید).

برای LUKS1، تنها الگوریتم PBKDF2 پذیرفته می‌شود (نیازی به استفاده از این گزینه نیست). مقدار پیش‌فرض PBKDF برای LUKS2 در زمان کامپایل تنظیم می‌شود و در خروجی cryptsetup --help در دسترس است.

یک تابع PBKDF برای افزایش هزینه حملات دیکشنری و بروت‌فورس (brute-force) روی گذرواژه‌های اسلات کلید استفاده می‌شود. پارامترها می‌توانند هزینه زمانی، هزینه حافظه و هزینه موازی باشند.

برای PBKDF2، تنها هزینه زمانی (تعداد تکرارها) اعمال می‌شود. برای Argon2i/id، هزینه حافظه (حافظه مورد نیاز در طول فرایند اشتقاق کلید) و هزینه موازی (تعداد نخ‌هایی که به طور همزمان در طول اشتقاق کلید اجرا می‌شوند) نیز وجود دارد.

توجه داشته باشید که افزایش هزینه حافظه همچنین زمان را افزایش می‌دهد، بنابراین مقادیر نهایی پارامترها با یک بنچمارک اندازه‌گیری می‌شوند. بنچمارک تلاش می‌کند زمان تکرار (--iter-time) را با هزینه حافظه مورد نیاز --pbkdf-memory تطبیق دهد. اگر این کار ممکن نباشد، هزینه حافظه نیز کاهش می‌یابد. هزینه موازی --pbkdf-parallel ثابت است و با هسته‌های پردازنده موجود سنجیده می‌شود.

می‌توانید تمام پارامترهای PBKDF را برای یک اسلات کلید مشخص LUKS2 با دستور cryptsetup-luksDump(8) مشاهده کنید.

نکته: اگر نمی‌خواهید از بنچمارک استفاده کنید و مایلید تمام پارامترها را مستقیماً تعیین نمایید، از --pbkdf-force-iterations همراه با --pbkdf-memory و --pbkdf-parallel استفاده کنید. این کار مقادیر را بدون بنچمارک بازنویسی می‌کند. توجه داشته باشید که این کار می‌تواند زمان بازگشایی قفل را فوق‌العاده طولانی کند یا شرایط کمبود حافظه (out-of-memory) به همراه توقف اجباری فرایند ایجاد نماید. تنها در موارد خاص از آن استفاده کنید، به عنوان مثال اگر مطمئن هستید که دستگاه قالب‌بندی‌شده روی یک سیستم توکار کوچک استفاده خواهد شد.

حداقل و حداکثر هزینه‌های PBKDF: برای PBKDF2، حداقل تعداد تکرار ۱۰۰۰ و حداکثر ۴۲۹۴۹۶۷۲۹۵ (حداکثر برای عدد صحیح بدون علامت ۳۲ بیتی) است. هزینه‌های حافظه و موازی برای PBKDF2 استفاده نمی‌شوند. برای Argon2i و Argon2id، حداقل تعداد تکرار (هزینه CPU) برابر ۴ و حداکثر ۴۲۹۴۹۶۷۲۹۵ است. حداقل هزینه حافظه ۳۲ کیلوبایت (KiB) و حداکثر ۴ گیگابایت (GiB) است (در برخی معماری‌های پردازنده بر اساس حافظه آدرس‌پذیر محدود می‌شود). اگر پارامتر هزینه حافظه با بنچمارک تعیین شود (با پارامتر مشخص نشده باشد)، همیشه در محدوده بین ۶۴ مگابایت تا ۱ گیگابایت قرار می‌گیرد. حداقل هزینه موازی ۱ و حداکثر ۴ است (در صورتی که هسته‌های پردازنده کافی موجود باشند، در غیر این صورت کاهش می‌یابد).

--pbkdf-force-iterations <تعداد>

صرف‌نظر از بنچمارک PBKDF و تنظیم مستقیم هزینه زمانی (تکرارها). این گزینه فقط برای دستگاه‌های LUKS/LUKS2 قابل استفاده است. برای اطلاعات بیشتر گزینه --pbkdf را ببینید.

--pbkdf-memory <مقدار>

تنظیم هزینه حافظه برای PBKDF (برای Argon2i/id این عدد بیانگر کیلوبایت است). توجه داشته باشید که این حداکثر مقدار است؛ بنچمارک PBKDF یا حافظه فیزیکی موجود ممکن است آن را کاهش دهند. این گزینه برای PBKDF2 در دسترس نیست.

--pbkdf-parallel <تعداد>

تنظیم هزینه موازی برای PBKDF (تعداد نخ‌ها، حداکثر تا ۴). توجه داشته باشید که این حداکثر مقدار است و در صورت کمتر بودن هسته‌های فعال CPU به طور خودکار کاهش می‌یابد. این گزینه برای PBKDF2 در دسترس نیست.

--timeout, -t <تعداد ثانیه‌ها>

تعداد ثانیه‌های انتظار قبل از به پایان رسیدن زمان مهلت (timeout) برای ورود گذرواژه از طریق ترمینال. این گزینه هر زمان که گذرواژه‌ای درخواست شود اعمال می‌گردد. در صورت استفاده همزمان با --key-file هیچ تاثیری ندارد.

این گزینه زمانی مفید است که سیستم در صورت عدم ورود گذرواژه توسط کاربر نباید متوقف یا معطل بماند؛ به عنوان مثال هنگام بالا آمدن سیستم (بوت). مقدار پیش‌فرض ۰ ثانیه است که به معنای انتظار همیشگی است.

--type <نوع_دستگاه>

نوع دستگاه مورد نظر را مشخص می‌کند؛ برای اطلاعات بیشتر بخش BASIC ACTIONS را در cryptsetup(8) بخوانید.

--usage

نمایش راهنمای کوتاه گزینه‌ها.

--verify-passphrase, -y

هنگام درخواست تعاملی گذرواژه، آن را دو بار می‌پرسد و در صورت عدم تطابق هشدار می‌دهد. در صورت ورود از فایل یا ورودی استاندارد (stdin) نادیده گرفته می‌شود.

--version, -V

نمایش نسخه برنامه.

گزارش باگ‌ها در لیست پستی cryptsetup <cryptsetup@lists.linux.dev> یا در بخش مسائل پروژه https://gitlab.com/cryptsetup/cryptsetup/-/issues/new.

لطفاً خروجی دستور ناموفق را همراه با گزینه --debug پیوست کنید.

پرسش‌های متداول cryptsetup (FAQ) https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions

cryptsetup(8), integritysetup(8) و veritysetup(8)

بخشی از پروژه cryptsetup https://gitlab.com/cryptsetup/cryptsetup.

مه ۲۰۲۵ cryptsetup 2.7.5