| tpm2_unseal(1) | General Commands Manual | tpm2_unseal(1) |
نام (NAME)
tpm2_unseal - بازگردانی یک بلوک داده در یک شیء بارگذاریشدهٔ TPM به صورت متن آشکار
خلاصه دستور (SYNOPSIS)
tpm2_unseal [OPTIONS]
توضیحات (DESCRIPTION)
دستور tpm2_unseal(1) یک بلوک داده (data blob) را در یک شیء بارگذاریشدهٔ TPM بازمیگرداند. بلوک داده به صورت متن آشکار (clear) بازگردانده میشود. دادهها در زمان ایجاد شیء با استفاده از ابزار tpm2_create پلمپ (seal) شدهاند. چنین شیئی که برای پلمپ دادهها در نظر گرفته شده است، باید از نوع TPM_ALG_KEYEDHASH باشد.
گزینهها (OPTIONS)
- •
- -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) و نشست دیگری برای رمزنگاری/رمزگشایی پارامترها داشته باشید.
مراجع (REFERENCES)
قالب شیء بافتار (CONTEXT OBJECT FORMAT)
نوع یک شیء بافتار، خواه یک دستگیره (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)).
گذرواژهها (Passwords)
گذرواژهها با استفاده از شناسههای پیشوندی به شکلهای زیر تفسیر میشوند.
نکته: بهطور پیشفرض، گذرواژهها در صورتی که پیشوندی نداشته باشند در قالب رشته فرض میشوند.
رشته (String)
یک گذرواژه رشتهای که با پیشوند “str:” یا عدم حضور آن (رشته خام بدون پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای مجوزدهی به کار میرود.
مثالها (Examples)
-
foobar str:foobar
رشته هگزادسیمال (Hex-string)
یک گذرواژه رشته هگزادسیمال که با پیشوند “hex:” مشخص میشود، از فرم شانزدهشانزدهی (هگزادسیمال) به فرم آرایه بایتی تبدیل میشود؛ بنابراین امکان استفاده از گذرواژههایی با نویسههای غیرقابل چاپ و/یا ناسازگار با ترمینال را فراهم میسازد.
مثال (Example)
-
hex:1122334455667788
فایل (File)
یک گذرواژه مبتنی بر فایل که با پیشوند “file:” مشخص میشود، باید مسیر فایلی حاوی گذرواژه برای خوانده شدن توسط ابزار یا یک “-” جهت استفاده از stdin باشد. ذخیره گذرواژهها در فایلها از نشت اطلاعات جلوگیری میکند؛ چرا که گذرواژههای ارسالشده بهعنوان گزینه میتوانند از طریق فهرست فرآیندها یا قابلیتهای متداول تاریخچه شل خوانده شوند.
مثالها (Examples)
-
# جهت استفاده از stdin و دریافت اعلان file:- # جهت استفاده از یک فایل از طریق مسیر آن file:path/to/password/file # جهت ارسال گذرواژه از طریق stdin با دستور echo: echo foobar | tpm2_tool -p file:- # جهت استفاده از here-string در bash از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست خطمشی (policy session) جهت مجوزدهی برای استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session پیشوندگذاری کنید. سپس مسیر یک فایل نشست را که با tpm2_startauthsession(1) ایجاد شده است مشخص نمایید. در صورت نیاز، اگر نشست مستلزم ارسال یک مقدار auth همراه با دستگیره نشست باشد (مانند گذرواژه خطمشی یا policy password)، یک علامت + و یک رشته را طبق آنچه در بخش گذرواژهها (Passwords) شرح داده شد ضمیمه کنید.
مثالها (Examples)
برای استفاده از یک فایل بافتار نشست (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
مثالها (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. هنگامی مفید است که نیاز باشد اصلاح 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 (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 مقداردهی اولیه نشود. برخی ابزارها امکان استفاده از گزینههای 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های سفارشی (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' محدود است.
مشخص کردن نام 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.
مثالها (EXAMPLES)
-
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.
گزارش باگها (BUGS)
راهنما (HELP)
مشاهدهٔ فهرست پستی
مجوز (LICENSE)
این اثر تحت Creative Commons Attribution 4.0 International License (CC BY 4.0) منتشر شده است.
| tpm2-tools |