كيفية بناء دردشة آمنة مع AppFriends و Virgil الأمن

لقد كتبنا مؤخرًا امتداد تشفير إلى AppFriends ، ومن خلال العمل مع AppFriends SDK ، تمكنا من تجميع نموذج نهاية لإنهاء تطبيق الدردشة المشفرة في أقل من 3 أيام. يمكنك العثور على التطبيق هنا.

بعد أن أطلقنا خدمة الدردشة في التطبيق ، AppFriends ، كان هناك الكثير من الاهتمام حول كيفية جعل محتوى الدردشة خاصًا وآمنًا بالكامل. تحرك الفريق بسرعة وحدد ما يتعين علينا القيام به:

  1. بحاجة إلى تشفير غير متماثل ، ويجب أن يكون لدى المستخدم فقط مفتاح فك تشفير الرسالة المرسلة إليه
  2. عند تلقي رسالة ، يجب أن تكون هناك طريقة للتحقق من أصل الرسالة
  3. في دردشة جماعية ، يجب تشفير الرسالة بطريقة يمكن لأي شخص في المجموعة فك تشفيرها
  4. لا يزال بعض عملائنا يرغبون في أن يكونوا قادرين على رؤية محتوى الدردشة ، لذلك يجب أن يكون التشفير ميزة اختيارية يمكن تشغيلها / إيقافها بسهولة. لا ينبغي أن يكون لدى AppFriends أي تبعية على خدمة تشفير الطرف الثالث.

بعد البحث ، قررنا استخدام Virgil. للحصول على معلومات تفصيلية حول Virgil Security ، يرجى زيارة موقع الويب الخاص بهم. في هذه المقالة ، سوف نركز على كيفية تحقيق الأهداف المذكورة أعلاه.

الهدف 1: إجمالي الخصوصية - للمستخدم فقط مفتاح فك تشفير الرسالة

الخطوة 1: نقوم بإنشاء أزواج المفاتيح الخاصة والعامة في التطبيق على جهاز المستخدم.

الخطوة 2: يتم حفظ المفتاح الخاص في التخزين الآمن للجهاز فقط

الخطوة 3: يتم نشر المفتاح العمومي على خادمنا بحيث يمكن للآخرين استخدامه لتشفير الرسائل

النتيجة: نظرًا لأن المفتاح الخاص يتم حفظه فقط على الجهاز ، يمكن لمستخدم الجهاز فقط الوصول إليه. هذا يعني أنه ما لم يفقد المستخدم كل من الجهاز وكلمة المرور للجهاز لشخص ما ، فلا يمكن لأحد فك تشفير الرسالة المشفرة بواسطة المفتاح العمومي. على الرغم من أن الرسائل المشفرة يتم تخزينها على الخادم الخاص بنا ، فليس لدينا أو أي طرف ثالث وسيلة لقراءتها.

الهدف 2: التحقق من أصل الرسالة

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

يوفر Virgil واجهة برمجة تطبيقات ملائمة جدًا للمستخدم لتوقيع الرسالة باستخدام مفتاح خاص قبل إرسالها. في نهاية جهاز الاستقبال ، نحتاج فقط إلى مصادقة التوقيع على الرسالة باستخدام المفتاح العمومي للتحقق من أصل الرسالة.

الهدف 3: يجب أن تكون رسائل الدردشة الجماعية قابلة للقراءة من قبل جميع المستخدمين في المجموعة

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

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

الهدف 4: يجب أن يكون التشفير اختياريًا ، ويجب ألا يكون لـ AppFriends أي اعتماد على Virgil

لجعل AppFriends لا يعتمد على Virgil ، جعلنا وظيفة التشفير امتداداً لـ AppFriends بدلاً من تضمينها داخل AppFriend SDK. لقد بدأنا بتحديد بروتوكول / واجهة ملحق التشفير ، لذلك يمكن لـ AppFriends SDK ببساطة استدعاء الامتداد الذي ينفذ البروتوكول / الواجهة ، ولا يهتم بكيفية تنفيذها. وبالتالي ، AppFriends لا يعتمد على فيرجيل. من المحتمل ، يمكن إجراء الامتداد باستخدام خدمات أخرى مماثلة لفيرجيل.

إذا لم يتم توفير تطبيق الامتداد إلى AppFriend SDK ، فيمكنه مجرد افتراض أن التشفير غير مطلوب ، وببساطة لا يرسل رسائل من خلال امتداد التشفير. لا يزال بإمكان عملائنا الذين لا يحتاجون إلى التشفير الاستمتاع بالخدمات القديمة دون تغيير أي شيء.

مجال للتحسين

باستخدام الإعداد الحالي ، يتم تخزين المفتاح الخاص على جهاز المستخدم. إذا فقد المستخدم الجهاز ، فلن يتمكن من الوصول إلى الرسائل التي أرسلها / تلقاها. يمكننا استخدام المصادقة متعددة العوامل للسماح للمستخدمين بإضافة جهاز جديد بعد فقد الجهاز القديم ، ولكن نظرًا لأنه يتعذر علينا استرداد المفتاح الخاص ، لا يمكن فك تشفير الرسائل القديمة بعد الآن.

شكرا لقرائتك! إذا كان لديك أي تعليق أو اقتراحات ، يرجى إعلامي. أخبرني أيضًا إذا كنت تكتب أو تحتاج إلى وظيفة دردشة في تطبيقك.

ترميز سعيد!