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

cryptsetup-luksFormat - فرمت و مقداردهی اولیه یک پارتیشن یا دستگاه با هدر LUKS

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

یک پارتیشن یا دستگاه LUKS را مقداردهی اولیه کرده و گذرواژه را از طریق اعلان تعاملی یا <فایل کلید> تنظیم می‌کند. توجه داشته باشید که در صورت وجود آرگومان دوم، گذرواژه از فایل مشخص‌شده در آنجا خوانده می‌شود، بدون اینکه نیازی به استفاده از گزینه --key-file باشد. همچنین توجه داشته باشید که برای هر دو روش خواندن گذرواژه از فایل، می‌توانید '-' را به عنوان نام فایل تعیین کنید که باعث می‌شود گذرواژه از ورودی استاندارد (stdin) خوانده شده و از پرسش ایمنی صرف‌نظر شود.

شما نمی‌توانید دستور luksFormat را روی دستگاه یا فایل‌سیستمی اجرا کنید که نگاشت شده (mapped) یا در حال استفاده است؛ مانند فایل‌سیستم سوارشده (mounted)، استفاده‌شده در LVM، عضو فعال RAID و غیره. برای فراخوانی luksFormat، دستگاه یا فایل‌سیستم باید پیاده‌سازی (unmount) شده باشد.

برای اجبار به استفاده از یک نسخه خاص از قالب LUKS، از --type luks1 یا --type luks2 استفاده کنید. قالب پیش‌فرض LUKS2 است.

برای استفاده از رمزنگاری سخت‌افزاری در یک درایو خودرمزنگار OPAL (مخفف SED OPAL)، از --hw-opal یا --hw-opal-only استفاده کنید. توجه داشته باشید که برخی از درایوهای OPAL ممکن است پیش از استفاده از قالب LUKS با گزینه‌های OPAL، نیاز به بازنشانی PSID (همراه با حذف داده‌ها) داشته باشند. گزینه --hw-opal-factory-reset را در دستور erase کریپت‌ست‌آپ ببینید.

اجرای luksFormat روی یک کانتینر LUKS موجود، کلید حجم (volume key) را مجدداً تولید می‌کند. مگر اینکه یک پشتیبان از هدر داشته باشید، تمام داده‌های رمزگذاری‌شده قبلی در کانتینر برای همیشه غیرقابل بازیابی خواهند بود. توجه داشته باشید که luksFormat ناحیه داده را پاک‌سازی (wipe) یا بازنویسی نمی‌کند. این دستور تنها یک هدر LUKS جدید با اسلات‌های کلید تازه ایجاد می‌کند. برای اطلاعات بیشتر درباره نحوه پاک‌سازی کل دستگاه، از جمله داده‌های رمزگذاری‌شده، به پرسش‌های متداول cryptsetup (FAQ) مراجعه کنید.

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--hash, --cipher, --verify-passphrase, --key-size, --key-slot, --key-file (دارای اولویت نسبت به آرگومان اختیاری دوم), --keyfile-offset, --keyfile-size, --use-random, --use-urandom, --uuid, --volume-key-file, --iter-time, --header, --pbkdf-force-iterations, --force-password, --disable-locks, --timeout, --type, --offset, --align-payload (منسوخ‌شده)].

برای LUKS2، <گزینه‌ها>ی اضافی می‌توانند شامل موارد زیر باشند:
[--integrity, --integrity-no-wipe, --sector-size, --label, --subsystem, --pbkdf, --pbkdf-memory, --pbkdf-parallel, --disable-locks, --disable-keyring, --luks2-metadata-size, --luks2-keyslots-size, --keyslot-cipher, --keyslot-key-size, --integrity-legacy-padding, --hw-opal, --hw-opal-only].

--align-payload <تعداد سکتورهای ۵۱۲ بایتی> (منسوخ‌شده، از --offset استفاده کنید)

تراز کردن بار داده (payload) در مرز مضاربی از مقدار سکتور ۵۱۲ بایتی.

در صورت عدم تعیین، cryptsetup تلاش می‌کند از اطلاعات توپولوژی ارائه‌شده توسط هسته برای دستگاه زیرین جهت دستیابی به تراز بهینه استفاده کند. در صورت عدم دسترسی (یا اگر مقدار محاسبه‌شده مضربی از پیش‌فرض باشد)، داده‌ها به صورت پیش‌فرض در مرز ۱ مبی‌بایت (یعنی ۲۰۴۸ سکتور ۵۱۲ بایتی) تراز می‌شوند.

برای یک هدر LUKS جداشده (detached)، این گزینه آفست روی دستگاه داده را مشخص می‌کند. همچنین گزینه --header را ببینید.

این گزینه منسوخ شده است (DEPRECATED) و به دلیل گرد کردن‌های پیچیده، تأثیر غیرمنتظره‌ای بر آفست داده و اندازه ناحیه اسلات‌های کلید (برای LUKS2) دارد. برای آفست ثابت دستگاه داده، به جای آن از گزینه --offset استفاده کنید.

--batch-mode, -q

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

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

--cipher, -c <مشخصه_رمزنگاری>

رشته مشخصه الگوریتم رمزنگاری را تنظیم می‌کند.

دستور cryptsetup --help مقادیر پیش‌فرض کامپایل‌شده را نمایش می‌دهد.

اگر یک تابع هش بخشی از مشخصه الگوریتم رمزنگاری باشد، به عنوان بخشی از تولید بردار مقداردهی اولیه (IV) استفاده می‌شود. به عنوان مثال، ESSIV به یک تابع هش نیاز دارد، در حالی که "plain64" نیازی ندارد و بنابراین هیچ هشی مشخص نمی‌شود.

برای حالت XTS، می‌توانید به صورت اختیاری با گزینه -s اندازه کلید ۵۱۲ بیت را تنظیم کنید. اندازه کلید برای حالت XTS به منظور دستیابی به همان سطح امنیت، دو برابر سایر حالت‌ها است.

--debug یا --debug-json

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

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

--disable-blkid

استفاده از کتابخانه blkid برای بررسی و پاک‌سازی امضاهای روی دیسک را غیرفعال می‌کند.

--disable-keyring

کلید حجم را در دسته‌کلید هسته (kernel keyring) بارگذاری نمی‌کند؛ بلکه آن را مستقیماً در هدف dm-crypt ذخیره می‌نماید. این گزینه فقط برای نوع LUKS2 پشتیبانی می‌شود.

--disable-locks

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

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

--force-password

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

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

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

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

تابع هش مورداستفاده در طرح راه‌اندازی کلید LUKS و چکیده (digest) کلید حجم را مشخص می‌کند. هش مشخص‌شده برای PBKDF2 و تقسیم‌کننده AF استفاده می‌شود.

الگوریتم هش باید حداقل ۱۶۰ بیت خروجی ارائه دهد. از هوردهای غیررمزنگاری مانند xxhash استفاده نکنید زیرا امنیت را به خطر می‌اندازد. از cryptsetup --help برای مشاهده مقادیر پیش‌فرض استفاده کنید.

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

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

با تعیین یک نام فایل به عنوان آرگومان --header، در صورت عدم وجود فایل، به طور خودکار ایجاد خواهد شد. برای نحوه محاسبه اندازه هدر به پرسش‌های متداول cryptsetup مراجعه کنید.

گزینه --align-payload به عنوان تراز سکتور مطلق روی دستگاه متن رمزشده در نظر گرفته می‌شود و می‌تواند صفر باشد.

--help, -?

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

--hw-opal

دستگاه LUKS2 را با رمزنگاری dm-crypt به صورت لایه‌بندی‌شده بر روی رمزنگاری سخت‌افزاری پیکربندی‌شده در محدوده قفل SED OPAL فرمت می‌کند. این گزینه رمزنگاری داده‌ها را هم بر پایه نرم‌افزار و هم بر پایه سخت‌افزار فعال می‌نماید.

--hw-opal-only

دستگاه LUKS2 را تنها با رمزنگاری سخت‌افزاری پیکربندی‌شده روی محدوده قفل SED OPAL فرمت می‌کند. قالب LUKS2 در این حالت فقط کلید بازگشایی محدوده قفل را مدیریت می‌کند. این گزینه رمزنگاری سخت‌افزاری داده‌ها را تنها توسط درایو SED OPAL فعال و مدیریت می‌کند.

لطفاً توجه داشته باشید که با رمزنگاری منحصراً OPAL (--hw-opal-only)، پین (گذرواژه) مدیر OPAL پیکربندی‌شده، امکان بازگشایی تمام محدوده‌های قفل پیکربندی‌شده را بدون نیاز به رمزگشایی اسلات کلید LUKS (بدون اطلاع از گذرواژه LUKS) فراهم می‌سازد. به دلیل مشکلات متعدد مشاهده‌شده در سازگاری، در حال حاضر cryptsetup از حالت تک‌کاربره OPAL استفاده نمی‌کند؛ حالتی که می‌توانست دسترسی با پین مدیر OPAL را تفکیک کند.

--integrity <الگوریتم یکپارچگی>

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

هشدار: این افزونه آزمایشی (EXPERIMENTAL) است و به هدف هسته dm-integrity نیاز دارد. برای حالت‌های بومی AEAD، همچنین «رابط فضای کاربری برای الگوریتم‌های رمزنگاری AEAD» را در بخش «رابط برنامه‌نویسی رمزنگاری (Cryptographic API)» در پیکربندی هسته (گزینه CONFIG_CRYPTO_USER_API_AEAD در .config) فعال کنید.

برای اطلاعات بیشتر، بخش AUTHENTICATED DISK ENCRYPTION را در cryptsetup(8) ببینید.

--integrity-inline

برچسب‌های یکپارچگی را در فیلدهای سخت‌افزاری یکپارچگی سکتور ذخیره می‌کند. دستگاه باید از سکتورهایی با اطلاعات محافظت اضافی (PI که به عنوان DIF یا میدان یکپارچگی داده نیز شناخته می‌شود) به اندازه درخواستی پشتیبانی کند. زیرسیستم ذخیره‌سازی دیگری نباید از این فیلد اضافی استفاده کند (دستگاه باید پروفایل "nop" را در هسته ارائه دهد). توجه داشته باشید که برخی از دستگاه‌ها برای پشتیبانی از این گزینه باید در سطح پایین (low-level) مجدداً فرمت شوند؛ برای دستگاه‌های NVMe، نمایه یا پروفایل‌های LBA در دستور nvme(1) id-ns را ببینید.

در این حالت از هیچ ژورنال یا بیت‌مپی استفاده نمی‌شود. دستگاه باید با سرعت بومی و طبیعی خود (بدون هیچ سرباری) کار کند. این گزینه از نسخه ۶.۱۱ هسته لینوکس در دسترس است.

--integrity-key-size بیت‌ها

اندازه کلید یکپارچگی داده. آرگومان باید مضربی از ۸ باشد. تنها برای یکپارچگی HMAC قابل پیکربندی است. اندازه پیش‌فرض کلید یکپارچگی برابر با طول خروجی هش تنظیم شده است.

--integrity-legacy-padding

استفاده از لایه‌گذاری موروثی (legacy padding) ناکارآمد.

از این گزینه استفاده نکنید مگر اینکه به سازگاری با یک هسته قدیمی خاص نیاز داشته باشید.

--integrity-no-wipe

صرف‌نظر از پاک‌سازی (wiping) برچسب‌های احراز اصالت (یکپارچگی) دستگاه. اگر از این مرحله صرف‌نظر کنید، سکتورها تا زمانی که برنامه‌ای در سکتور ننویسد، برچسب یکپارچگی نامعتبر را گزارش خواهند داد.

همچنین نادیده گرفتن این مرحله ممکن است به دلیل تراز عملیات ورودی/خروجی (I/O) باعث خطای نوشتن شود. به عنوان مثال، حافظه نهان صفحه هسته (kernel page cache) می‌تواند درخواست خواندن یک صفحه کامل را صادر کند که به دلیل مقداردهی اولیه نشدن برچسب یکپارچگی با شکست مواجه می‌شود. این معمولاً یک نقص در برنامه‌ای است که سعی می‌کند داده‌هایی را بخواند که قبلاً نوشته نشده‌اند.

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

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

--key-description متن

توضیحات کلید را در دسته‌کلید (keyring) که برای بازیابی گذرواژه استفاده خواهد شد، تنظیم می‌کند.

--key-file, -d فایل

خواندن گذرواژه از فایل مشخص‌شده.

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

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

--keyfile-offset مقدار

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

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

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

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

--key-size, -s بیت‌ها

اندازه کلید را بر حسب بیت تعیین می‌کند. آرگومان باید مضربی از ۸ باشد. اندازه‌های کلید ممکن با توجه به الگوریتم رمزنگاری و حالت استفاده‌شده محدود می‌شوند.

برای اطلاعات بیشتر /proc/crypto را مشاهده کنید. توجه داشته باشید که اندازه کلید در /proc/crypto بر حسب بایت بیان شده است.

این گزینه می‌تواند برای open --type plain یا luksFormat استفاده شود. تمام اقدامات دیگر LUKS از اندازه کلید مشخص‌شده در هدر LUKS استفاده خواهند کرد. برای مشاهده مقادیر پیش‌فرض کامپایل‌شده از cryptsetup --help استفاده کنید.

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

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

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

--keyslot-cipher <مشخصه_رمزنگاری>

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

--keyslot-key-size <بیت‌ها>

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

--label <برچسب>, --subsystem <زیرسیستم>

برچسب و شرح زیرسیستم را برای دستگاه LUKS2 تنظیم می‌کند. این موارد مشابه برچسب‌های فایل‌سیستم هستند. برچسب و زیرسیستم فیلدهای اختیاری هستند و می‌توانند بعداً در اسکریپت‌های udev برای اجرای کنش‌های کاربری به محض شناسایی دستگاه علامت‌گذاری‌شده با این برچسب‌ها استفاده شوند.

--luks2-keyslots-size اندازه

از این گزینه می‌توان برای تنظیم اندازه مشخصی از ناحیه باینری اسلات‌های کلید LUKS2 (جایی که متریال کلید در آن رمزگذاری می‌شود) استفاده کرد. مقدار باید با مضربی از ۴۰۹۶ بایت تراز شده و حداکثر اندازه آن ۱۲۸ مگابایت باشد. <اندازه> را می‌توان با پسوند یکا (برای مثال، 128k) تعیین کرد.

--luks2-metadata-size اندازه

از این گزینه می‌توان برای بزرگ‌تر کردن ناحیه فراداده (JSON) در LUKS2 استفاده کرد. اندازه شامل ۴۰۹۶ بایت برای فراداده‌های باینری است (ناحیه قابل استفاده JSON کوچکتری از ناحیه باینری است). طبق مشخصات فنی LUKS2، تنها این مقادیر معتبر هستند: ۱۶، ۳۲، ۶۴، ۱۲۸، ۲۵۶، ۵۱۲، ۱۰۲۴، ۲۰۴۸ و ۴۰۹۶ کیلوبایت. <اندازه> را می‌توان با پسوند یکا (برای مثال، 128k) مشخص کرد.

--offset, -o <تعداد سکتورهای ۵۱۲ بایتی>

آفست شروع در دستگاه پشتیبان بر حسب سکتورهای ۵۱۲ بایتی.

گزینه --offset آفست داده (بار داده یا payload) دستگاه داده را تعیین می‌کند و باید با سکتورهای ۴۰۹۶ بایتی تراز باشد (باید مضربی از ۸ باشد). این گزینه نمی‌تواند با گزینه --align-payload ترکیب شود.

--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 برای افزایش هزینه حملات فرهنگ‌لغت (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 و تنظیم مستقیم هزینه زمانی (تعداد تکرارها). تنها برای دستگاه‌های LUKS/LUKS2 قابل استفاده است. برای اطلاعات بیشتر گزینه --pbkdf را ببینید.

--pbkdf-memory تعداد

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

--pbkdf-parallel تعداد

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

--progress-frequency ثانیه‌ها

چاپ یک خط مجزا در هر ثانیه برای نمایش پیشرفت پاک‌سازی.

--progress-json

داده‌های پیشرفت را در قالب JSON چاپ می‌کند که عمدتاً برای پردازش ماشینی مناسب است. هر نیم ثانیه یک خط مجزا چاپ می‌کند (یا بر اساس مقدار --progress-frequency). خروجی JSON در طول پیشرفت شبیه به موارد زیر است (با این تفاوت که به صورت یک خط واحد فشرده است):
{
  "device":"/dev/sda",      // backing device or file
  "device_bytes":"8192",    // bytes of I/O so far
  "device_size":"44040192", // total bytes of I/O to go
  "speed":"126877696",      // calculated speed in bytes per second (based on progress so far)
  "eta_ms":"2520012",       // estimated time to finish an operation in milliseconds
  "time_ms":"5561235"       // total time spent in IO operation in milliseconds
}

نکته در مورد اعداد در خروجی JSON: به دلیل محدودیت‌های تجزیه‌کننده JSON، تمام اعداد به دلیل نیاز به اعداد صحیح ۶۴ بیتی بدون علامت کامل، در قالب رشته نمایش داده می‌شوند.

--sector-size بایت‌ها

تنظیم اندازه سکتور رمزنگاری برای استفاده با دستگاه‌های نوع LUKS2. این مقدار باید توانی از دو و در بازه ۵۱۲ تا ۴۰۹۶ بایت باشد.

در صورت عدم تعیین صریح، اندازه سکتور رمزنگاری بر اساس دستگاه داده زیرین تنظیم می‌شود. برای دستگاه‌هایی با سکتور فیزیکی بومی ۴۰۹۶ بایتی، این مقدار روی ۴۰۹۶ بایت تنظیم می‌شود. برای 4096/512e (اندازه سکتور فیزیکی ۴۰۹۶ بایتی با شبیه‌سازی سکتور ۵۱۲ بایتی)، روی ۴۰۹۶ بایت تنظیم می‌گردد. برای درایوهایی که تنها اندازه سکتور فیزیکی ۵۱۲ بایتی را گزارش می‌دهند، روی ۵۱۲ بایت تنظیم می‌شود. اگر دستگاه داده یک فایل معمولی (کانتینر) باشد، روی ۴۰۹۶ بایت تنظیم خواهد شد.

در صورت استفاده همزمان با گزینه --integrity و ژورنال dm-integrity، اتمیک بودن (تراکنشی بودن) نوشتن‌ها در تمام موارد تضمین می‌شود (اما هزینه کارایی نوشتن دارد؛ داده‌ها باید دوبار نوشته شوند).

افزایش اندازه سکتور از ۵۱۲ به ۴۰۹۶ بایت می‌تواند در بیشتر دستگاه‌های ذخیره‌سازی مدرن و با برخی شتاب‌دهنده‌های سخت‌افزاری رمزنگاری، عملکرد بهتری ارائه دهد.

توجه داشته باشید که استفاده از اندازه سکتوری بزرگتر از اندازه سکتور فیزیکی دستگاه ذخیره‌سازی زیرین ممکن است در هنگام قطعی غیرمنتظره برق منجر به خرابی داده‌ها شود. قطعی برق در حین عملیات نوشتن ممکن است باعث تکمیل ناقص نوشتن سکتور رمزنگاری شده و داده‌های رمزگذاری‌شده را در وضعیتی ناپایدار قرار دهد که امکان رمزگشایی صحیح آن‌ها وجود نداشته باشد.

--timeout, -t ثانیه‌ها

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

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

--type نوع

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

--usage

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

--use-random, --use-urandom

برای luksFormat، این گزینه‌ها مشخص می‌کنند کدام تولیدکننده اعداد تصادفی هسته برای ساخت کلید حجم (که یک کلید بلندمدت است) استفاده شود.

در هسته‌های اخیر (جدیدتر از نسخه ۵.۶) از این گزینه‌ها استفاده نکنید. برای جزئیات بیشتر، بخش NOTES ON RANDOM NUMBER GENERATORS را در cryptsetup(8) و urandom(4) مشاهده فرمایید.

--uuid UUID

استفاده از UUID ارائه‌شده برای دستور luksFormat به جای تولید یک UUID جدید. در صورت استفاده با دستور luksUUID، شناسه UUID موجود را تغییر می‌دهد.

شناسه UUID باید در قالب استاندارد UUID ارائه شود، مانند 12345678-1234-1234-1234-123456789abc.

--verify-passphrase, -y

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

--version, -V

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

--volume-key-file فایل, --master-key-file فایل (نام مستعار منسوخ‌شده)

استفاده از کلید حجم ذخیره‌شده در یک فایل.

هشدار: اگر کلید حجم خود را ایجاد می‌کنید، باید مطمئن شوید که آن را به درستی انجام می‌دهید. در غیر این صورت ممکن است با یک کلید حجم با آنتروپی پایین یا تا حدی قابل پیش‌بینی مواجه شوید که امنیت را به خطر می‌اندازد.

گزارش باگ‌ها در لیست پستی 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.

2026-07-21 cryptsetup 2.8.7