التشفير هو طريقة استخدام الخوارزميات الرياضية لإخفاء معنى جزء من المعلومات بحيث يمكن للأطراف المخولة فقط فك تشفيرها. في هذه المقالة ، سنناقش التشفير وفك التشفير بتنسيق في الترتيب التالي:
مقدمة للتشفير في جافا
يتم تنفيذ التشفير لحماية بياناتنا (مثل النصوص والمحادثات والصوت) ، سواء كان ذلك جالسًا على جهاز كمبيوتر أو يتم إرساله عبر الإنترنت. تعد تقنيات التشفير الحديثة عناصر أساسية لأي بيئة حوسبة آمنة.
يكمن الدور الأساسي لأمن التشفير في قدرة الخوارزمية على إنشاء نص مشفر (نص مشفر) يصعب العودة إلى نصه العادي الأصلي. يؤدي استخدام المفاتيح أيضًا إلى إنشاء مستوى آخر من الأمان لأساليب حماية معلوماتنا. المفتاح هو بعض المعلومات ، والذي يسمح فقط لمن يمتلكونه بتشفير وفك تشفير رسالة.
خوارزميات التشفير المتماثل
تستخدم الخوارزميات المتماثلة نفس المفتاح للتشفير وفك التشفير. يمكن أن تعمل هذه الخوارزميات فقط في وضع الكتلة (الذي يعمل على كتل بيانات ذات حجم ثابت) أو وضع التدفق (الذي يعمل على بتات أو بايت من البيانات). مثل هذه الخوارزمياتتُستخدم أيضًا بشكل شائع لتطبيقات مثل تشفير البيانات وتشفير الملفات وتشفير البيانات المرسلة في شبكات الاتصال (مثل TLS ورسائل البريد الإلكتروني والرسائل الفورية وما إلى ذلك)
خوارزميات التشفير غير المتماثلة (أو المفتاح العمومي)
على عكس الخوارزميات المتماثلة ، التي تستخدم نفس المفتاح لكل من عمليات التشفير وفك التشفير ، تستخدم الخوارزميات غير المتماثلة مفتاحين متطابقين لهاتين الخطوتين. يتم استخدام هذه الخوارزميات لحساب التوقيعات الرقمية وبروتوكولات إنشاء المفاتيح. ومع ذلك ، يأتي هذا أيضًا مع التحدي المتمثل في ضرورة استخدام مفتاحين مما يجعل الأمور أكثر تعقيدًا.
من أجل تكوين أي مخطط تشفير أساسي بأمان ، من الأهمية بمكان أن يتم تصميم جميع هذه المعلمات (على الأقل) بشكل صحيح:
- اختيار الخوارزمية الصحيحة مهم.
- اختيار الوضع الصحيح للتشغيل للمهمة المناسبة
- اختيار نظام الحشو المناسب حسب المتطلبات
- اختيار المفاتيح الصحيحة وأحجامها وفقًا لذلك
- التهيئة الصحيحة باستخدام CSPRING الآمن تشفيرًا.
من الأهمية بمكان أن تكون على دراية بتكوين كل هذه المعلمات بشكل آمن. يمكن حتى لخطأ بسيط في التهيئة أن يعرض نظام تشفير كامل للخطر ويفتحه أمام هجمات المتسللين والبرامج الضارة الأخرى. ومن ثم ، للحفاظ على هذه المناقشة بسيطة ، دعونا نناقش فقط عمليات التهيئة المستقلة عن الخوارزمية للشفرات. بدلاً من القيام بمثل هذه التشفير بنفسك ، من الأفضل دائمًا السماح للخبراء بالقيام بعملهم في تكوين المزيد من التكوينات المعتمدة على الخوارزمية ، مثل قيم p و q لخوارزمية RSA ، وما إلى ذلك من خلال تكوين معلمات التشفير الأولية فقط فوق أكثر من نصف دزينة ، يتم استخدام الطبقات.
إدخال التسلسلات الهرمية للفئات ، والكثير من المنشئات / الطرق المثقلة بالأعباء وما إلى ذلك ، مضيفًا العديد من التعقيدات ، مما يجعلها غير ضرورية. أتمنى ألا تعقد Java التكوينات الأساسية وستستخدم ببساطة بنية أكثر بساطة مثل تلك الخاصة بـ Microsoft ، حيث تكون جميع هذه المعلمات ضمن محيط فئة واحدة من SymmetricAlgorithm و AsymmetricAlgorithm. بالنسبة للمعلمات الثلاثة الأولى التي سيتم تحديدها (الخوارزمية وطريقة التشغيل ونظام الحشو) ، يستخدم كائن Cipher سلسلة تحويل.
- اختيار الخوارزمية الصحيحة
تتضمن سلسلة التحويل بلا شك اسم خوارزمية التشفير. بين التشفير المتماثل وغير المتماثل ، هناك 11 خوارزمية (لا تتعلق بمختلف PBEWith والتركيبات) ، والتي يمكن تحديدها وفقًا لتوثيق اسم الخوارزمية القياسي. من بينها اثنان فقط (واحد لكل منهما ، التشفير المتماثل وغير المتماثل) مؤمنان بالكامل في الواقع.
الخوارزميات المتبقية إما مكسورة بشكل مفرط (DES ، RC2 ، إلخ) أو بدأت الشقوق في الظهور (RC5) ، مما يجعلها قابلة للكسر بقوة كافية لوحدة المعالجة المركزية - يمكن كسرها بالفعل بحلول الوقت الذي تقرأ فيه هذا. لا يجوز للمطور المهتم بالأمان قراءة مجموعة من مواصفات NIST ، ولا متابعة آخر الأحداث والأبحاث في مجتمع التشفير. قد يلتقطون الخوارزميات المعطلة أو المحفوفة بالمخاطر ، أو الهضم أو المولد العشوائي الزائف.
دائما لـ:
الخوارزمية المتماثلة: AES / AES يتم استخدام تشفير كتلة التفاف.
الخوارزمية غير المتماثلة: يستخدم RSA.
- طريقة العملية
يعد وضع التشغيل جزءًا من التحويل ولا يتعلق إلا بمجموعة الأصفار. عندما نستخدم الأصفار غير المتماثلة ، استخدم البنك المركزي الأوروبي كطريقة للعملية ، والتي تعتبر في الأساس اختراقًا وراء الكواليس ، مما يعني تجاهل هذه القيمة. يتم تعيين موفري Java مثل SunJCE و SunPKCS11 افتراضيًا إلى وضع ECB للخوارزميات المتماثلة وغير المتماثلة. قد يكون هذا أمرًا جيدًا بالنسبة للخوارزميات غير المتماثلة ، ولكنه فكرة سيئة بالنسبة لأصفار الكتلة.
يمكن توجيه الموفرين لعمل افتراضات آمنة بناءً على الخوارزمية المستخدمة. استخدم التشفير المتماثل لإنقاذك من هجمات إعادة التشغيل أو هجمات النص العادي المعروف. أيضًا ، استخدم التحويل ، الذي يحدد خوارزمية بشكل كامل (أي مع وضع التشغيل والحشو). لا تفعل أبدًا شيئًا مثل المذكور أدناه.
كما هو مذكور أعلاه ، سيتم استخدام خوارزمية AES مع وضع تشغيل ECB ، مما يجعل هجمات إعادة التشغيل سهلة للغاية. بالنسبة للتطوير الجديد ، إذا كان هناك أدنى احتمال لتجديد العمل القديم ، فيجب علينا استخدام التشفير المصدق مع وضع البيانات المرتبطة (AEAD) (على سبيل المثال GCM و CCM). لدينا علامة مصادقة بطول 128 بت كامل. إذا استخدمنا وضعًا غير مصدق ، فإننا نستخدم CBC أو CTR مع MAC لمصادقة النص المشفر.
- اختيار نظام الحشو المناسب
تحتاج أوضاع تشفير الكتلة الشائعة إلى أن يكون طول النص العادي مضاعفًا لحجم الكتلة لخوارزمية التشفير الأساسية ، وهو ما نادرًا ما يحدث. وبالتالي ، فإننا نحتاج إلى بعض الحشو.يوفر لنا برنامج Java ثلاثة مخططات مختلفة للتشفير المتماثل ، أحدها هو No Padding ، وهو أمر غير مقبول ، والآخر هو ISO10126Padding الذي تم سحبه منذ عام 2007).
لذلك ، فإن الخيار المناسب الوحيد هو استخدام PKCS5Padding. يمكن أن يؤدي مزيج بعض أوضاع التشغيل (على سبيل المثال وضع CBC) ونظام الحشو PKCS5Padding إلى هجمات أوراكل. إن عدم ذكر مخطط الحشو على الإطلاق هو أكثر خطورة من توفير مخطط يكون عرضة فقط لأنواع معينة من الهجمات. يوصى بوضع AEAD للتشغيل للتأكد من أنك محمي من هذه الهجمات.
- الخوارزميات غير المتماثلة
في الخوارزميات غير المتماثلة ، لدينا خيار الاختيار من بين مخططين للحشو. من المهم التأكد من استخدام مخططات OAEPWithAndPadding فقط. في حالة وجود ملخص ، يرجى استخدام إما SHA1 أو SHA256 / 384/512. بالنسبة لوظيفة توليد القناع (MGF) ، يرجى استخدام حشوة MGF1 كما هو محدد. كان PKCS1 الحشو بـ RSA عرضة لهجمات النص المشفر [6] منذ 1998
نتحدث هنا عن الطريقة الصحيحة لاستخدام التحويل في طريقة 'Cipher.getInstance'.
- التشفير المتماثل
- التشفير غير المتماثل
يتناسب مستوى الأمان لأي نظام تشفير طرديًا مع حجم مفتاحه. يجب أن يكون طول المفتاح طويلاً بما يكفي بحيث تصبح أي قوة غاشمة تهاجمها غير مجدية في نفس الوقت ، يجب أن تكون قصيرة بما يكفي لوضع الجدوى الحسابية في الاعتبار. بالإضافة إلى ذلك ، يجب أن نحاول النظر في الأشياء التي لا تزال تصمد أمام التقدم الحسابي خلال الثلاثين عامًا القادمة.
بهذا نصل إلى نهاية مقالة التشفير في جافا. أتمنى أن تكون لديك فكرة عن التشفير وفك التشفير ولماذا يتم استخدامه في Java.
تفحص ال من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تم تصميم دورة تدريب وشهادة Java J2EE و SOA من Edureka للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطوري Java. تم تصميم الدورة التدريبية لمنحك السبق في برمجة Java وتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.
لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'التشفير في جافا' وسنعاود الاتصال بك في أقرب وقت ممكن.
كيفية الحصول على طول مصفوفة جافا سكريبت