تابع یک‌طرفه

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در علوم رایانه، تابع یک‌طرفه به تابعی گفته می‌شود که برای هر ورودی، خروجی تابع به راحتی قابل محاسبه است، امّا به‌دست آوردنِ پیش‌تصویرِ خروجیِ متناظر با یک ورودیِ تصادفی، دشوار می‌باشد. منظور از راحتی و دشواری محاسبه، آسانی یا سختی محاسبه از لحاظ پیچیدگی محاسبه است. محاسبه در زمانِ چندجمله‌ایِ قطعی را آسان و عدم توانایی محاسبه در زمان چندجمله‌ای قطعی را سخت می‌گوییم. توجّه داشته باشید که برای یک‌طرفه بودن تابع، نیازی به یک‌به‌یک بودن آن نیست.

وجود توابع یک‌طرفه در علوم رایانه، هنوز به عنوان یک مسئله‌ی حل نشده‌ی پژوهشی مطرح می‌باشد. در واقع وجود چنین توابعی نشانگر نابرابری کلاس‌های P و NP است که به تبع آن مهم‌ترین مسئله‌ی حل‌نشده‌ی علوم رایانه‌ی نظری ثابت می‌شود. عکس گزاره‌ی گفته شده درست نیست، بدین معنی که نابرابری کلاس‌های P و NP، وجود توابع یک‌طرفه را به طور مستقیم نتیجه نمی‌دهد.

در موارد کاربردی منظور از آسانی و سختی معمولاً به دستگاه محاسبه‌ی مورد نظر برمی‌گردد. توابع یک‌طرفه، ابزارهای بنیادی در رمزنگاری، احراز هویّت، اصالت‌سنجی و دیگر کاربردهای امنیّت داده می‌باشند. گرچه مسئله‌ی وجود توابع یک‌طرفه هنوز مسئله‌ای باز است، امّا نامزدهای متعدّدی برای این توابع جهت استفاده در مخابرات و سامانه‌های تجارت الکترونیک در طول دهه‌های گذشته درنظر گرفته شده است.

تعریف نظری[ویرایش]

تابع f:\{0,1\}^* \rightarrow \{0,1\}^* یک‌طرفه است هرگاه f توسّط یک الگوریتم چندجمله‌ای قابل محاسبه باشد، برای هر الگوریتم تصادفی که در زمان چندجمله‌ای از طول ورودی اجرا می‌شود و برای هر چندجمله‌ای p(n) و برای مقادیر بزرگ n داشته باشیم:

\Pr [f(A(f(x))) = f(x)] <\frac{1}{p(n)}

به‌طوری که انتخاب x به‌طور یکنواخت روی \{0,1\}^n است. توجّه داشته باشید که طبق تعریف، به‌دست آوردن پیش‌تصویر یک عنصر باید در حالت میانگین سخت باشد و لزومی ندارد که در بدترین حالت هم سخت باشد.

مفاهیم مرتبط[ویرایش]

جایگشت یک‌طرفه تابع یک‌طرفه‌ای است که خود تابع یک جایگشت است. به‌طور دقیق‌تر، تابع یک‌طرفه‌ای را که یک‌به‌یک و پوشا باشد، یک جایگشت یک‌طرفه می‌نامند. جایگشت‌های یک‌طرفه ابزارهای بنیادی مهمّی در رمزنگاری هستند. اینکه وجود جایگشت یک‌طرفه، وجود تابع یک‌طرفه را نتیجه می‌دهد، هنوز به عنوان مسئله‌ای حل نشده باقی‌مانده است. تابع چکیده‌ساز مقاوم در برابر برخورد f تابع یک‌طرفه‌ای است که مقاوم در برابر برخورد نیز می‌باشد. بدین معنی که هیچ الگوریتم تصادفی در زمان چندجمله‌ای نمی‌تواند مقادیر متمایز x و y را با احتمال غیر ناچیز پیدا کند به‌طوری‌که f(x) = f(y) باشد.

لگاریتم و توان گسسته[ویرایش]

تابع f که عدد اوّل p و عدد صحیح x بین صفر و p - 1 را می‌گیرد و باقی‌مانده‌ی 2^x را بر p برمی‌گرداند، توان گسسته نامیده می‌شود. توان گسسته در زمان \mathcal{O}(n^3) قابل محاسبه است به‌طوری‌که n تعداد بیت‌های p می‌باشد. محاسبه‌ی معکوس این تابع نیازمند محاسبه‌ی لگاریتم گسسته‌ی به پیمانه‌ی p است. به طور خلاصه مسئله‌ی لگاریتم گسسته به این صورت است که به ازای عدد اوّل p و عدد صحیح y که 0 \leq y \leq p -1، هدف پیدا کردن عدد x است به‌طوری که 2^x = y باشد. برای این مسئله، هیچ الگوریتمی وجود ندارد که در زمان چندجمله‌ای اجرا شود. سیستم رمز الگمال بر مبنای لگاریتم گسسته طرّاحی شده است.

توابع چکیده‌ساز امن[ویرایش]

تعدادی تابع چکیده‌ساز رمزنگاری مانند SHA-256 وجود دارند که در زمان کمی قابل محاسبه می‌باشند. تعدادی از نسخه‌های ساده از تحلیل‌های امنیّتی با موفقیّت عبور نکردند، امّا نسخه‌های قوی‌تر همچنان راه‌حل‌های عملی برای محاسبه‌ی یک‌طرفه می‌باشند.

خم‌های بیضوی[ویرایش]

خم‌های بیضوی مجموعه اعداد صحیحی هستند که در معادله‌ی  y^2 = (x^3+ax+b) \mod p صدق می‌کنند. تعریف جمع برای نقاط دوبعدی رو خم‌ها و ضرب اسکالر برای آنها به صورت دنباله‌ای از عمل جمع، منجر به معادله‌ی R = kP برای نقاط می‌شود که با داشتن P و k محاسبه‌ی R آسان است، امّا در صورتی که P و R معلوم باشند محاسبه‌ی k از لحاظ محاسباتی دشوار است.

نامزدهای دیگر[ویرایش]

نامزدهای دیگری برای توابع یک‌طرفه وجود دارند که مبتنی بر سختی کدگشایی کدهای خطّی تصادفی، مسئله‌ی مجموع زیرمجموعه‌ها و مسائل دیگری می‌باشند.

تابع یک‌طرفه‌ی جهانی[ویرایش]

تابع صریح f وجود دارد که اگر تابع یک‌طرفه وجود داشته باشد، f نیز یک‌طرفه خواهد بود. به عبارت دیگر، در صورتی که هر تابع یک‌طرفه باشد، f نیز یک‌طرفه خواهد بود. چون این تابع، اوّلین تابعِ ترکیبیاتیِ یک‌طرفه‌یِ کاملی است که ارائه شده است، به عنوان تابع یک‌طرفه‌ی جهانی شناخته می‌شود. در نتیجه، مسئله‌ی پیدا کردن تابع یک‌طرفه، به مسئله‌ی اثبات یک‌طرفه بودن تابع f تحویل می‌شود.

منابع[ویرایش]