| CRYPTSETUP-LUKSFORMAT(8) | دستورهای مدیریتی و نگهداری | CRYPTSETUP-LUKSFORMAT(8) |
نام (NAME)
cryptsetup-luksFormat - فرمت و مقداردهی اولیه یک پارتیشن یا دستگاه با هدر LUKS
خلاصه دستور (SYNOPSIS)
cryptsetup luksFormat [<گزینهها>] <دستگاه> [<فایل کلید>]
توضیحات (DESCRIPTION)
یک پارتیشن یا دستگاه 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].
گزینهها (OPTIONS)
--align-payload <تعداد سکتورهای ۵۱۲ بایتی> (منسوخشده، از --offset استفاده کنید)
در صورت عدم تعیین، 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
--disable-keyring
--disable-locks
هشدار: از این گزینه استفاده نکنید مگر اینکه cryptsetup را در یک محیط محدود اجرا کنید که قفلگذاری در آن غیرممکن باشد (جایی که شاخه /run قابل استفاده نیست).
--force-password
اگر cryptsetup بدون پشتیبانی از بررسی کیفیت گذرواژه ساخته شده باشد، این گزینه نادیده گرفته میشود.
برای اطلاعات بیشتر درباره بررسی کیفیت گذرواژه، به صفحه راهنمای pwquality.conf(5) و passwdqc.conf(5) مراجعه کنید.
--hash, -h <مشخصه_هش>
الگوریتم هش باید حداقل ۱۶۰ بیت خروجی ارائه دهد. از هوردهای غیررمزنگاری مانند xxhash استفاده نکنید زیرا امنیت را به خطر میاندازد. از cryptsetup --help برای مشاهده مقادیر پیشفرض استفاده کنید.
--header <دستگاه یا فایل نگهدارنده هدر LUKS>
با تعیین یک نام فایل به عنوان آرگومان --header، در صورت عدم وجود فایل، به طور خودکار ایجاد خواهد شد. برای نحوه محاسبه اندازه هدر به پرسشهای متداول cryptsetup مراجعه کنید.
گزینه --align-payload به عنوان تراز سکتور مطلق روی دستگاه متن رمزشده در نظر گرفته میشود و میتواند صفر باشد.
--help, -?
--hw-opal
--hw-opal-only
لطفاً توجه داشته باشید که با رمزنگاری منحصراً OPAL (--hw-opal-only)، پین (گذرواژه) مدیر OPAL پیکربندیشده، امکان بازگشایی تمام محدودههای قفل پیکربندیشده را بدون نیاز به رمزگشایی اسلات کلید LUKS (بدون اطلاع از گذرواژه LUKS) فراهم میسازد. به دلیل مشکلات متعدد مشاهدهشده در سازگاری، در حال حاضر cryptsetup از حالت تککاربره OPAL استفاده نمیکند؛ حالتی که میتوانست دسترسی با پین مدیر OPAL را تفکیک کند.
--integrity <الگوریتم یکپارچگی>
هشدار: این افزونه آزمایشی (EXPERIMENTAL) است و به هدف هسته dm-integrity نیاز دارد. برای حالتهای بومی AEAD، همچنین «رابط فضای کاربری برای الگوریتمهای رمزنگاری AEAD» را در بخش «رابط برنامهنویسی رمزنگاری (Cryptographic API)» در پیکربندی هسته (گزینه CONFIG_CRYPTO_USER_API_AEAD در .config) فعال کنید.
برای اطلاعات بیشتر، بخش AUTHENTICATED DISK ENCRYPTION را در cryptsetup(8) ببینید.
--integrity-inline
در این حالت از هیچ ژورنال یا بیتمپی استفاده نمیشود. دستگاه باید با سرعت بومی و طبیعی خود (بدون هیچ سرباری) کار کند. این گزینه از نسخه ۶.۱۱ هسته لینوکس در دسترس است.
--integrity-key-size بیتها
--integrity-legacy-padding
از این گزینه استفاده نکنید مگر اینکه به سازگاری با یک هسته قدیمی خاص نیاز داشته باشید.
--integrity-no-wipe
همچنین نادیده گرفتن این مرحله ممکن است به دلیل تراز عملیات ورودی/خروجی (I/O) باعث خطای نوشتن شود. به عنوان مثال، حافظه نهان صفحه هسته (kernel page cache) میتواند درخواست خواندن یک صفحه کامل را صادر کند که به دلیل مقداردهی اولیه نشدن برچسب یکپارچگی با شکست مواجه میشود. این معمولاً یک نقص در برنامهای است که سعی میکند دادههایی را بخواند که قبلاً نوشته نشدهاند.
--iter-time, -i <تعداد میلیثانیهها>
--key-description متن
--key-file, -d فایل
اگر نام دادهشده "-" باشد، گذرواژه از ورودی استاندارد (stdin) خوانده خواهد شد. در این حالت، خواندن با نویسههای خط جدید (newline) متوقف نخواهد شد.
برای اطلاعات بیشتر بخش NOTES ON PASSPHRASE PROCESSING را در cryptsetup(8) ببینید.
--keyfile-offset مقدار
--keyfile-size, -l مقدار
این گزینه برای مثال برای حذف خطوط جدید پایانی مفید است. اگر --keyfile-offset نیز داده شده باشد، شمارش اندازه پس از آفست آغاز میشود.
--key-size, -s بیتها
برای اطلاعات بیشتر /proc/crypto را مشاهده کنید. توجه داشته باشید که اندازه کلید در /proc/crypto بر حسب بایت بیان شده است.
این گزینه میتواند برای open --type plain یا luksFormat استفاده شود. تمام اقدامات دیگر LUKS از اندازه کلید مشخصشده در هدر LUKS استفاده خواهند کرد. برای مشاهده مقادیر پیشفرض کامپایلشده از cryptsetup --help استفاده کنید.
--key-slot, -S <0-N>
حداکثر تعداد اسلاتهای کلید به نسخه LUKS بستگی دارد. LUKS1 میتواند تا ۸ اسلات کلید داشته باشد. LUKS2 بسته به اندازه ناحیه اسلاتهای کلید و اندازه کلید میتواند تا ۳۲ اسلات کلید داشته باشد، اما یک شناسه اسلات کلید معتبر همیشه میتواند بین ۰ تا ۳۱ برای LUKS2 باشد.
--keyslot-cipher <مشخصه_رمزنگاری>
--keyslot-key-size <بیتها>
--label <برچسب>, --subsystem <زیرسیستم>
--luks2-keyslots-size اندازه
--luks2-metadata-size اندازه
--offset, -o <تعداد سکتورهای ۵۱۲ بایتی>
گزینه --offset آفست داده (بار داده یا payload) دستگاه داده را تعیین میکند و باید با سکتورهای ۴۰۹۶ بایتی تراز باشد (باید مضربی از ۸ باشد). این گزینه نمیتواند با گزینه --align-payload ترکیب شود.
--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 تعداد
--progress-frequency ثانیهها
--progress-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 بایتها
در صورت عدم تعیین صریح، اندازه سکتور رمزنگاری بر اساس دستگاه داده زیرین تنظیم میشود. برای دستگاههایی با سکتور فیزیکی بومی ۴۰۹۶ بایتی، این مقدار روی ۴۰۹۶ بایت تنظیم میشود. برای 4096/512e (اندازه سکتور فیزیکی ۴۰۹۶ بایتی با شبیهسازی سکتور ۵۱۲ بایتی)، روی ۴۰۹۶ بایت تنظیم میگردد. برای درایوهایی که تنها اندازه سکتور فیزیکی ۵۱۲ بایتی را گزارش میدهند، روی ۵۱۲ بایت تنظیم میشود. اگر دستگاه داده یک فایل معمولی (کانتینر) باشد، روی ۴۰۹۶ بایت تنظیم خواهد شد.
در صورت استفاده همزمان با گزینه --integrity و ژورنال dm-integrity، اتمیک بودن (تراکنشی بودن) نوشتنها در تمام موارد تضمین میشود (اما هزینه کارایی نوشتن دارد؛ دادهها باید دوبار نوشته شوند).
افزایش اندازه سکتور از ۵۱۲ به ۴۰۹۶ بایت میتواند در بیشتر دستگاههای ذخیرهسازی مدرن و با برخی شتابدهندههای سختافزاری رمزنگاری، عملکرد بهتری ارائه دهد.
توجه داشته باشید که استفاده از اندازه سکتوری بزرگتر از اندازه سکتور فیزیکی دستگاه ذخیرهسازی زیرین ممکن است در هنگام قطعی غیرمنتظره برق منجر به خرابی دادهها شود. قطعی برق در حین عملیات نوشتن ممکن است باعث تکمیل ناقص نوشتن سکتور رمزنگاری شده و دادههای رمزگذاریشده را در وضعیتی ناپایدار قرار دهد که امکان رمزگشایی صحیح آنها وجود نداشته باشد.
--timeout, -t ثانیهها
این گزینه زمانی مفید است که سیستم در صورت عدم ورود گذرواژه توسط کاربر نباید متوقف و معطل بماند؛ برای مثال هنگام راهاندازی سیستم (بوت). مقدار پیشفرض ۰ ثانیه است که به معنای انتظار نامحدود و همیشگی است.
--type نوع
--usage
--use-random, --use-urandom
در هستههای اخیر (جدیدتر از نسخه ۵.۶) از این گزینهها استفاده نکنید. برای جزئیات بیشتر، بخش NOTES ON RANDOM NUMBER GENERATORS را در cryptsetup(8) و urandom(4) مشاهده فرمایید.
--uuid UUID
شناسه UUID باید در قالب استاندارد UUID ارائه شود، مانند 12345678-1234-1234-1234-123456789abc.
--verify-passphrase, -y
--version, -V
--volume-key-file فایل, --master-key-file فایل (نام مستعار منسوخشده)
هشدار: اگر کلید حجم خود را ایجاد میکنید، باید مطمئن شوید که آن را به درستی انجام میدهید. در غیر این صورت ممکن است با یک کلید حجم با آنتروپی پایین یا تا حدی قابل پیشبینی مواجه شوید که امنیت را به خطر میاندازد.
گزارش باگها (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 |