tpm2_dictionarylockout(1) General Commands Manual tpm2_dictionarylockout(1)

tpm2_dictionarylockout - تنظیم یا پاک‌سازی پارامترهای قفل در برابر حمله فرهنگ‌لغت (Dictionary Attack Lockout).

tpm2_dictionarylockout [گزینه‌ها]

tpm2_dictionarylockout(1) - تنظیم پارامترهای قفل حمله فرهنگ‌لغت یا پاک‌سازی وضعیت قفل در برابر حمله فرهنگ‌لغت.

•
-s, --setup-parameters:

مشخص می‌کند که ابزار باید برای تنظیم پارامترهای قفل حمله فرهنگ‌لغت عمل کند.

•
-c, --clear-lockout:

مشخص می‌کند که ابزار باید برای پاک‌سازی وضعیت قفل حمله فرهنگ‌لغت عمل کند.

•
-l, --lockout-recovery-time=NATURAL_NUMBER:

مدت زمان انتظار بر حسب ثانیه را مشخص می‌کند پیش از آنکه پس از یک احراز هویت ناموفق، بتوان تلاش دیگری برای احراز هویت TPM_RH_LOCKOUT انجام داد.

•
-t, --recovery-time=NATURAL_NUMBER:

مدت زمان انتظار بر حسب ثانیه را مشخص می‌کند پیش از آنکه پس از رسیدن تعداد احراز هویت‌های ناموفق به max-tries، بتوان تلاش دیگری برای احراز هویت شیء حفاظت‌شده با DA انجام داد.

•
-n, --max-tries=NATURAL_NUMBER:

حداکثر تعداد تلاش‌های مجاز برای احراز هویت روی شیء حفاظت‌شده با DA را مشخص می‌کند؛ پس از این تعداد، سازوکار دفاع در برابر حمله فرهنگ‌لغت (DA) فعال می‌شود.

•
-p, --auth=AUTH:

مقدار مجوز (authorization value) برای هندل lockout.

•
--cphash=FILE

مسیر فایل برای ثبت هش پارامترهای دستور. این مقدار معمولاً cpHash نامیده می‌شود. نکته: در صورت انتخاب این گزینه، ابزار در واقع دستور را اجرا نمی‌کند، بلکه تنها یک cpHash برمی‌گرداند.

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

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

برای احراز هویت با مقادیر auth، دستورات ابزار به طور ضمنی یک نشست HMAC ایجاد می‌کنند. بنابراین گذرواژه‌ها به صورت رمزگذاری‌نشده ارسال نمی‌شوند. این امر در مورد گذرواژه‌های تعریف‌شده برای اشیاء صدق نمی‌کند. در این حالت، باید از یک نشست HMAC استفاده شود (رجوع کنید به tpm2_startauthsession(1)).

گذرواژه‌ها در اشکال زیر با استفاده از شناسه‌های پیشوندی تفسیر می‌شوند.

نکته: به‌طور پیش‌فرض، گذرواژه‌ها در صورتی که پیشوند نداشته باشند، در قالب رشته در نظر گرفته می‌شوند.

یک گذرواژه رشته‌ای که با پیشوند “str:” یا عدم وجود آن (رشته خام بدون پیشوند) مشخص می‌شود، تفسیر نشده و مستقیماً برای احراز هویت به کار می‌رود.

foobar
str:foobar

یک گذرواژه رشته هگزادسیمال که با پیشوند “hex:” مشخص می‌شود، از فرمت هگزادسیمال به فرمت آرایه بایتی تبدیل می‌شود؛ بنابراین امکان استفاده از گذرواژه‌هایی با کاراکترهای غیرقابل‌چاپ یا ناسازگار با ترمینال را فراهم می‌کند.

hex:1122334455667788

گذرواژه مبتنی بر فایل که با پیشوند “file:” مشخص می‌شود، باید مسیر فایلی حاوی گذرواژه باشد که توسط ابزار خوانده شود یا مقدار “-” برای استفاده از ورودی استاندارد (stdin). ذخیره گذرواژه‌ها در فایل از نشت اطلاعات جلوگیری می‌کند؛ گذرواژه‌هایی که به عنوان گزینه خط فرمان ارسال می‌شوند ممکن است از فهرست پردازش‌ها یا تاریخچه پوسته خوانده شوند.

# to use stdin and be prompted
file:-
# to use a file from a path
file:path/to/password/file
# to echo a password via stdin:
echo foobar | tpm2_tool -p file:-
# to use a bash here-string via stdin:
tpm2_tool -p file:- <<< foobar

هنگام استفاده از یک نشست خط‌مشی (policy session) برای تایید مجوز استفاده از یک شیء، آرگومان گزینه را با کلمه کلیدی session پیشوندگذاری کنید. سپس مسیر فایل نشستی را مشخص کنید که با دستور tpm2_startauthsession(1) ایجاد شده است. در صورت تمایل، اگر نشست نیاز دارد که مقدار auth به همراه هندل نشست ارسال شود (مانند گذرواژه policy)، یک کاراکتر + و یک رشته را مطابق آنچه در بخش گذرواژه‌ها توضیح داده شد، الحاق کنید.

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

تعیین AUTH.

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

•
-h, --help=[man|no-man]: نمایش صفحه راهنمای ابزار. به‌طور پیش‌فرض، تلاش می‌کند تا صفحه‌خوان man را برای ابزار فراخوانی کند؛ با این حال، در صورت بروز خطا، خلاصه کوتاهی از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “man” مشخص شده باشد؛ اما اگر صراحتاً “man” درخواست شود، ابزار خطاهای man را روی stderr ارائه می‌دهد. اگر گزینه “no-man” مشخص شود، یا فراخوانی صفحه‌خوان 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 برای احراز هویت. یک گذرواژه متن خام (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 دستگاه، فایل دستگاه کاراکتری 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 مترادف هستند.

tpm2_dictionarylockout -c -p passwd
tpm2_dictionarylockout -s -n 5 -t 6 -l 7 -p passwd

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

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

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

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

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

tpm2-tools