| tpm2_startauthsession(1) | General Commands Manual | tpm2_startauthsession(1) |
نام (NAME)
tpm2_startauthsession - آغاز یک نشست با TPM.
خلاصه دستور (SYNOPSIS)
tpm2_startauthsession [OPTIONS]
توضیحات (DESCRIPTION)
tpm2_startauthsession(1) - یک نشست را با TPM آغاز میکند. حالت پیشفرض آغاز یک نشست آزمایشی (trial) است، مگر اینکه گزینهٔ -a مشخص شده باشد. دادههای نشست پالیسی را در یک فایل ذخیره میکند. این فایل سپس میتواند در ابزارهای بعدی که از فایل پالیسی برای احراز اصالت یا رویدادهای پالیسی بهره میبرند، استفاده شود.
این قابلیت با مدیران منابع (RMها) به جز tpm2-abrmd کار نخواهد کرد، چرا که بیشتر RMها هنگام قطع ارتباط کلاینت از کانال IPC، دستگیرههای نشست (session handles) را پاکسازی (flush) میکنند. با این حال، هنگام استفاده از یک RM بدون ویژگی session gapping، میتوان از TCTI دستوری (command TCTI) برای باز نگه داشتن اتصال استفاده کرد.
نخستین گام، ایجاد یک شنوندهٔ سوکت (socket listener) است که از tpm2_send استفاده میکند:
-
mknod "$HOME/backpipe" p while [ 1 ]; do tpm2_send 0<"$HOME/backpipe" | nc -lU "$HOME/sock" 1>"$HOME/backpipe"; done;
گام بعدی، استفاده از TCTI دستوری و netcat (nc) برای ارسال داده به سوکت است.
-
tpm2_startauthsession --tcti="cmd:nc -q 0 -U $HOME/sock" <options>
پس از پایان، حتماً شنونده را متوقف کنید (kill کنید). برای دستورهایی که با TCTI دستوری در برابر شنونده اجرا میشوند، نیاز به مدیریت دستگیرههای گذرا (transient handles) خواهید داشت. سادهترین راه، افزودن یک دستور پاکسازی (flush) پس از هر دستور است: tpm2_flushcontext --tcti="cmd:nc -q 0 -U $HOME/sock" -t
نکته: این مثال از سوکتهای UNIX استفاده میکند، زیرا سوکت با کنترلهای دسترسی لینوکس مهار میشود. استفاده از پورت شبکه پیشنهاد نمیشود، چرا که یا به روی تمام کاربران سیستم باز است (localhost) یا به یک کارت شبکه مقید شده و در معرض شبکه قرار میگیرد.
این روش با دسترسی مستقیم به TPM کار خواهد کرد، اما توجه داشته باشید که این دستور در درون خود یک ContextSave و یک ContextLoad را روی دستگیرهٔ نشست فراخوانی میکند، بنابراین این نشست نمیتواند دوباره ذخیره یا بارگذاری شود.
گزینهها (OPTIONS)
- •
- --policy-session:
یک نشست پالیسی از نوع TPM_SE_POLICY آغاز میکند. پیشفرض بدون این گزینه TPM_SE_TRIAL است.
نکته: نشست آزمایشی (trial) هنگام ایجاد پالیسی و نشست پالیسی (policy) هنگام احراز اصالت با یک پالیسی استفاده میشود.
- •
- --audit-session:
یک نشست HMAC را آغاز میکند تا به عنوان نشست بازرسی (audit session) استفاده شود. پیشفرض بدون این گزینه TPM2_SE_TRIAL است.
- •
- --hmac-session:
یک نشست HMAC از نوع TPM_SE_HMAC آغاز میکند. پیشفرض بدون این گزینه TPM2_SE_TRIAL است.
- •
- -g, --hash-algorithm=ALGORITHM:
الگوریتم درهمسازی (هش) استفادهشده در محاسبهٔ خلاصهسازی پالیسی (policy digest).
- •
- -G, --key-algorithm=ALGORITHM:
الگوریتم متقارن استفادهشده در رمزنگاری/رمزگشایی پارامتر.
- •
- -c, --key-context=OBJECT:
اشیاء tpmkey و bind را یکسان تنظیم میکند. رمزنگاری پارامتر نشست فعال میشود. رمزگشایی پارامتر نشست فعال میشود. کلید متقارن رمزنگاری/رمزگشایی پارامتر روی AES-CFB تنظیم میشود.
- •
- -S, --session=FILE:
نام فایل نشست پالیسی؛ الزامی است.
- •
- --bind-context=FILE:
شیء bind را تنظیم میکند. رمزنگاری پارامتر نشست غیرفعال است. از tpm2_sessionconfig برای فعال کردن استفاده کنید. رمزگشایی پارامتر نشست غیرفعال است. از tpm2_sessionconfig برای فعال کردن استفاده کنید. کلید متقارن رمزنگاری/رمزگشایی پارامتر روی AES-CFB تنظیم میشود.
- •
- --bind-auth=AUTH:
مقدار مجوز (authorization value) را برای شیء bind تنظیم میکند.
- •
- --tpmkey-context=FILE:
شیء tpmkey را تنظیم میکند. رمزنگاری پارامتر نشست غیرفعال است. از tpm2_sessionconfig برای فعال کردن استفاده کنید. رمزگشایی پارامتر نشست غیرفعال است. از tpm2_sessionconfig برای فعال کردن استفاده کنید. کلید متقارن رمزنگاری/رمزگشایی پارامتر روی AES-CFB تنظیم میشود.
- •
- -n, --name=FILE
یک فایل name به عنوان خروجی از ابزاری مانند گزینهٔ -n در دستور tpm2_readpublic(1). فایل name میتواند برای اعتبارسنجی یک دستگیرهٔ ماندگار (persistent handle) ورودی برای گزینههای --tpmkey-context، -c و --key-context استفاده شود. اعتبارسنجی اینکه شیء ارجاعشده توسط یک دستگیرهٔ ماندگار، مثلاً 0x81000000، همان کلید مورد انتظار است، از انجام حملات مرد میانی (man-in-the-middle) توسط مهاجمان بر روی ترافیک نشست جلوگیری میکند.
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه یک دستگیره (handle) باشد یا نام فایل، طبق منطق زیر و بهترتیب تعیین میشود:
- •
- اگر آرگومان مسیر یک فایل باشد، آنگاه فایل بهعنوان یک شیء گذرای (transient) بازیابیشدهٔ TPM بارگیری میشود.
- •
- اگر آرگومان یک تطابق پیشوندی با یکی از موارد زیر باشد:
- •
- owner: سلسلهمراتب مالک (owner)
- •
- platform: سلسلهمراتب بستر (platform)
- •
- endorsement: سلسلهمراتب تأییدیه (endorsement)
- •
- lockout: شیء پایدار کنترل مسدودسازی (lockout)
- •
- اگر آرگومان بتواند بهصورت یک عدد بارگیری شود، بهعنوان یک دستگیره در نظر گرفته میشود (مانند 0x81010013) و مستقیماً برای شیء استفاده خواهد شد.
قالببندی احراز هویت (Authorization Formatting)
احراز هویت جهت استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. HMAC 3. نشستها (Sessions)
نکته: “در صورت عدم تعیین، پیشفرض احراز هویت گذرواژه خالی است”.
برای احراز هویت با مقادیر auth، دستورات ابزار بهطور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین گذرواژهها بدون رمزگذاری منتقل نمیشوند. این مورد برای گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (ببینید: tpm2_startauthsession(1)).
گذرواژهها (Passwords)
گذرواژهها با استفاده از شناسههای پیشوندی به اَشکال زیر تفسیر میشوند.
نکته: در صورتی که گذرواژهها پیشوندی نداشته باشند، بهطور پیشفرض در قالب رشته در نظر گرفته میشوند.
رشته (String)
یک گذرواژهٔ رشتهای، که با پیشوند “str:” یا عدم وجود آن (رشتهٔ خام بدون پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای احراز هویت به کار میرود.
مثالها (Examples)
-
foobar str:foobar
رشته هگز (Hex-string)
یک گذرواژهٔ رشتهٔ هگز، که با پیشوند “hex:” مشخص میشود، از قالب شانزدهشانزدهی (هگزادسیمال) به یک آرایهٔ بایتی تبدیل میشود؛ بدین ترتیب استفاده از گذرواژههای حاوی نویسههای غیرقابل چاپ و/یا ناسازگار با ترمینال امکانپذیر میگردد.
مثال (Example)
-
hex:1122334455667788
فایل (File)
یک گذرواژهٔ مبتنی بر فایل، که با پیشوند “file:” مشخص میشود، باید مسیر فایلی حاوی گذرواژه برای خوانده شدن توسط ابزار یا “-” برای استفاده از stdin باشد. ذخیره گذرواژهها در فایلها از نشت اطلاعات جلوگیری میکند؛ زیرا گذرواژههایی که بهعنوان گزینه ارسال میشوند را میتوان از فهرست پردازهها یا تاریخچه شل مشاهده کرد.
مثالها (Examples)
-
# برای استفاده از stdin و درخواست ورودی: file:- # برای استفاده از فایل از طریق مسیر: file:path/to/password/file # برای ارسال گذرواژه با دستور echo از طریق stdin: echo foobar | tpm2_tool -p file:- # برای استفاده از bash here-string از طریق stdin: tpm2_tool -p file:- <<< foobar هنگام استفاده از یک نشست خطمشی (policy session) جهت اعتبارسنجی استفاده از یک شیء، پیشوند آرگومان گزینه را با کلیدواژهٔ session قرار دهید. سپس مسیری را به فایل نشستی که با tpm2_startauthsession(1) ایجاد شده است، مشخص کنید. به صورت اختیاری، اگر نشست نیازمند ارسال یک مقدار احراز هویت (auth value) به همراه دستگیرهٔ نشست باشد (مانند گذرواژهٔ خطمشی)، یک علامت + و سپس یک رشته را طبق توضیحات بخش گذرواژهها (Passwords) به انتهای آن اضافه نمایید.
مثالها (Examples)
برای استفاده از یک فایل بافتار نشست (session context) به نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال authvalue با مقدار mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل بافتار نشست به نام session.ctx و ارسال authvalue هگزادسیمال (HEX) با مقدار 0x11223344:
-
session:session.ctx+hex:11223344
اعتبارسنجیهای PCR (PCR Authorizations)
میتوانید یک خطمشی PCR را با استفاده از پیشوند “pcr:” و ریززبان (minilanguage) PCR برآورده سازید. ریززبان PCR به شرح زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش “تعیینکنندههای بانک PCR (PCR bank specifiers)” مستند شده است.
آرگومان raw-pcr-file یک آرگومان اختیاری است که شامل خروجی محتویات خام PCR بازگردانده شده توسط tpm2_pcrread(1) میباشد.
تعیینکنندههای بانک PCR
مثالها (Examples)
برای برآورده ساختن یک خطمشی PCR با sha256 روی بانکهای 0، 1، 2 و 3 از تعیینکنندهای به این شکل استفاده کنید:
-
pcr:sha256:0,1,2,3
تعیین AUTH.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را که بسیاری از کاربران انتظار دارند فراهم میکنند.
- •
- -h، --help=[man|no-man]: نمایش صفحهٔ راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهبند راهنما (manpager) را برای این ابزار فراخوانی کند؛ با این حال در صورت شکست، خلاصهای کوتاه از ابزار را در خروجی نمایش میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” تعیین شده باشد، اما اگر بهطور صریح “man” درخواست شود، ابزار خطاهای man را در stderr ارائه میدهد. اگر گزینهٔ “no-man” مشخص شود، یا manpager با خطا مواجه شود، گزینههای کوتاه در 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 session) برای احراز هویت استفاده شود.
- •
- -R، --autoflush: فعالسازی پاکسازی خودکار (autoflush) برای اشیاء گذرا (transient) که توسط دستور ایجاد شدهاند. اگر یک شیء والد از یک فایل بافتار بارگذاری شود، شیء والد گذرا نیز پاکسازی (flush) خواهد شد. پاکسازی خودکار همچنین با تنظیم متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true قابل فعالسازی است. اطلاعاتی که بسیاری از کاربران انتظار دارند..SH "پیکربندی 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-name>:<tcti-option-config>
تعیین رشته خالی برای هر یک از <tcti-name> یا <tcti-option-config> به ترتیب سبب استفاده از مقدار پیشفرض برای آن بخش میشود.
پیشفرضهای 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 جهت استفاده توسط آن قابل تعیین است. مقدار پیشفرض /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' است.
تعیین نام tabrmd tcti و رشته پیکربندیِ bus_name=com.example.FooBar:
-
\--tcti=tabrmd:bus_name=com.example.FooBar
تعیین tcti پیشفرض (abrmd) و رشته پیکربندیِ bus_type=session:
-
\--tcti:bus_type=session
نکته: abrmd و tabrmd مترادف هستند. ماژولهای گوناگون شناختهشده TCTI.
رمزنگاری پارامتر
در صورتی که از نشست hmac برای دستورها استفاده نشود، پارامترهای دستور و پاسخها رمزنگاری نمیشوند. نشستی که در آن پارامتر (در این مورد، گذرواژه) رمزنگاری میشود، میتواند به صورت زیر ایجاد شود:
-
tpm2_createprimary -c prim.ctx tpm2_startauthsession -S enc_session.ctx --hmac-session --key-context prim.ctx tpm2_create -C prim.ctx -c key.ctx -S enc_session.ctx -p password
حتی بدون استفاده از کلید برای نشست، میتوان از یک نشست برای رمزنگاری پارامتر استفاده کرد:
-
tpm2_startauthsession -S enc_session.ctx --hmac-session tpm2_sessionconfig enc_session.ctx --enable-decrypt tpm2_create -C prim.ctx -c key.ctx -S enc_session.ctx -p password
اگر نیاز باشد پاسخ رمزنگاری شود، میتوان از پارامتر –enable-encrypt استفاده کرد:
-
tpm2_startauthsession -S enc_session.ctx --hmac-session tpm2_sessionconfig enc_session.ctx --enable-encrypt tpm2_getrandom -S enc_session.ctx -o rand
شروع یک نشست trial و ذخیره دادههای نشست در یک فایل
-
tpm2_startauthsession -S mysession.ctx
شروع یک نشست policy و ذخیره دادههای نشست در یک فایل
-
tpm2_startauthsession --policy-session -S mysession.ctx
شروع یک نشست policy مقید و رمزنگاریشده و ذخیره دادههای نشست در یک فایل
-
tpm2_createprimary -c primary.ctx tpm2_startauthsession --policy-session -c primary.ctx -S mysession.ctx
وضعیت خروج (EXIT STATUS)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیت.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده. قابل اعمال بر روی tpm2_testparams.
گزارش باگها (BUGS)
راهنما (HELP)
مشاهده فهرست پستی
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز انتساب ۴٫۰ (CC BY 4.0) منتشر شده است.
| tpm2-tools |