خوارزمية GOST 28147 89 هي. معيار تشفير البيانات المحلي

في بلدنا ، توجد خوارزمية موحدة للتمثيل المشفر للبيانات لأنظمة معالجة المعلومات في شبكات الكمبيوتر وأنظمة الكمبيوتر الفردية وأجهزة الكمبيوتر ، والتي يتم تحديدها بواسطة GOST 28147-89.

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

عند وصف الخوارزمية ، يتم استخدام الترميز التالي:

L و R هي متواليات بت ؛
LR هو تسلسل التسلسل L و R ، حيث تتبع بتات التسلسل R بتات التسلسل L ؛
(+) - طريقة إضافة bitwise 2 (عملية "OR" حصرية) ؛
[+] - إضافة أرقام 32 بت المقياس 2 32 ؛
(+) - إضافة أرقام 32 بت ، المقياس 2 32-1.

يتم تلخيص الأرقام وفقًا للقاعدة التالية:

A [+] B = A + B إذا كان A + B< 2 32 ,
A [+] B = A + B - 2 32 إذا كان A + B> = 32 2. أ (+) ب = أ + ب إذا أ + ب< 2^32 - 1, A {+} B = A + B - (2^32 - 1), если A + B >= 2^32 - 1.

توفر الخوارزمية أربعة أوضاع للتشغيل:

على أي حال ، يتم استخدام مفتاح 256 بت K لتشفير البيانات ، والتي يتم تمثيلها على شكل ثمانية مفاتيح فرعية 32 بت K i:

ك = ك 7 ك 6 ك 5 ك 4 ك 3 ك 2 ك 1 ك 0.

يتم تنفيذ فك التشفير بنفس مفتاح التشفير ، ولكن هذه العملية هي عكس عملية تشفير البيانات.

وضع المبادلة السهل

الوضع الأول والأسهل - إستبدال. البيانات المراد تشفيرها مقسمة إلى كتل 64 بت. يتضمن إجراء التشفير الخاص بفدرة البيانات المفتوحة T 0 32 دورة (j = 1 ... 32).

يتم تقسيم الكتلة T 0 إلى متتابعين من 32 بت: B (0) A (0) ، حيث B (0) هي البتات اليسرى أو الأكثر أهمية ، A (0) هي البتات اليمنى أو الأقل أهمية.

يتم إدخال هذه التسلسلات في محركات الأقراص N 1 و N 2 قبل بدء دورة التشفير الأولى.

يتم وصف الدورة الأولى (j = 1) من إجراء التشفير لكتلة بيانات 64 بت بالصيغ التالية:

هنا أشير إلى رقم التكرار (أنا = 1 ، 2 ، ... ، 32).

تسمى الوظيفة f وظيفة التشفير. وسيطتها هي مقياس المجموع 2 32 للرقم A (i) الذي تم الحصول عليه في خطوة التكرار السابقة والرقم X (j) للمفتاح (أبعاد كل من هذه الأرقام هي 32 رقمًا).

تتضمن وظيفة التشفير عمليتين على مجموع 32 بت الناتج. العملية الأولى تسمى الاستبدال K. تتكون كتلة الاستبدال K من 8 عقد استبدال K (1) ... K (8) بذاكرة 64 بت لكل منها. يتم تقسيم متجه 32 بت الذي يصل إلى كتلة الاستبدال إلى 8 متجهات متتالية 4 بت ، يتم تحويل كل منها إلى متجه 4 بت بواسطة العقدة البديلة المقابلة ، وهو جدول مكون من 16 عددًا صحيحًا في النطاق 0 .. .15.

يحدد متجه الإدخال عنوان الصف في الجدول الذي يكون رقمه هو متجه الإخراج. يتم بعد ذلك دمج متجهات الإخراج ذات 4 بتات بشكل تسلسلي في متجه 32 بت. يحتوي جدول كتلة الاستبدال K على عناصر أساسية مشتركة في شبكة الكمبيوتر ونادرًا ما يتم تغييرها.

العملية الثانية هي التحول الدوري الأيسر لمتجه 32 بت الذي تم الحصول عليه عن طريق استبدال K. يتم تمثيل كتلة البيانات المشفرة 64 بت T w على أنها T w = A (32) B (32).

يتم تشفير باقي كتل البيانات المفتوحة في وضع الاستبدال البسيط بنفس الطريقة.

ضع في اعتبارك أنه لا يمكن استخدام وضع الاستبدال البسيط إلا لتشفير البيانات في حالات محدودة. وتشمل هذه الحالات إنشاء مفتاح وتشفيره مع توفير الحماية المقلدة (الحماية من فرض بيانات خاطئة) للإرسال عبر قنوات الاتصال أو التخزين في ذاكرة الكمبيوتر.

وضع جاما

البيانات المفتوحة ، مقسمة إلى كتل 64 بت T (i) (i = 1 ، 2 ، ... ، m ، حيث يتم تحديد m بمقدار البيانات المشفرة) ، يتم تشفيرها في وضع جاما عن طريق إضافة نمط 2 باستخدام جاما المشفرة Гw ، والتي يتم إنتاجها في كتل من 64 بت ، أي Гw = (Г (1) ، Г (2) ، ... ، Г (i) ، ... ، Г (م)).

يمكن تمثيل معادلة تشفير البيانات في وضع جاما على النحو التالي:

W (i) = A (Y (i-1) [+] C2، Z (i-1) (+) C1) (+) T (i) = G (i) (+) T (i).
هنا W (i) عبارة عن كتلة نص مشفر 64 بت ،
أ - وظيفة التشفير في وضع الاستبدال البسيط (الوسيطات لهذه الوظيفة هي رقمان 32 بت) ،
C1 و C2 - الثوابت المحددة في GOST 28147-89 ،
Y (i) و Z (i) عبارة عن كميات يتم تحديدها بشكل متكرر حيث يتم تكوين جاما على النحو التالي:
(Y (0) ، Z (0)) = A (S) ، حيث S عبارة عن تسلسل ثنائي 64 بت (رسالة مزامنة) ؛
(Y (i)، Z (i)) = (Y (i-1) [+] C2، Z (i-1) (+) C1) لـ i = 1، 2، ...، m.

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

وضع غاما ردود الفعل

وضع التحجيممع تعليقيشبه إلى حد بعيد وضع جاما. كما هو الحال في وضع جاما ، يتم تشفير البيانات المفتوحة المقسمة إلى كتل من 64 بت T (i) (i = 1 ، 2 ، ... ، m ، حيث يتم تحديد m من خلال كمية البيانات المشفرة) ، يتم تشفيرها بواسطة وحدة إضافة ثنائية البت باستخدام تشفير gamma G sh ، والذي يتم إنتاجه في كتل من 64 بت:

Гw = (Г (1) ، Г (2) ، ... ، Г (i) ، ... ، Г (م)).

قد يكون عدد البتات في الكتلة T (m) أقل من 64 ، بينما يتم تجاهل جزء غاما المشفر من الكتلة G (m) الذي لا يستخدم للتشفير.

يمكن تمثيل معادلة تشفير البيانات في وضع جاما مع التغذية الراجعة على النحو التالي:


هنا W (i) عبارة عن كتلة نص مشفر 64 بت ،
أ - وظيفة التشفير في وضع الاستبدال البسيط. وسيطة الوظيفة في الخطوة الأولى من الخوارزمية التكرارية هي رسالة مزامنة 64 بت ، وفي جميع الخطوات اللاحقة - الكتلة السابقة للبيانات المشفرة W (i-1).

إدراجات التقليد

عمليات التطوير أكوام التقليدموحد لأي من أوضاع تشفير البيانات.

إدراج التقليد عبارة عن كتلة من بتات p (إدخال تقليد Ip) ، والتي يتم إنتاجها إما قبل تشفير الرسالة بأكملها ، أو بالتوازي مع تشفير كتلة تلو كتلة. قد تحتوي الكتل الأولى من البيانات المفتوحة التي تشارك في تطوير محاكاة الإدراج على معلومات الخدمة (على سبيل المثال ، جزء العنوان والوقت ورسالة المزامنة) ولا يتم تشفيرها. يتم تحديد قيمة المعلمة p (عدد الأرقام الثنائية في الإدخال المحاكي) من خلال متطلبات التشفير ، مع الأخذ في الاعتبار حقيقة أن احتمال فرض تداخل خاطئ هو 1/2 ^ p.

للحصول على محاكاة الإدراج ، يتم تمثيل البيانات المفتوحة على أنها كتل من 64 بت T (i) (i = 1 ، 2 ، ... ، m ، حيث يتم تحديد m بكمية البيانات المشفرة). تخضع الكتلة الأولى من البيانات المفتوحة T (1) لعملية تحويل تقابل أول 16 دورة من خوارزمية التشفير في وضع الاستبدال البسيط. علاوة على ذلك ، يتم استخدام المفتاح المستخدم لتشفير البيانات كمفتاح لتوليد إدراج التقليد.

يتم جمع رقم 64 بت الذي تم الحصول عليه بعد 16 دورة عمل بوحدة 2 مع فدرة البيانات المفتوحة الثانية T (2). تخضع نتيجة الجمع مرة أخرى للتحول المقابل لأول 16 دورة من خوارزمية التشفير في وضع الاستبدال البسيط. تمت إضافة رقم 64 بت الناتج إلى النموذج 2 إلى فدرة البيانات المفتوحة الثالثة T (3) ، وهكذا. الكتلة الأخيرة T (m) ، إذا لزم الأمر ، مبطن إلى كتلة كاملة 64 بت مع أصفار ، يتم جمعها بالمقياس 2 نتيجة العمل في الخطوة m-1 ، وبعد ذلك يتم تشفيرها في وضع الاستبدال البسيط على الأول 16 دورة من الخوارزمية. من رقم 64 بت المستلم ، يتم تحديد مقطع Ip بطول p بتات.

يتم إرسال Ip المقلد عبر قناة اتصال أو إلى ذاكرة الكمبيوتر بعد البيانات المشفرة. يتم فك تشفير البيانات الواردة المشفرة ، ومن الكتل المتلقاة من البيانات المفتوحة T (i) يتم إنشاء إدراج Ip التقليد ، والذي تتم مقارنته بعد ذلك بإدخال IR المتلقى من قناة الاتصال أو من ذاكرة الكمبيوتر. إذا تم إدراج التقليد لا تتطابق ، جميع البيانات التي تم فك تشفيرها تعتبر خاطئة.

وصف موجز للشفرات

GOST 28147-89 - المعيار السوفيتي والروسي للتشفير المتماثل ، الذي تم تقديمه في عام 1990 ، هو أيضًا معيار CIS. الاسم الكامل - “GOST 28147-89 نظم معالجة المعلومات. حماية التشفير. خوارزمية تحويل التشفير ". كتلة خوارزمية التشفير. عند استخدام طريقة التشفير مع جاما ، يمكن أن تؤدي وظائف خوارزمية تشفير التدفق.

GOST 28147-89 عبارة عن تشفير كتلة بمفتاح 256 بت و 32 دورة تحويل ، تعمل بكتل 64 بت. أساس خوارزمية التشفير هو شبكة Feistel. وضع التشفير الأساسي وفقًا لـ GOST 28147-89 هو وضع الاستبدال البسيط (يتم أيضًا تحديد أوضاع أكثر تعقيدًا - جاما وجاما مع التغذية الراجعة وتقليد الإدراج).

كيف تعمل الخوارزمية

لا تختلف الخوارزمية اختلافًا جوهريًا عن DES. يحتوي أيضًا على دورات تشفير (هناك 32 دورة) وفقًا لمخطط Feistel (الشكل 2.9.).

أرز. 2.9 جولات التشفير لخوارزمية GOST 28147-89.

لإنشاء مفاتيح فرعية ، يتم تقسيم مفتاح 256 بت الأصلي إلى ثماني كتل 32 بت: k 1… k 8. المفاتيح k 9 ... k 24 هي تكرار دوري للمفاتيح k 1 ... k 8 (مرقمة من البتات الأقل أهمية إلى البتات الأكثر أهمية). المفاتيح k 25 ... k 32 هي المفاتيح k 1 ... k 8 تسير بترتيب عكسي.

بعد اكتمال جميع جولات الخوارزمية البالغ عددها 32 جولة ، يتم لصق الكتل A 33 و B 33 معًا (لاحظ أن A 33 يصبح البت الأكثر أهمية ، ويصبح B 33 هو البت الأقل أهمية) - والنتيجة هي نتيجة الخوارزمية.

وظيفة F(أ أنا ,ك أنا) على النحو التالي: يتم إضافة A i و K i للوضع 2 32 ، ثم يتم تقسيم النتيجة إلى ثمانية تتابعات 4 بت ، يتم تغذية كل منها إلى المدخلات الخاصة بها عقدة جدول الاستبدال(بترتيب تصاعدي لأسبقية البت) ، المسمى أدناه S- بلوك. إجمالي عدد كتل GOST S هو ثمانية ، أي نفس عدد التكرارات اللاحقة. كل S- بلوكيمثل تبديل الأرقام من 0 إلى 15. يقع أول 4 بتات اللاحقة على مدخلات S-box الأول ، والثاني - على مدخلات الثانية ، وما إلى ذلك. يتم دمج مخرجات جميع الصناديق S الثمانية في كلمة 32 بت ، ثم يتم نقل الكلمة بأكملها بشكل دوري إلى اليسار (إلى البتات الأكثر أهمية) بمقدار 11 بت. يمكن أن تكون جميع الصناديق S الثمانية مختلفة. في الواقع ، يمكن أن تكون مادة أساسية إضافية ، ولكنها في الغالب تكون معلمة مخطط شائعة لمجموعة معينة من المستخدمين. يشير نص المعيار إلى أن تسليم ملء وحدات الاستبدال (كتل S) يتم بالطريقة المحددة ، أي مطور الخوارزمية. وافق مجتمع مطوري CIPF الروس على العقد البديلة المستخدمة على الإنترنت.

يتم تنفيذ فك التشفير بنفس طريقة التشفير ، ولكن يتم عكس ترتيب المفاتيح الفرعية k i.

أوضاع تشغيل خوارزمية GOST 28147-89

تحتوي خوارزمية GOST 28147-89 على أربعة أوضاع للتشغيل.

1. وضعاستبدال بسيطيقبل البيانات كمدخلات ، وحجمها مضاعف 64 بت. نتيجة التشفير هي إدخال النص ، وتحويله في كتل من 64 بت في حالة التشفير مع دورة "32-3" ، وفي حالة فك التشفير - مع دورة "32-P".

2. وضعالتحجيميقبل البيانات من أي حجم كمدخلات ، بالإضافة إلى معلمة 64 بت إضافية - رسالة المزامنة. أثناء العملية ، يتم تحويل رسالة المزامنة في دورة "32-Z" ، وتنقسم النتيجة إلى جزأين. يضاف الجزء الأول المقياس 2 32 بقيمة ثابتة تبلغ 1010101 16. إذا كان الجزء الثاني يساوي 2 32-1 ، فلن تتغير قيمته ، وإلا فإنه يضاف المقياس 2 32-1 بقيمة ثابتة 1010104 16. القيمة التي يتم الحصول عليها من خلال الجمع بين كلا الجزأين المحولين ، المسماة جاما المشفرة ، تدخل الحلقة "32-3" ، وتكون نتيجتها عبارة عن وحدة ثنائية مضافة مع كتلة 64 بت من بيانات الإدخال. إذا كانت الأخيرة أقل من 64 بت ، فسيتم تجاهل البتات الإضافية للقيمة المستلمة. يتم إرسال القيمة الناتجة إلى الإخراج. في حالة استمرار وجود بيانات واردة ، يتم تكرار الإجراء: يتم تحويل الكتلة المكونة من أجزاء 32 بت إلى أجزاء ، وهكذا.

3. وضعالتحجيم مع التغذية الراجعةيقبل أيضًا البيانات من أي حجم ورسالة مزامنة كإدخال. يتم إضافة كتلة بيانات الإدخال إلى وحدة المعالجة الثانية على مستوى البت مع نتيجة التحويل في دورة "32-3" لرسالة المزامنة. يتم إرسال القيمة الناتجة إلى الإخراج. يتم استبدال قيمة رسالة المزامنة في حالة التشفير بواسطة كتلة الإخراج ، وفي حالة فك التشفير - عن طريق الإدخال ، أي المشفر. إذا كانت الكتلة الأخيرة من البيانات الواردة أقل من 64 بت ، فسيتم تجاهل البتات الإضافية لجاما (خرج الحلقة "32-3"). في حالة استمرار وجود بيانات واردة ، يتم تكرار الإجراء: يتكون تشفير جاما من نتيجة تشفير القيمة المستبدلة ، وما إلى ذلك.

4. وضع الإنتاجإدراج التقليديأخذ بيانات الإدخال التي لا يقل حجمها عن كتلتين كاملتين 64 بت ، ويعيد كتلة 64 بت من البيانات ، تسمى إدراج انتحال. يتم تعيين قيمة 64 بت المؤقتة على 0 ، ثم ، بينما توجد بيانات إدخال ، يتم إضافة modulo 2 إلى مستوى البت مع نتيجة تنفيذ دورة "16-3" ، والتي يكون إدخالها هو كتلة بيانات الإدخال . بعد نهاية الإدخال ، يتم إرجاع القيمة المؤقتة كنتيجة.

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

يستخدم تشفير GOST 28147-89 مفتاح 256 بت وحجم مساحة المفتاح هو 2256. لا يوجد جهاز كمبيوتر للأغراض العامة موجود حاليًا يمكنه تخمين مفتاح في أقل من عدة مئات من السنين. تم تصميم المعيار الروسي GOST 28147-89 بهامش كبير ويتجاوز معيار DES الأمريكي بعدة أوامر من حيث الحجم مع حجم مفتاحه الحقيقي 56 بت وحجم المساحة الرئيسية 2 56 فقط.

هناك أيضًا هجمات على GOST 28147-89 الكامل بدون أي تعديلات. واحد من أول أعمال مفتوحة، الذي تم فيه تحليل الخوارزمية ، يستخدم نقاط الضعف في إجراء توسيع المفتاح لعدد من خوارزميات التشفير المعروفة. على وجه الخصوص ، يمكن كسر الخوارزمية الكاملة GOST 28147-89 باستخدام تحليل التشفير التفاضلي على المفاتيح المرتبطة ، ولكن فقط في حالة استخدام جداول الاستبدال الضعيفة. يتم فتح الإصدار المكون من 24 جولة من الخوارزمية (الذي يفتقر إلى الجولات الثماني الأولى) بنفس الطريقة لأي جداول استبدال ، ومع ذلك ، فإن جداول الاستبدال القوية تجعل مثل هذا الهجوم غير عملي تمامًا.

العلماء المحليين A.G. روستوفتسيف وإي. اقترح مخوفينكو في عام 2001 طريقة جديدة بشكل أساسي لتحليل التشفير من خلال تكوين دالة موضوعية من نص عادي معروف ، والنص المشفر المقابل له وقيمة المفتاح المطلوبة وإيجاد أقصى حد له يتوافق مع القيمة الحقيقية للمفتاح. وجدوا أيضًا فئة كبيرة من المفاتيح الضعيفة لخوارزمية GOST 28147-89 ، والتي تسمح لك بفتح الخوارزمية باستخدام 4 نصوص عادية محددة ونصوص مشفرة مقابلة لها بدرجة تعقيد منخفضة إلى حد ما.

في عام 2004 ، اقترحت مجموعة من الخبراء من كوريا هجومًا باستخدام التحليل التفاضلي للتشفير على المفاتيح المرتبطة ، من الممكن الحصول على مفتاح سري 12 بت مع احتمال 91.7٪. يتطلب الهجوم 235 نصًا عاديًا مختارًا و 236 عملية تشفير. كما ترون ، هذا الهجوم غير مفيد عمليًا للفتح الحقيقي للخوارزمية.

يعد جدول الاستبدال عنصرًا رئيسيًا طويل المدى ، أي أنه صالح لأكثر من ذلك بكثير طويل الأمدمن مفتاح واحد. من المفترض أنه مشترك لجميع عقد التشفير داخل نظام حماية تشفير واحد. تحدد جودة هذا الجدول جودة التشفير. مع جدول الاستبدال "القوي" ، لا تقل قوة التشفير عن حد مقبول معين ، حتى لو تم الكشف عنها. وعلى العكس من ذلك ، فإن استخدام جدول "ضعيف" قد يقلل من قوة التشفير إلى حد منخفض بشكل غير مقبول. لا توجد معلومات عن جودة جدول البدائل في فتح الختملم تُنشر روسيا ، لكن وجود جداول "ضعيفة" أمر لا شك فيه - مثال على ذلك هو جدول الاستبدال "التافه" ، والذي بموجبه يتم استبدال كل قيمة بنفسها. في عدد من الأعمال ، استنتج خطأً أن جداول الاستبدال السرية لخوارزمية GOST 28147-89 يمكن أن تكون جزءًا من المفتاح وتزيد من طوله الفعال (وهو أمر غير مهم ، نظرًا لأن الخوارزمية تحتوي على مفتاح 256 بت كبير جدًا ).

هذه الخوارزمية إلزامية للاستخدام كخوارزمية تشفير في المنظمات الحكومية RF وعدد من تلك التجارية.

وصف الخوارزمية

يظهر مخطط الخوارزمية في الشكل. 3.1. كما ترون ، مخطط هذه الخوارزمية بسيط للغاية ، مما يبسط بشكل لا لبس فيه برمجياتها أو أجهزتها.

تقوم خوارزمية GOST 28147-89 بتشفير المعلومات في كتل من 64 بت ، والتي تنقسم إلى كتلتين فرعيتين من 32 بت (N1 و N2). تتم معالجة Subblock N1 بطريقة معينة ، وبعد ذلك يتم إضافة قيمته

مع قيمة الكتلة الفرعية N2 (يتم تنفيذ الإضافة بالمقياس 2) ، ثم يتم تبديل الكتل الفرعية. يتم إجراء مثل هذا التحويل لعدد معين من الجولات: 16 أو 32 ، اعتمادًا على طريقة تشغيل الخوارزمية (الموصوفة أدناه). يتم تنفيذ العمليات التالية في كل جولة:

1. مفتاح تراكب. تمت إضافة محتوى الكتلة الفرعية / VI بالوحدة 2 32 إلى جزء Kx من المفتاح.

يحتوي مفتاح تشفير خوارزمية GOST 28147-89 على بُعد 256 بت ، و Kx هو جزء 32 بت ، أي أن مفتاح تشفير 256 بت يتم تمثيله كتسلسل مفاتيح فرعية 32 بت (الشكل 3.2):

SH ATI، AG2، Yu، AG4، K5، Kb، K7.

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

أرز. 3.1. مخطط خوارزمية GOST 28147-

أرز. 3.2 مفتاح التشفير لخوارزمية GOST 28147-89

2. استبدال جدولي. بعد تراكب المفتاح ، يتم تقسيم الكتلة الفرعية / VI إلى 8 أجزاء من 4 بتات ، يتم استبدال قيمة كل منها على حدة وفقًا لجدول الاستبدال لهذا الجزء من الكتلة الفرعية. غالبًا ما تستخدم بدائل الجدول (مربع الاستبدال ، S-box) في الخوارزميات الحديثةالتشفير ، لذلك يجدر النظر فيها بمزيد من التفصيل.

يتم استخدام استبدال الجدول بهذه الطريقة: يتم إدخال كتلة بيانات ذات بُعد معين (في هذه الحالة ، 4 بت) إلى المدخلات ، والتي يحدد التمثيل الرقمي لها عدد قيمة المخرجات. على سبيل المثال ، لدينا S-box بالشكل التالي:

4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.

دع الكتلة المكونة من 4 بتات "0100" تأتي إلى الإدخال ، أي أن القيمة هي 4. وفقًا للجدول ، ستكون قيمة الإخراج 15 ، أي "1111" (يتم استبدال 0 بـ 4 ، يتم استبدال 1 بـ 11 ، قيمة 2 لا تتغير ، إلخ).

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

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

3. إزاحة دورية لليسار على مستوى البت بمقدار 11 بت.

أوضاع الخوارزمية

تحتوي خوارزمية GOST 28147-89 على 4 أوضاع للتشغيل:

□ وضع الاستبدال البسيط ؛

□ وضع جاما.

وضع اللعب P مع ردود الفعل ؛

□ وضع إنتاج المرفقات المقلدة.

تختلف هذه الأوضاع إلى حد ما عن تلك المقبولة عمومًا (الموضحة في القسم 1.4) ، لذلك يجدر النظر فيها بمزيد من التفصيل.

هذه الأوضاع لها أغراض مختلفة ، ولكنها تستخدم نفس تحويل التشفير الموضح أعلاه.

وضع المبادلة السهل

في وضع الاستبدال البسيط ، يتم تنفيذ الجولات الـ 32 الموضحة أعلاه ببساطة لتشفير كل كتلة 64 بت من المعلومات. يتم استخدام المفاتيح الفرعية 32 بت في التسلسل التالي:

□ KO و Kl و K2 و K3 و K4 و K5 و Kb و AG7 و KO و ATI وما إلى ذلك - في الجولات من 1 إلى 24 ؛

□ K1 و Kb و K5 و K4 و K3 و K2 و K \ و KO - في الجولات من 25 إلى 32.

يتم فك التشفير في وضع الاستبدال البسيط بنفس الطريقة تمامًا ، ولكن مع تسلسل مختلف قليلاً لاستخدام المفاتيح الفرعية:

□ KO، K \، K2، KZ، K4، K5، Kb، KP - في الجولات من 1 إلى 8 ؛

□ KP و Kb و K5 و K4 و K3 و K2 و K \ و KO و K1 و Kb وما إلى ذلك - في الجولات من 9 إلى 32.

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

وضع جاما

في أسلوب جاما (الشكل 3.3) ، تتم إضافة كل فدرة من النص الصريح شيئًا فشيئًا إلى وحدة جاما للتشفير بحجم 64 بت. جاما المشفرة عبارة عن تسلسل خاص يتم إنشاؤه باستخدام التحويلات الموضحة أعلاه على النحو التالي:

1. في السجلات N1 و N2 ، تتم كتابة التعبئة الأولية - قيمة 64 بت ، تسمى "رسالة المزامنة" (رسالة المزامنة ، في الواقع ، هي تناظرية لمتجه التهيئة في أوضاع CBC و CFB و OFB ).

2. يتم تشفير محتويات سجلات / VI و N2 (في هذه الحالة ، رسائل المزامنة) في وضع الاستبدال البسيط.

3. تمت إضافة محتويات N1 إلى modulo (2 32 - 1) مع CI الثابت = 2 24 + 2 16 + 2 8 + 4 ، تتم كتابة نتيجة الإضافة في سجل / VI.

4. يضاف محتوى N2 بالمقياس 2 مع الثابت C2 = 2 24 + 2 16 + 2 8 +1 ، يتم كتابة نتيجة الإضافة لتسجيل N2.

5. يتم إخراج محتويات مسجلي / VI و N2 ككتلة جاما مشفرة 64 بت (على سبيل المثال ، في هذه الحالة ، تشكل / VI و N2 أول كتلة جاما).

6. إذا كانت هناك حاجة إلى كتلة جاما التالية (أي يلزم استمرار التشفير أو فك التشفير) ، فارجع إلى الخطوة 2.

لفك التشفير ، يتم إنشاء جاما بنفس الطريقة ، ثم يتم تطبيق عملية XOR مرة أخرى على النص المشفر وبتات جاما.

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

في معظم تطبيقات خوارزمية GOST 28147-89 ، لا تعد رسالة المزامنة عنصرًا سريًا ، ولكن يمكن أن تكون رسالة المزامنة سرية مثل مفتاح التشفير. في هذه الحالة ، يمكننا اعتبار أن الطول الفعال لمفتاح الخوارزمية (256 بت) قد زاد بمقدار 64 بتًا أخرى من رسالة المزامنة ، والتي يمكن اعتبارها عنصرًا أساسيًا إضافيًا.

وضع غاما ردود الفعل

في وضع غاما ردود الفعل ، بدءًا من الكتلة الثانية ، لا يتم ملء سجلات / VI و L / 2 بكتلة جاما السابقة ، ولكن نتيجة تشفير كتلة النص العادي السابقة (الشكل 3.4). يتم إنشاء الكتلة الأولى في هذا الوضع بنفس الطريقة تمامًا مثل الكتلة السابقة.

أرز. 3.4. توليد غاما المشفرة في وضع جاما مع التغذية الراجعة

وضع توليد المقلد

الانتحال عبارة عن مجموع اختباري للتشفير يتم حسابه باستخدام مفتاح تشفير ومصمم للتحقق من سلامة الرسائل. لحسابها ، هناك وضع خاص لخوارزمية GOST 28147-89.

يتم إنشاء بادئة التقليد على النحو التالي:

1. يتم كتابة أول كتلة معلومات من 64 بت ، والتي يتم حساب المقلد من أجلها ، في السجلات N1 و N2 وتشفيرها في وضع الاستبدال البسيط المصغر ، حيث يتم تنفيذ أول 16 جولة من أصل 32 جولة.

2. يتم تجميع النتيجة التي تم الحصول عليها بالمقياس 2 مع المجموعة التالية من المعلومات ، مع حفظ النتيجة في N1 و N2.

3. يتم تشفير M و N2 مرة أخرى في الوضع المصغر للاستبدال البسيط ، وهكذا حتى آخر كتلة من المعلومات.

تعتبر البادئة هي المحتويات الناتجة عن 64 بت للسجلات N1 و N2 أو جزء منها. في أغلب الأحيان ، يتم استخدام بادئة تقليد 32 بت ، أي نصف محتويات السجلات. هذا كافٍ ، لأنه ، مثل أي مجموع اختباري ، تهدف بادئة التقليد في المقام الأول إلى الحماية من التشويه العرضي للمعلومات. للحماية من التعديل المتعمد للبيانات ، يتم استخدام طرق تشفير أخرى - إلكترونية في المقام الأول توقيع إلكتروني(انظر القسم 1.1).

يتم استخدام بادئة التقليد على النحو التالي:

1. عند تشفير أي معلومات ، يتم حساب مقلد النص العادي وإرساله مع النص المشفر.

2. بعد فك التشفير ، يتم حساب بادئة التقليد مرة أخرى ومقارنتها بالبادئة المرسلة.

3. إذا لم تتطابق البادئات المقلدة المحسوبة والمرسلة ، فإن النص المشفر قد تم تشويهه أثناء الإرسال أو تم استخدام مفاتيح غير صحيحة أثناء فك التشفير.

تعد بادئة التقليد مفيدة بشكل خاص للتحقق من فك التشفير الصحيح للمعلومات الأساسية عند استخدام أنظمة متعددة المفاتيح.

بادئة التقليد هي بعض التناظرية من رمز مصادقة رسالة MAC المحسوبة في وضع CBC ؛ الاختلاف هو أن حساب البادئة لا يستخدم رسالة مزامنة ، بينما يستخدم حساب MAC متجه التهيئة.

قوة التشفير للخوارزمية

في عام 1994 ، تمت ترجمة وصف خوارزمية GOST 28147-89 إلى اللغة الإنجليزية ونشرها ؛ بعد ذلك بدأت تظهر نتائج تحليله الذي أجراه خبراء أجانب ؛ ومع ذلك ، لم يتم العثور على هجمات تقترب من الناحية العملية لفترة طويلة من الوقت.

□ طول مفتاح كبير - 256 بت ؛ مع رسالة المزامنة السرية ، يزيد طول المفتاح الفعال إلى 320 بت ؛

□ 32 جولة من التحولات. بالفعل بعد 8 جولات ، يتم تحقيق التأثير الكامل لتشتت بيانات الإدخال: تغيير بت واحد من كتلة النص العادي سيؤثر على جميع بتات كتلة النص المشفر ، والعكس صحيح ، أي أن هناك هامش أمان متعدد.

ضع في اعتبارك نتائج تحليل الشفرات لخوارزمية GOST 28147-89.

تحليل جداول الاستبدال

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

تستخدم الهجمات باستخدام التحليل الخطي والتفاضلي للتشفير لخوارزمية DES ميزات محددة لجداول الاستبدال ؛ عند استخدام جداول أخرى ، يجب أن يبدأ تحليل الشفرات من جديد ؛

بذلت محاولات لتقوية DES ضد التحليل الخطي والتفاضلي للتشفير باستخدام جداول إحلال أقوى ؛ هذه الجداول ، التي هي بالفعل أكثر استقرارًا ، تم اقتراحها ، على سبيل المثال ، في خوارزمية 5 DES ؛ ولكن ، للأسف ، كان من المستحيل استبدال DES بـ s 5 DES ، نظرًا لأن جداول الاستبدال محددة بشكل صارم في المعيار ، على التوالي ، ربما لا تدعم تطبيقات الخوارزمية القدرة على تغيير الجداول إلى جداول أخرى.

في عدد من الأعمال (على سبيل المثال ، و) خلص خطأً إلى أن جداول الاستبدال السرية لخوارزمية GOST 28147-89 يمكن أن تكون جزءًا من المفتاح وتزيد من طوله الفعال (وهو أمر غير مهم ، نظرًا لأن الخوارزمية تحتوي على مفتاح 256 بت كبير جدًا). ومع ذلك ، يثبت العمل أنه يمكن حساب جداول الاستبدال السرية باستخدام الهجوم التالي ، والذي يمكن تطبيقه عمليًا:

1. عيّن المفتاح الفارغ وابحث عن "المتجه الفارغ" ، أي القيمة z = / (0) ، حيث / () هي دالة دائرية للخوارزمية. تستغرق هذه المرحلة عمليتي تشفير تقريبًا.

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

تعديلات الخوارزمية وتحليلها

في العمل ، تم إجراء تحليل تشفير لتعديلات خوارزمية GOST 28147-89:

□ خوارزمية GOST-H ، والتي ، بالنسبة للخوارزمية الأصلية ، يتم تغيير ترتيب استخدام المفاتيح الفرعية ، أي في جولات من 25 إلى 32 يتم استخدام المفاتيح الفرعية بالترتيب المباشر ، أي بنفس الطريقة كما في السابق جولات الخوارزمية.

□ خوارزمية GOST® من 20 جولة تستخدم XOR بدلاً من modulo 2 32 لتراكب المفاتيح.

بناءً على نتائج التحليل ، استنتج أن GOST-H و GOST © أضعف من خوارزمية GOST 28147-89 الأصلية ، نظرًا لأن كلاهما يحتوي على فئات من المفاتيح الضعيفة. تجدر الإشارة إلى أنه فيما يتعلق بتحليل التشفير GOST © ، فإن العمل يكرر كلمة بكلمة القسم الخاص بتحليل الشفرات لخوارزمية GOST 28147-89 ، المنشور في عام 2000 في عمل مشهور (دون أي إشارة إلى الأصل). هذا يدعو إلى التشكيك في مهنية مؤلفي العمل ونتائجها الأخرى.

تم اقتراح تعديل مثير جدًا للخوارزمية في العمل: يجب أن تكون الجداول S \ ... Ss مختلفة بالضرورة ؛ في كل جولة من الخوارزمية ، يجب أن يتم تبديلها وفقًا لقانون معين. قد يعتمد هذا التبديل على مفتاح التشفير ، أو قد يكون سرًا (على سبيل المثال ، يكون جزءًا من مفتاح تشفير أكبر من مفتاح 256 بت الأصلي). كلا الخيارين ، وفقًا لمؤلفيهم ، يزيدان بشكل كبير من مقاومة الخوارزمية ضد تحليل التشفير الخطي والتفاضلي.

وتم تقديم تعديل آخر متعلق بجداول الاستبدال في العمل ، حيث يتم تحليل إحدى الطرق الممكنة لحساب جداول الاستبدال بناءً على مفتاح التشفير. استنتج مؤلفو العمل أن مثل هذا الاعتماد يضعف الخوارزمية ، لأنه يؤدي إلى وجود مفاتيح ضعيفة وإلى بعض نقاط الضعف المحتملة للخوارزمية.

تحليل الخوارزمية الشامل

هناك أيضًا هجمات على GOST 28147-89 الكامل بدون أي تعديلات. أحد الأعمال المفتوحة الأولى التي تم فيها تحليل الخوارزمية ، وهو عمل معروف ، مكرس للهجمات التي تستغل نقاط الضعف في إجراء توسيع المفتاح لعدد من خوارزميات التشفير المعروفة. على وجه الخصوص ، يمكن كسر الخوارزمية الكاملة GOST 28147-89 باستخدام تحليل التشفير التفاضلي على المفاتيح المرتبطة ، ولكن فقط في حالة استخدام جداول الاستبدال الضعيفة. يتم فتح الإصدار المكون من 24 جولة من الخوارزمية (الذي يفتقر إلى الجولات الثماني الأولى) بنفس الطريقة لأي جداول استبدال ، ولكن جداول الاستبدال القوية (على سبيل المثال ، الواردة في) تجعل مثل هذا الهجوم غير عملي على الإطلاق.

اقترح العلماء المحليون A.G Rostovtsev و E.B Makhovenko في عام 2001 طريقة جديدة تمامًا لتحليل الشفرات (وفقًا للمؤلفين ، فهي أكثر فعالية بشكل ملحوظ من تحليل الشفرات الخطي والتفاضلي) من خلال تكوين وظيفة موضوعية من نص عادي معروف يتوافق مع النص المشفر والقيمة المطلوبة المفتاح والعثور على أقصى حد له يتوافق مع القيمة الحقيقية للمفتاح. وجدوا أيضًا فئة كبيرة من المفاتيح الضعيفة لخوارزمية GOST 28147-89 ، والتي تسمح لك بفتح الخوارزمية باستخدام 4 نصوص عادية محددة ونصوص مشفرة مقابلة لها بدرجة تعقيد منخفضة إلى حد ما. يستمر تحليل الشفرات للخوارزمية في العمل.

في عام 2004 ، اقترحت مجموعة من الخبراء من كوريا هجومًا باستخدام التحليل التفاضلي للتشفير على المفاتيح المرتبطة ، يمكن الحصول عليه باحتمالية 91.7٪ 12 بتًا من المفتاح السري. يتطلب الهجوم 235 نصًا عاديًا مختارًا و 236 عملية تشفير. كما ترون ، هذا الهجوم غير مفيد عمليًا للفتح الحقيقي للخوارزمية.

الخوارزمية المحددة بواسطة GOST 28147-89 لها طول مفتاح تشفير يبلغ 256 بت. يقوم بتشفير المعلومات في كتل من 64 بت (تسمى هذه الخوارزميات خوارزميات الكتلة) ، والتي يتم تقسيمها بعد ذلك إلى مجموعتين فرعيتين من 32 بت (N1 و N2) (الشكل 1). تتم معالجة Subblock N1 بطريقة معينة ، وبعد ذلك يتم إضافة قيمته إلى قيمة الكتلة الفرعية N2 (يتم إجراء الإضافة بالمقياس 2 ، أي يتم تطبيق عملية XOR المنطقية - "حصرية أو") ، ثم يتم تبديل الكتل الفرعية. يتم إجراء هذا التحويل لعدد معين من المرات ("جولات"): 16 أو 32 اعتمادًا على وضع الخوارزمية. يتم إجراء عمليتين في كل جولة.

الشكل 1. مخطط خوارزمية GOST 28147-89.

الأول هو القفل. تمت إضافة محتويات الكتلة الفرعية N1 إلى النموذج 2 إلى الجزء 32 بت من المفتاح Kx. مفتاح كامليتم تمثيل التشفير كتسلسل لمفاتيح فرعية 32 بت: K0 ، K1 ، K2 ، K3 ، K4 ، K5 ، K6 ، K7. يتم استخدام أحد هذه المفاتيح الفرعية في عملية التشفير ، اعتمادًا على الرقم الدائري ووضع تشغيل الخوارزمية.

العملية الثانية هي استبدال الجدول. بعد القفل ، يتم تقسيم الكتلة الفرعية N1 إلى 8 أجزاء من 4 بتات ، ويتم استبدال قيمة كل منها وفقًا لجدول الاستبدال لهذا الجزء من الكتلة الفرعية. ثم يتم تدوير الكتلة الفرعية باتجاه اليسار بمقدار 11 بت.

غالبًا ما تُستخدم بدائل الجدول (صندوق الاستبدال - S-box) في خوارزميات التشفير الحديثة ، لذلك يجدر شرح كيفية تنظيم هذه العملية. تتم كتابة القيم الناتجة للكتل على الجدول. كتلة بيانات ذات بُعد معين (في حالتنا ، 4 بت) لها تمثيل رقمي خاص بها ، والذي يحدد عدد قيمة المخرجات. على سبيل المثال ، إذا كان S-box يشبه 4 و 11 و 2 و 14 و 15 و 0 و 8 و 13 و 3 و 12 و 9 و 7 و 5 و 10 و 6 و 1 و 4 بتات "0100" إلى المدخلات (القيمة 4) ، إذن ، وفقًا للجدول ، ستكون قيمة الإخراج 15 ، أي "1111" (0 أ 4 ، 1 أ 11 ، 2 أ 2 ...).

توفر الخوارزمية المحددة بواسطة GOST 28147-89 أربعة أوضاع تشغيل: الاستبدال البسيط ، والقياس ، والقياس مع الملاحظات ، وإنشاء بادئات التقليد. يستخدمون نفس تحويل التشفير الموصوف أعلاه ، ولكن نظرًا لاختلاف الغرض من الأوضاع ، يتم إجراء هذا التحويل في كل منها بشكل مختلف.

في وضع الاستبدال البسيط ، يتم تنفيذ الجولات الـ 32 الموضحة أعلاه لتشفير كل كتلة 64 بت من المعلومات. في هذه الحالة ، يتم استخدام المفاتيح الفرعية 32 بت في التسلسل التالي:

K0 ، K1 ، K2 ، K3 ، K4 ، K5 ، K6 ، K7 ، K0 ، K1 ، إلخ - في الجولات من 1 إلى 24 ؛

K7، K6، K5، K4، K3، K2، K1، K0 - في جولات 25 إلى 32.

يتم تنفيذ فك التشفير في هذا الوضع بنفس الطريقة تمامًا ، ولكن مع تسلسل مختلف قليلاً لاستخدام المفاتيح الفرعية:

K0، K1، K2، K3، K4، K5، K6، K7 - في الجولات من 1 إلى 8 ؛

K7 ، K6 ، K5 ، K4 ، K3 ، K2 ، K1 ، K0 ، K7 ، K6 ، إلخ - في الجولات من 9 إلى 32.

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

في وضع جاما ، تكون كل كتلة نص عادي عبارة عن وحدة نمطية مضافة 2 إلى كتلة جاما المشفرة 64 بت. غاما المشفرة عبارة عن تسلسل خاص ، يتم الحصول عليه نتيجة لعمليات معينة مع سجلات N1 و N2.

  • 1. في السجلات N1 و N2 ، تتم كتابة الملء الأولي - قيمة 64 بت تسمى رسالة المزامنة.
  • 2. يتم إجراء تشفير محتويات السجلات N1 و N2 (في هذه الحالة ، رسائل المزامنة) في وضع الاستبدال البسيط.
  • 3. يضاف محتوى السجل N1 إلى modulo (232 - 1) مع الثابت C1 = 224 + 216 + 28 + 24 ، ويتم كتابة نتيجة الإضافة لتسجيل N1.
  • 4. تضاف محتويات السجل N2 إلى المقياس 232 مع الثابت C2 = 224 + 216 + 28 + 1 ، ويتم كتابة نتيجة الإضافة لتسجيل N2.
  • 5. يتم إخراج محتويات المسجلين N1 و N2 ككتلة جاما مشفرة 64 بت (في هذه الحالة ، تشكل N1 و N2 أول كتلة جاما).

إذا كانت هناك حاجة إلى كتلة جاما التالية (أي يلزم استمرار التشفير أو فك التشفير) ، فارجع إلى الخطوة 2.

لفك التشفير ، يتم إنشاء جاما بطريقة مماثلة ، ومن ثم يتم XORed مرة أخرى في النص المشفر وبتات جاما. نظرًا لأن هذه العملية قابلة للعكس ، في حالة إنشاء جاما بشكل صحيح ، يتم الحصول على النص الأصلي (الجدول 1).

الجدول 1.التشفير وفك التشفير في وضع جاما

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

في معظم تطبيقات خوارزمية GOST 28147-89 ، لا تكون رسالة المزامنة سرية ، ولكن هناك أنظمة تكون فيها رسالة المزامنة هي نفس العنصر السري مثل مفتاح التشفير. بالنسبة لمثل هذه الأنظمة ، يتم زيادة الطول الفعال لمفتاح الخوارزمية (256 بت) بمقدار 64 بتًا أخرى من رسالة المزامنة السرية ، والتي يمكن اعتبارها أيضًا عنصرًا أساسيًا.

في وضع غاما ردود الفعل ، لملء السجلات N1 و N2 ، بدءًا من الكتلة الثانية ، لا يتم استخدام كتلة غاما السابقة ، ولكن نتيجة تشفير كتلة النص العادي السابقة (الشكل 2). يتم إنشاء الكتلة الأولى في هذا الوضع بنفس الطريقة تمامًا مثل الكتلة السابقة.

الشكل 2. توليد غاما المشفرة في وضع غاما التغذية المرتدة.

بالنظر إلى طريقة توليد بادئات التقليد ، من الضروري تحديد مفهوم موضوع التوليد. الانتحال عبارة عن مجموع اختباري للتشفير يتم حسابه باستخدام مفتاح تشفير ومصمم للتحقق من سلامة الرسائل. عند إنشاء بادئة ، يتم تنفيذ العمليات التالية: أول كتلة 64 بت من مصفوفة المعلومات ، والتي يتم حساب البادئة من أجلها ، تتم كتابتها في السجلات N1 و N2 وتشفيرها في وضع الاستبدال البسيط المصغر (أول 16 جولات من أصل 32). يتم تلخيص النتيجة التي تم الحصول عليها بالمقياس 2 مع المجموعة التالية من المعلومات ، مع حفظ النتيجة في N1 و N2.

تتكرر الدورة حتى آخر كتلة من المعلومات. تسمى محتويات 64 بت للسجلات N1 و N2 ، أو جزء منها ، الناتجة عن هذه التحولات ، بادئة التقليد. يتم اختيار حجم البادئة بناءً على الموثوقية المطلوبة للرسائل: مع طول البادئة r بت ، يكون احتمال حدوث تغيير في الرسالة دون أن يلاحظه أحد. في أغلب الأحيان ، تكون البادئة 32 بت مستخدمة ، أي نصف محتويات السجلات. هذا كافٍ ، لأنه ، مثل أي مجموع اختباري ، تهدف بادئة التقليد في المقام الأول إلى الحماية من التشويه العرضي للمعلومات. للحماية من التعديل المتعمد للبيانات وغيرها طرق التشفير- بادئ ذي بدء ، توقيع رقمي إلكتروني.

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

تعتبر خوارزمية GOST 28147-89 خوارزمية قوية جدًا - في الوقت الحالي ، لم يتم اقتراح طرق أكثر فعالية للكشف عنها من طريقة "القوة الغاشمة" المذكورة أعلاه. يتم تحقيق أمانها العالي بشكل أساسي بسبب طول المفتاح الكبير - 256 بت. عند استخدام رسالة مزامنة سرية ، يتم زيادة طول المفتاح الفعال إلى 320 بت ، ويضيف سر جدول الاستبدال وحدات بت إضافية. بالإضافة إلى ذلك ، تعتمد قوة التشفير على عدد جولات التحويلات ، والتي ، وفقًا لـ GOST 28147-89 ، يجب أن تكون 32 (يتم تحقيق التأثير الكامل لتشتت بيانات الإدخال بعد 8 جولات).

تتمثل مزايا GOST 28147-89 في وجود حماية ضد فرض البيانات الخاطئة (تطوير إدراج التقليد) ونفس دورة التشفير في جميع خوارزميات GOST الأربعة.

خوارزمية التشفير GOST 28147-89. طريقة الاستبدال البسيطة. - أرشيف WASM.RU

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

أريا ، "فوق هناك"

2.1 شبكات Feistel.
2.2 كتلة التشفير GOST 28147-89

3.1 معلومات أساسية
3.2 الخطوة الرئيسية في تحويل العملات المشفرة

3.3 الدورات الأساسية:32-З, 32 ر.

4.1 تنفيذ الخطوة الرئيسية لتحويل العملات المشفرة
4.2 زيادة سرعة الخوارزمية
5. متطلبات المعلومات الأساسية
6. قائمة الأدب المستخدم
7. شكرًا.

مقدمة.

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

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

مقدمة لكتلة الأصفار.

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

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

ترأس د. هورست فيستل.

2.1 شبكات Feistel

كانت بنية طريقة التشفير الجديدة التي اقترحها Feistel في الأدب الكلاسيكي تسمى "معمارية Feistel" ، ولكن على هذه اللحظةفي الأدب الروسي والأجنبي ، يتم استخدام مصطلح أكثر رسوخًا - "شبكة Feistel" أو Feistel`s NetWork. بعد ذلك ، وفقًا لهذه البنية ، تم إنشاء شفرة "Lucifer" - والتي تم نشرها لاحقًا وتسببت في موجة جديدة من الاهتمام بالتشفير بشكل عام.

فكرة بنية شبكة Feistel هي كما يلي: ينقسم تدفق معلومات الإدخال إلى كتل من n بت في الحجم ، حيث n هو رقم زوجي. تنقسم كل كتلة إلى جزأين - L و R ، ثم يتم إدخال هذه الأجزاء في تشفير كتلة تكراري ، حيث يتم تحديد نتيجة المرحلة j-th من خلال نتيجة المرحلة السابقة j-1! يمكن توضيح ذلك بمثال:

أرز. 1

حيث ، الوظيفة A هي الإجراء الرئيسي لتشفير الكتلة. يمكن أن يكون إجراءً بسيطًا ، مثل عملية XOR ، أو يمكن أن يكون له مظهر أكثر تعقيدًا ، أو سلسلة من عدد من الإجراءات البسيطة - إضافة modulo ، وإزاحة لليسار ، واستبدال عنصر ، وما إلى ذلك ، في المجموع خطوات بسيطةتشكل ما يسمى - الخطوة الرئيسية لتحويل التشفير.

وتجدر الإشارة إلى أن العناصر الأساسية للوظيفة هي توفير العناصر الأساسية وعملية XOR ، ومدى التفكير الجيد لعمل هذه العمليات ، يتحدث عن قوة التشفير للشفرات ككل.

لكي تكون فكرة شبكات Feistel واضحة تمامًا ، ضع في اعتبارك أبسط حالة موضحة في الشكل. أرز. 1، حيث في الوظيفة A - سيتم تنفيذ العمليات "mod 2" ("xor") ، ولكن هذا بروتوزوانفي حالة أكثر خطورة ، على سبيل المثال ، إخفاء المعلومات ذات الأهمية الوطنية ، يمكن أن تكون الوظيفة A أكثر تعقيدًا (بقدر ما رأيت ، يمكن أن تكون الوظيفة A معقدة للغاية بالفعل):

البيانات الأولية:

L = 1110 ب ، R = 0101 ، K = 1111 ب

احصل على نص مشفر

1. (R + K) mod 2 4 = Smod، Smod = 0100b

2. (Smod + L) mod 2 = Sxor، Sxor = 1010b

3. L = R ، R = Sxor

L = 0101b ، R = 1010b

دعونا نشرح خطواتنا:

1. هذه العملية عبارة عن أسلوب إضافة 2 4. في الممارسة العملية ، تتلخص هذه العملية في إضافة بسيطة ، حيث يجب علينا إضافة رقمين وتجاهل الحمل إلى الرقم الخامس. نظرًا لأنه إذا وضعنا الأس على أرقام التمثيل الثنائي للرقم ، فسيكون هناك مؤشر من أربعة على الرقم الخامس ، ألق نظرة على الشكل أدناه ، والذي يوضح إجراءات عمليتنا:

أرز. 2

أشرت هنا إلى الأسس بسهم ، كما ترون ، كان ينبغي أن تكون النتيجة 10100 ، ولكن نظرًا لتجاهل الحمل أثناء عملية mod 2 4 ، نحصل على 0100.

2. تسمى هذه العملية في الأدب mod 2 ، في لغة التجميع يتم تنفيذها بواسطة الأمر XOR. لكن اسمه الأكثر صحة هو mod 2 1. بدون هذه العملية الفريدة ، من الصعب إنشاء خوارزمية تشفير سريعة وسهلة التنفيذ ، وفي نفس الوقت ، تكون مقاومة تمامًا للتشفير. تفرد هذه العملية يكمن في حقيقة أنها عكس نفسها! على سبيل المثال ، إذا كان الرقم A هو XORed بالرقم B ، فستكون النتيجة C ، في المستقبل يكفي إعادة XOR الأرقام B و C معًا للحصول على القيمة السابقة لـ A!

في هذه العملية حصلنا على 1010 بالأرقام 1110 و 0100 ، لنعود 1110 ، يكفي XOR الأرقام 0100 و 1010 معًا! يمكن العثور على مزيد من التفاصيل حول هذه العملية في المقالة المضمنة في الموقع. www.wasm.ru, « دليل الابتدائية لCRC_ خوارزميات الكشف عن الخطأ»الكاتب الذي روس إن وليامز. هناك فقرة في هذا العمل - " 5. ثنائي الحساب بدون حمل". يتم وصف العملية في هذه المقالة إكسور!أصرخ لأنه في هذا المقال يتم وصف هذه العملية بطريقة تجعل القارئ لا يفهم فقط كيفية عمل هذه العملية ، بل يبدأها انظر ، اسمع واشعر!

3. يعد هذا الإجراء ضروريًا حتى تتمكن من الحصول على القيم الأصلية عند فك التشفير من النص المشفر.

2.2 كتلة التشفير GOST 28147-89

تنتمي خوارزمية التشفير GOST 28147 - 89 إلى فئة الأصفار الكتلية التي تعمل على بنية شبكة Feistel المتوازنة ، حيث يكون جزءان من كتلة المعلومات المحددة متساويين في الحجم. تم تطوير الخوارزمية في أحشاء القسم الثامن من KGB ، وتحولت الآن إلى FAPSI ، وتم تكريسها كمعيار تشفير للاتحاد الروسي في عام 1989 تحت الاتحاد السوفيتي.

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

عند النظر في الطريقة ، لن نركز على هذا ، لأن. تمت كتابة هذه المقالة ، كما قلت أعلاه ، بهدف تعليم القارئ كيفية تشفير البيانات باستخدام طريقة الاستبدال البسيطة هذه الخوارزميةالتشفير ، لكننا سنتطرق بالتأكيد إلى هذه المشكلة في نهاية المقال.

الحد الأدنى النظري.

3.1 المعلومات الأساسية

كما قلت أعلاه ، يشارك ما يلي بنشاط في تشفير البيانات:

3.1.1. المفتاح هو سلسلة من ثمانية عناصر كل منها 32 بت. علاوة على ذلك ، سوف نشير إلى الرمز K والعناصر التي يتكون منها - k1، k2، k3، k4، k5، k6، k7، k8.

3.1.2 جدول الاستبدال عبارة عن مصفوفة من ثمانية صفوف وستة عشر عمودًا ، يشار إليها فيما بعد باسم Hij. كل عنصر عند تقاطع الصف i والعمود j يأخذ 4 بتات.

3.2 الخطوة الرئيسية لتحويل التشفير

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

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

  1. يضاف جزء الإضافة من الكتلة R إلى العنصر الأساسي K mod 2 32. لقد وصفت عملية مماثلة أعلاه ، هنا الشيء نفسه هو فقط الأس ليس "4" ، ولكن "32" - سيتم الإشارة إلى نتيجة هذه العملية بواسطة Smod في المستقبل.
  2. نقسم النتيجة التي تم الحصول عليها مسبقًا Smod إلى أربعة عناصر بت s7 و s6 و s5 و s4 و s3 و s2 و s1 و s0 وإدخالها في وظيفة الاستبدال. الاستبدال على النحو التالي: يتم تحديد عنصر Smod - s i ، من البداية نبدأ من أدنى عنصر ، ونستبدلها بالقيمة من جدول الاستبدال للصف الأول والعمود المشار إليه بقيمة العنصر s i. نمرر إلى عنصر s i +1 ونفعل الشيء نفسه ونستمر حتى نستبدل قيمة العنصر الأخير Smod - ستتم الإشارة إلى نتيجة هذه العملية على أنها Ssimple.
  3. في هذه العملية ، يتم إزاحة قيمة Ssimple بشكل دوري إلى اليسار بمقدار 11 بتًا ونحصل على Srol.
  4. نختار الجزء الثاني من الكتلة L ونضيف mod 2 مع Srol ، ونتيجة لذلك لدينا Sxor.
  5. في هذه المرحلة ، يصبح الجزء L من الكتلة مساويًا لقيمة الجزء R ، ويتم تهيئة الجزء R بدوره بنتيجة Sxor ، وهذا يكمل وظيفة الخطوة الرئيسية!

3.3 الدورات الأساسية: "32-Z" ، "32-R".

لتشفير المعلومات ، من الضروري تقسيمها إلى كتل بحجم 64 بت ، وبطبيعة الحال يمكن أن تكون الكتلة الأخيرة أقل من 64 بت. هذه الحقيقة هي كعب أخيل لطريقة "الاستبدال البسيط". نظرًا لأن إضافته إلى 64 بت مهمة جدًا لزيادة قوة التشفير للنص المشفر ، فهذا المكان الحساس ، إذا كان موجودًا في مصفوفة المعلومات ، ولكنه قد لا يكون (على سبيل المثال ، ملف بحجم 512 بايت !) ، يجب أن يعامل بمسؤولية كبيرة!

بعد تقسيم المعلومات إلى كتل ، يجب تقسيم المفتاح إلى عناصر:

K = k1، k2، k3، k4، k5، k6، k7، k8

يتكون التشفير نفسه من استخدام ما يسمى بالدورات الأساسية. والتي بدورها تشمل العدد n من خطوات تحويل التشفير الأساسية.

الدورات الأساسية ، كيف أقول ، معلمة: n - m. حيث n هو عدد خطوات تحويل التشفير الأساسية في الحلقة الأساسية ، و m هو "نوع" الحلقة الأساسية ، أي ما الذي يدور حوله ، تشفير "Z" أو تشفير "R" للبيانات.

تتكون دورة التشفير الأساسية 32-3 من 32 خطوة تشفير أساسية. يتم إدخال الكتلة N وعنصر المفتاح K في الوظيفة التي تنفذ إجراءات الخطوة ، وتحدث الخطوة الأولى مع k1 ، والثانية فوق النتيجة بالعنصر k2 ، إلخ. وفق المخطط التالي:

k1، k2، k3، k4، k5، k6، k7، k8، k1، k2، k3، k4، k5، k6، k7، k8، k1، k2، k3، k4، k5، k6، k7، k8k8، k7، k6، k5، k4، k3، k2، k1

تستمر عملية فك التشفير 32-P بطريقة مماثلة ، ولكن يتم تغذية العناصر الأساسية بترتيب عكسي:

k1، k2، k3، k4، k5، k6، k7، k8، k8، k7، k6، k5، k4، k3، k2، k1، k8، k7، k6، k5، k4، k3، k2، k1، k8، k7، k6، k5، k4، k3، k2، k1

يمارس.

4.1 تنفيذ الخطوة الرئيسية لتحويل العملة المشفرة

بعد أن تعرفنا على نظرية كيفية تشفير المعلومات ، حان الوقت لنرى كيف يعمل التشفير في الممارسة العملية.

البيانات الأولية:

لنأخذ كتلة من المعلومات N = 0102030405060708h ، هنا الأجزاء L و R متساوية:

L = 01020304h ، R = 05060708h ، خذ المفتاح:

ك = ' مثل 28 zw37 q839 7342واجهة مستخدم 23 8e2t wqm2 ewp1 '(هذه رموز ASCII ، لعرض التمثيل السداسي العشري ، يمكنك فتح هذا الملف في وضع العرض في القائد الكليالضغط على المفتاح " F3"ثم المفتاح" 3 "). في هذا المفتاح ، ستكون قيم العنصر:

k1 = 'as28' ، k2 = 'zw37' ، k3 = 'q839' ، k4 = '7342'

k5 = 'ui23' ، k6 = '8e2t' ، k7 = 'wqm2' ، k8 = 'ewp1'

خذ أيضًا جدول الاستبدال التالي:

أرز. 3

هنا يتم ترقيم الصفوف من 0 إلى 7 ، والأعمدة من 0 إلى F.

تحذير:يتم أخذ جميع المعلومات ، بما في ذلك المفتاح مع جدول الاستبدال ، كمثال للنظر في الخوارزمية!

باستخدام "البيانات الأولية" ، تحتاج إلى الحصول على نتيجة إجراء الخطوة الرئيسية لتحويل التشفير.

1. حدد الجزء R = 05060708h والعنصر الرئيسي k1 = "as28" ، في الشكل السداسي العشري ، سيبدو العنصر الرئيسي كما يلي: 61733238h. الآن نقوم بعملية الجمع 2 32:

أرز. 4

كما ترى في الشكل ، لم ننقل إلى 33 بت مميزة باللون الأحمر وبالأس " 32 ". وإذا كانت لدينا قيم أخرى لـ R والعنصر الأساسي ، فقد يحدث هذا جيدًا ، ثم نتجاهله ، وفي المستقبل نستخدم فقط البتات المميزة باللون الأصفر.

أقوم بمثل هذه العملية بأمر المجمع يضيف:

؛ eax = R ، ebx = 'as28'

نتيجة هذه العملية هي Smod = 66793940h

2. الآن العملية الأكثر تعقيدًا ، ولكن إذا نظرت عن كثب ، لم تعد مخيفة كما تبدو للوهلة الأولى. دعنا نتخيل Smod بالشكل التالي:

أرز. 5

حاولت تخيل عناصر Smod في الشكل ، لكنني سأشرح على أي حال:

s0 = 0 ، s1 = 4 ، s2 = 9 ، إلخ.

الآن ، بدءًا من أدنى عنصر s0 ، نقوم باستبداله. تذكر الفقرة 3.2 الخطوة الرئيسية لتحويل التشفير»أنا صف ، و s i عمود ، ونحن نبحث عن قيمة في صف الصفر وعمود الصفر:

الشكل 6

لذا فإن القيمة الحالية لـ Smod ليست 6679394 0 ح و 6679394 5 ح.

ننتقل إلى استبدال s1 ، أي أربعة. باستخدام الصف الأول والعمود الرابع (s1 = 4!). لنلق نظرة على الصورة:

أرز. 7

الآن القيمة هي Smod ، وليس 667939 4 5 ح ، 667939 2 5 ح. أفترض أن خوارزمية الاستبدال أصبحت الآن واضحة للقارئ ، ويمكنني القول أنه بعد النتيجة النهائية لـ Ssimple سيكون لها القيمة التالية - 11e10325h.

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

  1. يجب علينا تحويل Ssimple الناتج 11 بت إلى اليسار.

أرز. 8

كما ترى ، هذا الإجراء بسيط للغاية ، ويتم تنفيذه بواسطة أمر لغة تجميع واحد - لفافةوكانت نتيجة عملية Srol هذه 0819288Fh.

4. الآن يبقى الجزء L من كتلة المعلومات الخاصة بنا إلى XOR مع القيمة Srol. آخذ الآلة الحاسبة من w2k sp4 وأحصل على Sxor = 091b2b8bh.

5. هذا الإجراء نهائي ونقوم ببساطة بتعيين وتنظيف R قيمة الجزء L ، وتهيئة الجزء L بقيمة Sxor.

النتيجة النهائية:

L = 091b2b8bh ، R = 01020304h

4.2 زيادة سرعة الخوارزمية

الآن دعنا نتحدث عن تحسين الخوارزمية للسرعة. عند تنفيذ مشروع ما ، يجب على المرء أن يأخذ في الاعتبار أن البرنامج الذي يعمل مع السجلات أكثر من أن يعمل مع الذاكرة بشكل أسرع ، وهنا يكون هذا الحكم مهمًا جدًا أيضًا ، لأنه. أكثر من كتلة واحدة من المعلومات تصل إلى 32 خطوة تشفير!

عندما قمت بتطبيق خوارزمية التشفير في برنامجي ، قمت بما يلي:

1. جزء محدد من الكتلة L في سجل eax ، و R في edx.

2. تمت التهيئة في سجل esi مع عنوان المفتاح الموسع ، والمزيد حول ذلك أدناه.

3. لقد قمت بتعيين قيمة عنوان جدول الاستبدال الموسع إلى سجل ebx ، والمزيد حول هذا أدناه

4. مرت معلومات النقاط 1 ، 2 ، 3 إلى وظيفة الدورة الأساسية 32 - Z أو 32 - R ، حسب الحالة.

إذا نظرت إلى مخطط توفير العناصر الأساسية في الفقرة " الدورات الأساسية: "32-Z" ، "32-R""، ثم يمكن تمثيل مفتاحنا للدورة الأساسية 32 - Z على النحو التالي:

K 32-Z =

'as28'، 'zw37'، 'q839'، '7342'، 'ui23'، '8e2t'، 'wqm2'، 'ewp1'،

'as28'، 'zw37'، 'q839'، '7342'، 'ui23'، '8e2t'، 'wqm2'، 'ewp1'،

'ewp1'، 'wqm2'، '8e2t'، 'ui23'، '7342'، 'q839'، 'zw37'، 'as28'

أولئك. من البداية ، انتقل k1 ، k2 ، k3 ، k4 ، k5 ، k6 ، k7 ، k8 - as28 '،'zw37 '،'q839 '،' 7342 '،'ui23 '،' 8ه 2ر "،"wqm2 '،'ewp1 'هذا التسلسل يتكرر ثلاث مرات. ثم تنتقل العناصر بترتيب عكسي ، أي: k8، k7، k6، k5، k4، k3، k2، k1 - 'ewp1'، 'wqm2'، '8e2t'، 'ui23'، '7342'، 'q839'، 'zw37'، 'as28'.

لقد قمت بترتيب العناصر في المصفوفة مسبقًا بالترتيب الذي يجب تقديمها به في 32 - Z. وهكذا ، قمت بزيادة الذاكرة المطلوبة لكل مفتاح ، لكنني أنقذت نفسي من بعض عمليات التفكير التي لم أكن بحاجة إليها ، وزدت من سرعة خوارزمية لتقليل وقت الوصول إلى الذاكرة! هنا وصفت فقط المفتاح لـ 32 - Z ، للدورة 32 - R فعلت الشيء نفسه ، لكن باستخدام مخطط مختلف لتزويد العناصر ، والذي وصفته أيضًا في الفقرة " الدورات الأساسية: "32-Z" ، "32-R».

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

لذا ، لفهم ماهية جدول الاستبدال الممتد ، نحتاج إلى جدول تعويض ، على سبيل المثال ، سآخذ الجدول الموضح في الشكل. 3.

على سبيل المثال ، نحتاج إلى استبدال الرقم 66793940h. سأقدمها بالشكل التالي:

أرز. 9

الآن إذا أخذنا العناصر s1 ، s0 ، أي بايت منخفض ، فإن نتيجة وظيفة الاستبدال ستكون 25 ساعة! بعد قراءة مقال أندريه فينوكوروف ، الذي استشهدت به في الفقرة " قائمة الأدب المستخدم"، ستجد أنه إذا أخذت سطرين ، يمكنك الحصول على مصفوفة تتيح لك العثور بسرعة على عناصر الاستبدال باستخدام أمر المجمع xlat.يقولون إنه ممكن بطريقة أخرى ، أسرع ، لكن أندريه فينوكوروف أمضى حوالي أربع سنوات في البحث عن خوارزميات سريعة لتنفيذ GOST! لا أعتقد أنه يجب عليك إعادة اختراع العجلة عندما تكون موجودة بالفعل.

إذن ، حول المصفوفة:

لنأخذ أول سطرين ، صفر وأول سطرين ، وننشئ مصفوفة من 256 بايت. نلاحظ الآن ميزة واحدة أنه إذا كنت بحاجة إلى تحويل 00h ، فستكون النتيجة 75 ساعة (بناءً على الشكل 3) - ضع هذه القيمة في المصفوفة عند الإزاحة 00h. نأخذ القيمة 01h ، نتيجة دالة الاستبدال هي 79h ، نضعها في المصفوفة عند الإزاحة 01 وهكذا حتى 0FFh ، والتي ستعطينا 0FCh ، والتي سنضعها في المصفوفة عند الإزاحة 0FFh. لذلك حصلنا على جدول ممتد من الاستبدالات للمجموعة الأولى من السلاسل: الأولى والصفر. لكن لا تزال هناك ثلاث مجموعات: الصفحة الثانية 2 ، الصفحة 3 ، الصفحة الثالثة 4 ، الصفحة 5 ، الصفحة الرابعة 6 ، الصفحة 7. مع هذه المجموعات الثلاث ، نتقدم بنفس الطريقة كما في المجموعة الأولى. والنتيجة هي جدول استبدال موسع!

يمكنك الآن تنفيذ خوارزمية ستقوم بعملية الاستبدال. لهذا نأخذ أكواد المصدرأرسله أندريه فينوكوروف على صفحته ، انظر " فهرس».

lea ebx، stretched_table_simple

mov eax ، [ضع الرقم ليحل محله]

أضف ebx ، 100h ؛ انتقل إلى العقدتين التاليتين

sub ebx ، 300 ساعة ؛ بحيث يشير ebx في المستقبل إلى الجدول

الآن ميزة أخرى ، لم نستبدل الإجراءات السابقة فحسب ، بل قمنا أيضًا بتحويل الرقم بمقدار 8 بتات إلى اليسار! علينا فقط تحويل الرقم 3 بتات أخرى إلى اليسار:

ونحصل على نتيجة العملية rol eax ، 11!

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

متطلبات المعلومات الأساسية.

كما هو مذكور في مقال Andrey Vinokurov ، يتم اختيار المفتاح وفقًا لمعيارين:

معيار التوزيع المتساوي للبتات بين القيمتين 1 و 0. عادةً ما يكون معيار التوزيع المتساوي للبتات هو معيار بيرسون ("مربع كاي").

هذا يعني أن المفتاح ، من حيث المبدأ ، يمكن لأي رقم. أي عند تكوين الجزء التالي من المفتاح ، فإن احتمال تهيئته بواحد أو صفر هو 50/50!

يرجى ملاحظة أن المفتاح يحتوي على ثمانية عناصر ، كل 32 بتة ، لذلك هناك 32 * 8 = 256 بت في المجموع في المفتاح والرقم مفاتيح ممكنة 2256! ألا تصدمك؟

معايير السلسلة.

إذا نظرنا إلى مفتاحنا ، الذي ذكرته في الفقرة " 4.1 تنفيذ الخطوة الرئيسية لتحويل العملة المشفرة"، ثم ستلاحظ أن الإدخال التالي صحيح:

أرز. 10

في إحدى العبارات ، لا ينبغي تكرار قيمة k 1 ليس في k 2 ، وليس في أي عنصر آخر من عناصر المفتاح.

أي أن المفتاح الذي اخترناه باعتباره اعتبارًا لخوارزمية التشفير ، يفي جيدًا بالمعيارين أعلاه.

الآن حول اختيار جدول الاستبدال:

الآن دعنا نتحدث عن كيفية اختيار جدول الاستبدال الصحيح. الشرط الرئيسي لاختيار جداول الاستبدال هو ظاهرة "عدم التكرار" للعناصر ، كل منها بحجم 4 بتات. كما رأيت أعلاه ، يتكون كل صف من جدول الاستبدال من القيم 0h ، 1h ، 2h ، 3h ، ... ، 0fh. لذا فإن المطلب الرئيسي هو أن كل سطر يحتوي على القيم 0h ، 1h ، 2h ، ... ، 0fh وكل قيمة من هذا القبيل في حالة واحدة. على سبيل المثال ، التسلسل:

1 2 3 4 5 6 7 8 9 أ ب ج د هـ و

يلبي هذا المطلب بالكامل ، لكن لا يزال! لا يوصى بتحديد مثل هذا التسلسل كسلسلة. لأنه إذا قمت بتوفير قيمة لإدخال دالة تعتمد على مثل هذه السلسلة ، فستحصل على نفس القيمة عند الإخراج! لا تصدق؟ ثم خذ الرقم 332DA43Fh وثمانية أسطر مثل جدول الاستبدال. قم بإجراء عملية الاستبدال ، وأؤكد لكم أن الناتج سيكون بالرقم 332DA43Fh! وهذا هو نفسه الذي قدمته لمدخلات العملية! وهذه ليست علامة حسن الشكل في التشفير ، فهل كانت كذلك؟

كان هذا أحد المتطلبات ، المعيار التالي يقول - يجب أن تكون كل بتة من كتلة الإخراج مستقلة إحصائيًا عن كل بتة من كتلة الإدخال!

كيف تبدو أسهل؟ وإليك كيف ، على سبيل المثال ، اخترنا العنصر s0 = 0Fh ، 01111b من الرقم أعلاه. احتمال استبدال البتة الأولى بواحد أو صفر هو 0.5! احتمالية استبدال البتات الثانية والثالثة والرابعة ، كل بت ، معتبرة بشكل منفصل ، بواسطة الآحاد أو الأصفار هي أيضًا 0.5. عند اختيار s1 = 0Eh ، سنستبدل احتمال أننا صفر بت ، وهذا هو "0" ، بصفر أو واحد يساوي - 0.5! وبالتالي ، وفقًا لهذا المعيار ، لا يوجد انتظام بين استبدال بتات الصفر من العناصر s0 ، s1! نعم ، يمكنك استبدال الآحاد ، ولكن يمكنك أيضًا وضع الأصفار.

لتقييم الجدول وفقًا لهذا المعيار ، يمكنك إنشاء جدول معاملات الارتباط المحسوبة بواسطة الصيغة:

إذا كانت p = 1 ، فإن قيمة البتة j عند الإخراج تساوي قيمة البتة i عند الإدخال لأي مجموعة من البتات عند الإدخال ؛

إذا كانت p = -1 ، فإن قيمة البت j عند الإخراج تكون دائمًا معكوس بتة الإدخال i ؛

إذا كانت p = 0 ، فإن بتة الخرج j تأخذ القيمتين 0 و 1 باحتمالية متساوية لأي قيمة ثابتة لبتة الإدخال i.

لنأخذ مثالاً من سطر واحد:

دعنا نقسمها إلى مكونات:

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

نأخذ البتة 0 من الرقم 0 (0) عند الإدخال والبت 0 من الرقم 0 عند الإخراج (1) ونقوم بتنفيذ العملية 0 XOR 1 = 1.

نأخذ البتة 0 من الرقم الأول (1) عند الإدخال والبت 0 من الرقم الأول عند الإخراج (1) ونقوم بتنفيذ العملية 1 XOR 1 = 0.

نأخذ البتة 0 من الرقم الثاني (0) عند الإدخال والبت 0 من الرقم الثاني عند الإخراج (0) ونقوم بتنفيذ العملية 0 XOR 0 = 0.

نأخذ البتة 0 من الرقم الثالث (1) عند الإدخال والبت 0 من الرقم الثالث عند الإخراج (1) ونقوم بتنفيذ العملية 1 XOR 1 = 0.

بعد إجراء عمليات XOR بالتتابع في مثل هذا التسلسل ، نحسب عدد جميع القيم غير الصفرية ، ونحصل على القيمة 6. ومن ثم P 00 = 1- (6/2 4-1) = 0.25. لذلك ، اتضح أن قيمة البتة 0 عند الإخراج تساوي قيمة البتة 0 عند الإدخال في 4 حالات من أصل 16 ؛

جدول الاحتمالات النهائي:

كما يتضح من جدول معاملات الارتباط ، فإن البتة 3 عند الإدخال مقلوبة بالنسبة إلى البتة 0 عند الخرج في 14 حالة من أصل 16 ، وهي نسبة 87.5٪ ، ولم يعد هذا مقبولاً لأنظمة التشفير العادية. من أجل التغيير ، لنأخذ مثالًا آخر:

سيكون جدول المعاملات على النحو التالي (من ليس كسولًا لإعادة الحساب)

حسنًا ، الأمور أسوأ في هذا الجدول - تبقى البتتان 1 و 2 من المجموعة دون تغيير! محلل التشفير لديه مكان للالتفاف حوله مع الأخذ في الاعتبار كل هذه المتطلبات ، وجد تعداد بسيط ("وجهاً لوجه") جداول تبديل تتوافق مع النظرية المحددة (اليوم - مجموعات 1276) وإليك بعضًا منها:

09 0D 03 0E-06 02 05 08-0A 07 00 04-0C 01 0F 0B

00 05 0A 07-03 08 0F 0C-0E 0B 04 09-0D 06 01 02

06 0B 0F 00-0C 01 02 0D-08 07 09 04-05 0A 03 0E

04 0E 00 09-0B 01 0F 06-03 0D 07 0A-0C 02 08 05

04 02 08 0E-05 0F 03 09-0B 01 0D 07-0A 0C 06 00

07 03 09 0C-08 00 06 0F-0E 04 01 0A-0D 0B 02 05

06 0F 03 08-0D 04 0A 01-09 02 05 0C-00 0B 0E 07

0C 06 08 01-03 09 07 0E-0B 05 0F 02-04 0A 00 0D

04 0B 09 06-0E 01 00 0F-0A 05 03 0C-0D 02 07 08

00 0E 0F 01-07 08 09 06-04 0B 0A 05-03 0D 0C 02

0F 09 01 07-04 0A 08 06-0E 00 02 0C-05 03 0B 0D

0A 03 04 01-05 0C 0B 0E-08 06 0F 0D-07 09 00 02

0B 06 0F 01-04 0A 08 05-00 0D 0C 02-07 09 03 0E

0C 03 02 08-0D 06 0B 05-07 09 04 0F-0A 00 01 0E

02 0B 0F 04-09 00 06 0D-05 0E 01 08-0C 07 0A 03

قائمة الأدب المستخدم.

  1. مقال بقلم أندريه فينوكوروف:

خوارزمية التشفير GOST 28147-89 واستخدامها وتنفيذها

لأجهزة الكمبيوتر منصات إنتلإلى x86.

فيما يلي رموز المصدر لتنفيذ خوارزمية التشفير.

  1. مقال بقلم هورست فيستل:

التشفير وأمن الكمبيوتر.

(يمكن العثور عليها في نفس عنوان المقالة السابقة)

  1. روس إن. ويليامز:

دليل أولي لخوارزميات اكتشاف الأخطاء CRC

منشور على الموقع www.كان م.en.

شكرًا.

أود أن أعرب عن امتناني لجميع زوار منتدى www.wasm.ru. لكن أود أن أشكر بشكل خاص ChS ، التي تُعرف حاليًا باسم SteelRat ، لقد ساعدني في فهم الأشياء التي ربما لن أفهمها أبدًا ، بالإضافة إلى مساعدتي في كتابة الفقرة: " متطلبات المعلومات الأساسية"، الجزء الرئيسي من هذه الفقرة كتبه. كما أنني ممتن للغاية لموظف KSTU. أ. Tupolev Anikin Igor Vyacheslavovich وسيكون من الخطيئة عدم ذكر كريس كاسبيرسكي ، لكونه كذلك ، وفولوديا / wasm.ru لتعليماته. أوه ، وأنا أخرج منه. أريد أيضًا أن أشير إلى Sega-Zero / Callipso لإحضار بعض الغابة الرياضية إلى ذهني.

ربما كان هذا كل ما أود أن أخبرك به.

سأكون ممتنا للنقد أو الأسئلة المتعلقة بهذه المقالة أو مجرد نصيحة. بيانات الاتصال بي: [بريد إلكتروني محمي]، ICQ - 337310594.

مع خالص التقدير ، يقطع الشر.

ملاحظة: لم أحاول التفوق على أي شخص بهذه المقالة. لقد تم كتابته بقصد تسهيل دراسة GOST ، وإذا كنت تواجه صعوبات ، فهذا لا يعني أنني المسؤول عن ذلك. كن عقلانيًا وتحلى بالصبر ، كل التوفيق لك!



تحميل...
قمة