# مفاتيح المرور

> كيف ينشئ Octa Pass مفاتيح المرور ويخزنها ويزامنها ويستخدمها في المتصفحات وiOS وmacOS وAndroid وWindows، وكيف تنقلها بصيغة FIDO CXF.

Source: https://octap.app/ar/docs/features/passkeys/
Status: in-progress
Project: Octa Pass

:::note[قيد التطوير]
مصادِق مفاتيح المرور في نواة Octa Pass مبني ومُختبَر. أما إضافة المتصفح التي تضعه أمام المواقع فقيد التطوير للنسخة التجريبية العامة. وستأتي مفاتيح المرور على مستوى النظام في الجوال وسطح المكتب مع تلك التطبيقات.
:::

مفتاح المرور زوج مفاتيح مرتبط بموقع واحد (يسمى *معرّف الطرف المعتمِد*، relying party ID). يخزّن الموقع المفتاح العام فقط. ويخزّن Octa Pass المفتاح الخاص مشفّرًا في خزنتك ويزامنه إلى أجهزتك مثل أي عنصر آخر.

## أين يعمل

| المنصة | الآلية |
|---|---|
| متصفحات Chromium وFirefox | تتولى الإضافة `navigator.credentials.create()` و`.get()` |
| iOS 17+ وmacOS 14+ | مزوّد بيانات اعتماد الملء التلقائي في النظام (`ASCredentialProviderViewController`) |
| Android 14+ | مزوّد Credential Manager (`CredentialProviderService`) |
| Windows 11 | مزوّد إضافة مفاتيح المرور من جهة خارجية (مخطط له للإصدار 1.0) |
| Linux | في المتصفحات، عبر الإضافة |

## كيف يعمل التدفق في المتصفح

1. يغلّف سكربت صغير في الصفحة `navigator.credentials.create/get` ويمرّر الطلب إلى الإضافة.
2. إذا اخترت Octa Pass، تتحقق النواة من أن `rpId` المطلوب يتبع أصل الصفحة: يجب أن يكون نطاق الصفحة نفسه أو نطاقًا أعلى منه يمكنك تسجيله (فيستطيع `login.example.com` استخدام `example.com`، لكن لا تستطيع أي صفحة استخدام `co.uk` أو `github.io`). يجب أن تستخدم الصفحات `https` (ويُسمح بـ `http://localhost` للتطوير)، ويحتاج موقع مضمَّن في إطار موقع آخر إلى إذنك أولًا. ولا توقّع النواة أبدًا لموقع آخر.
3. توقّع النواة التحدّي بالمفتاح المخزَّن (ES256 على P-256، أو EdDSA) وتعيد استجابة بيانات اعتماد قياسية. الإثبات (attestation) هو `none`.
4. إذا اخترت "استخدام جهاز آخر" أو مفتاح أمان مادّيًا، يذهب الطلب إلى المعالج المدمج في المتصفح.

مفاتيح المرور تُزامَن، لذا تُعلَن على أنها مؤهلة للنسخ الاحتياطي ومنسوخة احتياطيًا (تُضبط العلامتان BE وBS في WebAuthn).

### مطالبة مفتاح المرور

حين يطلب موقع إنشاء مفتاح مرور أو استخدامه، تعرض الإضافة مطالبتها داخل الصفحة. يضعها الموقع في إطار لكنه لا يستطيع التحكم بها برمجيًا.

- **الرأس:** الموقع الذي يخصّه مفتاح المرور، بمعرّف الطرف المعتمد (relying party ID) بعد التحقق منه مقابل عنوان الصفحة، لا بما تسمّي الصفحة به نفسها. **×** أو **Escape** يلغي الطلب.
- **الحسابات:** لتسجيل الدخول ترى حساباتك لذلك الموقع، لكلٍّ منها صورة رمزية والاسم المعروض واسم المستخدم وعنوان بيانات الدخول التي فيها مفتاح المرور. استخدم مفاتيح الأسهم و**Enter**، أو انقر. ويظهر مؤشر انتظار على الحساب الذي اخترته بينما يوقّع Octa Pass.
- **التذييل:** **استخدام جهاز آخر أو مفتاح أمان** يسلّم الطلب إلى متصفحك. و**إلغاء** ينهيه.
- أثناء التحميل تعرض شكل ما سيأتي. ثم تضبط ارتفاعها على ما تعرضه، بين 200 و520 بكسل. وتُبلغ عن حجمها عبر قناة خاصة لا تستطيع الصفحة قراءتها.
- وتظهر أيضًا فوق نافذة حوار يفتحها الموقع.
- إن كان Octa Pass مقفلًا، تطلب المطالبة كلمة المرور الرئيسية أولًا.

## ما تراه المواقع

| الخاصية | القيمة |
|---|---|
| الخوارزمية | ES256 (P-256)، أو EdDSA (Ed25519) عندما يفضّلها الموقع |
| الإثبات | `none`، مع AAGUID الخاص بـ Octa Pass وهو `c9a07734-1d0b-4c72-8ff5-45e0daa2064f` ليستطيع الموقع تسمية مفتاح المرور "Octa Pass" |
| العلامات | المستخدم حاضر، المستخدم متحقَّق منه، مؤهل للنسخ الاحتياطي، منسوخ احتياطيًا |
| عدّاد التوقيع | دائمًا 0، مثل كل مفتاح مرور مُزامَن |
| معرّف بيانات الاعتماد | 16 بايتًا عشوائيًا |
| الامتدادات | `credProps`، و`prf` ‏(WebAuthn PRF) لمفاتيح المرور المُنشأة منذ نوفمبر 2026 |

يُحفظ مفتاح المرور الجديد في بيانات الدخول الخاصة بذلك الموقع، أو في بيانات دخول جديدة تحمل اسم الموقع. ولا يُخزَّن المفتاح الخاص إلا داخل تفاصيل بيانات الدخول المشفّرة، بصيغة PKCS#8 القياسية، ليمكن تصديره لاحقًا.

## فتح قفل Octa Pass بمفتاح مرور

تستطيع المتصفحات التي تدعم امتداد **PRF** في WebAuthn فتح قفل خزنتك بمفتاح مرور لحساب Octa Pass بدلًا من كتابة كلمة المرور الرئيسية. هذا مخطط له للإصدار 1.0. راجع [فتح القفل بالقياسات الحيوية](https://octap.app/ar/docs/features/biometric-unlock/).

## PRF: مفاتيح يشتقها الموقع من مفتاح المرور

تستخدم بعض المواقع امتداد **PRF** في WebAuthn لتحصل على سرٍّ من مفتاح مرورك، لتشفّر به بياناتك مثلًا. لكل مفتاح مرور يُنشئه Octa Pass منذ نوفمبر 2026 سرّ PRF خاص به، محفوظ مع المفتاح الخاص في تفاصيل بيانات الدخول المشفّرة، فتعمل هذه المواقع مع مفتاح مرور محفوظ في Octa Pass. أما المفاتيح الأقدم فتسجّل الدخول كما كانت، دون PRF.

ويستخدم هذا أيضًا خيار **فتح القفل بـ Touch ID** في امتداد Octa Pass للمتصفح نفسه. على جهاز Mac ‏(macOS 15 أو أحدث) أو iPhone ‏(iOS 18 أو أحدث) تستطيع اختيار Octa Pass حين يسألك المتصفح أين تحفظ مفتاح المرور هذا. يُفتح الملء التلقائي في Octa Pass بـ Touch ID أو Face ID أو بكلمة المرور الرئيسية، فيستطيع الإجابة حتى والامتداد مقفل. وعلى جهاز لا يستطيع Octa Pass أن يُفتح فيه وحده، احفظ مفتاح المرور هذا في تطبيق كلمات السر أو على مفتاح أمان. وعلى حاسوب فيه تطبيق Octa Pass، يستطيع الامتداد أيضًا فتح قفله عبر التطبيق دون أي مفتاح مرور.

وعند التصدير بصيغة CXF يُنقل سرّ PRF مع مفتاح المرور باسم `hmacCredentials`، فيبقى يعمل في تطبيق آخر يدعم PRF.

## نقل مفاتيح المرور بين المديرين

يستورد Octa Pass مفاتيح المرور ويصدّرها بصيغة FIDO **Credential Exchange Format (CXF)**، في ملف، فتظل تعمل في التطبيق الآخر. أما بروتوكول Credential Exchange (نقلها من تطبيق إلى تطبيق على Apple وAndroid دون ملف) فسيأتي لاحقًا. راجع [CXF](https://octap.app/ar/docs/import-export/from-cxf/) و[التصدير](https://octap.app/ar/docs/import-export/export/). كما يحتفظ تصدير Octa Pass المشفّر بمفاتيح المرور.

## لوحة السلامة

تخبرك [لوحة السلامة](https://octap.app/ar/docs/features/security-dashboard/) حين يدعم موقع في خزنتك مفاتيح المرور ولم تنشئ مفتاحًا له. وهي تستخدم مجموعة بيانات passkeys.directory المضمَّنة في التطبيق.
