نظرة تقنية موجّهة لمن يراجع الأمان. كل ما هنا يمكن التحقق منه في الشيفرة المصدرية — بما في ذلك الجوانب التي ليست في صالحنا، ونذكرها بدل أن نغفلها.
لا يوجد خادم خلفي. الإضافة هي إضافة كروم بمواصفة Manifest V3 تولّد رموز TOTP/HOTP محليًا باستخدام OTPAuth. لا نشغّل خوادم، ولا نحتفظ بحسابات، ولا توجد قناة يمكن أن تصل بيانات المستخدم عبرها إلينا.
وما دام لا يوجد خادم، فلا توجد كذلك مادة مفاتيح على الخادم، ولا إيداع للمفاتيح، ولا مسار استرداد نتحكم به. إذا نسي المستخدم كلمة المرور وفقد رمز الاسترداد، فلا حيلة لنا — وهذا مقصود بالتصميم.
الحماية بكلمة مرور اختيارية ومعطّلة افتراضيًا. وعند تفعيلها:
لا تُشفَّر البيانات إطلاقًا بمفتاح مشتق من كلمة المرور مباشرة. يشفّر السجلات مفتاح رئيسي عشوائي؛ أما ناتج PBKDF2 فيغلّف ذلك المفتاح الرئيسي فقط. ويترتب على ذلك أمران، وكلاهما مهم:
عند تفعيل الحماية بكلمة مرور، يُشفَّر سجل الحساب بالكامل عدا معرّفه وبصمته — بما في ذلك اسم الخدمة، فلا يكشف ملف تعريف مسروق عن الخدمات التي يملك المستخدم حسابات فيها. وعند التفعيل تشفّر الإضافة السجلات، ثم تتحقق منها بفك التشفير والمقارنة، وبعد ذلك فقط تحذف كل نسخة بنص واضح: التخزين المحلي للمتصفح، والمزامنة، ولقطات النسخ الاحتياطي السبع المتناوبة كلها.
نقولها صراحةً لأنها تهمّ تقييمكم:
باختصار: هذا يحمي البيانات في حالة السكون. أما جهاز يقع أثناء الاستخدام تحت سيطرة مهاجم فعلًا، فلا يحميه ولا يستطيع.
يعلن ملف البيان إذنين اثنين تحديدًا، ودون أي أذونات مضيف:
لا توجد أي سكربتات محتوى، ولا توجد أذونات tabs أو cookies أو webRequest، ولا موارد يمكن للويب الوصول إليها. لا تستطيع الإضافة قراءة محتوى أي صفحة ولا تعديله.
يعمل مسح رمز QR بالكاميرا في صفحة تابعة للإضافة تُفتح في تبويب، لا في النافذة المنبثقة — فالنافذة المنبثقة تُدمَّر حين تفقد التركيز، وهذا بالضبط ما يفعله طلب الإذن. وهذا لا يحتاج أي إذن في ملف البيان: فهو يستخدم طلب الكاميرا القياسي في المتصفح، يُمنح لأصل الإضافة ويمكن سحبه من إعدادات الموقع، ولا يُطلب أبدًا قبل أن يفتح المستخدم الماسح. ويُفكّ ترميز الفيديو محليًا ولا يُرسل ولا يُخزَّن إطلاقًا.
لا ترسل الإضافة أي طلبات تلقائية أثناء الاستخدام العادي، كما يمنع Manifest V3 الشيفرة البعيدة. وهذه كل الاتصالات الممكنة:
| المضيف | متى | هل تحمل بيانات المستخدم؟ |
|---|---|---|
| worldtimeapi.org timeapi.io | فحص انحراف الساعة، مع تخزين مؤقت، ويفشل بصمت. انحراف الساعة يعطّل TOTP. | لا |
| authenticator.sh | صفحة الترحيب عند التثبيت؛ وصفحة الملاحظات عند الإزالة أو التقييم. | لا (سجلات خادم ويب اعتيادية) |
لا تُحمَّل أي خطوط أو سكربتات أو أنماط أو صور من مضيفات خارجية. وكل ما يلزم لعرض الواجهة مضمّن داخل الحزمة.
لستم مضطرين لتصديق أي مما سبق. الإضافة مفتوحة المصدر، وكل إصدار قابل لإعادة الإنتاج:
.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. سياسة الإفصاح لدينا ونطاقها وأزمنة الاستجابة وشروط الملاذ الآمن موجودة في صفحة سياسة الأمان؛ أما ما يُخزَّن وما يغادر الجهاز فمبيَّن في سياسة الخصوصية.
يسعدنا الإجابة على استبيان تقييم مورّد مكتوب، أو مراجعة الشيفرة خطوة بخطوة مع فريق أمني.
لأي أمر خارج نطاق الأمان — التثبيت، أو استعادة الحساب، أو أسئلة الفوترة في نشر مؤسسي — راجعوا الدعم. ونرجو عدم إرسال بلاغات الثغرات إلى هناك؛ فذلك البريد لا يُعامل على أنه سرّي.