tpm2_readpublic(1) General Commands Manual tpm2_readpublic(1)

tpm2_readpublic - خواندن بخش عمومی یک شیء بارگذاری‌شده

tpm2_readpublic [OPTIONS]

دستور tpm2_readpublic(1) بخش عمومی یک شیء بارگذاری‌شده را می‌خواند.

•
-c, --object-context=OBJECT:

شیء زمینه برای شیء مورد نظر جهت خواندن.

•
-n, --name=FILE:

یک فایل اختیاری برای ذخیره ساختار نام شیء.

•
-f, --format:

انتخاب قالب برای فایل خروجی کلید عمومی. مقدار «tss» (پیش‌فرض) یک باینری بلاب طبق مشخصات TPM 2.0 تولید می‌کند. مقدار «pem» یک کلید عمومی با کدگذاری PEM سازگار با OpenSSL خروجی می‌دهد. مقدار «der» یک کلید عمومی با کدگذاری DER سازگار با OpenSSL خروجی می‌دهد. مقدار «tpmt» یک باینری بلاب از ساختار TPMT_PUBLIC ارجاع‌شده در مشخصات TPM 2.0 تولید می‌کند.

قالب کلید عمومی.

•
-o, --output=FILE:

مسیر فایل خروجی برای ثبت بخش عمومی شیء.

•
-t, --serialized-handle=HANDLE:

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

•
-q, --qualified-name=FILE:

نام واجد شرایط شیء را در FILE ذخیره می‌کند. نام واجد شرایط شیء، هش الگوریتم نام از نام واجد شرایط والدین و نام شیء است. بنابراین نام واجد شرایط شیء به عنوان اثباتی بر والدین شیء عمل می‌کند.

نوع یک شیء زمینه، چه هندل باشد یا نام فایل، بر اساس منطق زیر به‌ترتیب تعیین می‌شود:

•
اگر آرگومان یک مسیر فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازگردانی‌شده TPM بارگذاری می‌شود.
•
اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
•
owner: سلسله‌مراتب مالک (owner hierarchy)
•
platform: سلسله‌مراتب پلتفرم (platform hierarchy)
•
endorsement: سلسله‌مراتب تایید (endorsement hierarchy)
•
lockout: شیء پایدار کنترل قفل (lockout control persistent object)
•
اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک هندل تلقی می‌شود (مانند 0x81010013) و مستقیماً استفاده خواهد شد.

این مجموعه گزینه‌ها میان بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که اغلب کاربران انتظار دارند.

•
-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 (“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-name>:<tcti-option-config>

تعیین یک رشته خالی برای هر یک از بخش‌های <tcti-name> یا <tcti-option-config> باعث می‌شود به ترتیب مقدار پیش‌فرض برای آن بخش استفاده شود.

هنگامی که یک TCTI مشخص نشده باشد، TCTI پیش‌فرض با استفاده از سازوکار dlopen(3) جستجو می‌شود. ابزارها به دنبال TCTIهای tabrmd، device و mssim به همین ترتیب می‌گردند و از نخستین موردی که پیدا شد استفاده می‌کنند. می‌توانید با استفاده از گزینه -v برای چاپ اطلاعات نگارش، متوجه شوید کدام TCTI به عنوان پیش‌فرض انتخاب خواهد شد. جفت کلید-مقدار “default-tcti” نشان خواهد داد کدام یک از TCTIهای پیش‌گفته به عنوان پیش‌فرض است.

هر TCTI که رابط پویای TCTI را پیاده‌سازی کند می‌تواند بارگذاری شود. ابزارها در داخل از dlopen(3) استفاده می‌کنند و مقدار خام tcti-name برای جستجو به کار می‌رود. بنابراین، این مقدار می‌تواند مسیری به کتابخانه مشترک یا نام کتابخانه به نحوی که برای سازوکار dlopen(3) قابل فهم باشد، باشد.

این مجموعه گزینه‌ها برای پیکربندی ماژول‌های مختلف 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 مترادف یکدیگرند. ماژول‌های مختلف TCTI شناخته‌شده.

tpm2_createprimary -c primary.ctx
tpm2_readpublic -c primary.ctx -o output.dat -f pem

این جریان کاری اساساً برای اشیاء ماندگار موجود TPM در نظر گرفته شده است. این جریان کاری بررسی نمی‌کند که آیا نام شیء سریالی‌شده با نام مورد انتظار مطابقت دارد یا خیر، بنابراین در صورت عدم اعتبارسنجی، هندل سریالی‌شده می‌تواند به شیئی تحت کنترل مهاجم اشاره داشته باشد. اگر شیئی را از ابتدا ایجاد می‌کنید، هنگام ماندگار کردن شیء، هندل سریالی‌شده را ذخیره کنید.

فرض می‌کنیم که یک شیء از قبل ماندگار شده است، برای نمونه از طریق:

# فرض می‌کنیم که یک شیء از قبل ماندگار شده است، برای نمونه
tpm2_createprimary -c primary.ctx
# فایل‌های زمینه تمام اطلاعات لازم را برای اعتبارسنجی شیء توسط TPM دارند
tpm2_evictcontrol -c primary.ctx
persistent-handle: 0x81000001
action: persisted

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

# خروجی هندل ماندگار ممکن است به شیئی تحت کنترل مهاجم اشاره کند،
# بهترین شیوه استفاده از گزینه «-o» برای tpm2_evictcontrol جهت دریافت یک هندل سریالی‌شده است.
tpm2_readpublic -c 0x81000001 -o output.dat -f pem -t primary.handle
# استفاده از این هندل اعتبارسنجی‌شده در یک نشست رمزگذاری‌شده با tpm
tpm2_startauthsession --policy-session -S session.ctx -c primary.handle

برای اشیاء جدید، بهتر است همیشه از هندل‌های سریالی‌شده استفاده شود.

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

•
0 - موفقیت‌آمیز.
•
1 - خطای عمومی و نامشخص.
•
2 - خطای مدیریت گزینه‌ها.
•
3 - خطای احراز هویت.
•
4 - خطای مربوط به TCTI.
•
5 - طرح پشتیبانی‌نشده. قابل اعمال در tpm2_testparams.

مسائل گیت‌هاب (Github Issues)

مشاهده فهرست پستی (Mailing List)

این اثر تحت مجوز بین‌المللی ارجاع ۴٫۰ کریپتیو کامانز (CC BY 4.0).

tpm2-tools