تابع یک‌طرفه

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

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

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

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

\Pr [f(A(f(x))) = f(x)] 

به‌طوری که انتخاب 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 تحویل می‌شود.

## منابع

رده:پایه رمزنگاری
رده:رمزنگاری
رده:مسئله‌های حل‌نشده در علوم رایانه
رده:مقاله‌های ایجادشده توسط ایجادگر