tpm2_createpolicy(1) General Commands Manual tpm2_createpolicy(1) نام (NAME) tpm2_createpolicy - ایجاد سیاست‌های احراز هویت ساده بر پایه مقادیر چندین نمایه PCR در چندین بانک فعال خلاصه دستور (SYNOPSIS) tpm2_createpolicy [گزینه‌ها] توضیحات (DESCRIPTION) دستور tpm2_createpolicy(1) - سیاست‌های احراز هویت ساده مبتنی بر تصدیق را بر پایه مقادیر چندین نمایه PCR در چندین بانک فعال ایجاد می‌کند. سپس می‌توان از این سیاست در ایجاد شیء یا همراه با ابزارهایی که از شیء استفاده می‌کنند، بهره برد. گزینه‌ها (OPTIONS) این گزینه‌ها ایجاد نشست احراز هویت سیاست را کنترل می‌کنند: • -L، --policy=FILE: فایلی برای ذخیره خلاصه سیاست (policy digest). • --policy-pcr: نوع سیاست PCR را برای ایجاد سیاست مشخص می‌کند. • -g، --policy-algorithm=ALGORITHM: الگوریتم درهم‌سازی مورد استفاده در محاسبه خلاصه سیاست (policy digest). • -l، --pcr-list=PCR: فهرست بانک‌های PCR و شناسه‌های PCR انتخاب‌شده برای هر بانک. • -f، --pcr=FILE: مسیر یا نام اختیاری فایلی که حاوی مقادیر مورد انتظار PCR برای نمایه مشخص‌شده است. حالت پیش‌فرض، خواندن مقادیر فعلی PCR بر اساس فهرست تعیین‌شده است. • --policy-session: شروع یک نشست سیاست از نوع TPM_SE_POLICY. در صورتی که این گزینه مشخص نشود، پیش‌فرض TPM_SE_TRIAL خواهد بود. مراجع (References) مشخص‌کننده‌های الگوریتم (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 (Create an rsa2048 key with an rsaes asymmetric encryption scheme) tpm2_create -C parent.ctx -G rsa2048:rsaes -u key.pub -r key.priv ایجاد یک کلید ecc256 با طرح امضای ecdaa با شمارنده ۴ و درهم‌سازی sha384 (Create an ecc256 key with an ecdaa signing scheme with a count of 4 and sha384 hash) /tpm2_create -C parent.ctx -G ecc256:ecdaa4-sha384 -u key.pub -r key.priv الگوریتم‌های رمزنگاری ALGORITHM. گزینه‌های عمومی (COMMON OPTIONS) این مجموعه گزینه‌ها بین بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که بسیاری از کاربران انتظار دارند. • -h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. به‌طور پیش‌فرض، تلاش می‌کند تا صفحه‌بند man (manpager) را برای ابزار فراخوانی کند؛ اما در صورت عدم موفقیت، خلاصه کوتاهی از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “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 فعال شود. بانک/الگوریتم PCR. گزینه‌های عمومی (COMMON OPTIONS) این مجموعه گزینه‌ها بین بسیاری از برنامه‌ها مشترک هستند و اطلاعاتی را ارائه می‌دهند که بسیاری از کاربران انتظار دارند. • -h، --help=[man|no-man]: نمایش صفحه راهنمای (manpage) ابزار. به‌طور پیش‌فرض، تلاش می‌کند تا صفحه‌بند man (manpager) را برای ابزار فراخوانی کند؛ اما در صورت عدم موفقیت، خلاصه کوتاهی از ابزار را نمایش می‌دهد. این رفتار مشابه زمانی است که آرگومان گزینه “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 (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 را دارند و بنابراین از عدم استفاده از 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 را برای استفاده توسط این رابط تعیین کرد. مقدار پیش‌فرض /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، قالب رشته پیکربندی مجموعه‌ای از جفت‌های کلید-مقدار ساده است که با نویسه «,» از هم جدا شده‌اند. رشته‌های کلید و مقدار با نویسه «=» از یکدیگر تفکیک می‌شوند. • رابط abrmd TCTI از دو کلید پشتیبانی می‌کند: 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 مترادف یکدیگرند. ماژول‌های مختلف TCTI شناخته‌شده. مثال‌ها (EXAMPLES) ایجاد یک سیاست احراز هویت وابسته به یک نمایه خاص PCR tpm2_createpolicy \--policy-pcr -l 0x4:0 -L policy.file -f pcr0.bin کدهای بازگشتی (RETURNS) ابزارها می‌توانند هر یک از کدهای زیر را بازگردانند: • 0 - موفقیت. • 1 - خطای کلی و نامشخص. • 2 - خطای مدیریت گزینه‌ها. • 3 - خطای احراز هویت. • 4 - خطای مربوط به TCTI. • 5 - طرح پشتیبانی‌نشده. قابل اعمال در tpm2_testparams. همچنین ببینید (SEE ALSO) tpm2_create(1)، tpm2_pcrread(1)، tpm2_policyauthorize(1) اشکالات (BUGS) گزارش اشکالات در گیت‌هاب (Github Issues) راهنما (HELP) مشاهده فهرست پستی (Mailing List) مجوز (LICENSE) این اثر تحت مجوز بین‌المللی کریتیو کامنز ارجاع ۴.۰ (CC BY 4.0) . tpm2-tools tpm2_createpolicy(1)