tpm2(1) General Commands Manual tpm2(1) نام (NAME) tpm2 - یک فایل اجرایی کوچک و یکپارچه شامل ابزارهای مختلف tpm2-tools شبیه به BusyBox برای سیستم‌های کوچک یا تعبیه‌شده خلاصه دستور (SYNOPSIS) tpm2 [گزینه‌ها] [آرگومان‌ها] توضیحات (DESCRIPTION) دستور tpm2(1) - جهت تسهیل نصب tpm2-tools در initrd یا سیستم‌های تعبیه‌شده (embedded) که بهینه‌سازی اندازه و محدودیت منابع در آن‌ها اهمیت دارد، بسیار کاربردی است که یک فایل اجرایی منفرد وجود داشته باشد که بتواند قابلیت‌ها و عملکردهای گوناگون TPM2 را بر اساس آرگومان مشخص‌شده (که یکی از نام‌های ابزارهای موجود است) فراخوانی و اجرا کند. گزینه‌ها و آرگومان‌هایی که در ادامه می‌آیند یا از دستهٔ گزینه‌های عمومی (common options) هستند و یا مختص به نام ابزار (tool name) مشخص‌شده می‌باشند. توجه به این نکته حائز اهمیت است که ابزارهای مستقل با پیشوند tpm2_ همچنان قابل فراخوانی هستند؛ با این حال، آن‌ها اکنون به‌صورت پیوند نرم (soft-link) به این فایل اجرایی tpm2 متصل شده‌اند. بنابراین بر خلاف BusyBox، تمام قابلیت‌های ابزارهای مجزا در این فایل اجرایی در دسترس است. به عنوان مثال: دستور tpm2_getrandom 8 را می‌توان به شکل جایگزین به‌صورت tpm2 getrandom 8 نیز اجرا کرد. آرگومان‌ها (ARGUMENTS) فهرست نام‌های ابزارهای ممکن. نکته: تنها یکی از این موارد را مشخص کنید. به بخش مثال‌ها نگاه کنید. certifyX509certutil checkquote eventlog print rc_decode activatecredential certify changeauth changeeps changepps clear clearcontrol clockrateadjust create createak createek createpolicy setprimarypolicy createprimary dictionarylockout duplicate getcap gettestresult encryptdecrypt evictcontrol flushcontext getekcertificate getrandom gettime hash hierarchycontrol hmac import incrementalselftest load loadexternal makecredential nvdefine nvextend nvincrement nvreadpublic nvread nvreadlock nvundefine nvwrite nvwritelock nvsetbits pcrallocate pcrevent pcrextend pcrread pcrreset policypcr policyauthorize policyauthorizenv policynv policycountertimer policyor policynamehash policytemplate policycphash policypassword policysigned policyticket policyauthvalue policysecret policyrestart policycommandcode policynvwritten policyduplicationselect policylocality quote readclock readpublic rsadecrypt rsaencrypt send selftest sessionconfig setclock shutdown sign certifycreation nvcertify startauthsession startup stirrandom testparms unseal verifysignature setcommandauditstatus getcommandauditdigest getsessionauditdigest geteccparameters ecephemeral commit ecdhkeygen ecdhzgen zgen2phase مراجع (References) گزینه‌های عمومی (COMMON OPTIONS) این مجموعه از گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که بسیاری از کاربران انتظار دارند. • -h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. به‌طور پیش‌فرض، تلاش می‌کند صفحه‌بند راهنما (manpager) را برای ابزار فراخوانی کند؛ اما در صورت عدم موفقیت، خلاصه‌ای کوتاه از ابزار را خروجی می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شود، اما در صورتی که به‌طور صریح “man” درخواست شود، ابزار خطاهای man را در stderr ارائه می‌دهد. اگر گزینهٔ “no-man” مشخص شود یا صفحه‌بند راهنما شکست بخورد، گزینه‌های کوتاه به stdout فرستاده می‌شوند. برای استفاده موفقیت‌آمیز از ویژگی صفحات راهنما، نیاز است صفحات راهنما نصب شده باشند یا در 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 استفاده شوند، باید از یک نشست نمک‌دار (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)، فایل دستگاه نویسه‌ای (character device) TPM جهت استفاده توسط TCTI دستگاه می‌تواند مشخص شود. پیش‌فرض /dev/tpm0 است. مثال: -T device:/dev/tpm0 یا export TPM2TOOLS_TCTI=“device:/dev/tpm0” • mssim: برای TCTI شبیه‌ساز mssim، نام دامنه یا آدرس IP و شماره درگاه (پورت) استفاده‌شده توسط شبیه‌ساز می‌تواند مشخص شود. مقادیر پیش‌فرض 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 مترادف یکدیگرند. ماژول‌های مختلف و شناخته‌شدهٔ TCTI. مثال‌ها (EXAMPLES) دریافت ۸ بایت تصادفی از TPM tpm2 getrandom 8 | xxd -p ارسال دستور راه‌اندازی (Startup) به TPM با فلگ‌های TPM2_SU_CLEAR tpm2 startup -c کدهای بازگشتی (RETURNS) ابزارها می‌توانند هر یک از کدهای زیر را بازگردانند: • 0 - موفقیت‌آمیز. • 1 - خطای عمومی و نامشخص. • 2 - خطای مدیریت گزینه‌ها. • 3 - خطای احراز هویت. • 4 - خطای مربوط به TCTI. • 5 - طرح‌واره پشتیبانی‌نشده. مربوط به tpm2_testparams. اشکالات (BUGS) مسائل گیت‌هاب (Github Issues) راهنما (HELP) مشاهده فهرست پستی (Mailing List) مجوز (LICENSE) این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0) . tpm2-tools tpm2(1)