هل تخيلت يومًا أنك تُرسل رسالة سرية عبر الهاتف دون أن يقرأها أحد غيرك؟ هذه هي قوة علم التشفير، وهو علم تحويل المعلومات إلى شكل غير مفهوم إلا لمن لديه مفتاح فك تشفيرها. تخيل نفسك مثل العميل السري الذي يرسل معلومات مهمة، ويُحاول الأعداء فك شفرة الرسالة، بينما أنت فقط من يعرف كيف تُعيدها إلى شكلها الأصلي.
البيانات الرقمية مثل العملة في عالمنا الحالي، ونحتاج حمايتها من الوصول غير المصرح به. فكر في البيانات المصرفية، ورسائل البريد الإلكتروني، وكلمات المرور. جميعها معلومات حساسة تُحفظ باستخدام علم التشفير.
أبسط مثال هو تشفير كلمة المرور. عند تسجيلك في أي موقع إلكتروني، تُدخل كلمة مرور تُحوّل إلى مجموعة من الأرقام والحروف المشفرة. لذلك، حتى لو تم اختراق النظام، ستكون كلمة المرور غير قابلة للقراءة من قِبل المتسللين.
هناك نوعان أساسيان من التشفير:
التشفير المتماثل (Symmetric Encryption): يستخدم هذا النوع مفتاحًا واحدًا لكل من تشفير وفك تشفير الرسالة. تخيلها مثل قفل يُفتح بنفس المفتاح من الجانبين. يُستخدم هذا النوع في التطبيقات التي تتطلب سرعة عالية مثل تشفير الملفات، و لكنه يُعاني من مشكلة نقل المفتاح بشكل آمن.
from cryptography.fernet import Fernet
# توليد مفتاح جديد
key = Fernet.generate_key()
# إنشاء كائن Fernet
f = Fernet(key)
# تشفير البيانات
encrypted_data = f.encrypt(b"هذا نص سري")
# فك تشفير البيانات
decrypted_data = f.decrypt(encrypted_data)
print(f"البيانات المشفرة: {encrypted_data}")
print(f"البيانات المخفية: {decrypted_data.decode()}")
Fernet
هو أحد خوارزميات التشفير المتماثل في بيثون، و لكن لا يُنصح باستخدامه في تطبيقات حقيقية لاحتوائه على بعض الثغرات الأمنية. التشفير غير المتماثل (Asymmetric Encryption): يستخدم هذا النوع مفتاحين مختلفين، مفتاح عام و مفتاح خاص. تخيلها مثل صندوق به قفل يُفتح بمفتاح خاص و قفل آخر يُفتح بمفتاح عام ، بحيث يستطيع أي شخص فتح الصندوق باستخدام المفتاح العام ، ولكن لا يستطيع إغلاقه إلا باستخدام المفتاح الخاص . يُستخدم هذا النوع في التطبيقات التي تُؤكد على الأمان ، مثل التوقيعات الرقمية و التبادل المؤمن للبيانات .
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat, PrivateFormat, BestAvailableEncryption, NoEncryption
# توليد مفتاح خاص
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
# الحصول على المفتاح العام
public_key = private_key.public_key()
# تشفير البيانات باستخدام المفتاح العام
encrypted_data = public_key.encrypt(
b"هذه رسالة سرية",
BestAvailableEncryption(rsa.padding.OAEP(
mgf=rsa.padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
))
)
# فك تشفير البيانات باستخدام المفتاح الخاص
decrypted_data = private_key.decrypt(
encrypted_data,
rsa.padding.OAEP(
mgf=rsa.padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(f"البيانات المشفرة: {encrypted_data}")
print(f"البيانات المخفية: {decrypted_data.decode()}")
rsa
هو أحد أكثر خوارزميات التشفير غير المتماثل شهرة في بيثون ، و يُستخدم في تطبيقات كثيرة ، مثل SSL/TLS
. مع تطور التكنولوجيا، يُصبح علم التشفير أكثر تعقيدًا و قوة. يُستخدم في التطبيقات العسكرية و البنكية و حتى في تطبيقات الاتصال اليومي .
من المهم أن نكون على دراية بأساسيات علم التشفير ، و أن نُدرك أهميته في حماية معلوماتنا في هذا العالم المتصل.
هل أنت مستعد لاكتشاف أكثر عن علم التشفير؟ يمكنك التواصل معنا للحصول على المزيد من المعلومات و تطوير مهاراتك في هذا المجال .
© 2020 All Rights Reserved. Information Network