تدفق المعلومات (نظرية المعلومات)

يُعرَّف تدفق المعلومات في سياق نظرية المعلومات بأنه نقل المعلومات من متغيرx{\displaystyle x}إلى متغيرy{\displaystyle y}في عملية معينة . قد لا تكون جميع التدفقات مرغوبة؛ على سبيل المثال، لا ينبغي للنظام أن يسرب أي معلومات سرية (جزئياً أو كلياً) إلى المراقبين العامين - لأنه انتهاك للخصوصية على المستوى الفردي، أو قد يتسبب في خسارة كبيرة على مستوى الشركة.

مقدمة

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

في تحليل تدفق المعلومات على المستوى الأدنى، يُخصص لكل متغير عادةً مستوى أمان. يتألف النموذج الأساسي من مستويين متميزين: منخفض وعالي، ويمثلان على التوالي المعلومات المتاحة للعامة والمعلومات السرية. ولضمان السرية، لا يُسمح بتدفق المعلومات من المتغيرات ذات المستوى العالي إلى المتغيرات ذات المستوى المنخفض. ومن جهة أخرى، ولضمان سلامة البيانات، يجب تقييد تدفق المعلومات إلى المتغيرات ذات المستوى العالي. [ 1 ]

وبشكل أعم، يمكن النظر إلى مستويات الأمان على أنها شبكة تتدفق فيها المعلومات إلى أعلى فقط. [ 2 ]

على سبيل المثال، بالنظر إلى مستويين أمنيينL{\displaystyle L}وح{\displaystyle H}(منخفضة وعالية)، إذاLح{\displaystyle L\leq H}، يتدفق منL{\displaystyle L}لL{\displaystyle L}، منح{\displaystyle H}لح{\displaystyle H}، وL{\displaystyle L}لح{\displaystyle H}سيُسمح بذلك، بينما تتدفق منح{\displaystyle H}لL{\displaystyle L}لن يفعل. [ 3 ]

في جميع أنحاء هذه المقالة، يتم استخدام الرموز التالية:

  • عامللL{\displaystyle l\in L}(منخفض) يشير إلى متغير يمكن ملاحظته علنًا
  • عاملحح{\displaystyle h\in H}يشير (عالي) إلى متغير سري

أينL{\displaystyle L}وح{\displaystyle H}هما المستويان الأمنيان الوحيدان اللذان يتم النظر فيهما في الشبكة .

التدفقات الصريحة والقنوات الجانبية

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

المتغير l، h ل := ح

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

في المثال التالي، يمكن للمهاجم أن يستنتج ما إذا كانت قيمة h تساوي واحدًا أم لا من خلال الوقت الذي يستغرقه البرنامج للانتهاء:

المتغير l، h إذا كان h = 1 ثم (* القيام ببعض الأعمال التي تستغرق وقتاً طويلاً *) l := 0

يُعدّ تدفق المعلومات الضمني أحد أنواع تدفق القنوات الجانبية، ويتمثل في تسريب المعلومات عبر مسار التحكم في البرنامج . يكشف البرنامج التالي (ضمنياً) قيمة المتغير السري h للمتغير l . في هذه الحالة، ولأن المتغير h منطقي، يتم الكشف عن جميع بتات المتغير h (في نهاية البرنامج، ستكون قيمة l هي 3 إذا كانت h صحيحة، و42 خلاف ذلك).

var l, h if h = true then ل := 3 وإلا l := 42

عدم التدخل

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

التحكم في تدفق المعلومات

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

تم تطوير كل من التحليل الثابت والتحليل الديناميكي للغات البرمجة الحالية. مع ذلك، لا تستطيع تقنيات التحليل الديناميكي رصد جميع مسارات التنفيذ، وبالتالي لا يمكنها أن تكون سليمة ودقيقة في آن واحد. ولضمان عدم التداخل، فإنها إما تُنهي عمليات التنفيذ التي قد تُفصح عن معلومات حساسة [ 5 ] أو تتجاهل التحديثات التي قد تُسرب معلومات. [ 6 ]

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

نظام نوع الأمان

في لغة برمجة معززة بنظام نوع أمان ، يحمل كل تعبير نوعاً (مثل منطقي أو عدد صحيح) وعلامة أمان.

فيما يلي نظام أمني بسيط من [ 1 ] يفرض عدم التدخل.هـxص:τ{\displaystyle \;\vdash exp\;:\;\tau }يعني ذلك أن التعبيرهـxص{\displaystyle exp}له نوعτ{\displaystyle \;\tau }. بصورة مماثلة،[sج]ج{\displaystyle [sc]\vdash C}يعني ذلك أن الأمرج{\displaystyle C}يمكن كتابتها في سياق الأمانsج{\displaystyle sc}.

[هـ1-2]هـxص:حأنازححVأرs(هـxص)هـxص:لow{\displaystyle [E1-2]\quad \vdash exp:high\qquad {\frac {h\notin Vars(exp)}{\vdash exp\;:\;low}}}

[ج1-3][sج]يتخطى[sج]ح:=هـxصهـxص:لow[لow]ل:=هـxص{\displaystyle [C1-3]\quad [sc]\vdash {\textbf {skip}}\qquad [sc]\vdash h\;:=\;exp\qquad {\frac {\vdash exp\;:\;low}{[low]\vdash l\;:=\;exp}}}

[ج4-5][sج]ج1[sج]ج2[sج]ج1؛ج2هـxص:sج[sج]ج[sج]بينما هـxص يفعل ج{\displaystyle [C4-5]\quad {\frac {[sc]\vdash C_{1}\quad [sc]\vdash C_{2}}{[sc]\vdash C_{1}\;;\;C_{2}}}\qquad {\frac {\vdash exp\;:\;sc\quad [sc]\vdash C}{[sc]\vdash {\textbf {while}}\ exp\ {\textbf {do}}\ C}}}

[ج6-7]هـxص:sج[sج]ج1[sج]ج2[sج]لو هـxص ثم ج1 آخر ج2[حأنازح]ج[لow]ج{\displaystyle [C6-7]\quad {\frac {\vdash exp\;:\;sc\quad [sc]\vdash C_{1}\quad [sc]\vdash C_{2}}{[sc]\vdash {\textbf {if}}\ exp\ {\textbf {then}}\ C_{1}\ {\textbf {else}}\ C_{2}}}\qquad {\frac {[high]\vdash C}{[low]\vdash C}}}

تتضمن الأوامر المكتوبة بشكل صحيح، على سبيل المثال،

[لow] لو ل=42 ثم ح:=3 آخر ل:=0{\displaystyle [low]\vdash \ {\textbf {if}}\ l=42\ {\textbf {then}}\ h\;:=\;3\ {\textbf {else}}\ l\;:=\;0}.

وعلى النقيض من ذلك، البرنامج

ل:=0 ؛ بينما ل<ح يفعل ل:=ل+1{\displaystyle l\;:=\;0\ ;\ {\textbf {while}}\ l<h\ {\textbf {do}}\ l\;:=\;l+1}

هذا خطأ في الكتابة، لأنه سيكشف قيمة المتغيرح{\displaystyle h}داخلل{\displaystyle l}.

لاحظ أن القاعدة[ج7]{\displaystyle [C7]}هي قاعدة استيعاب، مما يعني أن أي أمر من نوع الأمانحأنازح{\displaystyle high}يمكن أن يكون أيضًالow{\displaystyle low}. على سبيل المثال،ح:=1{\displaystyle h:=1}يمكن أن يكون كلاهماحأنازح{\displaystyle high}ولow{\displaystyle low}يُطلق على هذا اسم تعدد الأشكال في نظرية الأنواع . وبالمثل، نوع التعبيرهـxص{\displaystyle exp}ذلك يرضيحVأرs(هـxص){\displaystyle h\notin Vars(exp)}يمكن أن يكون كلاهماحأنازح{\displaystyle high}ولow{\displaystyle low}وفق[هـ1]{\displaystyle [E1]}و[هـ2]{\displaystyle [E2]}على التوالى.

رفع السرية

كما سبق بيانه، فإن سياسة عدم التدخل صارمة للغاية بحيث لا يمكن تطبيقها في معظم التطبيقات العملية. [ 7 ] ولذلك، تم ابتكار عدة مناهج تسمح بنشر المعلومات بشكل مُتحكم فيه. وتُعرف هذه المناهج باسم رفع السرية عن المعلومات.

يتطلب رفع السرية القوي ألا يتمكن المهاجم النشط من التلاعب بالنظام من أجل معرفة المزيد من الأسرار أكثر مما يعرفه المهاجمون السلبيون بالفعل. [ 4 ]

يمكن تصنيف بنى رفع السرية عن المعلومات في أربعة أبعاد متعامدة: ما هي المعلومات التي يتم نشرها، ومن هو المصرح له بالوصول إلى المعلومات، وأين يتم نشر المعلومات، ومتى يتم نشر المعلومات. [ 4 ]

ماذا

تحدد سياسة رفع السرية المعلومات التي يمكن نشرها (جزئية أو غير جزئية) لمتغير يمكن ملاحظته علنًا.

يوضح مثال الكود التالي بنية declassify من [ 8 ] . في هذا الكود، يسمح المبرمج صراحةً بتدفق قيمة المتغير h إلى المتغير l القابل للملاحظة بشكل عام .

var l, h if l = 1 then l := declassify (h)

من

تتحكم سياسة رفع السرية عن المعلومات في تحديد الجهات التي يمكنها الوصول إلى معلومة معينة. وقد تم تطبيق هذا النوع من السياسات في مُترجم Jif. [ 9 ]

يسمح المثال التالي لبوب بمشاركة سره الموجود في المتغير b مع أليس من خلال المتغير ab الذي يمكن الوصول إليه بشكل مشترك .

var ab (* {Alice, Bob} *) var b (* {Bob} *) if ab = 1 then ab := declassify (b, {Alice, Bob}) (* {Alice, Bob} *)

أين

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

يستخدم المثال التالي بنية التدفق المقترحة في [ 10 ] تأخذ هذه البنية سياسة تدفق (في هذه الحالة، يُسمح للمتغيرات في H بالتدفق إلى المتغيرات في L) وأمرًا يتم تشغيله في إطار سياسة التدفق المعطاة.

متغيرتدفق h H{\displaystyle \prec }L في l := h

متى

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

أساليب رفع السرية عن التدفقات الضمنية

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

النهج الساذج

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

لا يوجد ترقية حساسة

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

في المثال التالي، x تعني مرتفع و y تعني منخفض.

المتغير س، ص y := false إذا كانت x = صحيح، y := true أعد القيمة صحيحًا

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

ترقية مسموح بها

يُضيف التحديث المُتساهل فئة أمان إضافية (P) لتحديد المتغيرات التي قد تُسرّب المعلومات. عندما يؤثر متغير عالي (High) على قيمة متغير منخفض (Low)، يُصنّف الأخير بالفئة (P). إذا أثر متغير مُصنّف بالفئة (P) على متغير منخفض (Low)، فسيتوقف البرنامج. ولمنع هذا التوقف، يجب تحويل المتغيرين (Low) و(P) إلى فئة عالية (High) باستخدام دالة خصوصية لضمان عدم تسريب أي معلومات. في المرات اللاحقة، سيعمل البرنامج دون انقطاع.

استنتاج الخصخصة

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

التطبيق في أنظمة الحاسوب

إلى جانب تطبيقاتها في لغات البرمجة، تم تطبيق نظريات التحكم في تدفق المعلومات على أنظمة التشغيل، [ 11 ] والأنظمة الموزعة، [ 12 ] والحوسبة السحابية . [ 13 ] [ 14 ]

مراجع

  1. 1 2 3 أندريه سابيلفيلد وأندرو سي. مايرز. أمن تدفق المعلومات القائم على اللغة. مجلة IEEE للمجالات المختارة في الاتصالات، 21(1)، يناير 2003.
  2. دوروثي دينينغ. نموذج شبكي لتدفق المعلومات الآمن. اتصالات ACM، 19(5):236-242، 1976.
  3. سميث، جيفري (2007). "مبادئ تحليل تدفق المعلومات الآمن". التقدم في أمن المعلومات . المجلد  27. سبرينغر الولايات المتحدة. الصفحات 291-307 . 
  4. 1 2 3 أندريه سابيلفيلد وديفيد ساندز. أبعاد ومبادئ رفع السرية. في وقائع ورشة عمل مؤسسة أمن الحاسوب التابعة لمعهد مهندسي الكهرباء والإلكترونيات، 2005.
  5. توماس هـ. أوستن وكورماك فلانجان. تحليل تدفق المعلومات الديناميكي البحت الفعال، وقائع ورشة عمل ACM SIGPLAN الرابعة حول لغات البرمجة والتحليل من أجل الأمن، ACM، 2009.
  6. جيه إس فينتون. الأنظمة الفرعية عديمة الذاكرة، مجلة الحوسبة 17(2): 143-147 (1974)
  7. س. زدانسيفيتش. تحديات أمن تدفق المعلومات. في ورشة عمل حول تداخل لغات البرمجة والاعتماد عليها (PLID'04) 2004.
  8. أ. سابيلفيلد وأ. س. مايرز. نموذج لإصدار المعلومات المحدود. في وقائع الندوة الدولية لأمن البرمجيات (ISSS) 2003.
  9. جيف: تدفق المعلومات في جافا
  10. أ. ألميدا ماتوس وج. بودول. حول رفع السرية وسياسة عدم الإفصاح. في وقائع ورشة عمل مؤسسة أمن الحاسوب التابعة لمعهد مهندسي الكهرباء والإلكترونيات لعام 2005.
  11. م. كروهن، أ. يب، م. برودسكي، ن. كليفر، م. كاشوك، إ. كولر، و ر. موريس. التحكم في تدفق المعلومات لتجريدات أنظمة التشغيل القياسية. في ندوة مجموعة الاهتمام الخاصة بأنظمة التشغيل (SIGOPS) التابعة لجمعية آلات الحوسبة حول مبادئ أنظمة التشغيل 2007.
  12. ن. زيلدوفيتش، س. بويد-ويكيزر، و د. مازيير. تأمين الأنظمة الموزعة باستخدام التحكم في تدفق المعلومات. في ندوة USENIX حول تصميم وتنفيذ الأنظمة الشبكية 2008.
  13. ج. بيكون، د. إيرز، ت. باسكييه، ج. سينغ، إ. باباجيانيس، وب. بيتزوش. التحكم في تدفق المعلومات للحوسبة السحابية الآمنة. في معاملات IEEE لإدارة الشبكات والخدمات 2014.
  14. باسكييه، توماس؛ سينغ، جاتيندر؛ إيرز، ديفيد؛ بيكون، جان (2015). "CamFlow: مشاركة البيانات المُدارة لخدمات الحوسبة السحابية". معاملات IEEE في الحوسبة السحابية . 5 (3): 472-484 . arXiv : 1506.04391 . Bibcode : 2015arXiv150604391P . doi : 10.1109/TCC.2015.2489211 . S2CID 11537746 .