tpm2_unseal(1) General Commands Manual tpm2_unseal(1)

tpm2_unseal - بازگردانی یک بلوک داده در یک شیء بارگذاری‌شدهٔ TPM به صورت متن آشکار

tpm2_unseal [OPTIONS]

دستور tpm2_unseal(1) یک بلوک داده (data blob) را در یک شیء بارگذاری‌شدهٔ TPM بازمی‌گرداند. بلوک داده به صورت متن آشکار (clear) بازگردانده می‌شود. داده‌ها در زمان ایجاد شیء با استفاده از ابزار tpm2_create پلمپ (seal) شده‌اند. چنین شیئی که برای پلمپ داده‌ها در نظر گرفته شده است، باید از نوع TPM_ALG_KEYEDHASH باشد.

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

بافتار شیء (context) برای شیء بارگذاری‌شده.

•
-p, --auth=AUTH:

مقدار احراز هویت (auth) اختیاری برای استفاده با کلید مشخص‌شده توسط -c.

•
-o, --output=FILE:

نام فایل خروجی حاوی داده‌های پلمپ‌گشایی‌شده (unsealed). در صورت عدم تعیین، پیش‌فرض STDOUT است.

•
--cphash=FILE

مسیر فایل برای ثبت درهم‌سازی پارامترهای دستور. این مقدار معمولاً cpHash نامیده می‌شود. نکته: هنگامی که این گزینه انتخاب شود، این ابزار در واقع دستور را اجرا نخواهد کرد، بلکه صرفاً مقدار cpHash را بازمی‌گرداند؛ مگر اینکه rphash نیز مورد نیاز باشد.

•
--rphash=FILE

مسیر فایل برای ثبت درهم‌سازی پارامترهای پاسخ. این مقدار معمولاً rpHash نامیده می‌شود.

•
-S, --session=FILE:

نشست ایجادشده با استفاده از tpm2_startauthsession. می‌توان چندین مورد از این گزینه را مشخص کرد. به عنوان مثال، می‌توانید یک نشست برای حسابرسی (auditing) و نشست دیگری برای رمزنگاری/رمزگشایی پارامترها داشته باشید.

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

•
اگر آرگومان مسیر یک فایل باشد، فایل به عنوان یک شیء گذرا (transient object) بازیابی‌شدهٔ TPM بارگذاری می‌شود.
•
اگر آرگومان با یکی از موارد زیر از طریق پیشوند مطابقت داشته باشد:
•
owner: سلسله‌مراتب مالک (owner hierarchy)
•
platform: سلسله‌مراتب پلتفرم (platform hierarchy)
•
endorsement: سلسله‌مراتب تصدیق (endorsement hierarchy)
•
lockout: شیء ماندگار کنترل قفل‌شدگی (lockout control persistent object)
•
اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، با آن مانند یک دستگیره رفتار خواهد شد (مانند 0x81010013) و مستقیماً استفاده می‌شود..SH "قالب‌بندی مجوزدهی (Authorization Formatting)" مجوزدهی برای استفاده از یک شیء در TPM2.0 می‌تواند به ۳ شکل مختلف باشد: ۱. گذرواژه (Password) ۲. کد HMAC ۳. نشست‌ها (Sessions)

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

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

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

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

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

foobar
str:foobar

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

hex:1122334455667788

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

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

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

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

session:session.ctx

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

session:session.ctx+mypassword

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

session:session.ctx+hex:11223344
شما می‌توانید با استفاده از پیشوند “pcr:” و ریززبان (minilanguage)
مربوط به PCR، یک خط‌مشی PCR را برآورده کنید.
ریززبان PCR به صورت زیر است:
<pcr-spec>=<raw-pcr-file>
مشخصه PCR در بخش “PCR bank specifiers” مستند شده است.
مقدار raw-pcr-file یک آرگومان اختیاری است که
شامل خروجی محتویات خام PCR به همان صورتی است که توسط
tpm2_pcrread(1) بازگردانده می‌شود.
مشخص‌کننده‌های بانک PCR

برای برآورده کردن یک خط‌مشی PCR از sha256 روی بانک‌های 0، 1، 2 و 3 از مشخصه‌ای به این صورت استفاده کنید:

pcr:sha256:0,1,2,3

مشخص کردن AUTH.

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

•
-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. هنگامی مفید است که نیاز باشد اصلاح errata روی دستورات ارسال‌شده به TPM اِعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA معادل آن است.
•
-z، --pwd-session: استفاده از نشست گذرواژه (password session) به جای یک نشست HMAC برای احراز هویت. یک گذرواژه متنی آشکار به TPM ارسال می‌شود تا عملیات مجاز گردد. این گزینه می‌تواند برای جلوگیری از بروز مشکل در هنگام استفاده از نشست‌های unsalted در حالت OpenSSL FIPS به کار رود. اگر از مقادیر auth استفاده می‌شود، باید از یک نشست salted برای احراز هویت استفاده شود.
•
-R، --autoflush: فعال‌سازی autoflush برای اشیاء گذارای (transient) ایجاد شده توسط دستور. اگر یک شیء والد از یک فایل context بارگذاری شود، شیء والد گذرا نیز flush خواهد شد. تخلیه خودکار (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 مقداردهی اولیه نشود. برخی ابزارها امکان استفاده از گزینه‌های off-tpm را می‌دهند و بنابراین از عدم استفاده از TCTI پشتیبانی می‌کنند. ابزارهایی که از آن پشتیبانی نمی‌کنند، در صورت تلاش برای استفاده بدون اتصال TCTI با خطا مواجه می‌شوند. از هیچ‌گونه گزینه‌ای پشتیبانی نمی‌کند و باید دقیقاً به صورت متن “none” ارائه شود.

آرگومان‌های گزینه خط فرمان یا متغیر محیطی به این صورت هستند:

<tcti-name>:<tcti-option-config>

مشخص کردن یک رشته خالی برای هر یک از <tcti-name> یا <tcti-option-config> به ترتیب منجر به استفاده از مقدار پیش‌فرض برای آن بخش می‌شود..SS "پیش‌فرض‌های TCTI (TCTI Defaults)" هنگامی که یک 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 و شماره درگاه (پورت) مورد استفاده توسط شبیه‌ساز را مشخص کرد. مقادیر پیش‌فرض 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.

tpm2_createprimary -c primary.ctx -Q
tpm2_pcrread -Q -o pcr.bin sha256:0,1,2,3
tpm2_createpolicy -Q --policy-pcr -l sha256:0,1,2,3 -f pcr.bin -L pcr.policy
echo 'secret' | tpm2_create -C primary.ctx -L pcr.policy -i-\
-u seal.pub -r seal.priv -c seal.ctx -Q
tpm2_unseal -c seal.ctx -p pcr:sha256:0,1,2,3
ابزارها می‌توانند هر یک از کدهای زیر را بازگردانند:
•
0 - موفقیت.
•
1 - خطای عمومی نامشخص.
•
2 - خطای پردازش گزینه‌ها.
•
3 - خطای احراز هویت.
•
4 - خطای مربوط به TCTI.
•
5 - طرح پشتیبانی‌نشده.
قابل اعمال بر tpm2_testparams.

مسائل گیت‌هاب

مشاهدهٔ فهرست پستی

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

tpm2-tools