مرة أخرى حول OpenSSL

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

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

دعنا نبدأ. في الواقع ، كل شيء بسيط حتى الآن.

قم بإنشاء مفتاح خاص باستخدام الأمر.

openssl genrsa -out key.pem -aes-256-cfb -rand /var/log/messages 4096 



هنا:

genrsa - معلمة تشير إلى إنشاء مفتاح بواسطة خوارزمية تشفير RSA.
خارج - مكان إنشاء المفتاح.
4096 هو طول المفتاح.
بشكل عام ، هذا يكفي لإنشاء مفتاح. ولكن من الأفضل تشفير المفتاح الخاص.
aes-256-cfb - الخوارزمية ووضع التشفير.
راند / فار / سجل / رسائل - قيم عشوائية من أي مجلد ، فمن الأفضل أن تأخذ السجلات ، لأنه مع / dev / عشوائي أو / dev / urandom كل شيء يمكن أن يتم تعليقه بإحكام ، كان لدي.
عند إنشاء مفتاح ، سيتم طلب كلمة مرور. كلمة المرور هي أساس أي حماية ، لذا حاول التطفل عليها. وتذكر.

لدينا مفتاح. خاص لا تظهر أبدًا ولا تختبئ لأي شخص وفقًا لمبدأ Koshchei الخالد.

بناءً على ذلك ، سننشئ واحدة عامة يمكن عرضها على الشاشة العامة ، على الأقل على الجبهة.

 openssl rsa -in privatkey.pem -pubout -out publickey.pem 



الآن لدينا زوج من المفاتيح. يمكنك تحميل الملف العام إلى الخادم للاتصال به عبر ssh باستخدام مفتاحك الخاص. أو لتشفير كمية صغيرة من البيانات ، على سبيل المثال ، رمز مميز أو عبارة مرور ، إلخ.

مهمة تشفير ملف كبير لها حل مختلف.

لتشفير كمية كبيرة من البيانات ، نستخدم ، على سبيل المثال ، ملف pdf هذا بحجم 1.8 ميجابايت.



يتم تشفير كمية كبيرة من البيانات باستخدام خوارزمية تشفير متناظرة ، مثل AES. هنا سنستخدم التشفير غير المتماثل لإرسال مفتاح متماثل ، والذي سنقوم بتشفير النص به.

دعنا نبدأ.

إنشاء مفتاح جلسة متماثل (لمرة واحدة) بتسلسل عشوائي من الأحرف وكتابته إلى ملف في تمثيل base64.

 openssl rand -base64 32 > key.bin 

بعد ذلك ، نقوم بتشفير الملف باستخدام هذا المفتاح:

 openssl enc -aes-256-cfb -salt -in OWASP_Top_10-2017_\(en\).pdf -out OWASP_Top_10-2017_\(en\).pdf.enc -pass file:./key.bin 



aes-256-cfb - الخوارزمية ووضع التشفير. لن أتحدث عن الأوضاع هنا. هذا هو الأفضل.
ملح - ملح لزيادة قوة التشفير.
تمرير الملف: ./ key.bin - مفتاح التشفير.

بعد ذلك ، نقوم بتشفير المفتاح المتماثل باستخدام مفتاحنا العام "غير المتماثل".

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in key.bin -out key.bin.enc 



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

الآن احذف المفتاح المتماثل الأصلي! حتى لا يجده أحد.

 shred -u key.bin 

في الصورة أدناه لم يعد هناك.



الآن نقوم بفك تشفير المفتاح المتماثل باستخدام مفتاحنا غير المتماثل الخاص.

 openssl rsautl -decrypt -inkey privatkey.pem -in key.bin.enc -out key.bin 

ولدينا ، المحظوظون ، مرة أخرى مفتاح متماثل لفك تشفير نصنا ، الذي لا يزال مشفرًا.

الصورة أدناه مرة أخرى ، هناك مفتاح مرة أخرى.



الآن نقوم بفك تشفير الملف المشفر باستخدام تشفير التشفير المتماثل بواسطة تشفيرنا المشفر حديثًا ، ولكن بعد ذلك يتم فك تشفيره باستخدام تشفير التشفير غير المتماثل ، المفتاح المتماثل.

 openssl enc -d -aes-256-cfb -in OWASP_Top_10-2017_\(en\).pdf.enc -out OWASP_Top_10-2017_\(en\)decrypt.pdf -pass file:./key.bin 

إثبات أدناه.



الآن: لماذا هو معقد للغاية؟ لماذا لا تستطيع أن تفعل كل شيء مع التشفير غير المتماثل؟

نحاول ، نذهب مباشرة إلى أشعل النار ؛)
لقد فعلنا!

الملف والمفاتيح.



نقوم بتشفير.

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in OWASP_Top_10-2017_\(en\).pdf -out OWASP_Top_10-2017_\(en\).pdf.enc 

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



ولكن يمكنك تشفير ملف أصغر من المفتاح. لنجربها.

قم بإنشاء ملف صغير.

على سبيل المثال ، فعلت هذا:

 echo "hellow world my name is admin is a secret text nobody know it hahahahaahah" > text.txt 



سنقوم بتشفيره بمفتاحنا العام ، والذي يعرفه الجميع في العالم!

 openssl rsautl -encrypt -inkey publickey.pem -pubin -in text.txt -out text.txt.enc 

كما ترى في الصورة السفلية ، الملف مشفر. لا شيء واضح! من يفهم من أنت؟



الآن نقوم بفك التشفير ، بعد حذف الملف المصدر من أجل نقاء التجربة.

 openssl rsautl -decrypt -inkey privatkey.pem -in text.txt.enc -out text.txt 



لدينا ملف تم فك تشفيره. كل شيء رائع.

لنقل كل هذه السلعة المشفرة ، من الأفضل ترميز الأخير في base64. وفقًا لذلك ، قبل فك التشفير ، يجب عليك أولاً فك التشفير.
مشفر.

 openssl enc -base64 -in text.txt.enc -out text.txt.bs64 



تم فك الشفرة.

 openssl enc -base64 -d -in text.txt.bs64 -out text.txt.enc 



ومرة أخرى لدينا beleberd لا يفهمها أحد! إذا فهمت ، فهذه الوثيقة ليست لك!

هذه هي الطريقة التي يعمل بها التشفير عند إنشاء المفاتيح وتشفير البيانات باستخدام أداة OpenSSL كمثال.

سأصف فيما بعد أوضاع التشفير للأصفار المتناظرة.

Source: https://habr.com/ru/post/ar417069/


All Articles