tpm2_stirrandom(1) General Commands Manual tpm2_stirrandom(1)

tpm2_stirrandom - افزودن “اطلاعات اضافی” به وضعیت TPM RNG

tpm2_stirrandom [OPTIONS] [ARGUMENT]

دستور tpm2_stirrandom(1) “اطلاعات اضافی” را در قالب بایت به مخزن انتروپی Protected Capability در TPM تزریق می‌کند.

“اطلاعات اضافی” می‌تواند از فایلی که به عنوان آرگومان مشخص شده استخراج شود، یا در صورت تعیین نشدن آرگومان، از STDIN خوانده شود.

حداکثر ۱۲۸ بایت می‌تواند در یک مرحله از طریق ورودی استاندارد به tpm2_stirrandom(1) تزریق شود.

اگر فایل ورودی بزرگ‌تر از ۱۲۸ بایت باشد، tpm2_stirrandom(1) با شکست مواجه خواهد شد.

افزودن داده از طریق tpm2_stirrandom(1) موجب بذردهی مجدد (reseeding) در Protected Capability از نوع TPM DRBG خواهد شد. این دستور هنگام انجام هرگونه عملیات حساس روی یک مکان محافظت‌شده (shielded location) نظیر بارگذاری یک کلید ماندگار (persistent key) یا اجرای عملیات روی Protected Capability مانند به‌روزرسانی سفت‌افزار TPM استفاده می‌شود.

این دستور هیچ گزینه‌ای ندارد.

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

•
-h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. به‌طور پیش‌فرض، تلاش می‌کند تا صفحه‌بند 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). هنگامی مفید است که نیاز باشد یک اصلاحیه errata بر روی دستورات ارسالی به TPM اعمال شود. تعریف متغیر محیطی TPM2TOOLS_ENABLE_ERRATA نیز معادل همین عمل است.
•
-z، --pwd-session: استفاده از نشست گذرواژه به جای نشست HMAC برای احراز هویت. یک گذرواژه متنی آشکار برای مجازشماری عملیات به TPM منتقل می‌شود. این گزینه می‌تواند برای جلوگیری از بروز مشکل در مواردی که نشست‌های بدون سالت (unsalted) در حالت OpenSSL FIPS استفاده می‌شوند به کار رود. اگر مقادیر احراز هویت استفاده می‌شوند، باید از یک نشست با سالت (salted) برای احراز هویت استفاده کرد.
•
-R، --autoflush: فعال‌سازی تخلیه خودکار (autoflush) برای اشیای گذرا (transient objects) ایجاد شده توسط دستور. اگر یک شیء والد از یک فایل زمینه (context file) بارگذاری شود، شیء والد گذرا نیز تخلیه خواهد شد. Autoflush همچنین در صورتی که متغیر محیطی TPM2TOOLS_AUTOFLUSH روی yes یا true تنظیم شده باشد فعال می‌شود.

رابط TCTI یا “Transmission Interface” سازوکار ارتباطی با TPM است. TCTIها را می‌توان برای برقراری ارتباط با TPMها در رسانه‌های مختلف تغییر داد.

برای کنترل TCTI، ابزارها موارد زیر را رعایت می‌کنند:

1.
گزینه خط فرمان -T یا --tcti
2.
متغیر محیطی: TPM2TOOLS_TCTI.

نکته: گزینه خط فرمان همواره اولویت داشته و متغیر محیطی را بازنویسی (override) می‌کند.

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 و شماره پورت مورد استفاده توسط شبیه‌ساز قابل تعیین است. مقادیر پیش‌فرض 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 مترادف هستند.

echo -n "myrandomdata" | tpm2_stirrandom

dd if=/dev/urandom bs=1 count=64 > myrandom.bin
tpm2_stirrandom < ./myrandom.bin

dd if=/dev/urandom of=./myrandom.bin bs=1 count=42
tpm2_stirrandom ./myrandom.bin

لطفاً توجه داشته باشید که حتی اگر “اطلاعات اضافی” افزوده شده توسط tpm2_stirrandom(1) انتروپی جمع‌آوری‌شده از سایر منابع DRBG باشد، TPM راهی برای تشخیص این که مقدار ارائه‌شده دارای انتروپی است یا خیر ندارد. در نتیجه، صرفاً به عنوان “ورودی اضافی” در نظر گرفته خواهد شد.

مفهوم “ورودی اضافی” مطابق با تعریف ارائه‌شده در NIST SP800-90Aاست.

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

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

مشکلات در گیت‌هاب (Github Issues)

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

این اثر تحت مجوز Creative Commons Attribution 4.0 International License (CC BY 4.0)منتشر شده است. .

tpm2-tools