X:/Chat هو تطبيق ويب يستخدم HTML و CSS و JavaScript على الواجهة الأمامية ، و Node.js على الواجهة الخلفية. يتيح للمستخدمين التواصل مع بعضهم البعض بطريقة آمنة (على الرغم من أنني جديد على Node.js ، ولا يمكنني ضمان الأمن المذكور).
يعد JavaScript والتخزين المحلي إلزاميًا تمامًا لتطبيق الويب. يتم استخدام التخزين المحلي لتخزين المفاتيح العامة والمفاتيح الخاصة والإعدادات وغير ذلك الكثير.
إذا كنت تستخدم ميزة "الدردشة المجهولة" ، فلن يتم تخزين أي شيء على الإطلاق بواسطة الخادم. أردت أن أجعل أشكال الاتصالات الأكثر أمانًا يمكنني التفكير فيها ، وانتهى بي الأمر باختيار عدم تخزين سجلات المحادثة من خلال الدردشة المجهولة. عند النقر فوق الزر "مجهول الدردشة" ، يتم إعادة توجيهك إلى "/مجهول" ، حيث يتم إنشاء معرف لك ، إلى جانب مفتاح عام ومفتاح خاص. يتم حفظ هذه فقط على متصفحك (في التخزين المحلي). لا يقوم الخادم بتخزين أي من هذه المعلومات. الشيء الوحيد الذي يخزنه الخادم هو معرف المحادثة ، ووقت الإنشاء. يتم ذلك بحيث يمكن ضبط المحادثات على انتهاء صلاحيتها بعد ساعة. بعد اكتمال التحميل ، يمكنك إرسال عنوان URL الخاص بك إلى أي شخص تريده ، وجعله يتصل بك. بمجرد قيامهم بذلك ، يحصلون أيضًا على زوج مفتاح عام/خاص يتم إنشاؤه لهم ، بالإضافة إلى معرف. ثم يتم تزويدك بمفتاحها العام ومعرفهم. عندما ترسل رسالة ، تقوم بتشفيرها باستخدام مفتاح RSA-2048 العام ، والذي يقومون بعد ذلك بفك تشفيره على جانبهم (محليًا) باستخدام مفتاحهم الخاص. نظرًا لأن الرسالة مشفرة على جانب العميل ، فإن الخادم لا يعرف أبدًا ما يقال. تحديث الصفحة يحذف الرسائل لمن تم تحديثه ، حيث لا يتم تخزين الرسائل في أي مكان . نظرًا لحقيقة أنه لا يتم تخزين أي شيء على الخادم ، فهذا يعني أنه يمكن للمستخدمين تغيير معرفاتهم بسهولة ، وهذا هو السبب في أن هذا المشروع تم استخدامه لاستخدامه من قبل مجموعات صغيرة ، بدلاً من عامة الناس. من شأن وجود محادثات مجهولة في متجر الخادم أن يوفر فائدة المحادثات غير المستقرة من قبل المستخدمين ، ولكن هذا يعني أن الخادم يمكنه تعديلها ، وأن السجلات ستكون موجودة. فهل تفضل الوثوق بصديقك ، أو بعض الخادم العشوائي؟
الدردشة العادية أشبه بتطبيق الدردشة العامة. لا تزال الرسائل مشفرة على جانب العميل مع RSA-2048 ، ويتم تشفير المفاتيح الخاصة للمستخدمين باستخدام AES-256-CTR ، والذي يستخدم تجزئة SHA512 لكلمة مرور المستخدم كمفتاح فك التشفير. يتم تخزين كلمة مرور المستخدم باستخدام BCrypt مع 10 جولات ملح. باختصار ، ما لم يتم تعديل رمز الخادم أو شيء لالتقاط المفتاح الخاص للمستخدم ، فلا توجد طريقة على الإطلاق للحصول على محتوى المحادثة. يتم تخزين إعدادات المستخدم وجهات الاتصال والبيانات الأخرى بتنسيق JSON في الملفات النصية لسهولة الوصول. يتم تخزينها في نص عادي ، لكن سيكون من السهل تشفيرها بكلمة مرور المستخدم و AES. إذا كنت ترغب في جعل هذا حقيقة ، تذكر أن هناك بالفعل وظائف مكتوبة لتسهيل الأمر. يمكنك استخدام وظائف "AES_ENCRYPT (النص العادي ، كلمة المرور)" و "AES_DECrypt (مشفرة ، كلمة مرور)" كتبتها بسهولة لتشفير/فك تشفير ما تريد.
قد يكون هناك بعض الأخطاء أو بعض السلوك غير المتوقع ، ولكن هذا أمر متوقع ، هذا ، بعد كل شيء ، مشروع Node.js الأول. إذا حاولت كسر التطبيق ، فمن المحتمل جدًا أن تنجح. لا يوجد العديد من شيكات التحقق من الصحة ومثلما أحب ، ولكن هناك ما يكفي لحماية حسابات المستخدم والمحادثات. أعتذر مقدمًا إذا كان هناك أي شيء خطأ.