tpm2_hash(1) General Commands Manual tpm2_hash(1)

tpm2_hash - انجام عملیات درهم‌سازی (هش) با استفاده از TPM.

tpm2_hash [OPTIONS] [ARGUMENT OR STDIN]

دستور tpm2_hash(1) عملیات درهم‌سازی (هش) را روی یک فایل انجام داده و نتایج را بازمی‌گرداند. اگر هیچ آرگومانی مشخص نشود، داده‌ها از ورودی استاندارد (stdin) خوانده می‌شوند. چنانچه قرار باشد نتایج هش در یک عملیات امضا با استفاده از یک کلید امضای محدودشده (restricted signing key) به کار رود، بلیت (ticket) بازگردانده‌شده توسط این دستور می‌تواند نشان دهد که هش برای امضا امن است.

خروجی به‌طور پیش‌فرض در خروجی استاندارد (stdout) و با قالب باینری ارسال می‌شود، مگر آنکه به ترتیب از طریق گزینه‌های -o و –hex به گونهٔ دیگری مشخص شده باشد.

•
-C, --hierarchy=OBJECT:

سلسله‌مراتبی که باید برای بلیت استفاده شود. در صورتی که هیچ مقداری مشخص نشود، مقدار پیش‌فرض o یا TPM_RH_OWNER است. گزینه‌های پشتیبانی‌شده عبارتند از:

•
o برای TPM_RH_OWNER
•
p برای TPM_RH_PLATFORM
•
e برای TPM_RH_ENDORSEMENT
•
n برای TPM_RH_NULL
•
-g, --hash-algorithm=ALGORITHM:

الگوریتم درهم‌سازی برای عملیات تولید چکیده (digest).

•
--hex

تبدیل خروجی به قالب هگزادسیمال بدون پیشوند “0x”.

•
-o, --output=FILE or STDOUT:

فایل اختیاری برای ذخیره نتیجه هش. به‌طور پیش‌فرض به صورت هگزادسیمال در خروجی استاندارد (stdout) چاپ می‌شود.

•
-t, --ticket=TICKET_FILE

فایل اختیاری برای ثبت نتیجه بلیت (ticket). به‌طور پیش‌فرض به صورت هگزادسیمال در خروجی استاندارد (stdout) چاپ می‌شود.

•
ARGUMENT یا STDIN، آرگومان خط فرمان مشخص‌کنندهٔ FILE برای درهم‌سازی است.

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

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

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

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

برای احراز هویت با مقادیر مجاز (auth values)، دستورات ابزار به‌طور ضمنی یک نشست 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 همراه با هندل نشست باشد (مانند گذرواژه سیاست)، یک + و یک رشته را مطابق آنچه در بخش گذرواژه‌ها (Passwords) شرح داده شد اضافه کنید.

برای استفاده از یک فایل زمینه نشست با نام 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:” و زبان کوچک 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

تعیین ALGORITHM.

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

•
-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 (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، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با نویسه `,' از هم جدا شده‌اند. رشته‌های هر کلید و مقدار با نویسه `=' از یکدیگر تفکیک می‌شوند.
•
رابط 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 مترادف یکدیگرند.

tpm2_hash -C e -g sha1 -o hash.bin -t ticket.bin data.txt

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

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

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

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

این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0).

tpm2-tools