کد احراز هویت پیام

جریان‌های پیام برای پیکربندی سوئیچ صوتی استفاده می‌شوند، به پیام‌های سوئیچ صوتی مراجعه کنید. برای این پیکربندی‌های مهم، ارائه‌دهنده باید اطمینان حاصل کند که پیام توسط GMSCore (ماژول جفت‌سازی سریع) ارسال می‌شود و نه هیچ برنامه دیگری در جستجوگر.

تولید MAC (کد احراز هویت پیام)

FP Seeker با استفاده از HMAC-SHA256 یک کد احراز هویت پیام برای پیام‌های پیکربندی دستگاه اضافه می‌کند. MAC پیام شامل ۸ بایت اول از موارد زیر است:

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))

کجا

  1. K توسط concat(کلید حساب، ۴۸ بایت صفر) تولید می‌شود.
  2. پیام، داده‌های اضافی جریان پیام است.
  3. nonce توسط concat(session_nonce, message_nonce) تولید می‌شود؛ nonce جلسه و nonce پیام در بخش زیر تعریف شده‌اند.
  4. opad شامل ۶۴ بایت فضای خالی بیرونی است که از بایت‌های تکراری با مقدار 0x5C تشکیل شده است.
  5. آی‌پد ۶۴ بایت فضای داخلی دارد که از بایت‌های تکراری با مقدار 0x36 تشکیل شده است.

عدم حضور در جلسه و عدم حضور در پیام

برای جلوگیری از حمله‌ی بازپخش، ارائه‌دهنده باید اطمینان حاصل کند که یک nonce تکرار نمی‌شود. از آنجایی که حفظ همگام‌سازی ساعت یا شمارنده در هر دو ارائه‌دهنده و جستجوکننده ساده نیست، ارائه‌دهنده nonce جلسه (به ازای هر اتصال) را تولید می‌کند که با تمام پیام‌ها در طول اتصال به اشتراک گذاشته می‌شود، در حالی که جستجوکننده nonce پیام (به ازای هر پیام) را تولید می‌کند که به صورت تصادفی برای هر پیام تولید می‌شود. nonce برای تولید MAC هر پیام، ترکیبی از nonce جلسه و nonce پیام است، یعنی concat(session_nonce, message_nonce).

ما یک nonce جلسه به گروه رویداد اطلاعات دستگاه اضافه می‌کنیم:

نام گروه پیام ارزش
رویداد اطلاعات دستگاه 0x03
نام کد پیام ارزش
عدم حضور در جلسه 0x0A

هنگام اتصال جریان پیام، باید یک nonce نشست ایجاد و به جستجوگر ارسال شود:

هشت‌تایی نوع داده توضیحات ارزش
0 uint8 رویداد اطلاعات دستگاه 0x03
۱ uint8 عدم حضور در جلسه 0x0A
۲ - ۳ واحد۱۶ طول داده اضافی 0x0008
۴ - ۱۱ عدم حضور در جلسه متغیر است

برای ارسال پیام در صورت نیاز به MAC، جستجوگر یک پیام nonce و MAC را به همراه پیام ارسال می‌کند.

هشت‌تایی نوع داده توضیحات ارزش
0 uint8 گروه پیام متغیر است
۱ uint8 کد پیام متغیر است
۲ - ۳ واحد۱۶ طول داده اضافی (طول داده اضافی + ۱۶) متغیر است
۴ - ن داده‌های اضافی متغیر است
ن + ۱ - ن + ۸ پیام موقت متغیر است
ن + ۹ - ن + ۱۶ کد احراز هویت پیام متغیر است

تأیید MAC (کد تأیید اعتبار پیام)

پس از دریافت پیامی با کد احراز هویت پیام، ارائه دهنده باید آن را با استفاده از همان تابع تابع مولد تأیید کند. یعنی، MAC دریافتی باید برابر با 8 بایت اول ... باشد.

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))

کجا:

  1. K توسط concat(account key, 48-byte ZEROs) تولید می‌شود و ارائه‌دهنده باید تمام کلیدهای حساب ذخیره‌شده را برای تأیید MAC پیمایش کند.
  2. پیام، داده‌های اضافی (به استثنای nonce پیام و MAC) از جریان پیام است.

اگر MAC صحیح باشد، ارائه‌دهنده باید دستورالعمل پیام را دنبال کند. در غیر این صورت، ارائه‌دهنده باید یک NAK با دلیل خطا، 0x3 - به دلیل کد احراز هویت نادرست پیام مجاز نیست - ارسال کند.