TCPLAY(8) System Manager's Manual TCPLAY(8)

tcplay — ابزاری برای مدیریت حجم‌های TrueCrypt

tcplay -c -d device [-g] [-z] [-w] [-a pbkdf_hash] [-b cipher] [-f keyfile_hidden] [-k keyfile] [-x pbkdf_hash] [-y cipher] tcplay -i -d device [-e] [-p] [-f keyfile_hidden] [-k keyfile] [-s system_device] [--fde] [--use-backup] [--use-hdr-file hdr_file] [--use-hidden-hdr-file hdr_file] tcplay -j mapping tcplay -m mapping -d device [-e] [-p] [-f keyfile_hidden] [-k keyfile] [-s system_device] [-t] [--fde] [--use-backup] [--use-hdr-file hdr_file] [--use-hidden-hdr-file hdr_file] tcplay --modify -d device [-k keyfile] [--new-keyfile new_keyfile] [--new-pbkdf-prf pbkdf_hash] [-s system_device] [--fde] [--use-backup] [--use-hdr-file hdr_file] [--use-hidden-hdr-file hdr_file] [--save-hdr-backup hdr_file] [-w] tcplay --modify -d device [-k keyfile] --restore-from-backup-hdr [-w] tcplay -u mapping tcplay -h | -v

ابزار tcplay پشتیبانی کامل برای ایجاد و باز کردن/نگاشت حجم‌های سازگار با TrueCrypt را فراهم می‌کند. این ابزار از دستورات زیر پشتیبانی می‌کند، که هر کدام با مجموعه‌ای از گزینه‌ها در زیر شرح داده شده‌اند:

, --create
ایجاد یک حجم رمزنگاری‌شده جدید TrueCrypt روی دستگاه مشخص‌شده با --device -.
--help
چاپ پیام راهنما و خروج.
, --info
چاپ اطلاعات درباره دستگاه رمزنگاری‌شده مشخص‌شده با --device -.
mapping, --info-mapped=mapping
چاپ اطلاعات درباره حجم نگاشت‌شده tcplay مشخص‌شده با mapping . اطلاعاتی مانند CRC کلید و PBKDF2 PRF از طریق این دستور در دسترس نیست.
اصلاح سرآیند حجم. این حالت امکان تغییر عبارت عبور، فایل‌های کلید، PBKDF2 PRF و همچنین بازیابی از یک سرآیند پشتیبان را فراهم می‌سازد.
mapping, --map=mapping
نگاشت حجم رمزنگاری‌شده TrueCrypt روی دستگاه مشخص‌شده با --device به عنوان یک نگاشت dm(4) به نام mapping . آرگومان mapping نباید شامل هیچ فاصله خالی یا نویسه‌های ویژه باشد.
mapping, --unmap=mapping
حذف (unmap) نگاشت dm(4) مشخص‌شده توسط mapping و همچنین هرگونه نگاشت آبشاری مرتبط. اگر یک حجم را با استفاده از رمزنگاری کامل دیسک نگاشت کرده‌اید و برای پارتیشن‌های جداگانه با استفاده از kpartx(8) نگاشت ایجاد کرده‌اید، باید قبل از حذف نگاشت حجم، آن‌ها را حذف کنید.
--version
چاپ پیام نسخه و خروج.

گزینه‌های مشترک برای تمام دستورات عبارتند از:

device, --device=device
دستگاه دیسک device را که حجم TrueCrypt در آن قرار دارد/قرار خواهد گرفت، مشخص می‌کند. این گزینه برای تمام دستورات اجباری است.
keyfile_hidden, --keyfile-hidden=keyfile_hidden
یک فایل کلید keyfile را مشخص می‌کند که علاوه بر عبارت عبور، هنگام ایجاد یک حجم مخفی یا هنگام محافظت از یک حجم مخفی در حین نگاشت یا پرس‌وجو از حجم بیرونی استفاده شود. اگر فقط قصد نگاشت یک حجم مخفی را دارید، باید از گزینه --keyfile استفاده شود. این گزینه می‌تواند چندین بار تکرار شود؛ در این صورت، چندین فایل کلید استفاده خواهد شد. این گزینه در حالت --modify معتبر نیست.
keyfile, --keyfile=keyfile
یک فایل کلید keyfile را برای استفاده علاوه بر عبارت عبور مشخص می‌کند. این گزینه می‌تواند چندین بار ظاهر شود؛ در این صورت، چندین فایل کلید استفاده خواهد شد.

گزینه‌های اضافی برای دستور --create عبارتند از:

pbkdf_hash, --pbkdf-prf=pbkdf_hash
الگوریتم هش مورد استفاده برای اشتقاق رمز عبور PBKDF2 را مشخص می‌کند. برای مشاهده الگوریتم‌های پشتیبانی‌شده، --pbkdf-prf=help را مشخص کنید.
cipher, --cipher=cipher
الگوریتم رمز یا آبشار رمزهای مورد استفاده برای رمزنگاری حجم جدید را مشخص می‌کند. برای مشاهده الگوریتم‌های پشتیبانی‌شده، --cipher=help را مشخص کنید.
--hidden
مشخص می‌کند که حجم جدید ایجادشده حاوی یک حجم مخفی خواهد بود. فایل‌های کلید اعمال‌شده روی عبارت عبور برای حجم مخفی همان موارد مشخص‌شده با --keyfile-hidden هستند. اندازه حجم مخفی به صورت تعاملی از کاربر پرسیده خواهد شد.
--weak-keys
استفاده از urandom(4) برای مواد کلید به جای یک منبع آنتروپی قوی. این کار در کل ایده بسیار بدی است و تنها باید برای آزمایش استفاده شود.
pbkdf_hash, --pbkdf-prf-hidden=pbkdf_hash
الگوریتم هش مورد استفاده برای اشتقاق رمز عبور PBKDF2 برای حجم مخفی را مشخص می‌کند. تنها در ترکیب با --hidden معتبر است. اگر الگوریتمی مشخص نشود، همان الگوریتم حجم بیرونی استفاده خواهد شد. برای دیدن الگوریتم‌های پشتیبانی‌شده، --pbkdf-prf-hidden=help را مشخص کنید.
cipher, --cipher-hidden=cipher
الگوریتم رمز یا آبشار رمزهای مورد استفاده برای رمزنگاری حجم مخفی در حجم جدید TrueCrypt را مشخص می‌کند. تنها در ترکیب با --hidden معتبر است. اگر رمزی مشخص نشود، همان رمز حجم بیرونی استفاده خواهد شد. برای مشاهده الگوریتم‌های رمزنگاری پشتیبانی‌شده، --cipher-hidden=help را مشخص کنید.
--insecure-erase
صرف‌نظر کردن از پاک‌سازی امن دیسک. از این گزینه با احتیاط استفاده کنید زیرا یک ریسک امنیتی است!

گزینه‌های اضافی برای دستورات --info -، --map و --modify عبارتند از:

--protect-hidden
مشخص می‌کند که یک حجم بیرونی پرس‌وجو یا نگاشت خواهد شد، اما اندازه گزارش‌شده آن متناسب با اندازه حجم مخفی موجود در آن تنظیم می‌شود. عبارت عبور و فایل‌های کلید هر دو حجم مخفی و بیرونی مورد نیاز خواهد بود. این گزینه فقط برای دستورات --info و --map اعمال می‌شود.
--prompt-passphrase
این گزینه باعث می‌شود tcplay بلافاصله برای عبارت عبور درخواست کند، حتی اگر یک فایل کلید ارائه شده باشد. به طور معمول، اگر یک فایل کلید ارائه شود، tcplay ابتدا تلاش می‌کند قفل حجم را فقط با استفاده از فایل کلید باز کند، و تنها در صورتی که این تلاش اول ناموفق باشد برای عبارت عبور درخواست می‌دهد. با این حال، از آنجا که یک تلاش ناموفق برای باز کردن قفل می‌تواند زمان قابل توجهی ببرد، تعیین این گزینه در صورتی که به هر دو فایل کلید و عبارت عبور نیاز باشد، می‌تواند زمان کل باز کردن قفل را کاهش دهد. این گزینه تنها در صورتی معنا دارد که -k یا -f استفاده شده باشند.
system_device, --system-encryption=system_device
این گزینه زمانی لازم است که در حال تلاش برای دسترسی به دستگاهی باشید که از رمزنگاری سیستم استفاده می‌کند، برای مثال یک پارتیشن سیستم رمزنگاری‌شده Windows . این گزینه برای دیسک‌هایی که از رمزنگاری کامل دیسک استفاده می‌کنند اعمال نمی‌شود. گزینه --device به پارتیشن رمزنگاری‌شده واقعی اشاره می‌کند، در حالی که آرگومان system_device به دستگاه والد (یعنی دیسک فیزیکی زیرین) پارتیشن رمزنگاری‌شده اشاره خواهد کرد.
این گزینه برای استفاده با دیسک‌هایی در نظر گرفته شده است که از رمزنگاری کامل دیسک (FDE) استفاده می‌کنند. هنگامی که یک دیسک با استفاده از FDE متعلق به TrueCrypt رمزنگاری شده باشد، کل دیسک به جز 63 سکتور اول رمزنگاری می‌شود. گزینه --device باید به کل دستگاه دیسک اشاره کند، نه به یک پارتیشن خاص. نگاشت حاصل کل دیسک را پوشش می‌دهد و به صورت پارتیشن‌های جداگانه ظاهر نمی‌شود. برای دسترسی به پارتیشن‌های منفرد پس از نگاشت، می‌توان از kpartx(8) استفاده کرد.
این گزینه برای زمانی در نظر گرفته شده است که سرآیندهای اولیه یک حجم خراب شده باشند. این گزینه tcplay را وادار می‌کند تا برای دسترسی به حجم، از سرآیندهای پشتیبان که در انتهای دستگاه قرار دارند استفاده کند.

گزینه‌های اضافی فقط برای دستور --map عبارتند از:

, --allow-trim
این گزینه پشتیبانی از دستور TRIM (دور انداختن یا discard) را روی حجم نگاشت‌شده فعال می‌کند.

گزینه‌های اضافی فقط برای دستور --modify عبارتند از:

=pbkdf_hash
الگوریتم هش مورد استفاده برای اشتقاق گذرواژه PBKDF2 در رمزنگاری مجدد سرآیند حجم را مشخص می‌کند. اگر این گزینه مشخص نشود، سرآیند مجدداً رمزنگاری‌شده از PRF فعلی استفاده خواهد کرد. برای مشاهده الگوریتم‌های پشتیبانی‌شده، --pbkdf-prf=help را مشخص کنید.
=keyfile
یک فایل کلید keyfile را برای استفاده علاوه بر عبارت عبور جدید در هنگام رمزنگاری مجدد سرآیند حجم مشخص می‌کند. این گزینه می‌تواند چندین بار ظاهر شود؛ در این صورت، چندین فایل کلید استفاده خواهد شد.
اگر این گزینه مشخص شود، هیچ‌یک از گزینه‌های --new-pbkdf-prf یا --new-keyfile نباید مشخص شوند. این گزینه مستلزم --use-backup است. از این گزینه برای بازیابی سرآیندهای حجم از سرآیند پشتیبان استفاده کنید.

ارسال سیگنال SIGINFO یا SIGUSR1 به یک فرآیند در حال اجرای tcplay باعث می‌شود که پیشرفت کارهای کندتر مانند جمع‌آوری آنتروپی یا پاک‌سازی حجم را چاپ کند.

نرم‌افزار TrueCrypt عبارت‌های عبور را به 64 نویسه (شامل نویسه تهی پایانی) محدود می‌کند. برای سازگاری با آن، tcplay همین کار را انجام می‌دهد. تمام عبارت‌های عبور (به جز فایل‌های کلید) به 64 نویسه بریده می‌شوند. به طور مشابه، فایل‌های کلید به اندازه 1 مگابایت محدود می‌شوند، اما تا 256 فایل کلید می‌تواند استفاده شود.

ابزار tcplay انکارپذیری موجه را ارائه می‌دهد. حجم‌های مخفی در داخل یک حجم بیرونی ایجاد می‌شوند. اینکه به کدام حجم دسترسی پیدا شود صرفاً به عبارت عبور و فایل(های) کلید استفاده‌شده بستگی دارد. اگر عبارت عبور و فایل‌های کلید برای حجم بیرونی مشخص شوند، هیچ اطلاعاتی درباره وجود حجم مخفی آشکار نمی‌شود. بدون اطلاع از عبارت عبور و فایل(های) کلید حجم مخفی، وجود آن پنهان باقی می‌ماند. حجم مخفی را می‌توان در هنگام نگاشت حجم بیرونی با استفاده از گزینه --protect-hidden و تعیین عبارت عبور و فایل‌های کلید برای هر دو حجم بیرونی و مخفی محافظت کرد.

ابزار tcplay هم از نسخه قدیمی TrueCrypt و هم از VeraCrypt پشتیبانی می‌کند. هنگام ایجاد یک حجم جدید، تابع PBKDF2 PRF انتخاب‌شده تعیین می‌کند که آیا حجم از قالب TrueCrypt استفاده خواهد کرد یا VeraCrypt. قالب‌ها به جز تعداد دورهای توابع اشتقاق کلید و همچنین امضای حجم و فیلدهای minver در سرآیند، یکسان هستند. تبدیل حجم‌ها از یک قالب به قالب دیگر با استفاده از tcplay صرفاً با استفاده از گزینه --modify و تعیین هش PBKDF2 PRF منطبق با قالب هدف مورد نظر با آرگومان --new-pbkdf-prf انجام می‌شود.

توابع PBKDF2 PRF با پسوند -VC از نوع VeraCrypt هستند، در حالی که بقیه توابع قدیمی TrueCrypt هستند. به طور پیش‌فرض، حجم‌های جدید با یک PRF از نوع VeraCrypt ایجاد می‌شوند تا امنیت بهتری ارائه دهند.

نکته: تلاش‌های ناموفق برای باز کردن قفل حتی برای حجم‌های قدیمی TrueCrypt اکنون به طور قابل توجهی طولانی‌تر از قبل زمان می‌برند، زیرا tcplay تمام PRFها را، از جمله PRFهای VeraCrypt با تعداد تکرارهای بسیار بالاتر را دور می‌زند. تلاش‌های موفقیت‌آمیز همچنان باید همان مدت زمان قبل را صرف کنند، زیرا تنظیمات قدیمی PRF ابتدا امتحان می‌شوند. یک استثنای قابل توجه زمانی است که به هر دو فایل کلید و عبارت عبور نیاز باشد. به طور معمول، tcplay ابتدا یک تلاش برای باز کردن قفل را فقط با فایل کلید انجام می‌دهد و تنها پس از شکست آن تلاش، عبارت عبور را درخواست می‌کند. اگر از قبل مشخص باشد که برای باز کردن قفل یک حجم به هر دو فایل کلید و عبارت عبور نیاز است، گزینه -p برای --info و --map می‌تواند زمان مورد نیاز برای باز کردن قفل حجم را به بیش از نصف کاهش دهد.

ایجاد یک حجم جدید TrueCrypt روی /dev/vn0 با استفاده از آبشار رمزنگاری AES و Twofish و الگوریتم هش Whirlpool برای اشتقاق رمز عبور PBKDF2 و دو فایل کلید، one.key و two.key:

tcplay --create --device=/dev/vn0 --cipher=TWOFISH-256-XTS,AES-256-XTS --pbkdf-prf=whirlpool --keyfile=one.key --keyfile=two.key

نگاشت حجم بیرونی روی حجم TrueCrypt در /dev/vn0 به عنوان اما با محافظت از حجم مخفی در برابر بازنویسی با استفاده از فایل کلید hidden.key:

tcplay --map=truecrypt1 --device=/dev/vn0 --protect-hidden --keyfile-hidden=hidden.key

نگاشت حجم مخفی روی حجم TrueCrypt در /dev/vn0 به عنوان truecrypt2 ، با استفاده از فایل کلید hidden.key:

tcplay --map=truecrypt2 --device=/dev/vn0 --keyfile=hidden.key

نگاشت و سوار کردن حجم درون پرونده secvol در لینوکس:

/dev/loop1 secvol
tcplay --map=secv --device=/dev/loop1
mount /dev/mapper/secv /mnt

به طور مشابه در DragonFly:

vn1 secvol
tcplay --map=secv --device=/dev/vn1
mount /dev/mapper/secv /mnt

حذف نگاشت حجم truecrypt2 در هر دو سیستم لینوکس و DragonFly پس از پیاده کردن:

remove truecrypt2

یا به عنوان روش جایگزین:

tcplay --unmap=truecrypt2

یک حجم مخفی که وجود آن می‌تواند به طور موجهی انکار شود و حجم بیرونی آن می‌تواند برای مثال با دستور زیر ایجاد شود:

tcplay --create --hidden --device=/dev/loop0 --cipher=TWOFISH-256-XTS,AES-256-XTS --pbkdf-prf=whirlpool --keyfile=one.key --cipher-hidden=AES-256-XTS --pbkdf-prf-hidden=whirlpool --keyfile-hidden=hidden.key

برنامه tcplay عبارت عبور برای هر دو حجم بیرونی و مخفی و همچنین اندازه حجم مخفی در داخل حجم بیرونی را از کاربر درخواست خواهد کرد. حجم مخفی در داخل ناحیه پوشش‌داده‌شده توسط حجم بیرونی ایجاد خواهد شد. حجم مخفی می‌تواند به صورت اختیاری از یک تابع رمز و prf متفاوت مطابق آنچه با گزینه‌های --cipher-hidden و --pbkdf-prf-hidden مشخص شده است استفاده کند. اینکه بعداً به کدام حجم دسترسی پیدا شود تنها بستگی به این دارد که از کدام عبارت عبور و فایل(های) کلید استفاده می‌شود، به طوری که وجود حجم مخفی بدون اطلاع از عبارت عبور و فایل کلیدی که توسط آن محافظت می‌شود ناشناخته می‌ماند زیرا در داخل حجم بیرونی قرار دارد. برای نگاشت حجم بیرونی بدون آسیب رساندن به حجم مخفی، عبارت عبور و فایل(های) کلید حجم مخفی باید مشخص باشند و همراه با گزینه --protect-hidden ارائه شوند.

یک دیسک رمزنگاری‌شده با استفاده از رمزنگاری کامل دیسک (FDE) را می‌توان با دستور زیر نگاشت کرد:

tcplay --map=tcplay_sdb --device=/dev/sdb --fde

برای دسترسی به پارتیشن‌های منفرد روی دیسک نگاشت‌شده، دستور زیر نگاشت‌هایی را برای هر پارتیشن منفرد روی دیسک رمزنگاری‌شده ایجاد می‌کند:

--av /dev/mapper/tcplay_sdb

برای بازیابی سرآیند حجم اصلی از سرآیند پشتیبان، می‌توان از دستور زیر استفاده کرد:

tcplay --modify --device=/dev/sdb --restore-from-backup-hdr

همانند اکثر دستورات دیگر، اینکه کدام سرآیند ذخیره می‌شود (به عنوان منبع استفاده می‌شود) بستگی به عبارت عبور و فایل‌های کلید استفاده‌شده دارد.

برای ذخیره یک نسخه پشتیبان از یک سرآیند، دستور زیر می‌تواند استفاده شود:

tcplay --modify --device=/dev/sdb --save-hdr-backup=/tmp/sdb_backup_header.hdr

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

برای بازیابی یک سرآیند از یک پرونده سرآیند پشتیبان، می‌توان از دستور زیر استفاده کرد:

tcplay --modify -use-hdr-file=/tmp/sdb_backup_header.hdr

به طور مشابه، برای بازیابی یک سرآیند مخفی از پرونده سرآیند پشتیبان:

tcplay --modify -use-hidden-hdr-file=/tmp/sdb_backup_hidden_header.hdr

اینکه کدام سرآیند به عنوان منبع عملیات استفاده شود همچنان به عبارت عبور و فایل‌های کلید استفاده‌شده بستگی دارد. حتی اگر از گزینه --use-hidden-hdr-file استفاده کنید، اگر عبارت عبور و فایل‌های کلید را برای سرآیند اصلی مشخص کنید، به جای آن از سرآیند اصلی استفاده خواهد شد.

crypttab(5), cryptsetup(8), dmsetup(8), kpartx(8)

ابزار tcplay در DragonFly 2.11 ظاهر شد.

Alex Hornung

December 8, 2013 Linux 6.12.107+deb13-amd64