| tpm2_hmac(1) | General Commands Manual | tpm2_hmac(1) |
نام (NAME)
tpm2_hmac - محاسبه کد احراز هویت پیام مبتنی بر هش (HMAC) در TPM2
خلاصه دستور (SYNOPSIS)
tpm2_hmac [OPTIONS] [ARGUMENT]
توضیحات (DESCRIPTION)
دستور tpm2_hmac(1) یک عملیات HMAC را با TPM انجام داده و نتایج را بازمیگرداند. اگر فایل آرگومان مشخص نشود، دادهها از ورودی استاندارد (stdin) خوانده میشوند.
الگوریتم درهمسازی بهطور پیشفرض به طرحواره (scheme) کلید تنظیم میشود، یا چنانچه کلید دارای طرحواره NULL باشد، به sha256 تنظیم میگردد.
خروجی بهطور پیشفرض به خروجی استاندارد (STDOUT) و با قالب باینری ارسال میشود، مگر آنکه بهترتیب از طریق گزینههای -o و –hex به گونهٔ دیگری مشخص شده باشد.
گزینهها (OPTIONS)
- •
- -c, --key-context=OBJECT:
شیء زمینه (context object) مربوط به کلید امضای متقارن که کلید HMAC را فراهم میکند. میتواند یک فایل یا یک شماره هندل (handle number) باشد. بخش «قالب شیء زمینه (Context Object Format)» را ببینید.
- •
- -p, --auth=AUTH:
مقدار احراز هویت اختیاری برای استفاده از کلید مشخصشده با -c.
- •
- -g, --hash-algorithm=ALGORITHM:
الگوریتم درهمسازی (هش) مورد استفاده. الگوریتمها باید از «استانداردهای قالببندی» پیروی کنند؛ بخش «مشخصکنندههای الگوریتم (Algorithm Specifiers)» را ببینید. همچنین برای مشاهده فهرست الگوریتمهای هش پشتیبانیشده، به بخش «الگوریتمهای هش پشتیبانیشده (Supported Hash Algorithms)» مراجعه کنید.
- •
- --hex
تبدیل خروجی hmac به قالب هگزادسیمال بدون پیشوند “0x”.
- •
- -o, --output=FILE:
فایل اختیاری برای ثبت نتیجه HMAC. مقدار پیشفرض STDOUT (خروجی استاندارد) است.
- •
- -t, --ticket=FILE:
فایل اختیاری برای ثبت نتیجه بلیت (ticket).
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور (command parameters). این مقدار معمولاً cpHash نامیده میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار دستور را در عمل اجرا نمیکند، بلکه تنها یک cpHash برمیگرداند.
- •
- ARGUMENT: آرگومان خط فرمان، مسیر فایل دادهها را برای محاسبه HMAC مشخص میکند. در صورت عدم تعیین، مقدار پیشفرض STDIN (ورودی استاندارد) خواهد بود.
مراجع (References)
قالب شیء زمینه (Context Object Format)
نوع یک شیء زمینه، چه هندل (handle) باشد یا نام فایل، بر اساس منطق زیر بهترتیب تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، آن فایل به عنوان یک شیء گذرا (transient) بازگردانیشده TPM بارگذاری میشود.
- •
- اگر آرگومان با پیشوند یکی از موارد زیر مطابقت داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner hierarchy)
- •
- platform: سلسلهمراتب پلتفرم (platform hierarchy)
- •
- endorsement: سلسلهمراتب تایید/امضا (endorsement hierarchy)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به عنوان یک عدد بارگذاری شود، به عنوان یک هندل تلقی شده (مانند 0x81010013) و مستقیماً استفاده خواهد شد.
قالببندی احراز هویت (Authorization Formatting)
مجوز برای استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. کد HMAC 3. نشستها (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 همراه با هندل نشست باشد (مانند گذرواژه سیاست)، یک + و یک رشته را مطابق آنچه در بخش گذرواژهها (Passwords) شرح داده شد اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینه نشست با نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth با گذرواژه mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth هگزادسیمال (HEX) برابر با 0x11223344:
-
session:session.ctx+hex:11223344
مجوزهای PCR (PCR Authorizations)
میتوانید یک خطمشی PCR را با استفاده از پیشوند “pcr:” و زبان کوچک PCR برآورده سازید. زبان کوچک PCR به صورت زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش «مشخصکنندههای بانک PCR» مستند شده است.
فایل raw-pcr-file یک آرگومان اختیاری است که حاوی خروجی محتویات خام PCR است همانطور که توسط tpm2_pcrread(1) بازگردانده میشود.
مشخصکنندههای بانک PCR
مثالها (Examples)
برای برآورده کردن یک خطمشی PCR مربوط به sha256 روی بانکهای ۰، ۱، ۲ و ۳ از یک مشخصکننده به صورت زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
تعیین AUTH.
قالببندی احراز هویت (Authorization Formatting)
مجوز برای استفاده از یک شیء در TPM2.0 میتواند به ۳ شکل مختلف باشد: 1. گذرواژه (Password) 2. کد HMAC 3. نشستها (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 همراه با هندل نشست باشد (مانند گذرواژه سیاست)، یک + و یک رشته را مطابق آنچه در بخش گذرواژهها (Passwords) شرح داده شد اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینه نشست با نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth با گذرواژه mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست به نام session.ctx و ارسال مقدار auth هگزادسیمال (HEX) برابر با 0x11223344:
-
session:session.ctx+hex:11223344
مجوزهای PCR (PCR Authorizations)
میتوانید یک خطمشی PCR را با استفاده از پیشوند “pcr:” و زبان کوچک PCR برآورده سازید. زبان کوچک PCR به صورت زیر است: <pcr-spec>=<raw-pcr-file>
مشخصات PCR در بخش «مشخصکنندههای بانک PCR» مستند شده است.
فایل raw-pcr-file یک آرگومان اختیاری است که حاوی خروجی محتویات خام PCR است همانطور که توسط tpm2_pcrread(1) بازگردانده میشود.
مشخصکنندههای بانک PCR
مثالها (Examples)
برای برآورده کردن یک خطمشی PCR مربوط به sha256 روی بانکهای ۰، ۱، ۲ و ۳ از یک مشخصکننده به صورت زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
تعیین ALGORITHM.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که اغلب کاربران انتظار دارند.
- •
- -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 به کار روند، باید از یک نشست نمکدار (salted) برای احراز هویت استفاده شود.
- •
- -R, --autoflush: فعال کردن تخلیه خودکار (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 برقرار نمیکند. برخی ابزارها امکان استفاده از گزینههای خارج از 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 برای استفاده توسط این 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، قالب رشته پیکربندی مجموعهای از جفتهای کلید-مقدار ساده است که با نویسه `,' از هم جدا شدهاند. رشتههای هر کلید و مقدار با نویسه `=' از یکدیگر تفکیک میشوند.
- •
- رابط abrmd TCTI از دو کلید پشتیبانی میکند:
- 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 مترادف یکدیگرند.
مثالها (EXAMPLES)
راهاندازی اولیه (Setup)
-
# ایجاد یک شیء اصلی (primary object) tpm2_createprimary -c primary.ctx # ایجاد یک کلید hmac tpm2_create -C primary.ctx -G hmac -c hmac.key
محاسبه HMAC با الگوریتم هش پیشفرض
محاسبه یک HMAC با استفاده از طرحواره پیشفرض کلید (الگوریتم هش) و ارسال خروجی به stdout در قالب هگزادسیمال:
-
tpm2_hmac -c hmac.key --hex data.in e6eda48a53a9ddbb92f788f6d98e0372d63a408afb11aca43f522a2475a32805
کدهای خروجی (RETURNS)
ابزارها میتوانند هر یک از کدهای زیر را برگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرحواره پشتیبانینشده (Non supported scheme). قابل اعمال روی tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0).
| tpm2-tools |