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

cryptsetup-open - باز کردن دستگاه رمزگذاریشده و ایجاد نگاشت در /dev/mapper

cryptsetup open --type <نوع_دستگاه> [<گزینه‌ها>] <دستگاه> <نام>

دستگاه <دستگاه> را باز کرده و یک نگاشت با <نام> مشخص در ‎/dev/mapper ایجاد می‌کند.

نوع دستگاه می‌تواند plain، luks (پیش‌فرض)، luks1، luks2، loopaes یا tcrypt باشد.

برای سازگاری با نسخه‌های پیشین، نام‌های مستعار زیر برای دستور open وجود دارند:

create (با ترتیب آرگومان <نام> <دستگاه>): معادل open --type plain
plainOpen: معادل open --type plain
luksOpen: معادل open --type luks
loopaesOpen: معادل open --type loopaes
tcryptOpen: معادل open --type tcrypt
bitlkOpen: معادل open --type bitlk

<گزینه‌ها> وابسته به نوع دستگاه هستند و در ادامه برای هر یک از انواع دستگاه‌ها شرح داده شده‌اند. برای دستور create، ترتیب گزینه‌های <نام> و <دستگاه> به دلایل تاریخی معکوس است؛ تمامی نام‌های مستعار دیگر از ترتیب استاندارد <دستگاه> <نام> استفاده می‌کنند.

open --type plain <دستگاه> <نام> --cipher <مشخصات> --key-size <بیت‌ها> --hash <الگوریتم>
plainOpen <دستگاه> <نام> (نحو قدیمی)
create <نام> <دستگاه> (نحو منسوخ‌شده)

دستگاه <دستگاه> را باز کرده و یک نگاشت با <نام> مشخص برپا می‌کند.

شما همیشه باید گزینه‌های --cipher، --key-size و (در صورتی که از فایل کلید یا جاکلیدی استفاده نمی‌شود) همچنین --hash را به صورت صریح مشخص کنید تا از ناسازگاری جلوگیری شود، زیرا مقادیر پیش‌فرض ممکن است در نسخه‌های قدیمی‌تر cryptsetup متفاوت باشند.

قالب plain همچنین امکان بازیابی کلید حجم از یک جاکلیدی هسته (kernel keyring) مشخص‌شده توسط --volume-key-keyring را فراهم می‌سازد. کلید موجود در جاکلیدی هسته باید پیش از اجرای دستورات cryptsetup پیکربندی شده باشد، زیرا cryptsetup در حالت plain هیچ کلیدی را در جاکلیدی بارگذاری نمی‌کند. برای دستورهای بعدی (مانند resize)، کاربر باید اطمینان حاصل کند که کلید موجود در جاکلیدی بدون تغییر باقی مانده است. در غیر این صورت، بارگذاری مجدد کلید می‌تواند پس از یک تغییر غیرمنتظره در کلید موجب خرابی داده‌ها شود.

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--hash, --cipher, --sector-size, --key-file, --keyfile-size, --keyfile-offset, --key-size, --offset, --skip, --device-size, --size, --readonly, --shared, --allow-discards, --refresh, --timeout, --verify-passphrase, --iv-large-sectors, --volume-key-keyring].

مثال‌ها:

برای نگاشت دستگاه رمزگذاری‌شده ‎/dev/sda10 به دستگاه رمزگشایی‌شده ‎/dev/mapper/e1 می‌توانید از دستور زیر استفاده کنید:

cryptsetup open --type plain --cipher aes-cbc-essiv:sha256 --key-size 256 --hash sha256 /dev/sda10 e1

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

برای نگاشت یک دستگاه با یک کلید حجم در جاکلیدی معتمد (trusted) یا رمزگذاری‌شده از پیش‌پیکربندی‌شده، باید جاکلیدی را به همراه کلید مشخص کرده و مشخصات هش را حذف کنید؛ برای نمونه، جهت استفاده از %trusted:mykey:

cryptsetup open --type plain /dev/sda10 e1 --volume-key-keyring=%trusted:mykey --cipher aes-xts-plain64 --key-size 256

توجه داشته باشید که اندازه کلید باید دقیقاً با کلید از پیش‌پیکربندی‌شده در جاکلیدی همخوانی داشته باشد.

open <دستگاه> <نام>
open --type <luks1|luks2> <دستگاه> <نام> (درخواست صریح نسخه)
luksOpen <دستگاه> <نام> (نحو قدیمی)

دستگاه LUKS مشخص‌شده توسط <دستگاه> را باز کرده و پس از اعتبارسنجی و تایید موفقیت‌آمیز گذرواژه ارائه‌شده، یک نگاشت با <نام> راه‌اندازی می‌کند.

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

اگر یک توکن معتبر LUKS2 وجود داشته باشد اما برای باز کردن شیار کلید اختصاص‌یافته به یک پین (PIN) نیاز داشته باشد، استفاده نخواهد شد مگر اینکه یکی از گزینه‌های زیر اضافه شود: --token-only، گزینه --token-type که در آن نوع با توکن محافظت‌شده با پین مورد نظر مطابقت داشته باشد، یا گزینه --token-id که در آن شناسه با توکن محافظت‌شده با پین همخوانی داشته باشد.

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--key-file, --keyfile-offset, --keyfile-size, --readonly, --test-passphrase, --allow-discards, --header, --key-slot, --volume-key-file, --token-id, --token-only, --token-type, --disable-external-tokens, --disable-keyring, --disable-locks, --type, --refresh, --serialize-memory-hard-pbkdf, --unbound, --tries, --timeout, --verify-passphrase, --persistent, --volume-key-keyring, --link-vk-to-keyring, --external-tokens-path].

open --type loopaes <دستگاه> <نام> --key-file <فایل_کلید>
loopaesOpen <دستگاه> <نام> --key-file <فایل_کلید> (نحو قدیمی)

دستگاه loop-AES مشخص‌شده توسط <دستگاه> را باز کرده و یک نگاشت با <نام> برپا می‌کند.

اگر فایل کلید با GnuPG رمزگذاری شده است، باید از --key-file=- استفاده کرده و قبل از استفاده آن را رمزگشایی کنید، مانند نمونه زیر:

gpg --decrypt <keyfile> | cryptsetup loopaesOpen --key-file=- <دستگاه> <نام>

افزونه loop-AES نمی‌تواند از ورودی مستقیم فایل کلید روی ترمینال واقعی استفاده کند، زیرا کلیدها با نویسه پایان خط (newline) جدا می‌شوند و تنها بخشی از فایل چندکلیدی خوانده خواهد شد. اگر در یک اسکریپت به آن نیاز دارید، کافی است از هدایت لوله (pipe) استفاده کنید:

echo $keyfile | cryptsetup loopaesOpen --key-file=- <دستگاه> <نام>

در صورت نیاز، از --keyfile-size برای مشخص کردن طول مناسب کلید استفاده کنید.

از --offset برای تعیین آفست دستگاه استفاده نمایید. توجه داشته باشید که واحدها باید بر حسب سکتورهای ۵۱۲ بایتی مشخص شوند.

از --skip برای تعیین آفست بردار مقداردهی اولیه (IV) استفاده کنید. اگر دستگاه اصلی از یک آفست استفاده کرده اما از آن در محاسبات سکتور IV استفاده نکرده است، علاوه بر پارامتر offset باید صراحتاً از --skip 0 استفاده کنید.

از --hash برای جایگزینی تابع هش پیش‌فرض جهت هش کردن گذرواژه استفاده کنید (در غیر این صورت، بر اساس اندازه کلید تشخیص داده می‌شود).

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--cipher, --key-file, --keyfile-size, --keyfile-offset, --key-size, --offset, --skip, --hash, --readonly, --allow-discards, --refresh].

open --type tcrypt <دستگاه> <نام>
tcryptOpen <دستگاه> <نام> (نحو قدیمی)

دستگاه TCRYPT (سازگار با TrueCrypt و VeraCrypt) مشخص‌شده توسط <دستگاه> را باز کرده و یک نگاشت با <نام> برپا می‌کند.

گزینه --key-file امکان ترکیب محتوای فایل با گذرواژه را فراهم می‌سازد. گزینه --key-file می‌تواند چند بار تکرار شود. توجه داشته باشید که استفاده از فایل‌های کلید با منطق فایل کلید در LUKS متفاوت است.

اگر از گزینه‌های --cipher یا --hash استفاده شود، تنها زنجیره‌های رمز یا گونه‌های PBKDF2 با الگوریتم‌های هش مشخص‌شده بررسی می‌شوند. این کار می‌تواند سرعت باز کردن قفل دستگاه را افزایش دهد (اما همچنین اطلاعاتی را درباره کانتینر فاش می‌سازد).

اگر از --header در ترکیب با گزینه‌های مخفی (hidden) یا سیستمی (system) استفاده می‌کنید، فایل هدر باید شامل هدرهای مشخص در همان موقعیت‌های کانتینر رمزگذاری‌شده اصلی باشد.

گزینه --allow-discards نمی‌تواند با گزینه --tcrypt-hidden ترکیب شود. برای نگاشت عادی، این کار می‌تواند باعث نابودی حجم مخفی شود (حجم مخفی به عنوان فضای استفاده‌نشده برای حجم بیرونی ظاهر می‌شود، بنابراین این فضا ممکن است دور ریخته شود).

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--key-file, --tcrypt-hidden, --tcrypt-system, --tcrypt-backup, --readonly, --test-passphrase, --allow-discards, --veracrypt (نادیده گرفته می‌شود), --disable-veracrypt, --veracrypt-pim, --veracrypt-query-pim, --header, --cipher, --hash, --tries, --timeout, --verify-passphrase].

open --type bitlk <دستگاه> <نام>
bitlkOpen <دستگاه> <نام> (نحو قدیمی)

دستگاه BITLK (سازگار با BitLocker مایکروسافت) مشخص‌شده توسط <دستگاه> را باز کرده و یک نگاشت با <نام> برپا می‌کند.

توجه داشته باشید که گزینه --test-passphrase همراه با --volume-key-file کار نمی‌کند، زیرا نمی‌توان بررسی کرد که آیا کلید حجم ارائه‌شده برای این دستگاه صحیح است یا خیر. هنگام استفاده از --volume-key-file، دستگاه حتی اگر کلید ارائه‌شده نادرست باشد باز خواهد شد.

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--key-file, --keyfile-offset, --keyfile-size, --key-size, --readonly, --test-passphrase, --allow-discards, --volume-key-file, --tries, --timeout, --verify-passphrase].

open --type fvault2 <دستگاه> <نام>
fvault2Open <دستگاه> <نام> (نحو قدیمی)

دستگاه FVAULT2 (سازگار با FileVault2 اپل) مشخص‌شده توسط <دستگاه> را باز کرده و یک نگاشت با <نام> برپا می‌کند.

<گزینه‌ها> می‌توانند شامل موارد زیر باشند:
[--key-file, --keyfile-offset, --keyfile-size, --key-size, --readonly, --test-passphrase, --allow-discards, --volume-key-file, --tries, --timeout, --verify-passphrase].

--allow-discards

اجازه استفاده از درخواست‌های دورریز (TRIM/discard) را برای دستگاه صادر می‌کند. این قابلیت برای دستگاه‌های LUKS2 با حفاظت یکپارچگی داده‌ها پشتیبانی نمی‌شود.

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

به نسخه هسته ۳.۱ یا بالاتر نیاز است. برای هسته‌های قدیمی‌تر، این گزینه نادیده گرفته می‌شود.

--batch-mode, -q

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

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

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

رشته مشخصات الگوریتم رمزنگاری (cipher) را برای دستگاه‌های نوع plain تعیین می‌کند.

برای دستگاه‌های نوع tcrypt، این گزینه زنجیره‌های رمز بررسی‌شده را هنگام جستجو برای هدر محدود می‌سازد.

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

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

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

--debug یا --debug-json

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

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

--device-size اندازه[واحدها]

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

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

پسوند واحد می‌تواند S برای سکتورهای ۵۱۲ بایتی، K/M/G/T (یا KiB، MiB، GiB، TiB) برای واحدهای بر مبنای ۱۰۲۴، یا KB/MB/GB/TB برای مبنای ۱۰۰۰ (مقیاس SI) باشد.

--disable-external-tokens

بارگذاری افزونه‌ها (پلاگین‌ها) برای توکن‌های خارجی LUKS2 را غیرفعال می‌کند.

--disable-keyring

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

--disable-locks

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

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

--disable-veracrypt

این گزینه می‌تواند برای غیرفعال کردن حالت سازگار با VeraCrypt استفاده شود (تنها دستگاه‌های TrueCrypt شناسایی می‌شوند). برای اطلاعات بیشتر بخش TCRYPT را در cryptsetup(8) ببینید.

--external-tokens-path <مسیر_مطلق>

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

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

تابع هش گذرواژه را تعیین می‌کند. تنها برای انواع دستگاه‌های plain و loopaes کاربرد دارد.

برای دستگاه‌های نوع tcrypt، این گزینه گونه‌های PBKDF2 بررسی‌شده را هنگام جستجوی هدر محدود می‌سازد.

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

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

هشدار: هیچ بررسی انجام نمی‌شود که آیا دستگاه متن رمزشده (ciphertext) مشخص‌شده واقعاً متعلق به هدر ارائه‌شده است یا خیر. در واقع، شما می‌توانید یک دستگاه دلخواه را با گزینه --header به عنوان دستگاه متن رمزشده تعیین نمایید. با احتیاط استفاده کنید.

--help, -?

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

--iv-large-sectors

بردار مقداردهی اولیه (IV) را به جای سکتورهای ۵۱۲ بایتی، بر حسب اندازه سکتور بزرگتر (در صورت تنظیم) محاسبه می‌کند. این گزینه فقط با دستگاه‌های نوع plain قابل استفاده است.

این گزینه هیچ تاثیر کارایی یا امنیتی ندارد؛ فقط برای دسترسی به ایمیج‌های دیسک ناسازگار موجود از سایر سیستم‌ها که به این گزینه نیاز دارند استفاده شود.

--key-description متن

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

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

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

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

در دستگاه‌های نوع plain، گذرواژه به‌دست‌آمده از طریق گزینه --key-file مستقیماً به dm-crypt ارسال می‌شود. برخلاف حالت تعاملی (stdin) که در آن خلاصه (digest) گذرواژه به جای خود آن به dm-crypt ارسال می‌گردد.

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

--keyfile-offset مقدار

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

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

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

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

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

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

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

این گزینه می‌تواند برای دستگاه‌های plain و luks استفاده شود. برای دستگاه‌های LUKS2 در حال رمزگذاری مجدد (reencryption)، می‌توانید این پارامتر را دو بار برای تعیین هر دو اندازه کلید حجم قدیم و جدید به کار ببرید. هر گزینه --key-size با پارامتر متناظر --volume-key-file مرتبط است (که آن هم تا دو بار مجاز است استفاده شود).

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

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

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

--link-vk-to-keyring <شرح_جاکلیدی>::<شرح_کلید>

کلید حجم را با نام کلید مشخص‌شده در یک جاکلیدی پیوند می‌دهد (لینک می‌کند). کلید حجم تنها در صورتی پیوند داده می‌شود که اقدام درخواست‌شده با موفقیت به پایان برسد (همراه با --test-passphrase، کلید حجم تاییدشده بدون انجام اقدام دیگری در جاکلیدی پیوند داده می‌شود).

رشته <شرح_جاکلیدی> باید شامل شرح جاکلیدی موجود در هسته باشد. نام جاکلیدی می‌تواند به صورت اختیاری دارای پیشوند نوع "%:" یا "%keyring:" باشد. یا اینکه جاکلیدی می‌تواند مستقیماً با شناسه عددی کلید مشخص شود. همچنین نشانه‌گذاری‌های ویژه جاکلیدی که با "@" آغاز می‌شوند می‌توانند برای انتخاب جاکلیدی‌های پیش‌تعریف‌شده موجود در هسته به کار روند.

رشته "::" یک جداکننده است که برای تفکیک شرح جاکلیدی و شرح کلید استفاده می‌شود.

بخش <شرح_کلید> نوع کلید و نام کلید کلیدِ حجمی را که در جاکلیدی شرح‌داده‌شده در <شرح_جاکلیدی> پیوند داده می‌شود توصیف می‌کند. نوع می‌تواند با افزودن پیشوند "%<نام_نوع>:" در جلوی نام کلید تعیین شود. اگر نوع ذکر نشود، نوع پیش‌فرض user اعمال می‌گردد. اگر کلیدی با همان نام و نوع قبلاً وجود داشته باشد (از قبل در جاکلیدی پیوند داده شده باشد)، در این فرایند جایگزین خواهد شد.

همچنین بخش KEY IDENTIFIERS را در keyctl(1) ببینید.

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

آفست شروع در دستگاه زیربنایی بر حسب سکتورهای ۵۱۲ بایتی. این گزینه فقط برای دستگاه‌های نوع plain یا loopaes کاربرد دارد.

--perf-high_priority

صف‌های کاری dm-crypt و رشته نویسنده (writer thread) را روی اولویت بالا قرار می‌دهد. این کار توان عملیاتی (throughput) و تاخیر (latency) در dm-crypt را بهبود می‌بخشد، در حالی که ممکن است پاسخگویی عمومی سیستم را کاهش دهد.

این گزینه فقط برای تنظیم دقیق و سطح پایین کارایی dm-crypt در دسترس است؛ تنها زمانی استفاده کنید که نیاز به تغییر رفتار پیش‌فرض dm-crypt داشته باشید. به نسخه هسته ۶.۱۰ یا بالاتر نیاز دارد.

--perf-no_read_workqueue, --perf-no_write_workqueue

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

این گزینه‌ها فقط برای تنظیم دقیق و سطح پایین کارایی dm-crypt در دسترس هستند؛ تنها در صورتی استفاده کنید که نیاز به تغییر رفتار پیش‌فرض dm-crypt داشته باشید. به نسخه هسته ۵.۹ یا بالاتر نیاز دارد.

--perf-same_cpu_crypt

عملیات رمزنگاری را با استفاده از همان پردازنده‌ای (CPU) انجام می‌دهد که عملیات ورودی/خروجی (IO) روی آن ثبت شده است. حالت پیش‌فرض استفاده از یک صف کاری نامقید (unbound workqueue) است تا کار رمزنگاری به صورت خودکار بین پردازنده‌های موجود متعادل و توزیع شود.

این گزینه فقط برای تنظیم دقیق و سطح پایین کارایی dm-crypt در دسترس است؛ تنها زمانی استفاده کنید که نیاز به تغییر رفتار پیش‌فرض dm-crypt داشته باشید.

--perf-submit_from_crypt_cpus

برون‌سپاری عملیات نوشتن به یک رشته جداگانه پس از رمزنگاری را غیرفعال می‌کند. شرایطی وجود دارد که در آن برون‌سپاری bioهای نوشتن از رشته‌های رمزنگاری به یک رشته تکی، کارایی را به میزان چشمگیری کاهش می‌دهد. حالت پیش‌فرض برون‌سپاری bioهای نوشتن به همان رشته است.

این گزینه فقط برای تنظیم دقیق و سطح پایین کارایی dm-crypt در دسترس است؛ تنها زمانی استفاده کنید که نیاز به تغییر رفتار پیش‌فرض dm-crypt داشته باشید.

--persistent

اگر همراه با دستگاه‌های LUKS2 و دستورات فعال‌سازی مانند open یا refresh استفاده شود، فلگ‌های فعال‌سازی مشخص‌شده به طور ماندگار در متاداده نوشته می‌شوند و دفعه بعد به طور خودکار، حتی برای فعال‌سازی عادی، مورد استفاده قرار می‌گیرند. (بدون نیاز به استفاده از crypttab یا سایر فایل‌های پیکربندی سیستم.)

اگر نیاز به حذف یک فلگ ماندگار دارید، از --persistent بدون فلگی که می‌خواهید حذف شود استفاده کنید (برای نمونه، جهت غیرفعال کردن فلگ discard ذخیره‌شده به صورت ماندگار، از --persistent بدون --allow-discards استفاده نمایید).

فقط گزینه‌های --allow-discards، --perf-same_cpu_crypt، --perf-submit_from_crypt_cpus، --perf-no_read_workqueue، --perf-no_write_workqueue و --integrity-no-journal می‌توانند به صورت ماندگار ذخیره شوند.

--readonly, -r

یک نگاشت فقط‌خواندنی برپا می‌کند.

--refresh

یک دستگاه فعال را با مجموعه‌ای جدید از پارامترها تازه‌سازی (refresh) می‌کند. برای جزئیات بیشتر cryptsetup-refresh(8) را ببینید.

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

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

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

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

--serialize-memory-hard-pbkdf

از یک قفل سراسری برای سریالی کردن بازگشایی شیارهای کلید با استفاده از PBKDF با حافظه سنگین (memory-hard) استفاده می‌کند.

این یک راه‌حل موقت برای وضعیتی خاص است که چندین دستگاه به طور همزمان فعال می‌شوند و سیستم به جای گزارش کمبود حافظه، بدون قید و شرط شروع به توقف فرآیندها با استفاده از قاتل کمبود حافظه (OOM killer) می‌کند.

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

--shared

یک نگاشت اضافی برای یک دستگاه متن رمزشده مشترک ایجاد می‌کند. نگاشت‌های دلخواه پشتیبانی می‌شوند. این گزینه تنها برای دستگاه‌های نوع plain کاربرد دارد. از --offset، --size و --skip برای مشخص کردن ناحیه نگاشت‌شده استفاده کنید.

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

اندازه دستگاه را بر حسب سکتورهای ۵۱۲ بایتی تعیین می‌کند. تنها با دستگاه‌های نوع plain قابل استفاده است.

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

آفست شروع مورد استفاده در محاسبه IV بر حسب سکتورهای ۵۱۲ بایتی (تعداد سکتورهایی از داده‌های رمزگذاری‌شده که در ابتدا نادیده گرفته می‌شوند). این گزینه تنها برای دستگاه‌های نوع plain یا loopaes کاربرد دارد.

بنابراین اگر --offset n و --skip s باشد، سکتور n (نخستین سکتور دستگاه رمزگذاری‌شده) برای محاسبه IV شماره سکتور s را دریافت خواهد کرد.

--tcrypt-backup, --tcrypt-hidden, --tcrypt-system

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

استفاده از یک دستگاه رمزگذاری‌شده سیستمی همراه با گزینه --tcrypt-system نیازمند تنظیمات خاصی است تا طبق انتظار عمل کند.

ابزارهای TrueCrypt/VeraCrypt از رمزنگاری کامل سیستم (که تنها جدول پارتیشن رمزگذاری نمی‌شود) یا رمزنگاری پارتیشن سیستم (که تنها یک پارتیشن سیستمی رمزگذاری می‌شود) پشتیبانی می‌کنند. هدر متاداده سپس شامل آفست و اندازه ناحیه رمزگذاری‌شده است. ابزار cryptsetup برای محاسبه پارامترهای رمزنگاری نیاز دارد آفست دقیق پارتیشن را بداند. برای نگاشت صحیح یک پارتیشن، باید یک دستگاه پارتیشن واقعی را مشخص کنید تا cryptsetup بتواند این آفست را محاسبه نماید.

اگرچه می‌توانید از یک دستگاه کامل به عنوان پارامتر (مانند ‎/dev/sdb) استفاده کنید، اما همیشه ترجیح دهید پارتیشنی را که می‌خواهید نگاشت کنید مشخص نمایید (مانند ‎/dev/sdb1)، زیرا تنها در این صورت حالت پارتیشن سیستم قابل تشخیص است.

برای نگاشت ایمیج‌ها (ذخیره‌شده در یک فایل)، می‌توانید از گزینه اضافی --header همراه با دستگاه پارتیشن واقعی استفاده کنید. اگر --header استفاده شود (و متفاوت از ایمیج داده باشد)، cryptsetup انتظار دارد که ایمیج داده تنها حاوی تصویری از پارتیشن داده باشد.

اگر --header استفاده نشود (یا به همان ایمیج اشاره کند)، cryptsetup انتظار دارد که ایمیج حاوی یک دیسک کامل (شامل جدول پارتیشن) باشد. این حالت می‌تواند کل ناحیه رمزگذاری‌شده را نگاشت کند که مستقیماً به عنوان یک سیستم‌فایل قابل سوار کردن نیست. لطفاً ترجیحاً یک دستگاه loop همراه با پارتیشن‌ها ایجاد کنید (losetup -P، صفحه راهنمای losetup(8) را ببینید) و از یک پارتیشن واقعی (مانند ‎/dev/loopXp1) به عنوان پارامتر دستگاه استفاده نمایید.

--test-passphrase

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

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

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

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

--token-id

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

--token-only

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

این گزینه به توکن‌های LUKS2 محافظت‌شده با پین اجازه می‌دهد بر اعلان گذرواژه تعاملی شیار کلید تقدم یابند.

--token-type نوع

توکن‌های واجد شرایط برای عملیات را به یک نوع توکن خاص محدود می‌کند. بیشتر زمانی مفید است که هیچ --token-id مشخص نشده باشد.

این گزینه به توکن‌های LUKS2 از نوع مشخص که با پین محافظت شده‌اند اجازه می‌دهد بر اعلان گذرواژه تعاملی شیار کلید تقدم یابند.

--tries, -T

تعداد دفعات مجاز برای تلاش مجدد جهت وارد کردن گذرواژه را تعیین می‌کند. مقدار پیش‌فرض ۳ بار تلاش است.

--type نوع

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

--unbound

تنها همراه با پارامتر --test-passphrase مجاز است، و امکان آزمایش گذرواژه را برای یک شیار کلید نامقید (unbound) LUKS2 فراهم می‌سازد. در غیر این صورت، گذرواژه شیار کلید نامقید تنها زمانی قابل آزمایش است که شیار کلید خاصی از طریق پارامتر --key-slot انتخاب شده باشد.

--usage

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

--veracrypt

این گزینه نادیده گرفته می‌شود زیرا حالت سازگار با VeraCrypt به صورت پیش‌فرض پشتیبانی می‌گردد.

--veracrypt-pim, --veracrypt-query-pim

از یک ضریب تکرار شخصی (PIM - Personal Iteration Multiplier) سفارشی برای دستگاه VeraCrypt استفاده می‌کند. برای اطلاعات بیشتر بخش TCRYPT را در cryptsetup(8) ببینید.

--verify-passphrase, -y

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

--version, -V

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

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

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

این گزینه امکان باز کردن انواع دستگاه‌های luks و bitlk را بدون ارائه گذرواژه فراهم می‌سازد.

برای دستگاه‌های در حال رمزگذاری مجدد، این گزینه ممکن است دو بار برای تعیین هر دو کلید حجم قدیم و جدید استفاده شود. هنگام استفاده دوگانه از این گزینه، مطمئن شوید که هر گزینه --volume-key-file را با پارامتر متناظر --key-size نیز جفت کرده‌اید.

--volume-key-keyring <شرح_کلید>

از یک کلید حجم ذخیره‌شده در یک جاکلیدی (keyring) استفاده می‌کند. این گزینه امکان باز کردن انواع دستگاه‌های luks و plain را بدون وارد کردن گذرواژه فراهم می‌سازد.

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

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

عبارت <شرح_کلید> از نحوی سازگار با keyctl استفاده می‌کند. این مقدار می‌تواند یک شناسه عددی کلید یا یک نام متنی در قالب %<نوع_کلید>:<نام_کلید> باشد. همچنین بخش KEY IDENTIFIERS را در keyctl(1) ببینید. در صورت عدم تعیین پیشوند %<نوع_کلید>:، فرض می‌شود نوع کلید برابر user (نوع پیش‌فرض) است.

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

cryptsetup open /dev/sdb1 my_backup

دستگاه رمزگشایی‌شده پس از باز شدن در مسیر ‎/dev/mapper/my_backup در دسترس خواهد بود و می‌توان آن را مانت کرد:

mount /dev/mapper/my_backup /mnt/backup

باز کردن دستگاه LUKS با استفاده از فایل کلید به جای وارد کردن دستی گذرواژه:

cryptsetup open --key-file /root/secret.key /dev/sdb1 my_backup

باز کردن یک دستگاه LUKS با فعال‌سازی پشتیبانی از دورریز (TRIM) برای درایوهای SSD:

cryptsetup open --allow-discards /dev/nvme0n1p3 cryptroot

باز کردن یک دستگاه ساده بدون هدر (حالت plain) با تعیین صریح الگوریتم و اندازه کلید:

cryptsetup open --type plain --cipher aes-xts-plain64 --key-size 512 /dev/sdb1 my_plain

باز کردن یک دستگاه که هدر LUKS آن در یک رسانه یا فایل جداگانه قرار دارد:

cryptsetup open --header /media/usb/header.img /dev/sdc1 private_data

بررسی درستی یک گذرواژه بدون باز کردن واقعی یا فعال‌سازی نگاشت:

cryptsetup open --test-passphrase /dev/sdb1

باز کردن یک کانتینر VeraCrypt یا TrueCrypt:

cryptsetup open --type tcrypt /dev/sdd1 tcrypt_volume

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