tpm2_getsessionauditdigest(1) General Commands Manual tpm2_getsessionauditdigest(1)

tpm2_getsessionauditdigest(1) - دریافت داده‌های تصدیق خلاصه حسابرسی نشست از TPM.

tpm2_getsessionauditdigest [OPTIONS]

دستور tpm2_getsessionauditdigest(1) داده‌های تصدیق (attestation) خلاصه حسابرسی نشست را از TPM بازیابی می‌کند. داده‌های تصدیق شامل خلاصه حسابرسی نشست و یک امضا بر روی خلاصه حسابرسی نشست است. خود نشست با دستور tpm2_startauthsession آغاز می‌شود.

•
-P, --hierarchy-auth=AUTH:

مقدار مجوز (authorization) را برای سلسله‌مراتب تصدیق (endorsement) مشخص می‌کند.

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

شیء بافتار (context object) برای کلید امضاکننده‌ای که داده‌های تصدیق را امضا می‌کند.

•
-p, --auth=AUTH:

مقدار مجوز را برای کلید مشخص‌شده توسط گزینهٔ -c تعیین می‌کند.

•
-q, --qualification=HEX_STRING_OR_PATH:

داده‌های ارائه‌شده به‌صورت رشته هگز یا فایل باینری برای مشخص‌کردن ویژگی نقل‌قول (quote)، اختیاری است. این گزینه معمولاً برای افزودن یک مقدار یک‌بارمصرف (nonce) در برابر حملات بازپخش (replay attacks) استفاده می‌شود.

•
-s, --signature=FILE:

فایل خروجی امضا؛ امضا را در قالبی که از طریق گزینهٔ -f مشخص شده است ذخیره می‌کند.

•
-m, --message=FILE:

فایل خروجی پیام؛ پیام نقل‌قول (quote) را که داده‌های امضاشده توسط TPM را تشکیل می‌دهد ذخیره می‌کند. این داده‌ها همان داده‌های تصدیق خلاصه حسابرسی دستور هستند.

•
-f, --format=FORMAT:

انتخاب قالب برای فایل خروجی امضا.

•
-g, --hash-algorithm:

الگوریتم درهم‌سازی برای امضا. پیش‌فرض sha256 است.

•
--scheme=ALGORITHM:

طرح امضای استفاده‌شده برای امضای پیام. اختیاری است. طرح‌های امضا باید از “استانداردهای قالب‌بندی” پیروی کنند؛ بخش “مشخص‌کننده‌های الگوریتم” را ببینید. همچنین برای فهرستی از طرح‌های امضای پشتیبانی‌شده، بخش “طرح‌های امضای پشتیبانی‌شده” را ببینید. در صورت مشخص شدن، طرح امضا باید با نوع کلید مطابقت داشته باشد. در صورت مشخص نشدن، طرح امضای پیش‌فرض برای نوع کلید استفاده خواهد شد.

•
-S, --session=FILE:

مسیر نشستی که خلاصه‌های حسابرسی را فعال و ثبت می‌کند.

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

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

مجوز استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف باشد: ۱. گذرواژه (Password) ۲. کد HMAC ۳. نشست‌ها (Sessions)

نکته: “در صورت مشخص نشدن، مجوزها به‌طور پیش‌فرض روی گذرواژه خالی تنظیم می‌شوند”.

برای احراز هویت با مقادیر auth، دستورات ابزار به‌طور ضمنی یک نشست HMAC ایجاد می‌کنند. بنابراین گذرواژه‌ها به‌صورت رمزگذاری‌نشده منتقل نمی‌شوند. این مورد برای گذرواژه‌های تعریف‌شده برای اشیاء صدق نمی‌کند. در این حالت، باید از یک نشست HMAC استفاده شود (دستور tpm2_startauthsession(1) را ببینید).

گذرواژه‌ها با استفاده از شناسه‌های پیشوندی به اشکال زیر تفسیر می‌شوند.

نکته: به‌طور پیش‌فرض فرض می‌شود گذرواژه‌هایی که پیشوند ندارند در قالب رشته‌ای هستند.

یک گذرواژه رشته‌ای، مشخص‌شده با پیشوند “str:” یا نبود آن (رشته خام بدون پیشوند)، تفسیر نمی‌شود و مستقیماً برای احراز هویت استفاده می‌شود.

foobar
str:foobar

یک گذرواژه رشته هگز، مشخص‌شده با پیشوند “hex:”، از قالب هگزادسیمال به قالب آرایه بایتی تبدیل می‌شود و بدین ترتیب استفاده از گذرواژه‌هایی با نویسه‌های غیرقابل‌چاپ یا نامناسب برای ترمینال را امکان‌پذیر می‌سازد.

hex:1122334455667788

یک گذرواژه مبتنی بر فایل، مشخص‌شده با پیشوند “file:”، باید مسیر فایلی حاوی گذرواژه باشد تا توسط ابزار خوانده شود یا “-” برای استفاده از ورودی استاندارد (stdin). ذخیره گذرواژه‌ها در فایل از نشت اطلاعات جلوگیری می‌کند؛ گذرواژه‌هایی که به‌عنوان گزینه ارسال می‌شوند ممکن است از فهرست فرآیندها یا تاریخچه پوسته خوانده شوند.

# برای استفاده از ورودی استاندارد و اعلان ورودی:
file:-
# برای استفاده از فایل از یک مسیر مشخص:
file:path/to/password/file
# برای ارسال گذرواژه از طریق echo به stdin:
echo foobar | tpm2_tool -p file:-
# برای استفاده از here-string بش از طریق stdin:
tpm2_tool -p file:- <<< foobar

هنگام استفاده از یک نشست پالیسی (policy session) برای مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session شروع کنید. سپس مسیری را به فایل نشستی که با tpm2_startauthsession(1) ایجاد شده است مشخص کنید. به‌صورت اختیاری، اگر نشست نیاز به ارسال مقدار auth همراه با دستگیره نشست دارد (مانند policy password)، یک + و سپس رشته‌ای را مطابق آنچه در بخش گذرواژه‌ها شرح داده شده است اضافه کنید.

برای استفاده از یک فایل بافتار نشست با نام session.ctx:

session:session.ctx

برای استفاده از یک فایل بافتار نشست با نام session.ctx و ارسال مقدار auth با محتوای mypassword:

session:session.ctx+mypassword

برای استفاده از یک فایل بافتار نشست با نام session.ctx و ارسال مقدار auth در قالب هگز با مقدار 0x11223344:

session:session.ctx+hex:11223344

می‌توانید با استفاده از پیشوند “pcr:” و ریززبان (minilanguage) مربوط به PCR یک خط‌مشی PCR را برآورده کنید. ریززبان PCR به‌صورت زیر است: <pcr-spec>=<raw-pcr-file>

مشخصات PCR در بخش “مشخص‌کننده‌های بانک PCR” مستند شده است.

مقدار raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR بازگردانده‌شده توسط tpm2_pcrread(1) است.

مشخص‌کننده‌های بانک PCR

برای برآورده کردن خط‌مشی PCR مربوط به sha256 روی بانک‌های ۰، ۱، ۲ و ۳ از این مشخص‌کننده استفاده کنید:

pcr:sha256:0,1,2,3

مشخص کردن AUTH.

انتخاب قالب برای فایل خروجی امضا. گزینهٔ tss (پیش‌فرض) یک حباب باینری (binary blob) را طبق مشخصات TPM 2.0 و پدینگ‌های احتمالی کامپایلر خروجی می‌دهد. گزینهٔ plain داده‌های سادهٔ امضا را همان‌طور که توسط الگوریتم رمزنگاری استفاده‌شده تعریف شده است، خروجی می‌دهد. قالب امضا (FORMAT).

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

•
-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). زمانی مفید است که لازم باشد یک اصلاح غلط‌نامه روی دستورات ارسالی به TPM اعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است.
•
-z, --pwd-session: استفاده از نشست گذرواژه به‌جای نشست HMAC برای احراز هویت. یک گذرواژه با متن آشکار برای مجاز کردن عمل به TPM ارسال می‌شود. این گزینه می‌تواند برای جلوگیری از مشکلاتی که در هنگام استفاده از نشست‌های بدون نمک (unsalted) در حالت OpenSSL FIPS رخ می‌دهد، استفاده شود. اگر از مقادیر auth استفاده می‌شود، باید از یک نشست با نمک (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 -Q -C e -c prim.ctx
tpm2_create -Q -C prim.ctx -c signing_key.ctx -u signing_key.pub \
-r signing_key.priv
tpm2_startauthsession -S session.ctx --audit-session
tpm2_getrandom 8 -S session.ctx
tpm2_getsessionauditdigest -c signing_key.ctx -m att.data -s att.sig \
-S session.ctx

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

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

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

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

این اثر تحت مجوز Creative Commons Attribution 4.0 International License (CC BY 4.0) منتشر شده است.

tpm2-tools