انتقل إلى المحتوى الرئيسي

تشفير المفتاح المتماثل

في هذا الدرس سنتناول تشفير المفتاح المتماثل الذي يؤمّن كثيرًا من البيانات الساكنة والمنقولة بفضل كفاءته العالية.

بنهاية الدرس سنكون قد غطّينا:

  • ما هو تشفير المفتاح المتماثل
  • أمثلة برمجية بلغة Python توضّح استخدام تشفير المفتاح المتماثل
  • نظرة على تطبيقات تشفير المفتاح المتماثل
  • تطبيقات تشفير المفتاح المتماثل
  • أمان تشفير المفتاح المتماثل
  • التهديدات التي تواجه هذه الخوارزميات من الحواسيب الكلاسيكية والكمومية على حدٍّ سواء

مقدمة في تشفير المفتاح المتماثل

تشفير المفتاح المتماثل (SKC) هو أقدم أشكال التشفير وأكثرها بديهية. في SKC، تُؤمَّن المعلومات السرية عبر تشفير المفتاح المتماثل (SKE)، أي باستخدام مفتاح سري واحد لعمليتَي التشفير وفك التشفير معًا.

يشمل SKC:

  • دالة تشفير تحوّل نصًّا عاديًّا معيّنًا إلى ciphertext مع استخدام مفتاح سري
  • دالة فك تشفير تعكس العملية بتحويل ciphertext مجددًا إلى نص عادي باستخدام المفتاح السري ذاته

النص العادي يمكن أن يكون أي نوع من البيانات غير المشفّرة كالنص البشري الطبيعي أو الشفرة الثنائية التي يمكن الوصول إلى محتواها المعلوماتي مبدئيًّا، بينما يشير ciphertext إلى البيانات المشفّرة التي يُقصد ألّا يكون محتواها متاحًا قبل فك التشفير.

الخوارزمية التي تصف عمليتَي التشفير وفك التشفير باستخدام مفتاح سري مشترك تُسمّى أيضًا symmetric cipher.

الشكل 1: تشفير المفتاح المتماثل لنص عادي معطى إلى ciphertext وفك تشفيره مجددًا إلى النص العادي باستخدام المفتاح ذاته.

الشكل 1. تشفير المفتاح المتماثل لنص عادي معطى إلى ciphertext وفك تشفيره مجددًا إلى النص العادي باستخدام المفتاح ذاته.

خصائص أنظمة تشفير المفتاح المتماثل

يجب أن يضمن نظام تشفير المفتاح المتماثل الخصائص التالية لتأمين الرسائل — سواء أكانت بيانات مخزّنة ساكنة أم اتصالات عبر قناة إرسال ما:

  • السرية: تشير إلى خاصية حماية محتوى الرسائل المشفّرة من الوصول غير المصرّح به.
  • النزاهة: تشير إلى خاصية إمكانية اكتشاف أي تلاعب بالرسائل المشفّرة أثناء التخزين أو الإرسال.
  • الأصالة: تشير إلى خاصية تمكين مستلم الرسالة من التحقق من هوية المرسل واكتشاف انتحال الشخصية من قِبَل طرف غير مصرّح له.

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

لذا فإن تطبيق نظام تشفير مفتاح متماثل آمن يتضمّن مهمتين رئيسيتين:

  1. استخدام خوارزمية تشفير مفتاح متماثل قوية مقاومة للهجمات التشفيرية.
  2. ضمان سرية توزيع المفاتيح السرية وإدارتها.

في هذا الدرس سنناقش الجوانب المتعلقة بالمهمة الأولى التي تشكّل الاهتمام الرئيسي لتقنية SKC. أما المهمة الثانية فتحتاج إلى حلول تقع خارج نطاق SKC ذاتها وسيتم تقديمها لاحقًا.

توضيح تشفير المفتاح المتماثل باستخدام Python

سنعرض مثالًا بسيطًا لعمليتَي التشفير وفك التشفير باستخدام Caesar shift cipher الكلاسيكي ونظام Advanced Encryption System (AES) الحديث الذي أصبح معيار تشفير المفتاح المتماثل منذ عام 2001. أولًا سنضبط بعض مكتبات Python التي توفّر أصفار تشفير المفتاح المتماثل المطلوبة، ثم نحدّد النص العادي الذي نريد تشفيره.

# Added by doQumentation — required packages for this notebook
!pip install -q cryptography numpy secretpy
# Install the library if needed
# %pip install secretpy

# import the required crypto functions which will be demonstrated later
from secretpy import Caesar
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from functools import reduce
import numpy as np

# Set the plaintext we want to encrypt
plaintext = "this is a strict top secret message for intended recipients only"
print(f"\nGiven plaintext: {plaintext}")

سنرى كيفية تشفيره وفك تشفيره باستخدام طريقتين مختلفتين لتشفير المفتاح المتماثل:

  1. الكلاسيكي Caesar shift cipher
  2. البروتوكول الحديث Advanced Encryption Standard AES-256

Caesar shift cipher:

يتضمّن تشفير Caesar shift تحديد:

  • أبجدية الأحرف الممكنة للترميز
  • قيمة الإزاحة التي يمكن أن تتراوح بين 0 (بدون تشفير) وطول الأبجدية. نعتبر هذه هي المفتاح.

يُعرف بأنه monoalphabetic substitution cipher لأن كل حرف من النص العادي يُستبدل بحرف آخر في ciphertext.

في هذا المثال سنستخدم الأحرف الصغيرة من الأبجدية.

لنبدأ بإعداد الأمور.

# initialize the required python object for doing Caesar shift encryption
caesar_cipher = Caesar()

# Define the shift, ie the key
caesar_key = 5
print(f"Caesar shift secret key: {caesar_key}")

# Define the alphabet
alphabet = (
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
" ",
)
print(f"alphabet: {alphabet}")

شفّر النص العادي للحصول على النص المشفّر باستخدام تشفير Caesar.

caeser_ciphertext = caesar_cipher.encrypt(plaintext, caesar_key, alphabet)
print(f"Encrypted caeser shift ciphertext: {caeser_ciphertext}")

فكّ تشفير النص المشفّر للرجوع إلى النص العادي الأصلي باستخدام نفس المفتاح المستخدم في التشفير.

caeser_plaintext = caesar_cipher.decrypt(caeser_ciphertext, caesar_key, alphabet)
print(f"Decrypted caeser shift plaintext: {caeser_plaintext}\n")

تشفير المعيار المتقدم (AES)

هنا نشفّر النص العادي باستخدام AES، وهو خوارزمية تشفير بالمفتاح المتماثل شائعة الاستخدام.

نبدأ بإنشاء المفتاح، وفي هذه الحالة سيكون سلسلة عشوائية من 16 حرفًا.

# lambda defines an inline function in this case that takes two values a,b with the resulting expression of a+b
# reduce uses a two-argument function(above), and applies this to all the entries in the list (random alphabet characters) cumulatively
aes_key = reduce(lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)])

print(f"AES secret key: {aes_key}")

يدعم AES عدة أنماط تشغيل وعلينا تحديد النمط الذي نريد استخدامه.

نختار نمط Cipher Block Chaining (CBC) المتوفر في الكلاس modes.CBC من مكتبة cryptography. يستخدم نمط CBC في AES عشوائية لتعزيز الأمان، وهذا يستلزم تحديد Initialization Vector (IV) عشوائي، يُعرف أيضًا بـ nonce. سنستخدم سلسلة عشوائية لهذا الغرض أيضًا، تمامًا كما فعلنا مع المفتاح.

aes_initialization_vector = reduce(
lambda a, b: a + b, [np.random.choice(alphabet) for i in range(16)]
)
print(f"AES initialization vector: {aes_initialization_vector}")

يمكننا الآن إنشاء تشفير AES نيابةً عن مُرسِل الرسالة السرية. لاحظ أن initialization vector يُمرَّر إلى الكلاس modes.CBC لإعداد نمط تشغيل CBC.

ثم نشفّر النص العادي لإرساله.

# The encryptor is setup using the key and CBC. In both cases we need to convert the string (utf-8) into bytes
sender_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_encryptor = sender_aes_cipher.encryptor()

# update can add text to encypt in chunks, and then finalize is needed to complete the encryption process
aes_ciphertext = (
aes_encryptor.update(bytes(plaintext, "utf-8")) + aes_encryptor.finalize()
)

# Note the output is a string of bytes
print(f"Encrypted AES ciphertext: {aes_ciphertext}")

لفكّ التشفير، لنُنشئ تشفير AES نيابةً عن المستقبِل. لاحظ أن المستقبِل المقصود لديه حق الوصول إلى المفتاح السري وإلى initialization vector، لكن الأخير لا يشترط أن يكون سريًا.

# Similar setup of AES to what we did for encryption, but this time, for decryption
receiver_aes_cipher = Cipher(
algorithms.AES(bytes(aes_key, "utf-8")),
modes.CBC(bytes(aes_initialization_vector, "utf-8")),
)
aes_decryptor = receiver_aes_cipher.decryptor()

# Do the decryption
aes_plaintext_bytes = aes_decryptor.update(aes_ciphertext) + aes_decryptor.finalize()

# convert back to a character string (we assume utf-8)
aes_plaintext = aes_plaintext_bytes.decode("utf-8")

print(f"Decrypted AES plaintext: {aes_plaintext}")

تطبيقات التشفير بالمفتاح المتماثل

بينما خرجت الشفرات الكلاسيكية من الاستخدام منذ زمن بعيد، مثل تشفير Caesar، فإن أنظمة التشفير المتماثل الحديثة مثل AES تُستخدم في مجموعة واسعة من التطبيقات، منها:

  1. تشفير البيانات وفكّ تشفيرها: يُستخدم SKC على نطاق واسع لحماية البيانات الحساسة، سواء كانت مخزّنة على جهاز أو مُرسَلة عبر الشبكة. تشمل الأمثلة حماية بيانات اعتماد المستخدمين، وتشفير رسائل البريد الإلكتروني، وتأمين المعاملات المالية وغير ذلك.

  2. الاتصالات الآمنة: تستخدم بروتوكولات الاتصال الشائعة مثل SSL/TLS مزيجًا من تشفير المفتاح المتماثل وغير المتماثل لضمان سرية البيانات المتبادلة بين طرفين وسلامتها. تُشفَّر هذه الرسائل وتُفكَّك باستخدام تشفير المفتاح المتماثل الذي يعتمد على مفتاح مشترك. ويُتبادَل المفتاح المستخدم في التشفير المتماثل بأمان عبر تشفير المفتاح غير المتماثل الذي يعتمد على زوج مفاتيح عامة-خاصة. التشفير بالمفتاح المتماثل أسرع بكثير، ومن ثَمّ يمكن استخدامه لتشفير رسائل ضخمة الحجم.

  3. التحقق من الأصالة: في بعض السياقات، يُستخدم SKC عبر تقنيات مثل رموز مصادقة الرسائل (MACs) ورموز HMAC للتحقق من أصالة الرسائل وسلامتها، وضمان اتصالات مقاومة للتلاعب.

  4. تشفير الملفات والأقراص: تعتمد برامج تشفير القرص الكامل وأدوات تشفير الملفات على SKC لحماية البيانات الحساسة المخزّنة على الأقراص الصلبة أو أجهزة التخزين المحمولة.

  5. الشبكات الافتراضية الخاصة: تهدف تقنيات VPN إلى توفير قنوات اتصال سرية بعيدة عن التنصت، ويمكنها استخدام تشفير المفتاح المتماثل أو غير المتماثل لربط المستخدمين عن بُعد وكذلك شبكات الشركات.

التنوع الكبير في التطبيقات التي يُستخدم فيها SKC يستلزم بدوره أن تستوفي أنظمة التشفير المتماثل مجموعة من المعايير المحددة.

مبادئ التشفير بالمفتاح المتماثل

في هذا القسم، سنناقش بعض المبادئ الأساسية التي يقوم عليها أمان خوارزميات التشفير بالمفتاح المتماثل.

المقاومة ضد هجمات القوة الغاشمة: المتطلب الأساسي لأمان أي شفرة تشفير هو أن يكون حجم فضاء المفاتيح — أي عدد المفاتيح المتميزة الممكنة التي كان بإمكان مستخدم الخوارزمية الاختيار منها — كبيرًا جدًا.

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

تتجسّد المقاومة ضد الأشكال العامة لهجمات التحليل التشفيري الكافية لضمان الأمان الدلالي رسميًا عبر مفهوم عدم التمييز. وعلى الرغم من وجود عدة أشكال لعدم التمييز بمتطلبات مختلفة، يُعدّ نظام التشفير المتماثل آمنًا دلاليًا إذا استوفى معيار عدم التمييز في ظل هجوم النص العادي المختار (IND-CPA). يعني هذا أن المهاجم لا يستطيع التمييز بين تشفيري رسالتين مختلفتين حتى لو سُمح له بإرسال نصوص عادية متعددة من اختياره إلى الخوارزمية ومشاهدة النصوص المشفّرة المقابلة.

كما سنرى لاحقًا، يستلزم IND-CPA عادةً استخدام العشوائية لضمان أن كل مرة يُشفَّر فيها نص عادي معين بمفتاح سري معين، يكون النص المشفّر الناتج مختلفًا بشكل غير متوقع في كل عملية تشفير.

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

جاءت بعدها شفرات الاستبدال متعددة الأبجديات مثل تشفير Vigenère وتشفير آلة Enigma بفضاء مفاتيح كبير فعليًا يجعلها مقاومة لهجمات القوة الغاشمة، لكنها كانت عرضة لتحليل التردد وهجمات KPT على التوالي. وعلى غرار شفرات الاستبدال، فإن شفرات التبديل الكلاسيكية التي تُعيد ترتيب الحروف في الرسالة بدلًا من استبدالها، تتعرض هي الأخرى لأنواع متعددة من الهجمات كالتحريف الأنغرامي والتحليل الإحصائي والقوة الغاشمة وهجمات KPT وغيرها.

من الناحية النظرية، تشفير الاستبدال متعدد الأبجديات المعروف بـone-time pad (OTP) آمن تشفيريًا. يتميز OTP بمفتاح سري ينبغي أن يكون: (1) مكوّنًا من حروف أو بتات مختارة عشوائيًا، (2) بطول لا يقل عن النص العادي الأصلي، (3) مستخدمًا مرة واحدة فقط. لكن OTP غير عملي للتطبيقات الفعلية لأنه لو أمكن تبادل المفتاح السري — الذي يجب أن يكون بطول النص العادي ولا يُستخدم إلا مرة — بأمان، لأمكن كذلك تبادل النص العادي الأصلي. يبرز OTP في المقابل قيمة العشوائية في توليد نصوص مشفّرة آمنة.

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

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

الجدول 1: أحجام فضاء المفاتيح لبعض الشفرات المتماثلة

| Cipher | Key length | Key space size |

|--------------|------------------|-------------------------------------------| | Caeser shift | 1 | alphabet-size | | Vigenere | n | alphabet-sizen^\mathrm{n} | | One-time-pad | plaintext-length | alphabet-sizeplaintextlength^\mathrm{plaintext-length} | | DES | 56 | 256^\mathrm{56} | | AES-128 | 128 | 2128^\mathrm{128} | | AES-192 | 192 | 2192^\mathrm{192} | | AES-256 | 256 | 2256^\mathrm{256} | | ChaCha20 | 256 | 2256^\mathrm{256} | أنظمة التشفير بالمفتاح المتماثل الحديثة تتغلب إلى حد بعيد على قيود الشفرات الكلاسيكية. فهي تنتج نصًا مشفرًا مقاومًا لـ cryptanalysis، وتتميز بمساحات مفاتيح كبيرة مع كونها أكثر كفاءة عملية بكثير من الـ OTP.

Block ciphers: فئة من الشفرات الحديثة — مثل DES وAES — تحقق الأمان بالجمع بين مبدأَي confusion وdiffusion اللذين قدّمهما Claude Shannon في الأصل. نتحدث عن هذه المفاهيم في سياق أنظمة التشفير التي تعمل على التمثيلات الثنائية للرسائل:

  • Confusion: هي الخاصية التي بموجبها يعتمد كل bit في النص المشفر على عدة bits من المفتاح السري. وهي تضمن أن أي تغيير بسيط في المفتاح السري يعدّل تقريبًا كل bits النص المشفر، مما يُعمّي العلاقة بين النص المشفر والمفتاح السري.

  • Diffusion: هي الخاصية التي بموجبها يؤدي قلب bit واحد في النص العادي إلى تعديل ما يقارب نصف bits النص المشفر والعكس صحيح. وتُخفي diffusion العلاقات الإحصائية بين النص العادي والنص المشفر. تُحقق الشفرات ذات الـ diffusion الكافية ما يُعرف بـ avalanche criterion في علم التشفير.

تُطبّق block ciphers الـ confusion والـ diffusion باستخدام بنى تشفيرية تُعرف بـ substitution-permutation networks (SPNs) تعمل على كتل بيانات منفصلة. تقبل الـ SPN كتلة من النص العادي والمفتاح السري كمدخلات، وتُنفّذ عددًا محددًا من rounds من التحويلات لإنتاج كتلة نص مشفر. يتكوّن كل round من بنى رياضية متناوبة تُعرف بصناديق الاستبدال (S-boxes) وصناديق التبديل (P-boxes) أو ما يعادلها من عمليات.

تُطبّق هذه البنى على التوالي تحويلات خطية وغير خطية معقدة على كتل المدخلات، مما يؤدي إلى avalanche effects في النص المشفر.

تُصمَّم SPNs بحيث يزيد تكثيف عدد الـ rounds عادةً من أمان الشفرة. يقودنا هذا إلى مفهوم security margin. Security margin: هو الفرق بين عدد rounds في التطبيق الكامل للشفرة المبنية على SPN، وأقصى عدد من rounds يُعرف أنه قابل للكسر باستخدام أفضل هجوم معروف في العالم الواقعي.

على سبيل المثال، أفضل الهجمات الحالية الأسرع من brute-force ضد AES-256 يمكنها كسر ما يصل إلى 9 rounds من أصل 14 round في الشفرة الكاملة عند استخدامها في الوضع المعياري المعروف بـ Electronic Codebook (ECB) mode. لذلك، security margin الحالي لـ AES-256 هو 5 rounds.

Stream ciphers: كبديل لـ block ciphers، صمّم علماء التشفير الحديثون أيضًا stream ciphers آمنة عمليًا مثل Chacha20. تستخدم هذه الشفرات العشوائية كجزء أساسي من تصميمها، وتعمل على keystreams شبه عشوائية من bits بدلًا من كتل بيانات منفصلة.

وبناءً على ذلك، تجمع stream ciphers بين مفتاح سري وinitialization vector (IV) لتغذية pseudorandom random number generator (PRNG) لإنتاج keystream من bits عشوائية تُدمج بعد ذلك مع النص العادي للحصول على النص المشفر. بهذا المعنى، تشبه stream ciphers الـ one-time pad (OTP) لكنها تتميز بأطوال مفاتيح سرية أقصر ومفاتيح قابلة لإعادة الاستخدام، مما يجعلها أكثر عملية. غير أنها لهذا السبب بالذات لا تضمن السرية المطلقة على عكس OTP.

Semantic security: نختتم هذا القسم بالعودة إلى مفهوم الـ semantic security أو الـ IND-CPA level security الذي قدّمناه أعلاه. العمليات الأساسية التي تُنفّذها block ciphers مثل S-box وP-box هي عمليات حتمية. هذا يعني أنه في أوضاع التشغيل المعيارية مثل ECB، أي زوج من النص العادي والمفتاح يُنتج دائمًا نفس النص المشفر، وهو وضع عرضة لهجمات chosen-plain-text.

لتحقيق الأمان بمستوى IND-CPA، تحتاج block ciphers إلى العمل في وضع يستخدم العشوائية المُدخَلة عبر initialization vector (IV) شبه عشوائي مع اشتراط إضافي بأن لا تستخدم أي عمليتان تشفير نفس زوج المفتاح-IV. يدعم AES عدة أوضاع تشغيل مثل cipher block chaining (CBC) التي توفر أمانًا بمستوى IND-CPA. ينطبق متطلب مشابه أيضًا على stream ciphers حيث يجب عدم استخدام نفس زوج المفتاح-IV لتغذية PRNG أكثر من مرة إن كان IND-CPA مطلوبًا.

بعد أن قدّمنا بعض المبادئ الأساسية لـ SKC، نُدرج الآن بعض خوارزميات المفتاح المتماثل الشائعة لتوضيح تنوع المقاربات المتبعة في أنظمة التشفير الحديثة. كلٌّ من block ciphers وstream ciphers الحديثة تُستخدم في سياقات مختلفة كما يتضح أدناه.

  1. Advanced Encryption Standard: AES، الذي قدّمناه أعلاه، هو المعيار الفعلي الحالي لـ SKC نظرًا لخصائصه الأمنية والكفاءة والأداء. يتميز AES بأحجام مفاتيح ثابتة تبلغ 128 و192 و256 bit ويستخدم substitution-permutation network (SPN) متعدد الـ rounds. يُعرف AES بمقاومته لمجموعة واسعة من هجمات cryptanalysis. تم الإعلان عن AES كمعيار Federal Information Processing Standard (FIPS) للتشفير بالمفتاح المتماثل في الولايات المتحدة في عام 2001.

  2. Data Encryption Standard (DES) and Triple Data Encryption Standard (3DES): كان DES block cipher اخترعه في الأصل Horst Feistel وزملاؤه في IBM® في السبعينيات، واستخدم SPN بمفتاح قصير نسبيًا من 56 bit. اعتُمد DES كـ FIPS للتشفير بالمفتاح المتماثل في الولايات المتحدة حتى أواخر التسعينيات حين ثبت إمكانية كسره باستخدام هجمات brute force بأجهزة متخصصة بسبب صغر حجم مساحة مفاتيحه. لاحقًا، جاء 3DES كبديل يُطبّق خوارزمية DES ثلاث مرات بمفاتيح مختلفة مما يرفع طول المفتاح إلى 168 bit. مع ذلك، تم تجاوز 3DES إلى حد بعيد بفضل AES.

  3. Blowfish and Twofish: Blowfish وخلفه Twofish هما block ciphers اقترحهما عالم التشفير Bruce Schneier في التسعينيات. يسمح Blowfish وTwofish بأطوال مفاتيح متغيرة تصل إلى 448 bit و256 bit على التوالي، مما يوفر مرونة في الموازنة بين الأمان والأداء. على عكس AES، يتضمنان أيضًا S-boxes تعتمد على المفتاح. كان Twofish أحد المتأهلين النهائيين في منافسة NIST لاختيار معيار AES لكنه لم يُختر في نهاية المطاف. كلتا الخوارزميتين تُعتبران حاليًا آمنتين.

  4. Rivest Ciphers (RC2, RC4, RC5, and RC6): عائلة Rivest Cipher (RC) من خوارزميات المفتاح المتماثل صمّمها Ron Rivest ابتداءً من الثمانينيات. كان RC2 block cipher مبكرًا من 64 bit، بينما كان RC4 stream cipher استُخدم على نطاق واسع في بروتوكولات الأمان المتعلقة بحركة مرور الويب نظرًا لبساطته وسرعته. لا يُعتبر أيٌّ منهما آمنًا حاليًا. RC5 وRC6 هما block ciphers مبنيان على SPN وصُمّما بحجم block وحجم مفتاح وعدد rounds قابلة للتخصيص. مثل Twofish أعلاه، كان RC6 متأهلًا نهائيًا في منافسة NIST لـ AES ويُعتبر آمنًا.

  5. Salsa20 and ChaCha20: Salsa20 وChaCha20 هما عائلة متعلقة من stream ciphers صمّمها عالم التشفير Daniel Bernstein في العقد الأول من الألفية الثالثة. Salsa20 جزء من محفظة profile-1 لمشروع eSTREAM الأوروبي للتحقق من صحة التشفير. ChaCha20، وهو تعديل على Salsa20، صُمّم لتعزيز خصائص الـ diffusion والأداء. يُعتبر ChaCha20 حاليًا آمنًا ويوفر أداءً أفضل في غياب تسريع AES المخصص في الأجهزة. لذلك يجد ChaCha20 استخدامًا في سياقات معينة مثل بروتوكولات الشبكات كـ QUIC والأجهزة المحمولة ذات المعالجات المبنية على ARM.

مزايا التشفير بالمفتاح المتماثل

بعد أن استعرضنا خصائص أنظمة التشفير بالمفتاح المتماثل وبعض المبادئ التي تُبنى عليها، نُدرج الآن بعضًا من أبرز مزايا SKC مقارنةً بالتشفير بالمفتاح غير المتماثل. سنناقش الأخير في الدروس التالية.

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

  2. قابلية التوسع: نظرًا للحمل الحسابي المنخفض نسبيًا، تتوسع خوارزميات المفتاح المتماثل بشكل جيد مع زيادة عدد المستخدمين وحجم البيانات المُشفَّرة.

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

تحديات وقيود التشفير بالمفتاح المتماثل

على الرغم من المزايا، يواجه التشفير بالمفتاح المتماثل أيضًا بعض التحديات والقيود:

  1. توزيع المفاتيح وإدارتها: في SKC، يجب أن يمتلك كلٌّ من المُرسِل والمُستقبِل للرسالة نفس المفتاح الذي يجب الحفاظ على سريته من الأطراف غير المصرّح لها. إن اعتُرض المفتاح أو كُشف بأي طريقة من قِبَل طرف ثالث، فإن أمان البيانات المشفرة يضيع أيضًا. لذا فإن التوزيع الآمن للمفتاح السري وإدارته يُمثّل تحديًا كبيرًا. غير أن الحل لهذا التحدي يقع خارج نطاق SKC نفسها.

  2. غياب عدم الإنكار: يشير Non-repudiation إلى القدرة على إثبات أن طرفًا معينًا قد أرسل رسالة ما. في SKC، بما أن المفتاح نفسه يُستخدم للتشفير وفك التشفير، لا يمكن تحديد أي طرف أنشأ نصًا مشفرًا معينًا. في المقابل، يوفر التشفير بالمفتاح غير المتماثل عدم الإنكار من خلال استخدام digital signature.

لمعالجة هذه التحديات، كثيرًا ما يُستخدم التشفير بالمفتاح المتماثل بالتزامن مع التشفير بالمفتاح غير المتماثل. فمثلًا، يُستخدم عادةً التشفير بالمفتاح غير المتماثل لنقل مفتاح سري مشترك قصير نسبيًا بأمان بين المُرسِل والمُستقبِل. هذا يُتيح لاحقًا استخدام التشفير بالمفتاح المتماثل لنقل بيانات ورسائل أكبر بكفاءة أعلى.

الحوسبة الكمومية والتشفير بالمفتاح المتماثل: المخاطر والتخفيف

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

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

هجمات التشفير الكمومية

هناك فئتان متمايزتان من التهديدات الكمومية للخوارزميات التشفيرية التقليدية:

  1. Quantum brute force attacks: تشير إلى مواقف يستخدم فيها المهاجم حاسوبًا كميًا لتنفيذ خوارزمية كمومية متخصصة لإجراء بحث brute force في مساحة مفاتيح شفرة متماثلة. البدائي الكمومي الأكثر أهمية لتمكين هذا النوع من الهجمات هو Grover's algorithm.

  2. Quantum cryptanalytic attacks: تشير إلى مواقف يُنشَر فيها الحواسيب الكمومية لتنفيذ هجمات cryptanalytic تهدف إلى استرداد المفتاح السري أو النص العادي بطريقة أكثر كفاءة من بحث brute force. إمكانية تنفيذ هجمات cryptanalytic كمومية ناجحة تعتمد على عوامل عديدة تتعلق بالبنية الرياضية للشفرة المُحلَّلة وكذلك نقاط ضعف محتملة في تطبيقات بعينها.

استراتيجيات التخفيف من مخاطر الهجمات الكمومية

قبل أن نتحدث عن استراتيجيات التخفيف من مخاطر الهجمات الكمومية، لنتعرف على مفهوم مستوى الأمان للشفرة التشفيرية:

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

عادةً، يُعبَّر عن مستوى الأمان بالـ bits؛ أي بشكل عام، توفر الشفرة أمانًا بـ N bit إذا تطلبت O(2N)\mathcal{O}(2^{N}) عملية لكسرها. على الحواسيب الكلاسيكية، بافتراض أن الشفرة المتماثلة آمنة من الناحية التشفيرية في جوانبها الأخرى، يكون مستوى الأمان مرادفًا تقريبًا لطول المفتاح.

على سبيل المثال، يُعتبر مستوى الأمان لـ AES-128 الذي يتميز بمفتاح 128 bit عمومًا 128 bit، لأنه سيتطلب من المهاجم الذي يستخدم حاسوبًا كلاسيكيًا ما يقارب 2128^{128} عملية لتجربة جميع المفاتيح الممكنة من 128 bit في مساحة المفاتيح.

هجمات brute force والتخفيف منها

مخاطر هجوم brute force الكمومي: يغيّر هجوم brute force الكمومي هذا التقييم لأن Grover's algorithm يُمكّن المهاجم الذي يمتلك حاسوبًا كميًا مناسبًا من البحث في مساحة مفاتيح الشفرة بسرعة تربيعية أسرع من أي حاسوب كلاسيكي.

على سبيل المثال، يمكن تحقيق نفس هجوم brute force على AES-128 باستخدام Grover's algorithm بـ 264^{64} عملية فقط. لذلك ينخفض مستوى الأمان لـ AES-128 من 128 bit إلى 64 bit في مواجهة خصم كمومي يُشغّل Grover search. بما أن القدرة الحسابية نمت تاريخيًا بشكل أسّي مع الوقت، يُعتبر مستوى الأمان البالغ 64 bit غير آمن حاليًا، مما يعني أنه بمجرد تحقق حواسيب كمومية كافية القدرة، سيتعين التخلي عن AES-128.

ينطبق نفس النوع من الحسابات على block ciphers أو stream ciphers المتماثلة الأخرى، حيث ينخفض مستوى الأمان لطول مفتاح معين فعليًا إلى النصف بفعل Grover's algorithm.

التخفيف من مخاطر هجوم brute force الكمومي: تُلمّح الاعتبارات أعلاه إلى أن طريقة واضحة لمقاومة هجمات brute force الكمومية هي على الأقل مضاعفة الحد الأدنى لأطوال المفاتيح المستخدمة للتشفير بالمفتاح المتماثل.

لذلك، لضمان أمان بمستوى 128 bit في مواجهة هجمات brute force الكمومية، يكفي استخدام شفرات مثل AES-256 أو ChaCha20 التي تستخدم مفاتيح 256 bit. يُعتبر هذا آمنًا لأنه حتى مع الحواسيب الكمومية، فإن تنفيذ 2128^{128} عملية لكسر الشفرات غير ممكن عمليًا في المستقبل المنظور.

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

هجمات cryptanalytic والتخفيف منها

مخاطر هجمات cryptanalytic الكمومية: المخاطر التي تتعرض لها أنظمة التشفير بالمفتاح المتماثل من هجمات cryptanalytic كمومية يجري بحثها بنشاط حاليًا من قِبَل علماء التشفير. الجمع بين الحوسبة الكلاسيكية والكمومية يوسّع محتملًا مجموعة الأدوات المتاحة للمهاجمين للتحقيق في نقاط ضعف البنية الرياضية للشفرات، ويجري حاليًا اقتراح مجموعة واسعة من هجمات cryptanalytic كمومية جديدة. تشمل هذه quantizations لتقنيات كلاسيكية معروفة مثل linear and differential cryptanalysis وكذلك أوضاع هجوم جديدة ليس لها نظير كلاسيكي.

وجدت دراسة حديثة لـ cryptanalysis الكمومي على AES أن الشفرة ظلت مقاومةً لمختلف هجمات cryptanalysis الكمومية المعروفة واستمرت في إظهار security margin كافٍ بعد الكم. غير أن بعض الدراسات وجدت أن شفرات متماثلة متعددة تُعتبر آمنة كلاسيكيًا يمكن كسرها بسهولة عبر ما يُعرف بـ quantum chosen plain text attack. لذلك، اقتُرحت أيضًا بدائل جديدة للتشفير بالمفتاح المتماثل مصمَّمة خصيصًا لعصر ما بعد الكم.

التخفيف من مخاطر هجمات cryptanalytic الكمومية: بالنظر إلى أن cryptanalysis الكمومي كتخصص لا يزال في مهده، قد يشهد التشفير بالمفتاح المتماثل بعد الكم تطورًا سريعًا مع ظهور هجمات cryptanalytic كمومية جديدة واقتراح شفرات جديدة مقاومة لها وتقييمها. لذلك، أفضل استراتيجية للتخفيف من مخاطر هجمات cryptanalytic الكمومية في المستقبل المنظور هي cryptographic agility (أو crypto-agility). تشير crypto-agility إلى قدرة نظام المعلومات على اعتماد بدائل تشفيرية بسرعة وسهولة دون إجراء تغييرات مُخلِّة في البنية التحتية للنظام.

تتطلب crypto-agility القدرة على استبدال الخوارزميات القديمة المستخدمة للتشفير أو فك التشفير أو التوقيعات الرقمية أو غيرها من الوظائف التشفيرية بأدنى جهد وتعطيل. ستكون الأنظمة المتمتعة بـ crypto-agility في وضع جيد لإدارة الانتقال إلى التشفير بالمفتاح المتماثل بعد الكم.

ملخص

يوفر التشفير بالمفتاح المتماثل حلولًا قوية وفعّالة لتأمين المعلومات الرقمية. بساطة استخدام نفس المفتاح للتشفير وفك التشفير تُتيح أداءً عاليًا وقابلية توسع، مما يجعل SKC مناسبًا لمجموعة واسعة من التطبيقات.

يعتمد أمان SKC على مقاومة الخوارزميات للهجمات التشفيرية وعلى الإدارة السليمة للمفتاح السري. تجمع أنظمة التشفير بالمفتاح المتماثل الحديثة بين مبادئ confusion، وdiffusion، والعشوائية، جنبًا إلى جنب مع أحجام مفاتيح كافية، لتحقيق semantic security. إدارة المفاتيح السرية، رغم أهميتها البالغة، لا يمكن تحقيقها بـ SKC وحدها.

فهم خصائص وقيود SKC سيُمكّن المطورين من تصميم وتطبيق ونشر حلول تقنية معلوماتية آمنة باستخدام مقاربات تشمل أطوال مفاتيح أكبر عند الحاجة، واستخدام خوارزميات جديدة.