مبادرة الفَرَج

English

ملخص برتوكول ال open PGP معييار الخصوصية الجيدة جدا

تم النشر في:, اخر تعديل تم في:

مقدمة

توضيح الاختلاف OpenPGP وبرنامج

الOpenPGP هو برتوكول (التسمية الرسمية معييار وذلك لاسباب ) صادر من IEFT اخر اصدار\تحديث نشر ب معييار رقم ٩٥٨٠.
برنامج GnuPGP : هو تطبيق للبرتكول OpenPGP موزوع كبرنامج مفتوح المصدر

معييار ابرتوكول ال OpenPGP

خطوات عمل البرتوكول في وضع التشفير مع التوقيع للمرسل

١- يقوم المرسل بكتابة الرسالة
٢- يقوم المرسل بتوقيع الرسالة
٣- يقوم البرنامج (المطبق للبرتوكول) بانشاء مفتاح تناظري منشق من الجلسة
٤- يقوم المرسل بتوقيع الرسالة

خطوات عمل البرتكول للمستقبل

١- يقوم البرنامج المستقبل بقراءة الرسالة كظروف packets الرسالة
٢- يتم فك تشفير حزمة المفتاح التناظري
باسخدام المفتاح: الامتناظر الخاص في المستقبل
او باستخدام مفتاح: المتناظرة تم مشاركته بالسابق بين الطرفين
٣- يتم فك تشفير التناظري لالحزمة الرسالة مع توقيع
٤- يتم فك ضغط الحزمة وينشئ عنه الرسالة كما هي والتوقيع
٥- يتم التحقق من التوقيع عن طريق

ملاحظات

انشاء مفتاح تناظري من كلمة

يتم انشاء مفتاح تناظري لغرضين اما لتشفير الرسالة المضغوطة أو لتخزين الجزء السري للمفتاح الخاص, في الاولى المصدر رقم عشوائي الخاص بالجلسة, في التالية كلمة سر المفتاح الخاص.

في الحالة الاولى يحتاج ان يكون طول المفتاح اطول من ثانية او حسب حجم الرسالة, في ثانية اقصر لان الجزء السري عبارة عن رقم حجمه ثابت.

يوجد اكثر من طريقة لتحويل الكلمة لمفتاح تناظري, من المستحسن استعمال طريقة ال argon 2 أو iterated salat S2K الطرق اللاخرى: S2K iterated و S2K البسيطة يتم دعمهم لقراءة رسائل من المستقبل. جميعها تعتمد على خوارزميات التلبيد, مبدأ عملهم مشابه ولكن يزداد تعقيداً وذلك لبقاء ضمان السرية مع تطور اساليب الهجوم وأداء عتاد الحوسبية.

[!INFO] ملاحظة!
لاحظ انه عند اخفاء المحتوى السري للمفتاح الخاص, الجهد المطلوب لمحاولة اختراق باستخدام ال brute force اقل من جهد مطلوب عند محاولة اختراق باستخدام المفتاح العام, ولكن يبقى من مستحسن اخفاءه بكلمة سر لان الجزء العام منشور, بينما المفتاح السري يتم تسريبه عند اختراق الجهاز أو وصول غير مصرح به

طريقة S2K البسيطة

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

اما اذا كان طول المخرج اطول من المطلوب يتم قصها من اليسار ايضاً بدون الحاجة الى الحاق اوكتات من الاصفار, اي سياق تلبيد واحد كافي.

الشكل التالي يوضح كيف يتم تخزين

Octet 0: 0x 00  الاوكنت الاول يوضعح نوع او طريقة التحويل (صفر يعني S2K ) 
Octet 1: 0x نوع خوارزمية التلبيد المستعملة 

طريقة S2K مع صالت salat

تعمل كمبدأ عمل الطريقة السابقة, الاختلاف انه يضاف الى سياق\ات التلبيد: صالت الملح وهو كلمة عشوائية ( بحق؟ بحاجة لتأكد من المصدر), التالي يوضح كيفية تخزنها

Octet 0: 0x 01  واحد يشير الى S2K مع ملح 
Octet 1:  نوع خوارزمية التلبيد المستعملة
Octet 2-9: salat ثماني اوكتات حجم ال

طريقة S2K مع salat المكررة

Octet 0: 0x 02  اثنان يشير الى  S2K  مع ملح 
Octet 1:  نوع خوارزمية التلبيد المستعملة
Octet 2-9: salat ثماني اوكتات حجم ال
Octet 10: عدد الاكتات المدخلة لكل سياق تلبيد c 

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

ثم يتم اعادة تلبيد كل سياق على حدا (وضح المدخل في الجولة الثانية, الثالثة...), حتى نوصل الى عدد اوكتات ملبدة تساوي العدد count, هناك علاقة رياضية تربط c ب count مبينة في الاسفل.

مثال توضيحي
طول كلمة السر: 16 اوكتات klkin3wq (يعني ثمانية احرف/رموز)
طول الملح :8 اوكتات A_l#er_Z
العدد: c يساوي ١٥
العدد count = c * 15 اي ٢٦٥
حجم المفتاح المطلوب (حجم الجزء السري للمفتاح الخاص ) = ١٣٠ اوكتات

اول سياق تلبيد سياق kwqliwrkwqliwrk قمنا بلأعادة مرتين ١٤ + اوكت حتى نصل ١٥. المدخل هنا ١٥ اوكت حتى نلبدهم

العلاقة بين c وبين count على الاغلب يجب ان تكون من مضاعفات ١٢٨ او ٢٥٦...الخ حسب نوع خوارزمية التلبيد المستعملة, التي تحدد حجم البيانات الملبدة

يوجد حاجة الى فهم كيفية عمل خوارزميات التلبيد(بحاجة الى مرجع؟) , لانه لربما ما يتم شرحه في برتوكول له علاقة وطيدة في عمل الافتراضي, او الدعم للسياق المطلوب اعلاه, ايضاٌ الحاجة الى تحميل مرجع ال C مع مراجعة برمجية ل بروتوكول openpgp حيث يمكن روئية حزمة ومحاولة ان امكن تطبيق او تحويل كلمة سر الى مفتاح يدوياً عن طريق بايثون
الى اللقاء في الحلقة القادمة....

    printf("Hello World");
    int c = 15;
              // when c = 15, then: (15+16) * 2^ (0+6) = 1984
              // when c = 20 then:  (4+16)  *  2^ (1+6) = 2560
              // when c = 33 then; (1+16)  *  2^ (2+6) = 4352
             //               of  c   <<     of c
            //    16 + first 4 bit  * 2 ^ ((last 4 bit) + 6)
                                
    int count = (16 + (c & 15)) << ((c >> 4) + 6);
    printf("%d\n",count);

https://chatgpt.com/share/69efcad0-6074-83eb-bf14-0f3f5ecedcde