مرحبا يا هبر!
سأتحدث اليوم عما فعلته أنا وزملائي منذ عدة أشهر: حول إشعارات الدفع لمراسلات الرسائل الفورية عبر الأجهزة المحمولة. كما قلت ، في تطبيقنا التركيز الرئيسي هو على الأمن. لذلك ، اكتشفنا ما إذا كانت إعلامات الدفع لها "نقاط ضعف" ، وإذا كان الأمر كذلك ، كيف يمكننا ضبطها لإضافة هذا الخيار المفيد إلى خدمتنا.
أنا أنشر ترجمة
لمقالنا مع متوسط مع بعض الإضافات مني. أنه يحتوي على نتائج "التحقيق" وقصة حول كيفية حل المشكلة.
استكشاف العتاد
في النموذج الكلاسيكي ، تجعل إعلامات الدفع الرسائل عرضة لهجمات MITM (رجل في الوسط ، رجل في الوسط). على سبيل المثال ، مع Google و Microsoft والإصدار القديم من iMessage ، يرسل التطبيق مفاتيح تشفير إلى خوادم Apple - يتم مصادقة المستخدمين على الخادم ويتم فك تشفير رأس الرسالة (أو محتواه).

نتيجة لذلك ، هناك فرصة لقراءة المراسلات من خلال الوصول إلى خادم إعلام الدفع. وهذا يعني أن أي تشفير للمراسلات لا طائل منه: سوف تترك إشعارات الدفع فرصة للقراءة من قِبل جهات خارجية. ناقش مؤلفو مقالة
"تشفير الحكمة
" على Xaker.ru ، المكرسين لطرق تشفير الرسائل ، هذا الاحتمال بمزيد من التفاصيل.
إذا بدا لك أن خوادم Apple و Google لن تسمح بنسبة 100٪ بتسريب مفاتيح تشفير المستخدم ، فاعتبر أن موظفيها لديهم حق الوصول إليها. والموظفون هم الناس.
مع كل نقاط الضعف في الدفع ، فإن العديد من الرسل "الآمنين" ، بما في ذلك Signal و Telegram ، يستخدمونها. وإلا ، سيتعين على المستخدمين مراقبة الرسائل الجديدة "يدويًا" عن طريق إدخال التطبيق باستمرار. وهو أمر غير مريح للغاية ، وسيحصل الرسل المتنافسون على ميزة.
جنون العظمة والحس السليم
في مشروعنا ، توصلنا إلى هذه المسألة منذ عدة أشهر. نحن بحاجة إلى جعل الإخطارات دفع خيارا لتكون قادرة على المنافسة. لكن في الوقت نفسه ، لا تقم بعمل فجوة في الأمان ، لأن أي تسرب للبيانات سيقوض مصداقية المشروع.
ومع ذلك ، لدينا بالفعل ميزة مهمة: برنامج المراسلة لدينا لا مركزي (يتم تخزين البيانات على blockchain) ، في حين أن الموظفين لا يستطيعون الوصول إلى الحسابات. المستخدمون فقط لديهم مفاتيح التشفير ، والمفاتيح العامة للمحاور متوفرة على blockchain للحماية من هجمات MITM.
في الإصدار الأول من عملية الدفع ، قررنا تشغيلها بأمان قدر الإمكان وعدم نقل نص الرسالة على الإطلاق. خدمة الدفع المستلمة من العقدة لا نص الرسالة ، ولكن فقط إشارة حول حقيقة استلامها. لذلك ، شاهد المستخدم الإعلام "وصلت رسالة جديدة." كان من الممكن قراءتها فقط في برنامج المراسلة.
كيف عملت: الفيديو .
بعد ذلك ، علمنا أن أحدث إصدار من الإخطارات من Apple يحتوي على ميزات أمان جديدة.
أصدروا UNNotificationServiceExtension ، والذي يسمح للمطورين بإرسال بيانات الإشعارات المشفرة بالكامل من خلال APNS. ثم يقوم تشفير التطبيق على جهاز المستخدم النهائي (أو تنزيل بيانات إضافية) ويعرض إشعارًا. أخذناها كأساس للإصدار الثاني من الدفع.
لقد طورنا الآن الإصدار الثاني من إشعارات الدفع لنظام iOS ، والذي يسمح لك بعرض نص الرسالة دون مخاطرة أمنية. في المفهوم الجديد ، يبدو المنطق كالتالي:
- تقوم خدمة الدفع بإرسال إخطار بالدفع برقم معاملة (يمكن أن تكون الرسالة المشفرة كبيرة جدًا ، ويكون حجم الإشعارات محدودًا جدًا)
- عند استلام إشعار ، يبدأ الجهاز في NotificationServiceExtension - وهو تطبيق مصغر يطلب إجراء معاملة من العقدة حسب المعرف ، ويقوم بفك تشفيرها باستخدام عبارة المرور المحفوظة ، ويعطي النظام إشعارًا جديدًا. يتم تخزين عبارة المرور في مستودع آمن.
- يعرض النظام إشعارًا برسالة أو ترجمة تم فك تشفيرها.
- لا تذهب المفاتيح إلى أي مكان ، كما تفعل رسالة نصية عادية. خدمة الدفع ليست لديها القدرة على فك تشفير الرسالة.

لقد اتخذنا هذا الإصدار كعمل ونفّذناه في آخر تحديث لتطبيق iOS.
يمكن للمهتمين بالجانب التقني الاطلاع على الكود المصدري:
github.com/Adamant-im/adamant-notificationService .