tpm2_policynvwritten(1) General Commands Manual tpm2_policynvwritten(1) نام (NAME) tpm2_policynvwritten - تایید وضعیت نوشته شدن حافظه غیرفرار در خط‌مشی TPM2 خلاصه دستور (SYNOPSIS) tpm2_policynvwritten [گزینه‌ها] [آرگومان] توضیحات (DESCRIPTION) دستور tpm2_policynvwritten(1) - مجوز شیء TPM را به وضعیت نوشته‌شدن یک اندیس حافظه غیرفرار (NV) محدود می‌کند. این دستور هنگام ایجاد اندیس‌های NV که تنها یک بار نوشته می‌شوند (write once) کاربرد دارد. به عنوان یک [آرگومان] (ARGUMENT)، وضعیت مورد انتظار نوشته‌شدن اندیس NV را دریافت می‌کند. این آرگومان می‌تواند به صورت s|c|0|1 مشخص شود. گزینه‌ها (OPTIONS) • -S, --session=FILE: فایل نشست برگرفته از گزینه -S در tpm2_startauthsession(1). • -L, --policy=FILE: فایل برای ذخیره خلاصه خط‌مشی (policy digest). • --cphash=FILE مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً cpHash نامیده می‌شود. نکته: هنگامی که این گزینه انتخاب شود، ابزار دستور را عملاً اجرا نمی‌کند، بلکه صرفاً مقدار cpHash را برمی‌گرداند. مراجع (References) گزینه‌های مشترک (COMMON OPTIONS) این مجموعه از گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که بسیاری از کاربران انتظار دارند. • -h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به طور پیش‌فرض، تلاش می‌کند صفحه‌بند man را برای ابزار فراخوانی کند؛ با این حال، در صورت عدم موفقیت، خلاصه‌ای کوتاه از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “man” مشخص شده باشد؛ با این حال در صورت درخواست صریح “man”، ابزار خطاهای man را در stderr ارائه می‌دهد. اگر گزینه “no-man” مشخص شود یا صفحه‌بند ناموفق باشد، گزینه‌های کوتاه به stdout ارسال خواهند شد. استفاده موفقیت‌آمیز از ویژگی صفحات راهنما نیازمند نصب بودن صفحات راهنما یا قرار داشتن در MANPATH است؛ برای جزئیات بیشتر به man(1) رجوع کنید. • -v, --version: نمایش اطلاعات نسخه این ابزار، TCTIهای پشتیبانی‌شده و خروج. • -V, --verbose: افزایش اطلاعاتی که ابزار در حین اجرا در کنسول چاپ می‌کند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ می‌شوند. • -Q, --quiet: بی‌صدا کردن خروجی عادی ابزار به stdout. • -Z, --enable-errata: فعال‌سازی اعمال اصلاحات غلط‌نامه (errata fixups). زمانی مفید است که لازم باشد یک اصلاحیه بر روی دستورات ارسالی به 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. نکته: گزینه خط فرمان همواره متغیر محیطی را لغو (override) می‌کند. TCTIهای شناخته‌شده در حال حاضر عبارتند از: • tabrmd - مدیر منابع، موسوم به tabrmd . توجه داشته باشید که tabrmd و abrmd به عنوان نام tcti مترادف یکدیگرند. • mssim - معمولاً برای برقراری ارتباط با شبیه‌ساز نرم‌افزاری TPM استفاده می‌شود. • device - هنگام برقراری ارتباط مستقیم با فایل دستگاه TPM استفاده می‌شود. • none - هیچ اتصالی با TPM برقرار نمی‌کند. برخی از ابزارها امکان استفاده از گزینه‌های خارج از 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 و شماره پورت مورد استفاده توسط شبیه‌ساز را می‌توان مشخص کرد. پیش‌فرض 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) ایجاد یک اندیس NV که فقط یک‌بار نوشته می‌شود (write once). برای انجام این کار، اندیس NV با یک خط‌مشی نوشتن تعریف می‌شود که تنها در صورتی معتبر است که ویژگی “TPMA_NV_WRITTEN” در اندیس NV هرگز تنظیم نشده باشد. تعریف خط‌مشی نوشتن اندیس NV (Define the NV index write policy) tpm2_startauthsession -S session.dat tpm2_policycommandcode -S session.dat TPM2_CC_NV_Write tpm2_policynvwritten -S session.dat -L nvwrite.policy c tpm2_flushcontext session.dat تعریف اندیس NV با خط‌مشی (Define the NV index with the policy) tpm2_nvdefine -s 1 -a "authread|policywrite" -p nvrdpass -L nvwrite.policy نوشتن در اندیس NV با برآورده ساختن خط‌مشی (Write the NV index by satisfying the policy) tpm2_startauthsession -S session.dat --policy-session tpm2_policycommandcode -S session.dat TPM2_CC_NV_Write tpm2_policynvwritten -S session.dat c echo 0xAA | xxd -r -p | tpm2_nvwrite 0x01000000 -i- -P session:session.dat tpm2_flushcontext session.dat کدهای بازگشتی (RETURNS) ابزارها می‌توانند هر یک از کدهای زیر را بازگردانند: • 0 - موفقیت. • 1 - خطای عمومی و نامشخص. • 2 - خطای پردازش گزینه‌ها. • 3 - خطای احراز هویت. • 4 - خطای مرتبط با TCTI. • 5 - طرح‌واره پشتیبانی‌نشده (Non supported scheme). قابل اعمال به tpm2_testparams. محدودیت‌ها (LIMITATIONS) انتظار می‌رود نشستی از پیش از طریق tpm2_startauthsession(1) ایجاد شده باشد و به یکی از موارد زیر نیاز دارد: • دسترسی مستقیم به دستگاه • پشتیبانی از نشست گسترش‌یافته با tpm2-abrmd. بدون آن، اکثر مدیران منابع وضعیت نشست را در بین فراخوانی‌های دستور ذخیره نخواهند کرد. اشکالات (BUGS) مسائل گیت‌هاب (Github Issues) راهنما (HELP) مشاهده فهرست پستی (Mailing List) مجوز (LICENSE) این اثر تحت مجوز Creative Commons Attribution 4.0 International License (CC BY 4.0) . tpm2-tools tpm2_policynvwritten(1)