CRYPTSETUP-LUKSOPEN(8) دستورهای مدیریتی سیستم CRYPTSETUP-LUKSOPEN(8)

cryptsetup-luksOpen - باز کردن یک دستگاه رمزگذاریشده LUKS و ایجاد نگاشت

cryptsetup luksOpen [<گزینه‌ها>] <دستگاه> <نام>
cryptsetup open --type luks [<گزینه‌ها>] <دستگاه> <نام>

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

دستور cryptsetup luksOpen یک نام مستعار پرکاربرد و معادل با دستور استاندارد cryptsetup open --type luks است.

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

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

پس از باز شدن موفق دستگاه، نگاشت جدید به عنوان یک دستگاه بلوکی رمزگشایی‌شده در مسیر /dev/mapper/<نام> در دسترس سیستم‌عامل قرار می‌گیرد که می‌توان آن را به طور معمول مانت کرد یا سیستم‌فایل بر روی آن ایجاد نمود.

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

--allow-discards

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

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

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

--batch-mode, -q

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

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

--debug یا --debug-json

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

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

--disable-external-tokens

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

--disable-keyring

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

--disable-locks

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

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

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

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

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

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

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

--help, -?

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

--key-description <متن>

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

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

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

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

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

--keyfile-offset <مقدار>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--perf-high_priority

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

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

--perf-no_read_workqueue, --perf-no_write_workqueue

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

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

--perf-same_cpu_crypt

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

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

--perf-submit_from_crypt_cpus

غیرفعال کردن برون‌سپاری عملیات نوشتن به یک ریسه (thread) مجزا پس از رمزنگاری. در برخی موقعیت‌ها، برون‌سپاری bioهای نوشتن از ریسه‌های رمزنگاری به یک ریسه واحد، کارایی را به شدت کاهش می‌دهد. پیش‌فرض سیستم این است که bioهای نوشتن به همان ریسه برون‌سپاری شوند.

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

--persistent

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

اگر می‌خواهید یک فلگ ماندگار را حذف کنید، از گزینه --persistent بدون فلگی که قصد حذف آن را دارید استفاده کنید (برای نمونه، جهت غیرفعال کردن فلگ ماندگار دورریز، از --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) مراجعه فرمایید.

--serialize-memory-hard-pbkdf

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

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

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

--test-passphrase

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

--timeout, -t <تعداد_ثانیه‌ها>

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

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

--token-id <شناسه>

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

--token-only

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

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

--token-type <نوع>

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

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

--tries, -T <تعداد>

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

--type <نوع_دستگاه>

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

--unbound

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

--usage

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

--verify-passphrase, -y

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

--version, -V

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

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

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

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

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

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

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

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

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

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

# cryptsetup luksOpen /dev/sda2 secret_backup

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

# mount /dev/mapper/secret_backup /mnt/backup

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

# cryptsetup luksOpen --key-file /root/secret.key /dev/sdb1 mydata

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

# cryptsetup luksOpen --allow-discards /dev/nvme0n1p3 cryptroot

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

# cryptsetup luksOpen --header /media/usb/header.img /dev/sdc1 private

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

# cryptsetup luksOpen --test-passphrase /dev/sda2

گزارش باگ‌ها در لیست پستی cryptsetup <cryptsetup@lists.linux.dev> یا در بخش مسائل پروژه https://gitlab.com/cryptsetup/cryptsetup/-/issues/new.

لطفاً خروجی دستور ناموفق را همراه با گزینه --debug پیوست کنید.

پرسش‌های متداول cryptsetup (FAQ) https://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions

cryptsetup(8), cryptsetup-open(8), cryptsetup-close(8), cryptsetup-luksAddKey(8), cryptsetup-luksClose(8), integritysetup(8) و veritysetup(8)

بخشی از پروژه cryptsetup https://gitlab.com/cryptsetup/cryptsetup.

مه ۲۰۲۵ cryptsetup 2.8.8