tpm2_flushcontext(1) General Commands Manual tpm2_flushcontext(1) نام (NAME) tpm2_flushcontext - پاکسازی کانتکست‌های بارگذاری‌شده از حافظه TPM2 خلاصه دستور (SYNOPSIS) tpm2_flushcontext [گزینه‌ها] [آرگومان] توضیحات (DESCRIPTION) دستور tpm2_flushcontext(1) - یک هندل مشخص‌شده، یا تمام کانتکست‌های مرتبط با یک شیء گذرا (transient object)، نشست بارگذاری‌شده یا نشست ذخیره‌شده را از TPM پاکسازی می‌کند. شیئی که باید پاکسازی شود به عنوان اولین آرگومان به ابزار داده می‌شود و به یکی از صورت‌های زیر است: - هندل شیئی که باید از TPM پاکسازی شود. باید یک شماره هندل معتبر باشد. - پاکسازی یک نشست از طریق فایل نشست. فایل نشست توسط گزینه -S در دستور tpm2_startauthsession(1) تولید می‌شود. گزینه‌ها (OPTIONS) • -t, --transient-object: حذف تمام اشیاء گذرا. • -l, --loaded-session: حذف تمام نشست‌های بارگذاری‌شده. • -s, --saved-session: حذف تمام نشست‌های ذخیره‌شده. • ARGUMENT آرگومان خط فرمان، OBJECT (شیء) مورد نظر را برای حذف از حافظه مقیم TPM مشخص می‌کند. • --cphash=FILE مسیر فایل برای ذخیره هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته می‌شود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نخواهد کرد، بلکه صرفاً یک cpHash را برمی‌گرداند. گزینه‌های عمومی (COMMON OPTIONS) این مجموعه گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که اغلب کاربران انتظار دارند. • -h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به‌طور پیش‌فرض، تلاش می‌کند صفحه‌خوان راهنما (manpager) را برای ابزار فراخوانی کند؛ اما در صورت شکست، خلاصه‌ای کوتاه از ابزار را نمایش می‌دهد. اگر آرگومان گزینه “man” مشخص شود نیز همین رفتار رخ می‌دهد، اما اگر صریحاً “man” درخواست شود، ابزار خطاهای man را در خروجی استاندارد خطا (stderr) نشان می‌دهد. اگر گزینه “no-man” مشخص شود یا صفحه‌خوان man با شکست مواجه گردد، خلاصه گزینه‌ها در خروجی استاندارد (stdout) چاپ خواهد شد. استفاده موفقیت‌آمیز از ویژگی manpages نیازمند نصب بودن صفحات راهنما یا قرار داشتن آن‌ها در مسیر MANPATH است؛ برای جزئیات بیشتر به man(1) مراجعه کنید. • -v, --version: نمایش اطلاعات نگارش این ابزار و TCTIهای پشتیبانی‌شده و سپس خروج. • -V, --verbose: افزایش میزان اطلاعاتی که ابزار حین اجرا در کنسول چاپ می‌کند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ می‌شوند. • -Q, --quiet: بی‌صدا کردن خروجی عادی ابزار در خروجی استاندارد (stdout). • -Z, --enable-errata: فعال‌سازی اعمال اصلاحیه‌های اشتباهات (errata fixups). این گزینه زمانی مفید است که نیاز به اعمال یک اصلاحیه errata روی دستورات ارسالی به TPM باشد. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است. • -z, --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژه متن خام (clear text) برای تایید عملیات به TPM ارسال می‌شود. از این گزینه می‌توان برای جلوگیری از بروز مشکل در زمان استفاده از نشست‌های بدون نمک (unsalted) در حالت OpenSSL FIPS استفاده کرد. اگر مقادیر مجاز (auth values) به کار روند، باید از یک نشست نمک‌دار (salted) برای احراز هویت استفاده شود. • -R, --autoflush: فعال کردن تخلیه خودکار (autoflush) برای اشیاء گذرای ایجادشده توسط دستور. اگر یک شیء والد از یک فایل کانتکست بارگذاری شود، آن شیء والد گذرا نیز پاکسازی خواهد شد. تخلیه خودکار همچنین در صورتی که متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true تنظیم شده باشد، فعال می‌شود. پیکربندی TCTI (TCTI Configuration) رابط انتقال یا TCTI (کوتاه‌شده‌ی “Transmission Interface”) سازوکار ارتباطی با TPM است. TCTIها را می‌توان برای ارتباط با TPM از طریق بسترهای گوناگون تغییر داد. برای کنترل TCTI، ابزارها موارد زیر را در نظر می‌گیرند: 1. گزینه خط فرمان -T یا --tcti 2. متغیر محیطی: TPM2TOOLS_TCTI. نکته: گزینه خط فرمان همواره بر متغیر محیطی اولویت دارد. TCTIهای شناخته‌شده کنونی عبارتند از: • tabrmd - مدیر منابع، موسوم به tabrmd . توجه داشته باشید که tabrmd و abrmd به عنوان نام tcti مترادف یکدیگرند. • mssim - معمولاً برای برقراری ارتباط با شبیه‌ساز نرم‌افزاری TPM استفاده می‌شود. • device - هنگام برقراری ارتباط مستقیم با فایل دستگاه TPM استفاده می‌شود. • none - هیچ ارتباطی با TPM برقرار نمی‌کند. برخی ابزارها امکان استفاده از گزینه‌های خارج از TPM (off-tpm) را می‌دهند و بنابراین از عدم استفاده از TCTI پشتیبانی می‌کنند. ابزارهایی که از آن پشتیبانی نمی‌کنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه می‌شوند. این مقدار از هیچ گزینه‌ای پشتیبانی نمی‌کند و باید دقیقاً به صورت متن “none” ارائه شود. آرگومان‌های گزینه خط فرمان یا متغیر محیطی به شکل زیر هستند: : تعیین یک رشته خالی برای هر یک از بخش‌های یا باعث می‌شود به ترتیب مقدار پیش‌فرض برای آن بخش استفاده شود. پیش‌فرض‌های TCTI (TCTI Defaults) هنگامی که یک TCTI مشخص نشده باشد، TCTI پیش‌فرض با استفاده از سازوکار dlopen(3) جستجو می‌شود. ابزارها به دنبال TCTIهای tabrmd، device و mssim به همین ترتیب می‌گردند و از نخستین موردی که پیدا شد استفاده می‌کنند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نگارش، متوجه شوید کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان خواهد داد کدام یک از TCTIهای پیش‌گفته به عنوان پیش‌فرض است. TCTIهای سفارشی (Custom TCTIs) هر TCTI که رابط پویای TCTI را پیاده‌سازی کند می‌تواند بارگذاری شود. ابزارها در داخل از dlopen(3) استفاده می‌کنند و مقدار خام tcti-name برای جستجو به کار می‌رود. بنابراین، این مقدار می‌تواند مسیری به کتابخانه مشترک یا نام کتابخانه به نحوی که برای سازوکار dlopen(3) قابل فهم باشد، باشد. گزینه‌های TCTI (TCTI OPTIONS) این مجموعه گزینه‌ها برای پیکربندی ماژول‌های مختلف TCTI شناخته‌شده در دسترس به کار می‌روند: • device: برای TCTI دستگاه (device)، فایل دستگاه نویسه‌ای TPM برای استفاده توسط این TCTI قابل تعیین است. مقدار پیش‌فرض /dev/tpm0 است. مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0” • mssim: برای TCTI شبیه‌ساز mssim، نام دامنه یا آدرس IP و شماره درگاه (port) مورد استفاده شبیه‌ساز قابل تعیین است. مقادیر پیش‌فرض 127.0.0.1 و 2321 هستند. مثال: -T mssim:host=localhost,port=2321 یا export TPM2TOOLS_TCTI=“mssim:host=localhost,port=2321” • abrmd: برای TCTI ماژول abrmd، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با کاراکتر `,' از هم جدا شده‌اند. هر کلید و رشته مقدار با کاراکتر `=' از هم جدا می‌شوند. • ماژول TCTI abrmd از دو کلید پشتیبانی می‌کند: 1. `bus_name' : نام سرویس tabrmd روی گذرگاه (یک رشته). 2. `bus_type' : نوع نمونه dbus (یک رشته) که محدود به `session' و `system' است. مشخص کردن نام tcti مربوط به tabrmd و رشته پیکربندی bus_name=com.example.FooBar: \--tcti=tabrmd:bus_name=com.example.FooBar مشخص کردن tcti پیش‌فرض (abrmd) و رشته پیکربندی bus_type=session: \--tcti:bus_type=session نکته: دو نام abrmd و tabrmd مترادف یکدیگرند. مثال‌ها (EXAMPLES) پاکسازی یک شیء گذرا (Flushing a Transient Object) معمولاً هنگام استفاده از TPM، تعاملات از طریق یک مدیر منابع (resource manager) مانند tpm2-abrmd(8) انجام می‌شود. هنگامی که فرآیند خارج می‌شود، هندل‌های اشیاء گذرا پاکسازی می‌شوند. بنابراین، پاکسازی اشیاء گذرا از طریق خط فرمان الزامی نیست. با این حال، هنگام تعامل مستقیم با TPM، این سناریو امکان‌پذیر است. مثال زیر دسترسی مستقیم به TPM را بدون واسطه‌گری مدیر منابع فرض می‌کند. به طور خاص، از شبیه‌ساز استفاده خواهیم کرد. tpm2_createprimary -Tmssim -c primary.ctx tpm2_getcap -T mssim handles-transient - 0x80000000 tpm2_flushcontext -T mssim 0x80000000 پاکسازی تمام اشیاء گذرا (Flush All the Transient Objects) tpm2_flushcontext \--transient-object پاکسازی یک نشست (Flush a Session) tpm2_startauthsession -S session.dat tpm2_flushcontext session.dat کدهای خروجی (Returns) ابزارها می‌توانند هر یک از کدهای زیر را برگردانند: • 0 - موفقیت‌آمیز. • 1 - خطای عمومی و نامشخص. • 2 - خطای مربوط به مدیریت گزینه‌ها. • 3 - خطای احراز هویت. • 4 - خطای مربوط به TCTI. • 5 - طرح‌واره پشتیبانی‌نشده. قابل اعمال بر tpm2_testparams. اشکالات (BUGS) گزارش اشکالات در گیت‌هاب (Github Issues) راهنما (HELP) مشاهده فهرست پستی (Mailing List) مجوز (LICENSE) این اثر تحت مجوز کریتیو کامنز ارجاع ۴.۰ بین‌المللی (CC BY 4.0) . tpm2-tools tpm2_flushcontext(1)