| CRYPTSETUP-LUKSCONVERTKEY(8) | دستورهای مدیریتی و نگهداری | CRYPTSETUP-LUKSCONVERTKEY(8) |
نام (NAME)
cryptsetup-luksConvertKey - تبدیل یک اسلات کلید موجود LUKS2 به پارامترهای جدید PBKDF
خلاصه دستور (SYNOPSIS)
cryptsetup luksConvertKey [<گزینهها>] <دستگاه>
توضیحات (DESCRIPTION)
یک اسلات کلید (keyslot) موجود LUKS2 را به پارامترهای جدید PBKDF تبدیل میکند. گذرواژه مربوط به اسلات کلیدی که باید تبدیل شود، باید بهصورت تعاملی یا از طریق --key-file ارائه شود. اگر هیچ پارامتر --pbkdf مشخص نشده باشد، مقادیر پیشفرض PBKDF در LUKS2 اعمال خواهند شد.
اگر یک اسلات کلید مشخص شده باشد (از طریق --key-slot)، باید گذرواژه همان اسلات کلید ارائه گردد. اگر هیچ اسلات کلیدی مشخص نشده باشد و همچنان یک اسلات کلید خالی وجود داشته باشد، پیش از پاکسازی اسلات کلید حاوی پارامترهای قدیمی، پارامترهای جدید در یک اسلات کلید خالی قرار داده میشوند. اگر هیچ اسلات کلید خالی وجود نداشته باشد، اسلات کلید حاوی پارامترهای قدیمی مستقیماً رونویسی میشود.
هشدار: اگر یک اسلات کلید رونویسی شود، بروز خرابی در رسانه ذخیرهسازی حین این عملیات میتواند پس از پاک شدن پارامترهای قدیمی باعث شکست رونویسی شده و در نتیجه کانتینر LUKS را برای همیشه غیرقابل دسترسی کند.
<گزینهها>
میتوانند
شامل موارد
زیر باشند:
[--key-file, --keyfile-offset, --keyfile-size,
--key-slot, --hash, --header, --disable-locks,
--iter-time, --pbkdf, --pbkdf-force-iterations,
--pbkdf-memory, --pbkdf-parallel, --keyslot-cipher,
--keyslot-key-size, --timeout,
--verify-passphrase].
گزینهها (OPTIONS)
--batch-mode, -q
اگر گزینه --verify-passphrase مشخص نشده باشد، این گزینه تایید و اعتبارسنجی گذرواژه را نیز غیرفعال میکند.
--debug یا --debug-json
اگر از --debug-json استفاده شود، ساختارهای داده اضافی LUKS2 JSON نیز چاپ میشوند.
--disable-locks
هشدار: از این گزینه استفاده نکنید مگر اینکه cryptsetup را در محیطی محدود اجرا کنید که در آن قفل کردن غیرممکن باشد (جایی که دایرکتوری /run قابل استفاده نیست).
--force-password
در صورتی که cryptsetup بدون پشتیبانی از بررسی کیفیت گذرواژه ساخته شده باشد، این گزینه نادیده گرفته میشود.
برای اطلاعات بیشتر درباره بررسی کیفیت گذرواژه، صفحه راهنمای pwquality.conf(5) و passwdqc.conf(5) را ببینید.
--hash, -h <مشخصه-هش>
--header <دستگاه یا فایل ذخیرهکننده هدر LUKS>
برای دستوراتی که هدر LUKS را تغییر میدهند (مانند luksAddKey)، دستگاه یا فایل حاوی هدر LUKS را مستقیماً به عنوان دستگاه LUKS مشخص کنید.
--help, -?
--iter-time, -i <تعداد میلیثانیهها>
--key-file, -d فایل
اگر نام دادهشده "-" باشد، گذرواژه از ورودی استاندارد (stdin) خوانده خواهد شد. در این حالت، خواندن با نویسههای خط جدید متوقف نخواهد شد.
برای اطلاعات بیشتر، بخش NOTES ON PASSPHRASE PROCESSING را در cryptsetup(8) ببینید.
--keyfile-offset مقدار
--keyfile-size, -l مقدار
این گزینه برای مثال جهت حذف خطوط جدید پایانی مفید است. اگر --keyfile-offset نیز داده شده باشد، شمارش اندازه پس از آفست آغاز میشود.
--key-slot, -S <0-N>
حداکثر تعداد اسلاتهای کلید به نسخه LUKS بستگی دارد. LUKS1 میتواند تا ۸ اسلات کلید داشته باشد. LUKS2 بسته به اندازه ناحیه اسلات کلید و اندازه کلید میتواند تا ۳۲ اسلات کلید داشته باشد، اما شناسه اسلات کلید معتبر برای LUKS2 همیشه میتواند بین ۰ تا ۳۱ باشد.
--keyslot-cipher <مشخصه-رمز>
--keyslot-key-size <بیتها>
--new-keyfile-offset مقدار
--new-keyfile-size مقدار
--pbkdf <مشخصه PBKDF>
برای LUKS1، فقط PBKDF2 پذیرفته میشود (نیازی به استفاده از این گزینه نیست). الگوریتم پیشفرض PBKDF برای LUKS2 در زمان کامپایل تنظیم شده و در خروجی cryptsetup --help در دسترس است.
تابع PBKDF برای افزایش هزینه حملات فرهنگلغت (dictionary) و جستجوی فراگیر (brute-force) روی گذرواژههای اسلات کلید استفاده میشود. پارامترها میتوانند شامل هزینه زمان، حافظه و موازیسازی باشند.
برای PBKDF2، فقط هزینه زمان (تعداد تکرارها) اعمال میشود. برای Argon2i/id، هزینه حافظه (میزان حافظه مورد نیاز در طول فرآیند اشتقاق کلید) و هزینه موازیسازی (تعداد رشتههایی که به طور همروند در طول اشتقاق کلید اجرا میشوند) نیز وجود دارد.
توجه داشته باشید که افزایش هزینه حافظه باعث افزایش زمان نیز میشود، بنابراین مقادیر نهایی پارامترها توسط یک بنچمارک (آزمون کارایی) سنجیده میشوند. بنچمارک سعی میکند زمان تکرار (--iter-time) را با هزینه حافظه درخواستی --pbkdf-memory مطابقت دهد. اگر این کار ممکن نباشد، هزینه حافظه نیز کاهش مییابد. هزینه موازیسازی --pbkdf-parallel ثابت است و بر اساس هستههای موجود پردازنده (CPU) بررسی میشود.
میتوانید تمام پارامترهای PBKDF را برای یک اسلات کلید خاص در LUKS2 با دستور cryptsetup-luksDump(8) مشاهده کنید.
اگر نمیخواهید از بنچمارک استفاده کنید و میخواهید تمام پارامترها را مستقیماً تعیین نمایید، از --pbkdf-force-iterations همراه با --pbkdf-memory و --pbkdf-parallel استفاده کنید. این کار مقادیر را بدون اجرای بنچمارک بازنویسی میکند. توجه داشته باشید که این کار میتواند باعث زمان بازگشایی قفل بسیار طولانی شده یا به دلیل کمبود حافظه (out-of-memory) منجر به خاتمه اجباری فرآیند شود. فقط در موارد خاص از آن استفاده کنید؛ به عنوان مثال اگر میدانید دستگاه قالببندیشده قرار است در یک سیستم تعبیهشده (embedded) کوچک استفاده شود.
حداقل و حداکثر هزینههای PBKDF: برای PBKDF2، حداقل تعداد تکرار ۱۰۰۰ و حداکثر ۴۲۹۴۹۶۷۲۹۵ است (حداکثر مقدار برای یک عدد صحیح ۳۲ بیتی بدون علامت). هزینههای حافظه و موازیسازی برای PBKDF2 پشتیبانی نمیشوند. برای Argon2i و Argon2id، حداقل تعداد تکرار (هزینه CPU) برابر ۴ و حداکثر ۴۲۹۴۹۶۷۲۹۵ است (حداکثر برای عدد صحیح ۳۲ بیتی بدون علامت). حداقل هزینه حافظه ۳۲ کیلوبایت (KiB) و حداکثر ۴ گیگابایت (GiB) است. اگر پارامتر هزینه حافظه با بنچمارک تعیین شود (با پارامتر مشخص نشده باشد)، همیشه در بازه ۶۴ مگابایت (MiB) تا ۱ گیگابایت (GiB) قرار دارد. هزینه حافظه بالاتر از ۱ گیگابایت (تا سقف حداکثر ۴ گیگابایت) تنها با استفاده از پارامتر --pbkdf-memory قابل تنظیم است. حداقل هزینه موازیسازی ۱ و حداکثر ۴ است (در صورتی که هستههای پردازنده کافی موجود باشد، در غیر این صورت بر اساس هستههای موجود پردازنده کاهش مییابد).
هشدار: افزایش هزینههای محاسباتی PBKDF بالاتر از محدودیتهای ذکرشده، بهبود امنیتی بسیار ناچیزی فراهم میکند. در حالی که افزایش هزینهها به طور چشمگیری سربار جستجوی فراگیر (brute-force) را افزایش میدهد، اما محافظت ناچیزی در برابر حملات فرهنگلغت ارائه میکند. افزایش هزینه حاشیهای برای پردازش کل یک فرهنگلغت اساساً ناکافی باقی میماند.
محدودیتهای سختکدشده PBKDF نشاندهنده یک مصالحه مهندسیشده بین امنیت رمزنگاری و قابلیت استفاده عملیاتی است. LUKS قابلیت حمل را حفظ میکند و باید در زمان معقولی روی سیستمهای با منابع محدود قابل استفاده باشد. ابزار cryptsetup به دلیل محدودیتهای معماری (مانند سیستمهای تعبیهشده و قدیمی)، پارامترهای حداکثر هزینه حافظه (۴ گیگابایت) و هزینه موازیسازی (۴) را به طور عمدی محدود میکند.
هزینه حافظه PBKDF نیازمند تخصیص حافظه فیزیکی RAM واقعی با عملیات نوشتن متمرکز است که باید در RAM فیزیکی باقی بماند. هرگونه استفاده از فضای تعویض (swap) منجر به افت کارایی غیرقابل قبولی خواهد شد. مدیریت حافظه اغلب حافظه را بیش از حد ظرفیت فیزیکی موجود (overcommit) تخصیص میدهد، با این انتظار که بیشتر حافظه تخصیصیافته دستنخورده باقی بماند. در چنین شرایطی، از آنجا که PBKDF همیشه از تمام حافظه تخصیصیافته استفاده میکند، مکرراً باعث خطاهای کمبود حافظه شده و عملیاتهای cryptsetup را متوقف میسازد.
--pbkdf-force-iterations تعداد
--pbkdf-memory تعداد
--pbkdf-parallel تعداد
--timeout, -t ثانیه
این گزینه زمانی مفید است که سیستم در صورت عدم ورود گذرواژه توسط کاربر نباید متوقف شود؛ برای مثال هنگام بوت سیستم. مقدار پیشفرض ۰ ثانیه است که به معنای انتظار نامحدود است.
--usage
--verify-passphrase, -y
--version, -V
گزارش باگها (REPORTING BUGS)
گزارش باگها در لیست پستی cryptsetup <cryptsetup@lists.linux.dev> یا در بخش مسائل پروژه https://gitlab.com/cryptsetup/cryptsetup/-/issues/new.
لطفاً خروجی دستور ناموفق را با افزودن گزینه --debug پیوست کنید.
همچنین ببینید (SEE ALSO)
پرسشهای متداول Cryptsetup (FAQ) https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions
کریپتستآپ (CRYPTSETUP)
بخشی از پروژه cryptsetup https://gitlab.com/cryptsetup/cryptsetup.
| 2026-07-21 | cryptsetup 2.8.7 |