الرئيسية المقالاتتشفير OpenPGP

OpenPGP هو معيار (Standard) تشفير مستخدم بشكل واسع لتشفير الملفات و الرسائل, و لتوقيعها إلكترونياً (Digital signing) يستخدم عدة طرق, من ضمنها طريقة المفتاح العام (Public-key cryptography).

PGP diagram

By xaedes & jfreax & Acdx (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons

الجزء النظري

نشأ معيار OpenPGP من برنامج PGP (Pretty Good Privacy), الذي كتبه Phil Zimmermann عام 1991, و وزعه مجاناً على الإنترنت مرفقاً بالـ Source-code. كان هدف Zimmermann توفير الحماية و الخصوصية للمستخدمين المعرضين للخطر على الإنترنت, نتيجة ً للتحرش أو التهديد الحكومي لهم.
تعرض Zimmermann للمضايقة من قبل الحكومة الأمريكية, و فتحت تحقيقاً جنائياً لأنه خالف أمر منع تصدير الذخيرة بدون إذن, و الذي يعرف طرق التشفير التي تستخدم مفاتيحاً أكبر من 40-bit كذخيرة (لأن PGP استخدم مفاتيح حجمها 128-bit على الأقل).
قام Zimmermann بإنشاء شركته, عام 1996 بعد إغلاق التحقيق لترعى البرنامج. قامت الشركة بالاندماج مع Viacrypt, و صار اسمها PGP Inc. بعد ذلك.

واجهت الشركة الجديدة بعض المشاكل مع شركة RSADSI التي قامت قبل دمج الشركتين بإعطاء Viacrypt رخصة ً لاستخدام RSA, و ادعت أن الرخصة لا تنطبق على الشركة المدمجة (قامت الشركة لاحقاً عام 2000 بنشر RSA كـ Public domain). لذا قام فريق العمل باعتماد خطة ٍ غير رسمية بعدم استخدام الخوارزميات (Algorithms) التي فيها صعوبات ترخيص. و عام 1997 تقدمت الشركة باقتراح لـ IETF بإنشاء معيار اسمه OpenPGP, و التصريح باستخدام اسم OpenPGP للمعيار و أي برنامج يلتزم به. جاء هذا بعد إنتشار PGP و رغبة كتاب البرامج بإنشاء برامج متوافقة مع PGP 5 (الذي نشره Zimmermann و فريقه, و ليس PGP Inc. و اسمه الأصلي PGP 3), مما دفع Zimmermann إلى القناعة بضرورة وجود معيار مفتوح لتشفير PGP.

قام Werner Koch عام 1999 بنشر برنامجه GnuPG (GNU Privacy Guard) المعروف اختصاراً بـ GPG, و هو جزء من مشروع GNU كبديل حر لـ PGP. يلتزم GPG بمعيار OpenGPG, و يمكن لكل البرامج التي تلتزم بالمعيار التعامل مع بعضها.

يجب تلخيص الأسماء المختلفة, لأنها تسبب الالتباس. PGP هو البرنامج الذي تملكه حالياً شركة Symantec, و منه اشتق OpenGPG؛ المعيار المفتوح للتشفير. GPG هو برنامج آخر يستخدم OpenGPG. يستخدم اسم PGP أحياناً للدلالة على نوع التشفير (الذي هو في أغلب الأحيان OpenGPG في الحقيقة).

كيف يعمل تشفير PGP؟

عالم التشفير علم يدعى Cryptography, و هو علم واسع يعتمد على المشاكل الرياضية التي لا يمكن حلها (عندما يقال لا يمكن حلها, يقصد بذلك لا تحل باستخدام الهاردويير المتوفر في وقت معقول. عندما يكتشف حل يسمى هجوماً “Attack”, حتى لو كان الحل نظرياً لا يمكن تطبيقه). لذا فهو يتطلب فهماً لعلم الرياضيات, و يعتمد مبادئ كثيرة لطرق التشفير المختلفة. لن أفصل في الـ Cryptography لأن هذا الموقع ليس موضعها, كما أنني لم أنهي فهم الـ Cryptography النظرية و لا أفهم المشاكل الرياضية المعقدة المستخدمة في كثير منها.

يقوم برنامج التشفير بعدة عمليات لا يراها المستخدم, و لكن ما يراه المستخدم هو كلمة السر, المفتاح السري, و المفتاح العام. هذه الجزئية أو الطريقة تدعى Public-key cryptography.

تعريفات

  • Cipher: هي الخوارزمية (Algorithm) المستخدمة لتنفيذ التشفير أو فكه. الخوارزمية هي مجموعة خطوات متسلسلة محددة مسبقاً, في عالم الكمبيوتر تكون جملاً منطقية (مثل إذا كان الرقم 1< اذهب إلى خطوة 2, إذا كان 1> اذهب إلى خطوة 3). يمكن أن يكون Stream cipher, أي أنه يقوم بتشفير كل حرف أو وحدة بشكل متتابع (يعني أنه يقوم لتشفير ABC بتشفير A أولاً, ثم B, و هكذا), أو Block cipher أي أنه يقوم بتقسيم البيانات إلى قطع ثابتة الحجم (تدعى Blocks, و تقاس بالـ Byte), و يشفر كل قطعة. يستخدم الـ Block cipher لتشفير البيانات المخزنة معلومة الحجم, أما Stream cipher فهو أسرع و أقل أماناً, و لكنه فعال عندما يكون حجم البيانات مجهولاً و عندما لا يعاد استخدام المفاتيح (مثل استخدامه لتشفير شبكات الـ Wi-Fi).
    في برنامج GPG تستخدم كلمة Cipher للإشارة إلى Symmetric-key algorithms.
Euclid flowchart

By Somepics (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons

  • Plaintext & Ciphertext: النص أو البيانات المدخلة في الخوارزمية بغرض تشفيرها تدعى Plaintext, بينما يدعى المخرج المشفر بـ Ciphertext. إذا كان التشفير صحيحاً, و كانت الخوارزمية آمنة, فلن يفك Ciphertext إلى Plaintext إلا بالخطوات التي تحددها الخوارزمية لذلك.
  • Key: معطى يحدد قبل قيام الـ Cipher بالتشفير يحدد المخرج (يمكن أن يكون كلمة سر أو يحسب من كلمة سر, أو بيانات عشوائية محفوظة في ملف, إلخ. بدون المفتاح لا يمكن تنفيذ التشفير أو فكه. يقاس حجم المفتاح بالـ bit. حجم المفتاح الأكبر لا يعني بالضرورة زيادة الأمان. يقاس مدى أمان التشفير بالـ bit أيضاً, و هو أسرع طريقة معروفة (نظرياً أو مطبقة) لكسر التشفير حسب تعقيد الهجوم (Complexity) 2n (و يعني هذا أسرع من Brute force). و يقال في هذه الحالة أن قوة التشفير هي n-bit.
  • Alice & Bob: يستخدم هذا الاسمان لتسهيل الفهم و الشرح في مجال التشفير. تكون Alice عادة ً هي المرسل, و Bob هو المستقبل.
  • Symmetric encryption: و تدعى أيضاً Symmetric-key cryptography, يمكن ترجمتها إلى التشفير المتماثل, و تعني أن نفس المفتاح المستخدم للتشفير يستخدم لفكه (مثل التشفير باستخدام كلمة سر, ثم فك التشفير بنفس الكلمة).
  • Asymmetric encryption: و تشتهر بـ Public-key cryptography (أو Pubkey اختصاراً), و هي عكس التشفير المتماثل. يكون للمستخدم (و اسمه Bob مثلاً) مفتاحاً عاماً (Public-key) يمكن للمستخدمين الآخرين (كـ Alice) تشفير الرسائل المرسلة إليه, ثم يستخدم Bob مفتاحه الخاص (Private-key) لفك تلك الرسالة (و لا يستطيع أحد فكها غيره, حتى من شفرها).
  • Hash function: تدعى بالعربية “دالة تشفيرية”. تستخدم الدالة (Function) لحساب سلسلة من البيانات تعبر عن المدخل, و لكن لا يمكن استنتاج المدخل من خلالها. يسمى المخرج Hash, و هذا الـ Hash هو مجموعة من الحروف و الأرقام العشوائية و لا يمكن عكسها لحساب المدخل. لا يمكن أن يتطابق الـ Hash لرسالتين مختلفتين (مما يعني أن الـ Hash فريد). تستخدم للتحقق من صحة الرسائل (إذ أن أي تغيير في الرسالة سيغير الـ Hash), و للتحقق من كلمات السر (يفترض أن تستخدم كل المواقع و التطبيقات التي تخزن كلمات السر هذه الطريقة, و لكن لا يحدث هذا دائماً. إذ لا يجب أن يقوم الموقع بقراءة كلمة السر مباشرة من ملف أو قاعدة بيانات و يقارنها بكلمة السر المرسلة عبر الموقع, بل عند التخزين يجب أن يقوم بحساب و تخزين الـ Hash لها دون تخزين الكلمة نفسها, ثم عند إدخالها في المرات المقبلة يقوم الموقع بحساب الـ Hash للكلمة المدخلة و يقارن الناتج مع الـ Hash المخزن), و للتحقق من صحة الملفات (و يدعى الـ Hash في هذه الحالة Checksum), و غير ذلك.
    من الأمثلة المشهورة المستخدمة هي الـ Magnet URI في الـ P2P (و هو MD4 hash).

أمثلة:

Cipher: من أشهر الخوارزميات المستخدمة خوارزمية Rijndael المستخدمة في نظام AES. هناك أمثلة أخرى قوية مثل Twofish, Serpent, و RSA. من الأمثلة المكسورة RC4 و DES.
Symmetric cryptography: نظام AES واحد منها, و كذلك Twofish, Serpent, Skipjack, Blowfish, و غيرهم.
Public-key cryptography: تستخدم RSA, ElGamal, Diffie-Hellman (DH), كأمثلة مشهورة في PGP.
Hash function: دالة MD5 و SHA-1 من أشهر الدالات, و لكنهما غير آمنين. من الأمثلة الأخرى SHA-2 و SHA-3.

Cryptographic Hash Function

By User:Jorge Stolfi based on Image:Hash_function.svg by Helix84 (Original work for Wikipedia) [Public domain], via Wikimedia Commons

Public-key-crypto-1

By KohanX [Public domain], via Wikimedia Commons

Public key encryption

By No machine-readable author provided. Davidgothberg assumed (based on copyright claims). [Public domain], via Wikimedia Commons

Public key shared secret

By No machine-readable author provided. Davidgothberg assumed (based on copyright claims). [Public domain], via Wikimedia Commons

الجزء العملي

تريد Alice إرسال رسالة مشفرة إلى Bob. فتقوم في البداية بالبحث عن اسمه في الـ Key servers (هذه سيرفرات يمكن رفع المفاتيح العامة إليها للبحث عنها), و لكنها لا تجده.
تقوم بطلبه من Bob, و لكن Bob ليس لديه واحداً.

على Bob إنشاء زوج مفاتيح (Key pair). يدعى بزوج مفاتيح, لأن المفتاح العام (Pubkey) يحتاج إلى مفتاح سري (Secret/Private key).

في شرحي سأستخدم gpg 2.1.10 على Linux, أو KGpg (و هو Front-end في KDE). و لكن الكلام ينطبق على أي برنامج يتبع OpenGPG. في ويندوز تستخدم حزمة Gpg4win للتسهيل على المستخدمين, بينما يمكن استخدام حزمة GPGTools في Mac OS X.

gpg --version

هذه صورة لمفتاح باسم Bob ArabHardware قمت بعمله لهذا الشرح, و رقمه (Key ID) هو 504FBE57. الـ ID هو رقم hex مكون من 16 خانة (ما يدعى بالـ Long ID), و لكن يستخدم النصف الثاني عادة ً (أي آخر 8 أرقام. ما يدعى بالـ Short ID).

KGpg - New pair

KGpg

gpg --list-keys

تظهر الصورتان بالأعلى تفاصيل المفتاح. هناك Subkey, و هو مفتاح يتبع المفتاح الأساسي, و يستخدم لفك التشفير. الهدف من الـ Subkey هو الحماية, لأنه يستخدم فقط لفك التشفير. فإذا سرق أو ضاع يمكن لمن بحوزته فك الرسائل المشفرة به, و ليس الرسائل المستقبلية بالمفتاح الجديد (و لكن هذا يعني أنه يجب على الآخرين الحصول على مفتاحك الجديد). المفتاح الأساسي يستخدم لـ Digital signing, أي تأكيد الهوية (للشخص, أو الملف, إلخ), و يمكن للمستخدمين توقيع مفاتيح بعضهم لتأكيد هوية حامل المفتاح و زيادة الثقة (و لهذا السبب يستخدم Subkey, لأن إنشاء مفتاح أساسي جديد يعني فقد كل التواقيع).

المفتاح العام متاح للجميع, و يمكن لأي شخص استخدامه لتشفير رسالة أو ملف مرسل لصاحبه. و هذا المفتاح العام الخاص بـ Bob:

—–BEGIN PGP PUBLIC KEY BLOCK—–
Version: GnuPG v2

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
=QYie
—–END PGP PUBLIC KEY BLOCK—–

تقوم Alice باستيراد مفتاح Bob إلى سلسلة مفاتيحها (Keyring) في البرنامج, ثم تقوم بتشفير الرسالة المراد إرسالها إليه. فتنتج رسالة مشفرة (في هذه الحالة الرسالة هي “ArabHardware”):

—–BEGIN PGP MESSAGE—–
Version: GnuPG v2

hQEMA8BwTll9AXo4AQf/R0L6mXiioozn+cS86XudV2HGOsxqr17H9PLS9wkWsHeo
Bcvsm7P4vkLP4NSLmL3OVKnIBZYtQP3jTfhCJcZemWTrK/Xkc8F1vyD72P3XVKkP
qTdSldf6uhYxpVLgejRL3PNYfqdCf+SxcbyNn40CdNUs5Lyw8s37wGohiRp2jhMz
MhxHRif6H7HJbJglXVOfsyxSoRchZkgD97YDZVi1ckvFqUjae1xi15itczYltrEu
PlguuIbwpEO83lRWBrYbw+tqGwNTGu/ecziENJsCSyBw44NZyhDEl87oa661i9JC
CAFuQEoKA7XyiIMpaW07L++3dV/r3SFQ+Q1SXx/nENJHAQou9iVYTJ+4ZpgvvS24
gHgyYeTvuP3O6bNXkJjjbUxu/EhRJFP8Gbu/v+Dt75Mq6REj5HHk4+U17kX/DsWh
z+IKMCTjR4E=
=LYbw
—–END PGP MESSAGE—–

و ترسلها إليه. عندها يقوم Bob بفك تشفيرها في البرنامج باستخدام مفتاحه الخاص و كلمة السر, فتنتج الرسالة Plaintext.

يمكن لـ Bob أيضاً إرسال رسائل Plaintext و لكنها تحمل توقيعه, فيتمكن الناس من قراءتها, و في نفس الوقت التحقق من هوية مرسلها.

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA256

ArabHardware
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v2

iQEcBAEBCAAGBQJWhnPTAAoJEMBwTll9AXo4bvYH/3X8ACC9fimwZXW/2xJS2Fnr
U+90Iak9vqaEJJddnSL4vypCVUmhX85Sbx0EFR6HQFCzsPQ7IP4AYPPZkqCxGHk7
hk83xz8LQrVhI30EA35l27rs1YCfXp2beY+NJkpKFuCQD5VWUZf8sS+xHrVkTt+B
nVPigU7u7X73v1v6rTqG6+bHKX8VPXvl4Ux8U3h1xcPUtUjWmIzoJKttzAJoyM1e
SgNT10dYPsNHoBiHXSAHJHQflU9F2QJi/i+rOiMORwCffxR2Jx5wpFDoxInZApmy
7RAH6/MR10Gfhe+2OhacgIkofVV164/CbR58iHf9duWaL/8MM1SenDedEEwTTzY=
=Mu4x
—–END PGP SIGNATURE—–

ما هو تاريخ الانتهاء؟ و ما هي شهادة الإبطال؟

يمكن وضع تاريخ انتهاء (Expiration date) للمفاتيح لا يمكن استخدامها للتشفير بعدها. في الوضع العادي, لن يحتاج المستخدم إلى وضع تاريخ انتهاء لمفتاحه. لتاريخ الانتهاء عدة أهداف, مثل الحد من الضرر في حال سرقة المفتاح و عدم إنشاء شهادة إبطال, أو لانتهاء الغرض من استخدامه بعد هذا التاريخ. في المفتاح المستخدم في هذا الشرح, وضع تاريخ انتهاء 31-01-2016.

شهادة الإبطال (Revocation certificate) هي شهادة يقوم صاحب المفتاح بإنشاءها ليقوم بإبطال مفتاحه في وقت لاحق. عند الرغبة بالإبطال, يقوم باستيراد الشهادة إلى سلسلة مفاتيحه, أو يقوم برفع الشهادة إلى سيرفر المفاتيح (Key server). هذه العملية تخبر من يبحث عن المفتاح أنه غير صالح.

ما هو Key server؟

سيرفر المفاتيح, أو Key server, هو سيرفر يقوم المستخدمون برفع مفاتيحهم عليه ليتمكن المستخدمون الآخرون من البحث عنها. هناك العديد من سيرفرات المفاتيح المشهورة, مثل pgp.mit.edu و keys.gnupg.net. تتواصل هذه السيرفرات مع بعضها, و تقوم بتبادل المفاتيح بينها.
سيرفر المفاتيح أنشأ لحل مشكلة التوزيع, و لكن نشأت عنه مشاكل أخرى. فمثلاً لا يمكن حذف المفاتيح من السيرفر, و هذا يؤدي إلى تراكم المفاتيح, و ربما وجود أكثر من مفتاح لنفس الشخص لم تعد مستخدمة. كما أن السيرفرات عامة و متاحة للجميع, و لا توجد طريقة للتأكد من هوية صاحب المفتاح (فيمكن لـ Bob إنشاء مفتاح يحمل اسم Alice, و رفعه إلى السيرفر, و لن يستطيع السيرفر أو الناس معرفة إذا ما كان المفتاح لـ Alice فعلاً). حل هذه المشكلة هو ما يعرف بشبكة الثقة (Web of trust).

ما هي Web of trust؟

على عكس منظومة الـ Public Key Infrastructure (PKI) التي تعتمد على جهة مركزية لإصدار المفاتيح و الشهادات و التحقق من صحتها (التي من أمثلتها المشهورة الشهادات المستخدمة في HTTPS), يعتمد OpenPGP على الثقة بين مستخدميه.

يمكن للمستخدمين توقيع مفاتيح بعضهم, بما يعني أن صاحب التوقيع يعرف صاحب المفتاح معرفة ً وثيقة و يثق به (و يعرف أن هذا المفتاح هو ملك له فعلاً), و مع الوقت يخلق هذا شبكة ً من المستخدمين الموثوق بهم.

Linus Torvalds' key

صورة للتواقيع على مفتاح Linus Torvalds

توقيع الملفات

يمكن تشفير الملفات بـ OpenPGP, و يمكن أيضاً توقيعها فقط للتأكد من هوية مرسلها أو موزعها. تقوم بعض المواقع بإرفاق توقيع مع الملفات, بالإضافة إلى Checksum. يستخدم الـ Checksum للتحقق من سلامة الملف بعد التنزيل (أي أنه مطابق للملف على الموقع و لم يتعرض للتلف خلال النقل), ثم يمكن التحقق أنه فعلاً من الموقع أو الناشر من خلال التوقيع (مثل فكرة النص الموقع). طبعاً يتطلب هذا أن تستورد مفتاحه, ليكون هناك ما يمكن مقارنته بالتوقيع.

عند توقيع الملفات, يفضل أن ينشأ المستخدم Keypair جديد خاص بالتوقيع غير المستخدم للتشفير. استخدام نفس الزوج للتشفير و التوقيع غير آمن, كما أن مفتاح التوقيع يجب أن يحافظ عليه أكثر من مفتاح التشفير, لأنه أداة تأكيد هوية صاحب الملف.

gpg --verify

Gpg4win:

هذا هو الجزء الذي يهم معظم المستخدمين, و هو شرح استخدام OpenPGP, لأنه لا فائدة من معرفة التفاصيل و المعلومات التقنية بدون معرفة استخدام الأدوات.

اخترت Gpg4win لأن MS Windows أكثر أنظمة التشغيل استخداماً, و لأن حزمة Gpg4win أشهرها للنظام.
تحتوي حزمة Gpg4win على برنامج GnuPG لويندوز, و برنامج Kleopatra كواجهة رسومية لـ GPG, و GPA و هو واجهة رسومية أخرى لـ GPG, بالإضافة إلى GpgOL (إضافة لبرنامج Outlook) و GpgEX (إضافة لـ IE), و Compendium (و هي الـ Manual). يمكن أيضاً تنزيل نسخاً من Gpg4win تحتوي على GPG فقط (تدعى Vanilla), أو مع بقية البرامج بدون Kleopatra و Compendium (و تدعى Light).

https://www.gpg4win.org

ما سيستخدمه المعظم هو Kleopatra, و هذا البرنامج بالأساس لـ Linux, و بالذات بيئات KDE.
البرنامج هو نفسه على Windows و Linux.

Kleopatra

Kleopatra

عمل مفتاح جديد:

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

Kleopatra - new certificate

تصدير المفتاح:

Kleopatra - export pubkey

Kleopatra - export pubkey

Alice's pubkey

استيراد المفتاح في برنامج الشخص المرسل:

Kleopatra - Key import

Kleopatra - Key import

Kleopatra - Key import

Kleopatra - Key import

تشفير رسالة لإرسالها إلى Alice:

Plaintext

Kleopatra - encrypt

Kleopatra - encrypt

Kleopatra - encrypt

Kleopatra - encrypt

Kleopatra - encrypt

Kleopatra - encrypt

Kleopatra - encrypt

الرسالة المشفرة:

PGP encrypted

فك تشفير الرسالة من قبل Alice:

Kleopatra - decrypt

Kleopatra - decrypt

Kleopatra - decrypt

Kleopatra - decrypt

Kleopatra - decrypt

Files - encrypted & decrypted

Plaintext

لا يوجد خيار في Kleopatra (أو GPA) لإصدار شهادة إبطال. و لكن يمكن ذلك من خلال GPG في سطر الأوامر (الذي يثبت أيضاً في Windows) من خلال أمر gpg –gen-revoke.

Gpg4win - cmd

يجب التنبيه أن المفتاح السري و كلمة السر مطلوبان لإصدار شهادة إبطال أو فك التشفير, لذا يجب تصدير المفاتيح السرية أو نسخها قبل عمل Format مثلاً, أو أخذ نسخة احتياطية منها تحفظ في مكان آمن (إما لاستخدام المفتاح لفك التشفير على جهاز آخر, أو من أجل الاحتياط). على فرض أن أحداً استطاع الحصول على المفتاح السري, فلن يكون هذا مفيداً لفك تشفير الرسائل أو الملفات (أو توقيعها) إذا كانت كلمة السر طويلة و آمنة لا يمكن تخمينها.

مصادر إضافية للقراءة:

الخصوصية على الإنترنت.. ما تعنيه؟ وماذا تفعل لحمايتها؟ ج1
الخصوصية على الإنترنت.. ما تعنيه؟ وماذا تفعل لحمايتها؟ ج2

The GNU Privacy Handbook
Cryptography – Wikipedia
Password strength – Wikipedia
Elliptic curve cryptography – Wikipedia
Diffie-Hellman key exchange – Wikipedia
Taher Elgamal – Wikipedia
Quantum cryptography – Wikipedia
Post-quantum cryptography – Wikipedia
Introduction to Modern Cryptography – Jonathan Katz, Yehuda Lindell
OWASP
[Bruce] Schneier on Security
Bernstein vs. United States
No Place to Hide: Edward Snowden, the NSA and the Surveillance State – Glenn Greenwald
man gpg(1)
Bombe – Wikipedia
GPG for Journalists – Vimeo
Encryption software – Wikipedia
The Crypto Law Survey