tpm2_pcrread(1) General Commands Manual tpm2_pcrread(1) نام (NAME) tpm2_pcrread - خواندن مقادیر ثبات‌های پیکربندی پلتفرم TPM2 (PCR) خلاصه دستور (SYNOPSIS) tpm2_pcrread [گزینه‌ها] PCR_LIST_OR_ALG توضیحات (DESCRIPTION) دستور tpm2_pcrread(1) مقادیر PCR را نمایش می‌دهد. بدون هیچ آرگومانی، tpm2_pcrread(1) تمام ثبات‌های PCR و بانک‌های درهم‌سازی (هش) آن‌ها را خروجی می‌دهد. می‌توان الگوریتم هش یا فهرستی از PCRها را به عنوان یک آرگومان برای پالایش خروجی مشخص کرد. برای اینکه فقط بانک‌های PCR دارای یک الگوریتم معین خروجی داده شوند، الگوریتم درهم‌سازی را به عنوان آرگومان مشخص کنید. الگوریتم‌ها باید از “استانداردهای قالب‌بندی” پیروی کنند؛ بخش “مشخص‌کننده‌های الگوریتم (Algorithm Specifiers)” را ببینید. همچنین، برای مشاهده فهرستی از الگوریتم‌های هش پشتیبانی‌شده، به بخش “الگوریتم‌های هش پشتیبانی‌شده (Supported Hash Algorithms)” مراجعه کنید. برای خروجی دادن فهرستی از بانک‌های PCR (مانند sha1، sha256 و غیره) و شناسه‌ها (0، 1، 2 و غیره)، یک فهرست انتخاب PCR را به عنوان آرگومان مطابق با بخش “مشخص‌کننده‌های بانک PCR (PCR Bank Specifiers)” مشخص کنید. همچنین بخش نکات (NOTES) در زیر را مطالعه کنید. خروجی در قالب YAML به خروجی استاندارد (stdout) نوشته می‌شود که در آن هر الگوریتم به دنبال یک اندیس PCR و مقدار آن می‌آید. به عنوان یک مثال ساده، فرض کنید تنها از sha1 و sha256 پشتیبانی می‌شود و فقط ۱ ثبات PCR وجود دارد. خروجی به صورت زیر خواهد بود: $ tpm2_pcrread sha1:0+sha256:0 sha1 : 0 : 0000000000000000000000000000000000000003 sha256 : 0 : 0000000000000000000000000000000000000000000000000000000000000003 گزینه‌ها (OPTIONS) • -o، --output=FILE: فایل خروجی برای نوشتن مقادیر PCR در قالب باینری (دودویی)، اختیاری است. • --cphash=FILE مسیر فایل برای ثبت هش پارامترهای دستور. این مورد معمولاً cpHash نامیده می‌شود. نکته: هنگامی که این گزینه انتخاب شود، ابزار در واقع دستور را اجرا نمی‌کند، بلکه صرفاً یک cpHash بازمی‌گرداند. • -S، --session=FILE: نشست‌های کمکی را برای دستور مشخص می‌کند. • -F، --pcrs_format=FORMAT: انتخاب قالب برای داده باینری (blob) در فایل خروجی PCR. مقدار `values' دادهٔ باینری مقادیر PCR را خروجی می‌دهد. مقدار `serialized' یک داده باینری از مقادیر PCR را در قالب ساختار دادهٔ سریال‌شده با ترتیب بایت کم‌ارزش (little endian) می‌نویسد یا می‌خواند. مقدار `marshaled' یک داده باینری را در قالب باینری استفاده‌شده توسط توابع تبدیل (marshaling) و بازگردانی (unmarshaling) کتابخانه TSS2 می‌خواند یا می‌نویسد. اگر marshaled استفاده شود، داده‌ها به ترتیب زیر سریال‌سازی می‌شوند: TPML_PCR_SELECTION، مقدار UINT32 (تعداد عناصر متعاقب TPML_DIGEST) و سپس TPML_DIGEST [به تعداد عناصر TPML_DIGEST]. اختیاری. پیش‌فرض `values' است. گزینه‌های عمومی (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). زمانی مفید است که نیاز باشد اصلاحات 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 (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 (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 مترادف یکدیگرند. مشخص‌کننده‌های بانک PCR (PCR bank specifiers) الگوریتم‌های هش پشتیبانی‌شده (Supported Hash Algorithms) الگوریتم‌های درهم‌سازی پشتیبانی‌شده عبارتند از: • 0x4 یا sha1 برای TPM_ALG_SHA1 • 0xB یا sha256 برای TPM_ALG_SHA256 (پیش‌فرض) • 0xC یا sha384 برای TPM_ALG_SHA384 • 0xD یا sha512 برای TPM_ALG_SHA512 • 0x12 یا sm3_256 برای TPM_ALG_SM3_256 نکته: ممکن است TPM شما از همه الگوریتم‌ها پشتیبانی نکند. مشخص‌کننده‌های الگوریتم (Algorithm Specifiers) گزینه‌هایی که الگوریتم دریافت می‌کنند از “نام‌های مناسب (nice-names)” پشتیبانی می‌کنند. دو رده اصلی از رشته‌های مشخص‌کننده الگوریتم وجود دارد: ساده و پیچیده. تنها الگوریتم‌های خاصی بر اساس کاربرد و شرایط توسط TPM پذیرفته می‌شوند. مشخص‌کننده‌های ساده (Simple specifiers) این‌ها رشته‌هایی بدون داده‌های مشخص‌کننده اضافی هستند. هنگام ایجاد اشیاء، بخش‌های نامشخص شیء به مقادیر پیش‌فرض ارجاع داده می‌شوند. می‌توانید فهرست “مشخص‌کننده‌های ساده” شناخته‌شده را در زیر بیابید. نامتقارن (Asymmetric) • rsa • ecc متقارن (Symmetric) • aes • camellia • sm4 الگوریتم‌های درهم‌سازی (Hashing Algorithms) • sha1 • sha256 • sha384 • sha512 • sm3_256 • sha3_256 • sha3_384 • sha3_512 درهم‌سازی کلیددار (Keyed Hash) • hmac • xor طرح‌های امضا (Signing Schemes) • rsassa • rsapss • ecdsa • ecdaa • ecschnorr • sm2 طرح‌های رمزنگاری نامتقارن (Asymmetric Encryption Schemes) • oaep • rsaes • ecdh حالت‌ها (Modes) • ctr • ofb • cbc • cfb • ecb متفرقه (Misc) • null مشخص‌کننده‌های پیچیده (Complex Specifiers) اشیاء هنگام تعیین برای ایجاد توسط TPM، دارای الگوریتم‌های متعددی هستند که باید در داده‌های عمومی مقداردهی شوند؛ مواردی مانند نوع، طرح و جزئیات نامتقارن، اندازه کلید و غیره. در زیر قالب کلی برای مشخص کردن این داده‌ها آمده است: :: مشخص‌کننده‌های نوع (Type Specifiers) این بخش از مشخص‌کننده الگوریتم پیچیده الزامی است. طرح و جزئیات متقارن باقی‌مانده بر اساس نوع مشخص‌شده و نوع شیء در حال ایجاد پیش‌فرض‌گذاری می‌شوند. • aes - مقدار پیش‌فرض AES: aes128. • aes128 - الگوریتم AES با طول ۱۲۸ بیت و حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض null خواهد بود. • aes192 - مشابه aes128، به‌جز اندازه کلید ۱۹۲ بیتی. • aes256 - مشابه aes128، به‌جز اندازه کلید ۲۵۶ بیتی. • sm4 - مقدار پیش‌فرض SM4: sm4128. • sm4128 یا sm4_128 - الگوریتم SM4 با طول ۱۲۸ بیت و حالت اختیاری (ctr|ofb|cbc|cfb|ecb). اگر حالت مشخص نشود، پیش‌فرض null خواهد بود. • ecc - خم بیضوی، پیش‌فرض ecc256. • ecc192 یا ecc_nist_p192 - خم بیضوی ۱۹۲ بیتی NIST ECC. • ecc224 یا ecc_nist_p224 - خم بیضوی ۲۲۴ بیتی NIST ECC. • ecc256 یا ecc_nist_p256 - خم بیضوی ۲۵۶ بیتی NIST ECC. • ecc384 یا ecc_nist_p384 - خم بیضوی ۳۸۴ بیتی NIST ECC. • ecc521 یا ecc_nist_p521 - خم بیضوی ۵۲۱ بیتی NIST ECC. • ecc_sm2 یا ecc_sm2_p256 - خم بیضوی ۲۵۶ بیتی SM2. • rsa - مقدار پیش‌فرض RSA: rsa2048. • rsa1024 - الگوریتم RSA با اندازه کلید ۱۰۲۴ بیت. • rsa2048 - الگوریتم RSA با اندازه کلید ۲۰۴۸ بیت. • rsa3072 - الگوریتم RSA با اندازه کلید ۳۰۷۲ بیت. • rsa4096 - الگوریتم RSA با اندازه کلید ۴۰۹۶ بیت. مشخص‌کننده‌های طرح (Scheme Specifiers) فیلد بعدی اختیاری است و می‌توان از آن صرف‌نظر کرد. طرح‌ها معمولاً طرح‌های امضا (Signing Schemes) یا طرح‌های رمزنگاری نامتقارن (Asymmetric Encryption Schemes) هستند. بیشتر طرح‌های امضا بلافاصله پس از طرح امضا یک الگوریتم درهم‌سازی دریافت می‌کنند. اگر الگوریتم درهم‌سازی ذکر نشود، پیش‌فرض sha256 خواهد بود. برخی هیچ آرگومانی نمی‌پذیرند و برخی چندین آرگومان دریافت می‌کنند. مشخص‌کننده‌های طرح با درهم‌سازی اختیاری (Hash Optional Scheme Specifiers) پس از این مشخص‌کننده‌های طرح، یک خط تیره و یک الگوریتم درهم‌سازی معتبر قرار می‌گیرد، برای مثال: oaep-sha256. • oaep • ecdh • rsassa • rsapss • ecdsa • ecschnorr • sm2 مشخص‌کننده‌های طرح چندگزینه‌ای (Multiple Option Scheme Specifiers) پس از این مشخص‌کننده طرح، یک شمارنده (حداکثر اندازه UINT16) و سپس یک خط تیره (-) و یک الگوریتم درهم‌سازی معتبر قرار می‌گیرد. * ecdaa برای مثال، ecdaa4-sha256. اگر شمارنده‌ای مشخص نشود، پیش‌فرض ۴ خواهد بود. مشخص‌کننده‌های طرح بدون گزینه (No Option Scheme Specifiers) این مشخص‌کننده طرح هیچ آرگومانی دریافت نمی‌کند. * rsaes مشخص‌کننده‌های جزئیات متقارن (Symmetric Details Specifiers) این فیلد اختیاری است و بر اساس نوع (type) شیء در حال ایجاد و ویژگی‌های آن پیش‌فرض‌گذاری می‌شود. به‌طور کلی، هر مشخص‌کننده معتبر متقارن از فهرست مشخص‌کننده‌های نوع باید کار کند. اگر مشخص نشود، جزئیات متقارن یک شیء نامتقارن به‌طور پیش‌فرض به aes128cfb تنظیم می‌شود. مثال‌ها (Examples) ایجاد یک کلید rsa2048 با طرح رمزنگاری نامتقارن rsaes tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv ایجاد یک کلید ecc256 با طرح امضای ecdaa با شمارنده ۴ و درهم‌سازی sha384 /tpm2_create -C parent.ctx -G ecc256:ecdaa4-sha384 -u key.pub -r key.priv مثال‌ها (EXAMPLES) نمایش تمام مقادیر PCR tpm2_pcrread نمایش مقادیر PCR با یک بانک مشخص tpm2_pcrread sha1 نمایش مقادیر PCR با بانک‌های مشخص‌شده و ذخیره در یک فایل tpm2_pcrread -o pcrs sha1:16,17,18+sha256:16,17,18 نمایش الگوریتم‌های پشتیبانی‌شدهٔ بانک PCR و خروج tpm2_pcrread نکات (NOTES) حداکثر تعداد ثبات‌های PCR که می‌توان در یک نوبت تخلیه (dump) کرد با حداکثر طول یک بانک در ارتباط است. در بیشتر تراشه‌های TPM، این بدان معناست که این ابزار می‌تواند تا ۲۴ ثبات PCR را در یک نوبت تخلیه کند. کدهای بازگشتی (RETURNS) ابزارها می‌توانند هر یک از کدهای زیر را برگردانند: • 0 - موفقیت. • 1 - خطای عمومی و نامشخص. • 2 - خطای پردازش گزینه‌ها. • 3 - خطای احراز اصالت. • 4 - خطای مرتبط با TCTI. • 5 - طرح پشتیبانی‌نشده. قابل اعمال روی tpm2_testparams. اشکالات (BUGS) مسائل گیت‌هاب (Github Issues) راهنما (HELP) مشاهدهٔ فهرست پستی (Mailing List) مجوز (LICENSE) این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0) منتشر شده است. tpm2-tools tpm2_pcrread(1)