| tpm2_nvread(1) | General Commands Manual | tpm2_nvread(1) |
نام (NAME)
tpm2_nvread - خواندن دادههای ذخیرهشده در یک نمایه حافظه غیرفرار (NV)
خلاصه دستور (SYNOPSIS)
tpm2_nvread [گزینهها] [آرگومان]
توضیحات (DESCRIPTION)
دستور tpm2_nvread(1) - دادههای ذخیرهشده در یک نمایهٔ حافظهٔ غیرفرار (NV) را میخواند. نمایه میتواند به عنوان یک دستگیرهٔ خام (raw handle) یا یک مقدار آفست نسبت به محدودهٔ دستگیرهٔ nv یعنی “TPM2_HR_NV_INDEX” مشخص شود.
گزینهها (OPTIONS)
- •
- -C, --hierarchy=OBJECT:
سلسلهمراتبی که برای احراز مجوز استفاده میشود را مشخص میکند. گزینههای پشتیبانیشده عبارتند از:
- •
- o برای TPM_RH_OWNER
- •
- p برای TPM_RH_PLATFORM
- •
- <num> که در آن ممکن است از دستگیرهٔ سلسلهمراتب یا nv-index استفاده شود.
هنگامی که -C بهطور صریح ارسال نشود، از دستگیرهٔ نمایه برای احراز مجوز در برابر نمایه استفاده خواهد شد. مقدار auth نمایه از طریق گزینهٔ -p در tpm2_nvdefine(1) تنظیم میشود.
- •
- -o, --output=FILE:
فایلی برای نوشتن دادهها.
- •
- -P, --auth=AUTH:
مقدار احراز مجوز برای سلسلهمراتب را مشخص میکند.
- •
- -s, --size=NATURAL_NUMBER:
اندازه دادههایی که باید به بایت خوانده شوند را مشخص میکند، که در صورت تعیین نشدن آفست، از 0 شروع میشود. اگر مشخص نشود، اندازه دادهها مطابق با آنچه توسط بخش عمومی نمایه گزارش شده است استفاده خواهد شد.
- •
- --offset=NATURAL_NUMBER:
آفست در داخل نمایهٔ NV برای شروع خواندن از آن.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً cpHash نامیده میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نخواهد کرد و صرفاً یک cpHash برمیگرداند مگر اینکه rphash نیز مورد نیاز باشد.
- •
- --rphash=FILE
مسیر فایل برای ثبت هش پارامترهای پاسخ. این مقدار معمولاً rpHash نامیده میشود.
- •
- -n, --name=FILE:
نام نمایهٔ NV که باید هنگام محاسبهٔ صرف cpHash بدون ارسال واقعی دستور به TPM ارائه شود.
- •
- -S, --session=FILE:
نشست ایجادشده با استفاده از tpm2_startauthsession. این گزینه میتواند برای تعیین یک نشست کمکی جهت ممیزی و یا رمزنگاری/رمزگشایی پارامترها استفاده شود.
- •
- --print-yaml:
محتوای نمایهٔ NV را در قالبی خوانا برای انسان خروجی میدهد که برای نمایش محتوای نمایههای شمارنده (counter)، بیتها (bits)، توسعه (extend) و پین (pin) مفید است. هنگامی که این آرگومان ارائه شود، اندازه (size) و آفست (offset) نادیده گرفته میشوند.
- •
- آرگومان (ARGUMENT): آرگومان خط فرمان نمایهٔ NV یا شماره آفست را مشخص میکند.
مراجع (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)
-
# برای استفاده از ورودی استاندارد و اعلان ورودی: file:- # برای استفاده از فایل از یک مسیر مشخص: file:path/to/password/file # برای ارسال گذرواژه از طریق echo به stdin: echo foobar | tpm2_tool -p file:- # برای استفاده از here-string بش از طریق stdin: tpm2_tool -p file:- <<< foobar
نشستها (Sessions)
هنگام استفاده از یک نشست پالیسی (policy session) برای مجاز کردن استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session شروع کنید. سپس مسیری را به فایل نشستی که با tpm2_startauthsession(1) ایجاد شده است مشخص کنید. بهصورت اختیاری، اگر نشست نیاز به ارسال مقدار auth همراه با دستگیره نشست دارد (مانند policy password)، یک + و سپس رشتهای را مطابق آنچه در بخش گذرواژهها شرح داده شده است اضافه کنید.
مثالها (Examples)
برای استفاده از یک فایل زمینه نشست با نام session.ctx:
-
session:session.ctx
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار auth با محتوای mypassword:
-
session:session.ctx+mypassword
برای استفاده از یک فایل زمینه نشست با نام session.ctx و ارسال مقدار auth در قالب هگز با مقدار 0x11223344:
-
session:session.ctx+hex:11223344
احراز هویتهای PCR (PCR Authorizations)
میتوانید با استفاده از پیشوند “pcr:” و ریززبان (minilanguage) مربوط به 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.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه گزینهها میان بسیاری از برنامهها مشترک هستند و اطلاعاتی را ارائه میدهند که بسیاری از کاربران انتظار دارند.
- •
- -h, --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. بهطور پیشفرض، تلاش میکند صفحهخوان راهنما (manpager) را برای ابزار فراخوانی کند، اما در صورت عدم موفقیت، خلاصهای کوتاه از ابزار را نمایش میدهد. این رفتار مشابه زمانی است که آرگومان گزینهٔ “man” مشخص شده باشد، با این حال اگر صراحتاً “man” درخواست شود، ابزار خطاهای دریافتی از man را در stderr ارائه میدهد. اگر گزینهٔ “no-man” مشخص شود یا صفحهخوان راهنما با شکست مواجه گردد، گزینههای کوتاه در stdout چاپ میشوند.
استفاده موفق از قابلیت صفحات راهنما نیازمند این است که صفحات راهنما نصب شده باشند یا در MANPATH قرار داشته باشند؛ برای جزئیات بیشتر man(1) را ببینید.
- •
- -v, --version: نمایش اطلاعات نسخهٔ این ابزار، TCTIهای پشتیبانیشده و خروج.
- •
- -V, --verbose: افزایش اطلاعاتی که ابزار هنگام اجرای خود در کنسول چاپ میکند. هنگام استفاده از این گزینه، نام فایل و شماره خط چاپ میشوند.
- •
- -Q, --quiet: بیصدا کردن خروجی عادی ابزار در stdout.
- •
- -Z, --enable-errata: فعالسازی اعمال اصلاحات غلطنامه (errata fixups). زمانی مفید است که لازم باشد یک اصلاح غلطنامه روی دستورات ارسالی به TPM اعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل این گزینه است.
- •
- -z, --pwd-session: استفاده از نشست گذرواژه بهجای نشست HMAC برای احراز هویت. یک گذرواژه با متن آشکار برای مجاز کردن عمل به 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، قالب رشته پیکربندی مجموعهای از جفتهای کلید-مقدار ساده است که با کاراکتر `,' از هم جدا شدهاند. هر کلید و رشته مقدار با کاراکتر `=' از هم جدا میشوند.
- •
- ماژول TCTI abrmd از دو کلید پشتیبانی میکند:
- 1.
- `bus_name' : نام سرویس tabrmd روی گذرگاه (یک رشته).
- 2.
- `bus_type' : نوع نمونه dbus (یک رشته) که محدود به `session' و `system' است.
مشخص کردن نام tcti مربوط به tabrmd و رشته پیکربندی bus_name=com.example.FooBar:
-
\--tcti=tabrmd:bus_name=com.example.FooBar
مشخص کردن tcti پیشفرض (abrmd) و رشته پیکربندی bus_type=session:
-
\--tcti:bus_type=session
نکته: دو نام abrmd و tabrmd مترادف یکدیگرند.
مثالها (EXAMPLES)
خواندن ۳۲ بایت از یک نمایه با شروع از آفست ۰ (Read 32 bytes from an index starting at offset 0)
-
tpm2_nvdefine -C o -s 32 -a "ownerread|policywrite|ownerwrite" 1 echo "please123abc" > nv.dat tpm2_nvwrite -C o -i nv.dat 1 tpm2_nvread -C o -s 32 1
کدهای خروجی (Returns)
ابزارها میتوانند هر یک از کدهای زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای مدیریت گزینهها.
- •
- 3 - خطای احراز هویت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال بر tpm2_testparams.
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی ارجاع ۴٫۰ کریپتیو کامانز (CC BY 4.0).
| tpm2-tools |