| tpm2_nvincrement(1) | General Commands Manual | tpm2_nvincrement(1) |
نام (NAME)
tpm2_nvincrement - افزایش مقدار شمارنده در یک نمایه حافظه غیرفرار (NV)
خلاصه دستور (SYNOPSIS)
tpm2_nvincrement [گزینهها] [آرگومان]
توضیحات (DESCRIPTION)
دستور tpm2_nvincrement(1) مقدار یک نمایه حافظه غیرفرار (NV) را که به عنوان یک شمارنده پیکربندی شده است، افزایش میدهد. این نمایه را میتوان به صورت یک دستگیره خام (raw handle) یا مقدار آفست نسبت به محدوده دستگیره NV یعنی “TPM2_HR_NV_INDEX” مشخص کرد.
گزینهها (OPTIONS)
- •
- -C، --hierarchy=OBJECT:
سلسلهمراتب مورد استفاده برای مجازشماری را مشخص میکند. گزینههای پشتیبانیشده عبارتند از:
- •
- o برای TPM_RH_OWNER
- •
- p برای TPM_RH_PLATFORM
- •
- <num> که در آن میتوان از یک دستگیره سلسلهمراتب یا نمایه NV استفاده کرد.
هنگامی که گزینه -C به صورت صریح ارائه نشود، از دستگیره نمایه برای مجازشماری در برابر نمایه استفاده خواهد شد. مقدار auth نمایه از طریق گزینه -p در tpm2_nvdefine(1) تنظیم میشود.
- •
- -P، --auth=AUTH:
مقدار مجازشماری (احراز اصالت) را برای سلسلهمراتب مشخص میکند.
- •
- --cphash=FILE
مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً به عنوان cpHash شناخته میشود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نمیکند و صرفاً یک cpHash بازمیگرداند، مگر آنکه rphash نیز مورد نیاز باشد.
- •
- --rphash=FILE
مسیر فایل برای ثبت هش پارامترهای پاسخ. این مقدار معمولاً به عنوان rpHash شناخته میشود.
- •
- -S، --session=FILE:
نشست ایجادشده با استفاده از tpm2_startauthsession. این گزینه میتواند برای مشخص کردن یک نشست کمکی جهت بازرسی (auditing) و یا رمزنگاری/رمزگشایی پارامترها به کار رود.
- •
- -n، --name=FILE:
نام نمایه NV که باید در هنگام محاسبه صرف cpHash بدون ارسال واقعی دستور به TPM ارائه شود.
- •
- ARGUMENT آرگومان خط فرمان که شماره نمایه NV یا مقدار آفست را مشخص میکند.
مراجع (References)
قالب شیء بافتار (Context Object Format)
نوع یک شیء بافتار (context object)، خواه یک دستگیره یا نام فایل باشد، بر اساس منطق ترتیبی زیر تعیین میشود:
- •
- اگر آرگومان یک مسیر فایل باشد، فایل به عنوان یک شیء گذرای (transient) بازیابیشده TPM بارگذاری میشود.
- •
- اگر آرگومان تطابق پیشوندی با یکی از موارد زیر داشته باشد:
- •
- owner: سلسلهمراتب مالک (owner)
- •
- platform: سلسلهمراتب پلتفرم (platform)
- •
- endorsement: سلسلهمراتب تاییدیه (endorsement)
- •
- lockout: شیء پایدار کنترل قفل (lockout control persistent object)
- •
- اگر آرگومان بتواند به صورت یک عدد بارگذاری شود، به عنوان یک دستگیره در نظر گرفته شده (مانند 0x81010013) و مستقیماً استفاده میشود.
قالببندی مجازشماری (Authorization Formatting)
مجازشماری برای استفاده از یک شیء در TPM2.0 میتواند در ۳ شکل مختلف باشد: ۱. گذرواژه (Password) ۲. کد HMAC ۳. نشستها (Sessions).
نکته: “مجازشماریها در صورت عدم تعیین، بهطور پیشفرض بر روی گذرواژه خالی تنظیم میشوند”.
برای احراز اصالت با مقادیر auth، دستورات ابزار بهطور ضمنی یک نشست HMAC ایجاد میکنند. بنابراین گذرواژهها به صورت رمزنشده منتقل نمیشوند. این موضوع برای گذرواژههای تعریفشده برای اشیاء صدق نمیکند. در این حالت، باید از یک نشست HMAC استفاده شود (به tpm2_startauthsession(1) مراجعه کنید).
گذرواژهها (Passwords)
گذرواژهها با استفاده از شناسههای پیشوندی به اشکال زیر تفسیر میشوند.
نکته: بهطور پیشفرض، گذرواژههای فاقد پیشوند در قالب رشته متنی فرض میشوند.
رشته (String)
یک گذرواژه رشتهای که با پیشوند “str:” یا بدون پیشوند (رشته خام فاقد پیشوند) مشخص میشود، تفسیر نشده و مستقیماً برای مجازشماری استفاده میگردد.
مثالها (Examples)
-
foobar str:foobar
رشته شانزدهشانزدهی (Hex-string)
یک گذرواژه بر مبنای ۱۶ (hex-string) که با پیشوند “hex:” مشخص میشود، از یک شکل شانزدهشانزدهی به یک آرایه بایتی تبدیل میشود؛ بدین ترتیب امکان استفاده از گذرواژههایی با نویسههای غیرقابل چاپ و/یا ناسازگار با ترمینال فراهم میشود.
مثال (Example)
-
hex:1122334455667788
فایل (File)
یک گذرواژه مبتنی بر فایل که با پیشوند “file:” مشخص میشود، باید مسیر فایلی حاوی گذرواژه برای خوانده شدن توسط ابزار باشد، یا “-” برای استفاده از ورودی استاندارد (stdin). ذخیره گذرواژهها در فایل از افشای اطلاعات جلوگیری میکند؛ زیرا گذرواژههایی که به عنوان گزینه خط فرمان ارسال میشوند ممکن است از طریق فهرست پردازشها یا قابلیتهای معمول تاریخچه پوسته خوانده شوند.
مثالها (Examples)
-
# برای استفاده از ورودی استاندارد و نمایش اعلان file:- # برای استفاده از یک فایل از یک مسیر file:path/to/password/file # برای ارسال گذرواژه از طریق ورودی استاندارد (stdin): echo foobar | tpm2_tool -p file:- # برای استفاده از bash here-string از طریق 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 روی بانکهای 0، 1، 2 و 3 از مشخصکننده زیر استفاده کنید:
-
pcr:sha256:0,1,2,3
مشخص کردن AUTH.
گزینههای عمومی (COMMON OPTIONS)
این مجموعه از گزینهها در میان بسیاری از برنامهها مشترک بوده و اطلاعات مورد انتظار کاربران را ارائه میدهند.
- •
- -h، --help=[man|no-man]: نمایش صفحه راهنمای ابزار. بهطور پیشفرض، تلاش میکند صفحهبند راهنما (manpager) را برای این ابزار فراخوانی کند؛ با این حال، در صورت بروز شکست، خلاصه کوتاهی از ابزار را نمایش میدهد. این رفتار مشابه وضعیتی است که آرگومان گزینه “man” مشخص شده باشد، با این تفاوت که اگر صراحتاً “man” درخواست شود، ابزار خطاهای ناشی از man را در خروجی خطای استاندارد (stderr) گزارش خواهد کرد. اگر گزینه “no-man” مشخص شده باشد یا فراخوانی manpager شکست بخورد، گزینههای کوتاه در خروجی استاندارد (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 به کار گرفته شوند، باید از یک نشست با سالت برای احراز اصالت استفاده گردد.
- •
- -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 و شماره پورت مورد استفاده توسط شبیهساز میتواند مشخص شود. مقادیر پیشفرض 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)
برای افزایش شمارنده در نمایه 0x150016
-
tpm2_nvdefine -C o -s 8 -a "ownerread|authread|authwrite|nt=1" 0x1500016 -p index tpm2_nvincrement -C 0x1500016 0x1500016 -P "index" tpm2_nvread 0x1500016 -P index | xxd -p
کدهای خروجی (RETURNS)
ابزارها میتوانند هر یک از کدهای خروجی زیر را بازگردانند:
- •
- 0 - موفقیتآمیز.
- •
- 1 - خطای عمومی و نامشخص.
- •
- 2 - خطای پردازش گزینهها.
- •
- 3 - خطای احراز اصالت.
- •
- 4 - خطای مربوط به TCTI.
- •
- 5 - طرح پشتیبانینشده. قابل اعمال بر روی tpm2_testparams.
همچنین ببینید (SEE ALSO)
tpm2_nvdefine(1)، tpm2_nvread(1)، tpm2_nvwrite(1)، tpm2_nvsetbits(1)، tpm2_startauthsession(1)
اشکالات (BUGS)
راهنما (HELP)
مشاهده فهرست پستی (Mailing List)
مجوز (LICENSE)
این اثر تحت مجوز بینالمللی Creative Commons Attribution 4.0 (CC BY 4.0) منتشر شده است.
| tpm2-tools |