| CRYPTSETUP-LUKSADDKEY(8) | دستورهای مدیریتی و نگهداری | CRYPTSETUP-LUKSADDKEY(8) |
نام (NAME)
cryptsetup-luksAddKey - افزودن گذرواژه یا کلید جدید به یک اسلات خالی در دستگاه LUKS
خلاصه دستور (SYNOPSIS)
cryptsetup luksAddKey [<گزینهها>] <دستگاه> [<فایل کلید جدید>]
توضیحات (DESCRIPTION)
یک اسلات کلید (keyslot) محافظتشده با یک گذرواژه جدید اضافه میکند. گذرواژه موجود باید بهصورت تعاملی، از طریق --key-file یا توکن LUKS2 (پلاگین) ارائه شود. به عنوان جایگزینی برای گذرواژه موجود، کاربر میتواند مستقیماً کلید حجم (volume key) را (از طریق --volume-key-file یا --volume-key-keyring) ارائه دهد. گذرواژه جدیدی که قرار است اضافه شود میتواند بهصورت تعاملی مشخص شود، از فایلی که به عنوان آرگومان موضعی داده شده خوانده شود (همچنین از طریق پارامتر --new-keyfile) یا از طریق توکن LUKS2 دریافت گردد.
نکته: با گزینه --unbound این عملیات یک اسلات کلید نامقید (unbound) جدید در LUKS2 ایجاد میکند. این اسلات کلید نمیتواند برای فعالسازی دستگاه استفاده شود. اگر کلید جدید را از طریق گزینه --volume-key-file ارائه ندهید، یک کلید تصادفی جدید تولید میشود. در این حالت نیازی به ارائه گذرواژه موجود برای هیچیک از اسلاتهای کلید فعال نیست.
نکته: برخی از پارامترها تنها در صورتی موثر هستند که با قالب LUKS2 استفاده شوند که از پارامترهای مجزا برای هر اسلات کلید پشتیبانی میکند. در LUKS1، نوع PBKDF و الگوریتم درهمسازی (هش) همیشه برای همه اسلاتهای کلید یکسان است.
<گزینهها>
میتوانند
شامل موارد
زیر باشند:
[--key-file, --keyfile-offset, --keyfile-size,
--new-keyfile, --new-keyfile-offset,
--new-keyfile-size, --key-slot, --new-key-slot,
--volume-key-file, --volume-key-keyring,
--force-password, --hash, --header,
--disable-locks, --iter-time, --pbkdf,
--pbkdf-force-iterations, --pbkdf-memory,
--pbkdf-parallel, --unbound, --type,
--keyslot-cipher, --keyslot-key-size, --key-size,
--timeout, --token-id, --token-type,
--token-only, --new-token-id, --verify-passphrase,
--external-tokens-path].
گزینهها (OPTIONS)
--batch-mode, -q
اگر گزینه --verify-passphrase مشخص نشده باشد، این گزینه بررسی صحت گذرواژه را نیز غیرفعال میکند.
--debug یا --debug-json
اگر از --debug-json استفاده شود، ساختارهای داده اضافی LUKS2 JSON نیز چاپ میشوند.
--disable-locks
هشدار: از این گزینه استفاده نکنید مگر اینکه cryptsetup را در یک محیط محدود اجرا کنید که قفل کردن در آن غیرممکن است (جایی که پوشه /run قابل استفاده نیست).
--external-tokens-path مسیر_مطلق
--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) خوانده میشود. در این حالت، خواندن با رسیدن به نویسه خط جدید متوقف نخواهد شد.
گذرواژه ارائهشده از طریق --key-file همیشه گذرواژه اسلات کلید موجود است که توسط دستور درخواست شده است.
اگر میخواهید یک گذرواژه جدید را از طریق فایل کلید تنظیم کنید، باید از آرگومان موضعی یا پارامتر --new-keyfile استفاده کنید.
برای اطلاعات بیشتر، بخش NOTES ON PASSPHRASE PROCESSING را در cryptsetup(8) ببینید.
--keyfile-offset مقدار
--keyfile-size, -l مقدار
این گزینه به عنوان مثال برای بریدن نویسههای خط جدید پایانی مفید است. اگر --keyfile-offset نیز داده شده باشد، شمارش اندازه از پس از آفست آغاز میشود.
--key-size, -s بیتها
این گزینه زمانی لازم است که از پارامتر --volume-key-file برای ارائه کلید حجم فعلی استفاده شود. همچنین هنگامی که با مشخص کردن پارامتر --unbound یک اسلات کلید نامقید جدید ایجاد میشود، به کار میرود.
--key-slot, -S <0-N>
نکته: اگر کلید حجم موجود از طریق توکن LUKS2 (پارامترهای --token-id، --token-type یا --token-only) باز شود، یا زمانی که کلید حجم مستقیماً از طریق پارامتر --volume-key-file ارائه شود، این گزینه نادیده گرفته میشود.
نکته: برای حفظ سازگاری با گذشته، بدون پارامتر --new-key-slot، این گزینه به شما امکان میدهد مشخص کنید کدام اسلات کلید برای کلید جدید انتخاب شود.
حداکثر تعداد اسلاتهای کلید به نسخه LUKS بستگی دارد. LUKS1 میتواند تا ۸ اسلات کلید داشته باشد. LUKS2 بسته به اندازه ناحیه اسلات کلید و اندازه کلید میتواند تا ۳۲ اسلات کلید داشته باشد، اما شناسه اسلات کلید معتبر برای LUKS2 همیشه میتواند بین ۰ تا ۳۱ باشد.
--keyslot-cipher <مشخصه-رمز>
--keyslot-key-size <بیتها>
--new-keyfile نام_فایل
اگر نام دادهشده "-" باشد، گذرواژه از ورودی استاندارد (stdin) خوانده خواهد شد. در این حالت، خواندن با رسیدن به نویسه خط جدید متوقف نمیشود.
این روش جایگزینی برای آرگومان موضعی هنگام افزودن گذرواژه جدید از طریق فایل کلید است.
--new-keyfile-offset مقدار
--new-keyfile-size مقدار
--new-key-slot <0-N>
نکته: در صورت استفاده، این گزینه بر رفتار گزینه --key-slot تاثیر میگذارد.
حداکثر تعداد اسلاتهای کلید به نسخه LUKS بستگی دارد. LUKS1 میتواند تا ۸ اسلات کلید داشته باشد. LUKS2 بسته به اندازه ناحیه اسلات کلید و اندازه کلید میتواند تا ۳۲ اسلات کلید داشته باشد، اما شناسه اسلات کلید معتبر برای LUKS2 همیشه میتواند بین ۰ تا ۳۱ باشد.
--new-token-id
--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) است (به حافظه قابل آدرسدهی در برخی پلتفرمهای CPU محدود میشود). اگر پارامتر هزینه حافظه با بنچمارک تعیین شود (با پارامتر مشخص نشده باشد)، همیشه در بازه ۶۴ مگابایت (MiB) تا ۱ گیگابایت (GiB) قرار دارد. حداقل هزینه موازیسازی ۱ و حداکثر ۴ است (در صورتی که هستههای پردازنده کافی موجود باشد، در غیر این صورت کاهش مییابد).
--pbkdf-force-iterations <تعداد>
--pbkdf-memory <عدد>
--pbkdf-parallel <عدد>
--timeout, -t <تعداد ثانیهها>
این گزینه زمانی مفید است که سیستم در صورت عدم ورود گذرواژه توسط کاربر نباید متوقف بماند؛ به عنوان مثال هنگام بوت سیستم. مقدار پیشفرض ۰ ثانیه است که به معنای انتظار نامحدود است.
--token-id
--token-only
نکته: برای ایجاد یک اسلات کلید جدید با استفاده از گذرواژه ارائهشده توسط یک توکن، از پارامتر --new-token-id استفاده کنید.
--token-type نوع
--type <نوع-دستگاه>
--unbound
--usage
--verify-passphrase, -y
--version, -V
--volume-key-file, --master-key-file (نام مستعار منسوخشده)
هشدار: اگر کلید حجم اختصاصی خود را ایجاد میکنید، باید مطمئن شوید که آن را به درستی انجام میدهید. در غیر این صورت، ممکن است با یک کلید حجم با آنتروپی پایین یا تا حدی قابل پیشبینی مواجه شوید که امنیت را به خطر میاندازد.
--volume-key-keyring <شرح کلید>
عبارت <شرح کلید> از نحو سازگار با keyctl استفاده میکند. این میتواند یک شناسه عددی کلید یا نام رشتهای در قالب %<نوع کلید>:<نام کلید> باشد. همچنین بخش KEY IDENTIFIERS در keyctl(1) را ببینید. در صورتی که پیشوند %<نوع کلید>: مشخص نشده باشد، فرض میشود نوع کلید user (نوع پیشفرض) است.
مثالها (EXAMPLES)
نکته: در صورتی که روش دیگری مشخص نشده باشد، درخواست تعاملی گذرواژه همیشه روش پیشفرض است.
افزودن اسلات کلید جدید با استفاده از درخواست تعاملی گذرواژه هم برای گذرواژه موجود و هم برای گذرواژه جدید:
cryptsetup luksAddKey /dev/device
افزودن اسلات کلید جدید با استفاده از توکنهای LUKS2 برای باز کردن قفل اسلات کلید موجود، همراه با درخواست تعاملی گذرواژه برای گذرواژه جدید:
cryptsetup luksAddKey --token-only /dev/device
افزودن اسلات کلید جدید با استفاده از توکنهای systemd-tpm2 در LUKS2 برای باز کردن قفل اسلات کلید موجود، همراه با درخواست تعاملی گذرواژه برای گذرواژه جدید (پلاگین توکن systemd-tpm2 باید در دسترس باشد):
cryptsetup luksAddKey --token-type systemd-tpm2 /dev/device
افزودن اسلات کلید جدید با استفاده از درخواست تعاملی گذرواژه برای اسلات کلید موجود، و خواندن گذرواژه جدید از key_file:
cryptsetup luksAddKey --new-keyfile key_file /dev/device یا cryptsetup luksAddKey /dev/device key_file
افزودن اسلات کلید جدید با استفاده از کلید حجم ذخیرهشده در volume_key_file و توکن LUKS2 در اسلات ۵ برای دریافت گذرواژه اسلات کلید جدید (توکن در اسلات ۵ باید وجود داشته باشد و پلاگین توکن مربوطه نیز در دسترس باشد):
cryptsetup luksAddKey --volume-key-file volume_key_file --new-token-id 5 /dev/device
گزارش باگها (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.
| مه ۲۰۲۵ | cryptsetup 2.7.5 |