نظرة تقنية موجّهة لمن يراجع الأمان. كل ما هنا يمكن التحقق منه في الشيفرة المصدرية — بما في ذلك الجوانب التي ليست في صالحنا، ونذكرها بدل أن نغفلها.
لا يوجد خادم خلفي. الإضافة هي إضافة كروم بمواصفة Manifest V3 تولّد رموز TOTP/HOTP محليًا باستخدام OTPAuth. لا نشغّل خوادم، ولا نحتفظ بحسابات، ولا توجد قناة يمكن أن تصل بيانات المستخدم عبرها إلينا.
وما دام لا يوجد خادم، فلا توجد كذلك مادة مفاتيح على الخادم، ولا إيداع للمفاتيح، ولا مسار استرداد نتحكم به. إذا نسي المستخدم كلمة المرور وفقد رمز الاسترداد، فلا حيلة لنا — وهذا مقصود بالتصميم.
الحماية بكلمة مرور اختيارية ومعطّلة افتراضيًا. وعند تفعيلها:
لا تُشفَّر البيانات إطلاقًا بمفتاح مشتق من كلمة المرور مباشرة. يشفّر السجلات مفتاح رئيسي عشوائي؛ أما ناتج PBKDF2 فيغلّف ذلك المفتاح الرئيسي فقط. ويترتب على ذلك أمران، وكلاهما مهم:
عند تفعيل الحماية بكلمة مرور، يُشفَّر سجل الحساب بالكامل عدا معرّفه وبصمته — بما في ذلك اسم الخدمة، فلا يكشف ملف تعريف مسروق عن الخدمات التي يملك المستخدم حسابات فيها. وعند التفعيل تشفّر الإضافة السجلات، ثم تتحقق منها بفك التشفير والمقارنة، وبعد ذلك فقط تحذف كل نسخة بنص واضح: التخزين المحلي للمتصفح، والمزامنة، ولقطات النسخ الاحتياطي السبع المتناوبة كلها.
نقولها صراحةً لأنها تهمّ تقييمكم:
باختصار: هذا يحمي البيانات في حالة السكون. أما جهاز يقع أثناء الاستخدام تحت سيطرة مهاجم فعلًا، فلا يحميه ولا يستطيع.
يعلن الملف التعريفي خمسة أذونات ولا يعلن أي إذن مضيف:
لا توجد لا توجد أي سكربتات محتوى، ولا أذونات tabs أو cookies أو webRequest، ولا web-accessible resources. لا شيء يخصنا موجود في الصفحة حتى تطلب رمزًا فيها؛ وما يعمل حينها يُحقَن لتلك العلامة وحدها ولذلك الاستدعاء وحده، بموجب الإذن الذي تمنحه نقرتك أنت، ولا يترك خلفه شيئًا.
يعمل مسح رمز QR بالكاميرا في صفحة تابعة للإضافة تُفتح في تبويب، لا في النافذة المنبثقة — فالنافذة المنبثقة تُدمَّر حين تفقد التركيز، وهذا بالضبط ما يفعله طلب الإذن. وهذا لا يحتاج أي إذن في ملف البيان: فهو يستخدم طلب الكاميرا القياسي في المتصفح، يُمنح لأصل الإضافة ويمكن سحبه من إعدادات الموقع، ولا يُطلب أبدًا قبل أن يفتح المستخدم الماسح. ويُفكّ ترميز الفيديو محليًا ولا يُرسل ولا يُخزَّن إطلاقًا.
فحص الساعة هو الطلب الوحيد الذي ترسله الإضافة من تلقاء نفسها؛ وكل ما عداه أدناه يحدث لأن المستخدم نقر على شيء. ويمنع Manifest V3 الشيفرة البعيدة، ولا شيء مما يلي يحمل حسابات أو مفاتيح سرية أو رموزًا مولَّدة. والقائمة كاملةً:
| المضيف | متى | هل تحمل بيانات المستخدم؟ |
|---|---|---|
| time.akamai.com timeapi.io cloudflare.com | فحص انحراف الساعة، مع تخزين مؤقت؛ وإذا تعذّر الوصول إلى أي مصدر تذكر الإعدادات ذلك. انحراف الساعة يعطّل TOTP. | لا |
| authenticator.sh | صفحة الترحيب عند التثبيت؛ وصفحة الملاحظات عند الإزالة؛ وصفحتا المساعدة والدعم عند فتحهما من النافذة المنبثقة. | لا (سجلات خادم ويب اعتيادية) |
| chromewebstore.google.com | صفحة المتجر، تُفتح في تبويب عند النقر فقط: نموذج المراجعة من طلب التقييم، ومدير كلمات المرور لدينا من لافتة الترويج المتبادل. | لا (ترى Google زيارةً لصفحة متجر كأي زيارة أخرى) |
| authenticator.featurebase.app | لوحة طلبات الميزات العامة، تُفتح في تبويب من رابط طلب ميزة في شريط الدعم. | فقط ما ينشره المستخدم هناك. خدمة خارجية بشروطها الخاصة. |
لا تُحمَّل أي خطوط أو سكربتات أو أنماط أو صور من مضيفات خارجية. وكل ما يلزم لعرض الواجهة مضمّن داخل الحزمة.
لستم مضطرين لتصديق أي مما سبق. الإضافة مفتوحة المصدر، وكل إصدار قابل لإعادة الإنتاج:
.crx المنشور من متجر كروم الإلكتروني وفكّوا ضغطهnpm ci && npm run build على Node 20 LTSdist/ الناتج بالحزمة المفكوكةيُنشر مع كل إصدار على GitHub تجزئة SHA-256 لكل ملف داخل dist/ المُنتَج، باسم SHA256SUMS-v<version>.txt وبصيغة sha256sum، فتصبح الخطوة الرابعة تشغيلًا واحدًا للأمر sha256sum -c. ويُفترض أن تقتصر الفروق على ترتيب الملفات داخل الأرشيفات وعلى المسافات في المخرجات المصغّرة بين إصدارات Node التصحيحية.
اعتماديات وقت التشغيل قليلة عن قصد — OTPAuth وReact وjsQR وZustand وFramer Motion وLucide — ومثبّتة عبر ملف قفل محفوظ في المستودع. ونوفّر قائمة مكوّنات SBOM بصيغة CycloneDX عند الطلب.
اطّلعوا على الشيفرةنحن مزوّد صغير ومستقل. إن كان أي مما يلي شرطًا لازمًا في عمليتكم، فمن الأفضل أن تعرفوه الآن لا بعد ثلاثة أسابيع من التقييم:
وما نقدّمه بدلًا من ذلك: شفافية كاملة للشيفرة المصدرية، وبناء قابل للتحقق، وأقل قدر ممكن من الأذونات، وغياب أي بنية خوادم قد تحتفظ ببياناتكم من الأساس.
بلاغات الثغرات وأسئلة الأمان: security@authenticator.sh. سياسة الإفصاح لدينا ونطاقها وأزمنة الاستجابة وشروط الملاذ الآمن موجودة في صفحة سياسة الأمان؛ أما ما يُخزَّن وما يغادر الجهاز فمبيَّن في سياسة الخصوصية.
يسعدنا الإجابة على استبيان تقييم مورّد مكتوب، أو مراجعة الشيفرة خطوة بخطوة مع فريق أمني.
لأي أمر خارج نطاق الأمان — التثبيت، أو استعادة الحساب، أو أسئلة الفوترة في نشر مؤسسي — راجعوا الدعم. ونرجو عدم إرسال بلاغات الثغرات إلى هناك؛ فذلك البريد لا يُعامل على أنه سرّي.