FIDO2-ASSERT(1) General Commands Manual FIDO2-ASSERT(1)

fido2-assert — دریافت یا اعتبارسنجی یک ادعای FIDO2

fido2-assert -G [-bdhpruvw] [-t option] [-i input_file] [-o output_file] device fido2-assert -V [-dhpv] [-i input_file] key_file [type]

fido2-assert یک ادعای (assertion) FIDO2 را دریافت یا اعتبارسنجی می‌کند.

ورودی fido2-assert توسط پارامترهای ادعایی که قرار است دریافت یا اعتبارسنجی شود تعیین می‌شود. برای جزئیات بیشتر به بخش قالب ورودی (INPUT FORMAT) مراجعه کنید.

خروجی fido2-assert توسط نتیجه عملیات انتخاب‌شده تعیین می‌شود. برای جزئیات بیشتر به بخش قالب خروجی (OUTPUT FORMAT) مراجعه کنید.

اگر یک ادعا با موفقیت دریافت یا اعتبارسنجی شود، fido2-assert با کد وضعیت 0 خارج می‌شود. در غیر این صورت، fido2-assert با کد وضعیت 1 خارج می‌شود.

گزینه‌ها به شرح زیر هستند:

به fido2-assert دستور می‌دهد تا یک ادعای جدید را از device دریافت کند.
به fido2-assert دستور می‌دهد تا یک ادعا را با استفاده از کلید عمومی با کدگذاری PEM در key_file از نوع type اعتبارسنجی کند، که در آن type می‌تواند es256 (نشان‌دهنده ECDSA روی NIST P-256 با SHA-256)، (نشان‌دهنده ECDSA روی NIST P-384 با SHA-384)، (نشان‌دهنده RSA با طول ۲۰۴۸ بیت با پدینگ PKCS#1.5 و SHA-256)، یا (نشان‌دهنده EDDSA روی Curve25519 با SHA-512) باشد. اگر type مشخص نشده باشد، es256 فرض می‌شود.
درخواست “largeBlobKey” مربوط به اعتبارنامه؛ یک کلید متقارن ۳۲ بایتی مرتبط با اعتبارنامه ادعاشده.
هنگام دریافت ادعا، افزونه hmac-secret در FIDO2 را فعال می‌کند. هنگام اعتبارسنجی ادعا، بررسی می‌کند که آیا بیت داده افزونه توسط احرازکننده امضا شده است یا خیر.
باعث می‌شود fido2-assert خروجی اشکال‌زدایی را روی چاپ کند.
input_file
به fido2-assert دستور می‌دهد تا پارامترهای ادعا را به جای stdin از input_file بخواند.
output_file
به fido2-assert دستور می‌دهد تا خروجی را به جای در output_file بنویسد.
هنگام دریافت ادعا، حضور کاربر (user presence) را درخواست می‌کند. هنگام اعتبارسنجی ادعا، بررسی می‌کند که آیا بیت حضور کاربر توسط احرازکننده امضا شده است یا خیر.
دریافت یک ادعا با استفاده از یک اعتبارنامه مقیم (resident credential). اگر -r مشخص شده باشد، fido2-assert در ورودی خود انتظار شناسه اعتبارنامه را نخواهد داشت و ممکن است چندین ادعا را در خروجی ارائه دهد. اعتبارنامه‌های مقیم در CTAP 2.1 با عنوان “discoverable credentials” (اعتبارنامه‌های قابل‌کشف) نامیده می‌شوند.
option
یک option کلید/مقدار را تغییر وضعیت می‌دهد، که در آن option رشته‌ای به صورت “key=value” است. گزینه‌هایی که در حال حاضر پشتیبانی می‌شوند عبارتند از:
=true|false
از احرازکننده درخواست می‌کند که حضور کاربر فعال یا غیرفعال شود.
=true|false
از احرازکننده درخواست می‌کند که اعتبارسنجی کاربر فعال یا غیرفعال شود.
=true|false
به fido2-assert می‌گوید که آیا PIN را از کاربر درخواست کند و اعتبارسنجی کاربر را بخواهد یا خیر.

گزینه -t می‌تواند چندین بار مشخص شود.

دریافت یک ادعا با استفاده از U2F. به طور پیش‌فرض، fido2-assert در صورت پشتیبانی احرازکننده از FIDO2 استفاده می‌کند، و در غیر این صورت به U2F بازمی‌گردد.
هنگام دریافت ادعا، از کاربر درخواست PIN می‌کند و اعتبارسنجی کاربر را از احرازکننده تقاضا می‌نماید. هنگام اعتبارسنجی ادعا، بررسی می‌کند که آیا بیت اعتبارسنجی کاربر توسط احرازکننده امضا شده است یا خیر.
به fido2-assert می‌گوید که هنگام دریافت یک ادعا، خط اول ورودی را به عنوان داده‌های هش‌نشده کلاینت تفسیر کند. این مورد برای Windows Hello لازم است، که هش داده‌های کلاینت را به صورت داخلی محاسبه می‌کند.

اگر یک در دسترس باشد، fido2-assert از آن برای دریافت PIN استفاده خواهد کرد. در غیر این صورت، stdin استفاده می‌شود.

ورودی fido2-assert شامل داده‌های باینری (blob) در قالب base64 و رشته‌های UTF-8 است که با نویسه خط جدید ('\n') از هم جدا شده‌اند.

هنگام دریافت یک ادعا، fido2-assert انتظار دارد ورودی آن شامل موارد زیر باشد:

  1. هش داده‌های کلاینت (blob در قالب base64)؛
  2. شناسه طرف متکی (relying party id) (رشته UTF-8)؛
  3. شناسه اعتبارنامه، در صورتی که اعتبارنامه مقیم نباشد (blob در قالب base64)؛
  4. سالت hmac، در صورتی که افزونه hmac-secret در FIDO2 فعال باشد (blob در قالب base64)؛

هنگام اعتبارسنجی یک ادعا، fido2-assert انتظار دارد ورودی آن شامل موارد زیر باشد:

  1. هش داده‌های کلاینت (blob در قالب base64)؛
  2. شناسه طرف متکی (relying party id) (رشته UTF-8)؛
  3. داده‌های احرازکننده کدگذاری‌شده با CBOR (blob در قالب base64)؛
  4. امضای ادعا (blob در قالب base64)؛

رشته‌های UTF-8 ارسال‌شده به fido2-assert نباید حاوی نویسه‌های خط جدید یا NUL در میان خود باشند.

خروجی fido2-assert شامل داده‌های باینری (blob) در قالب base64 و رشته‌های UTF-8 است که با نویسه خط جدید ('\n') از هم جدا شده‌اند.

به ازای هر ادعای تولیدشده، fido2-assert موارد زیر را در خروجی چاپ می‌کند:

  1. هش داده‌های کلاینت (blob در قالب base64)؛
  2. شناسه طرف متکی (relying party id) (رشته UTF-8)؛
  3. داده‌های احرازکننده کدگذاری‌شده با CBOR (blob در قالب base64)؛
  4. امضای ادعا (blob در قالب base64)؛
  5. شناسه کاربر، در صورتی که اعتبارنامه مقیم باشد (blob در قالب base64)؛
  6. رمز hmac، در صورتی که افزونه hmac-secret در FIDO2 فعال باشد (blob در قالب base64)؛
  7. کلید متقارن ۳۲ بایتی مرتبط با اعتبارنامه (“largeBlobKey ،”) در صورت درخواست (blob در قالب base64).

هنگام اعتبارسنجی یک ادعا، fido2-assert هیچ خروجی‌ای تولید نمی‌کند.

با فرض اینکه cred شامل یک اعتبارنامه es256 است که بر اساس مراحل شرح داده شده در fido2-cred(1) ایجاد شده است، دریافت یک ادعا از یک احرازکننده در /dev/hidraw5 و اعتبارسنجی آن:

$ echo assertion challenge | openssl sha256 -binary | base64 > assert_param
$ echo relying party >> assert_param
$ head -1 cred >> assert_param
$ tail -n +2 cred > pubkey
$ fido2-assert -G -i assert_param /dev/hidraw5 | fido2-assert -V pubkey es256

fido2-cred(1), fido2-token(1)

July 3, 2023 Linux 6.12.107+deb13-amd64