Security and Internet Functions

تحياتي للجميع

تعرفنا علي الانواع المختلفة من قواعد البيانات في لغة البرمجة رينج Ring ونظرا لضرورة حماية تلك القواعد والبيانات المختلفة ضد الهاكرز Hackers … ولذا فسوف نتعرف سويا من خلال مقالة اليوم علي أنواع مختلفة سواء عبارة عن Algorithms أو دوال تستخدم في تطبيق الحماية عن طريق التشفير وذلك باستخدام  مكتبة جاهزة خاصة بال SSL.

Ring programming language for Hashing, Encryption & Decryption

يستخدم ال SSL في لغة Ring في التشفير وكذلك فك التشفير وأيضا في ايجاد قيم ال Digests أو الرسالة الناتجة من دوال ال Hash والتي تستخدم في الحماية أو عمل خصوصية مثل خصوصية للدخول  Login أو تصريح الدخول لل  Roots ولحماية الملفات .

ملحوظة مهمة قبل البدء في موضوع ال Hashing & Encryptions

التشفير يعتبر وسيلة اخفاء المعلومات حتى لا ترى البيانات بشكل الصحيح، وهو يحتاج مفتاح key أو باسورد معين أو تحتاج لطريقة معينة سرية  حتى تسترجع البيانات. بينما الHashing هو وسيلة لحفظ البيانات بشكل غير قابل للاسترجاع ابداً ، فالتشفير تستطيع استرجاع البيانات باستخدام الطريقة المقابلة لفك التشفير ، بينما الHashing لا يمكنك على الاطلاق.

فبالنسبة لاستخدامات ال Hashing :

  • اختبار تكامل البيانات وهذا يسمى Integrity:

مثال:

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

مثال علي ذلك:

عند فتح موقع لتحميل سيرفر ما مثل هذا الموقع :

https://www.openoffice.org/download/index.html

تلاحظ اسفل التحميل التالي: Signatures and hashes: KEYS , ASC , MD5 , SHA256

نقوم بتحميل أي نوع من أنواع ال SSL  المختلفة ونقوم بفتحها عن طريق ال notepad ونقوم بمقارنة ال Strings المحملة مع الناتجة من دوال ال Hash من نفس النوع المختار من ال SSL للملف الذي قمنا بتحميلة وعند التطابق يتنبين لنا صحة الملف كما سنتعرف معا في مقالتنا اليوم.

ملحوظة:هناك بعض المواقع المسؤلة عن رفع الملفات واستخراج ال hashes لها وعمل مقارنة بال hashes الموجودة مع الملف قبل تنزيلة ومن أمثلة تلك المواقع الموقع التالي:http://onlinemd5.com


  • تخزين البيانات بشكل غير قابل للاسترجاع

مثال:

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

مثال علي ذلك:

عند فتح  phpmyAdmin نلاحظ عند عمل سرية للدخول وجود مكان أخر لتشفير الباسورد أو تحويلة علي شكل Hashes  كما في الصورة التالية:

Capture.PNG


ويمكن عن طريق مكتبة ال SSL في لغة الرينج تشفير البيانات أو كلمة السر الخاصة بالدخول أو تطبيق الخصوصية علي ملفات.

كيفية تطبيق دوال ال SSL:

1-أولا يجب عليك استدعاء مكتبة ال ssl وهي “openssllib.ring”

ملحوظة:

تم تعريف تلك الدوال أيضا في مكتبة “stdlib.ring” عن طريق Class باسم security، أي من الممكن استدعاء هذه المكتبة ثم استخدام دوال ال SSL مباشرة بدون Objects أو ممكن عمل Object منClass    ال security  ثم استخدام الدوال داخل ال Object.

2-ثم بعد ذلك نبدأ استخدام دوال التشفير التالية:

  • MD5
  • SHA1
  • SHA256
  • SHA512
  • SHA384
  • SHA224
  • Encrypt
  • Decrypt
  • Randbytes

ويمكنك الاطلاع علي المفاهيم الاساسية  لتلك الدوال من هنا

كما يمكنك الاطلاع علي أمثلة توضيحية لاستخدام الدوال من الموقع الرسمي للغة

MD5() Function:

MD5(cString) ---> String contains the MD5 hash of the string cString

SHA1() Function:

SHA1(cString) ---> String contains the SHA1 hash of the string cString

SHA256() Function:

SHA256(cString) ---> String contains the SHA256 hash of the string cString

SHA512() Function:

SHA512(cString) ---> String contains the SHA512 hash of the string cString

SHA384() Function:

SHA384(cString) ---> String contains the SHA384 hash of the string cString

SHA224() Function:

SHA224(cString) ---> String contains the SHA224 hash of the string cString

Encrypt() Function:

يتم التشفير باستخدام ال Blowfish algorithm

Encrypt(cString, cKey, cIV) ---> Encrypted string

Decrypt() Function:

Decrypt(cCipher, cKey, cIV) ---> Decrypted string

Randbytes() Function:

(Randbytes(nSize) ---> String contains random bytes (bytes count = nSize

مثال توضيحي:

Capture.PNG

مثال توضيحي باستخدام مكتبة “OpenSSLLib”

"load "openssllib.ring
("cStr = read("download.exe
+see "Size : " + len(cStr) + nl
+md5 : " + md5(cStr) + nl"
+sha1 : " + sha1(cStr) + nl"
+sha256 : " + sha256(cStr) + nl"
+sha224 : " + sha224(cStr) + nl"
 +sha384 : " + sha384(cStr) + nl"
sha512 : " + sha512(cStr) + nl

نفس المثال السابق باستخدام مكتبة “stdlib.ring”

"Load "stdlib.ring
osec = new secuirty
}osec
("cStr = read("download.exe
+see "Size : " + len(cStr) + nl
+md5 : " + md5(cStr) + nl"
+sha1 : " + sha1(cStr) + nl"
+sha256 : " + sha256(cStr) + nl"
+sha224 : " + sha224(cStr) + nl"
+sha384 : " + sha384(cStr) + nl"
+sha512 : " + sha512(cStr) + nl"

{

وهناك دوال اخري تستخدم مع الانترنت وتحتاج لاستدعاء مكتبة أخري وهي: “internetlib.ring” 

وأيضايمكن استدعاء مكتبة “stdlib.ring”  واستخدام تلك الدوال الخاصة بالانترنت داخل Object من Class باسم “internet”.

"load "internetlib.ring

ثم نستخدم دوال الانترنت التالية:

  • Download
  • SendEmail

download() Function

Download(cURL) ---> String contains the server response

SendEmail() Function

(SendEmail(cSMTPServer,cEmail,cPassword,cSender,cReceiver,cCC,cTitle,cContent

مثال توضيحي باستخدام مكتبة Stdlib

"Load "stdlib.ring
ointernet = new internet
}ointernet
("cStr= download("www.ring-lang.sf.net
see cStr
(write("download.txt",cStr
{

ونفس المثال السابق بمكتبة internetlib

"load "internetlib.ring
("cStr= download("www.ring-lang.sf.net
see cStr
(write("download.txt",cSt

ونكتفي بهذا اليوم وسوف نتحدث في المقالة السابقة عن باقي استخدامات مكتبة ال StdLib

تستطيع الاطلاع علي المشاريع مفتوحة المصدر من الموقع  GitHub
الموقع الرسمي للغة  http://ring-lang.net

والي اللقاء

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s