كيفية تمرير البيانات الكبيرة بين الخادم والعميل (android) بشكل آمن؟

باستخدام تقنية تشفير RSA و AES (مختلط)

مرحبا يا شباب،

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

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

ABC التشفير

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

هذا النوع من تقنية التشفير يسمى التشفير المتماثل. إنه سريع ويمكنه تشفير النصوص الكبيرة للبيانات. يشمل العيب التوزيع الآمن للمفتاح. تحتاج أيضًا إلى شحن المفتاح في تطبيقك - وهي ممارسة غير موصى بها للغاية. الخوارزميات التناظرية الأكثر شعبية هي DES ، Triple-DES ، AES ، السمكة المنتفخة ، RC2 ، RC4 (ARCFOUR) ، RC5 ، RC6.

حسنًا ، هذه مشكلة. لا يمكنك شحن رمز المرور في تطبيقك. إذا تمكن المتطفل من الوصول إلى رمز المرور الخاص بك ، فيمكنه بسهولة الحصول على جميع البيانات الحساسة التي سيتم إرسالها من تطبيقك.

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

هذا النوع من تقنية التشفير يسمى التشفير غير المتماثل. إنها بطيئة جدًا نسبيًا ويمكنها تشفير نصوص صغيرة جدًا فقط من البيانات في وقت واحد (128 بايت على وجه الدقة!). أشهر الخوارزميات غير المتماثلة (تُعرف أيضًا باسم خوارزميات المفتاح العام) هي RSA و Diffie-Hellman و ElGamal و DSS.

من الواضح الآن أنه لا يمكنك استخدام التشفير المتناظر لأنه لا يمكنك شحن رمز المرور في تطبيقك. أيضًا ، من غير العملي استخدام تشفير غير متماثل لأن 99٪ من المرات التي تكون فيها البيانات التي تريد نقلها أكبر من 128 بايت! ماذا أفعل؟

الحل الهجين لانقاذ!

النظر في هذا:

  1. باستخدام تشفير غير متماثل (قل RSA) ، ينشئ الخادم زوج مفاتيح يتكون من مفتاح عام ومفتاح خاص.
  2. خادم يحفظ هذه المفاتيح في مكان آمن.
  3. نأخذ المفتاح العام وشحنه في التطبيق لدينا (العميل).
  4. عندما نريد نقل بعض البيانات الحساسة إلى الخادم (في وقت التشغيل) ، فإننا نقوم بإنشاء رمز مرور (ويعرف أيضًا باسم المفتاح السري) باستخدام تشفير متماثل (مثل AES).
  5. باستخدام هذا المفتاح السري ، نقوم بتشفير نصوصنا الكبيرة من البيانات بسرعة.
  6. الآن نستخدم المفتاح العمومي لتشفير المفتاح السري الخاص بنا.
  7. نرسل هذه البيانات المشفرة ومجموعة المفاتيح السرية المشفرة إلى الخادم (باستخدام أي وسيلة شائعة الاستخدام لإرسال مجموعة من البيانات ، مثل JSON)
  8. يستقبل Server هذه المجموعة ، ويستخرج البيانات المشفرة والمفتاح السري المشفر منها.
  9. يستخدم الخادم المفتاح الخاص لفك تشفير المفتاح السري المشفر.
  10. يستخدم الخادم المفتاح السري المشفر (أو ما يسمى ببساطة المفتاح السري) لفك تشفير البيانات المشفرة. وبالتالي فإنه يحصل على نصوص كبيرة من البيانات التي تم إرسالها من قبل العميل بشكل آمن.

هذه التقنية تسمى تشفير هجين.

أرني الرمز!

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

2. من جانب العميل ، لإنشاء مفتاح سري في وقت التشغيل ، وتشفير السلسلة الحساسة باستخدام المفتاح السري ، وتشفير المفتاح السري باستخدام المفتاح العام ، ستساعدك هذه الفئة على:

3. عند استلام النص المشفر والمفتاح السري المشفر من جانب الخادم ، سيقوم الخادم بفك تشفير المفتاح السري المشفر باستخدام المفتاح الخاص. بعد ذلك ، سيقوم الخادم باسترداد النص الأصلي الذي يرسله العميل عن طريق فك تشفير النص المشفر باستخدام المفتاح السري (فك تشفير). سوف يساعدك الفصل التالي في نفس:

استنتاج

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

تلميح مكافأة
كما ترون ، فقد استخدمنا أساليب فئة Base64 في مقتطفات الكود أعلاه ، وأحيانًا بسبب اختلاف في التطبيق ، يمكن أن يستورد الاستيراد الافتراضي ملفات مختلفة قليلاً (لدى android إصدار معدّل). يمكنك العثور على الملف الصحيح هنا والذي يمكنك استيراده على الكود الجانبي للخادم بحيث يعمل العميل والخادم في وئام :)

تحقق من جميع المقالات العليا في blog.mindorks.com