پایه رمزنگاری

پایه‌های رمزنگاری، الگوریتم‌های رمزنگاری سطح پایینی هستند که از اعتبار قابل توجهی برخوردار بوده و به طور گسترده در ساخت پروتکل‌های رمزنگاری برای سامانه‌های امنیت رایانه به کار می‌روند. از جمله این روال‌ها می‌توان به توابع درهم‌ساز رمزنگاری یک طرفه و توابع رمزگذاری اشاره کرد.
اصول کلی
هنگام ساخت سامانه‌های رمز نگاری، طراحان از پایه‌های رمزنگاری به عنوان پایه‌ای‌ترین قطعات سازنده آن استفاده می‌کنند. از همین روی پایه‌های رمزنگاری برای انجام یک کار بسیار خاص آن هم با اطمینان بالا طراحی شده‌اند.
ازآنجایی که از پایه‌های رمزنگاری به عنوان قطعات سازنده یک سیستم رمزنگاری استفاده می‌شود، آنها باید از اطمینان بالایی برخوردار باشند و دقیقا مطابق با تعاریفشان عمل کنند. برای نمونه اگر یک روال رمزگذاری بر اساس تعریفش تنها با تعداد X عمل رایانه قابل شکستن باشد، پس اگر با انجام تعداد قابل توجهی کمتر از تعداد X عمل شکسته شود، آن پایه رمزنگاری شکست خورده است. اگر یک پایه رمزنگاری شکست بخورد تقریبا همه پروتکل‌هایی که از آن استفاده می‌کنند آسیب پذیر می‌شوند. از آنجایی که ساخت روال‌های رمزنگاری بسیار دشوار است و آزمایش آنها تا رسیدن به اطمینان زمان زیادی می‌برد پس طراحی یک پایه رمزنگاری برای پوشش نیازهای سامانه رمزنگاری، نه منطقی بوده و نه امن است. دلایل عبارت‌انداز:
طراح ممکن است فاقد شایستگی‌های لازم در ریاضیات و ملاحظات عملیاتی لازم در پایه‌های رمزنگاری باشد.
طراحی یک پایه رمزنگاری جدید حتی برای کارشناسان این رشته بسیار زمان بر و مستعد خطااست.
از آنجایی که الگوریتم‌ها در این زمینه نه تنها باید به خوبی طراحی شده باشند بلکه باید به خوبی توسط جامعه رمزنگاری آزمایش شوند، حتی اگر یک روال رمزنگاری از دید طراحی خوب به نظر بیاید باز هم ممکن است دارای خطا باشد. ایستادگی موفق در برابر این بررسی‌های دقیق اندکی به ما اطمینان می‌دهد که الگوریتم واقعا به اندازه کافی امن است. اثبات کامل و قطعی امنیت پایه‌های رمزنگاری امکان‌پذیر نیست.
پایه‌های متداول استفاده شده
تابع درهم‌ساز یک‌طرفه، گاهی تابع فشرده‌سازی یک طرفه نامیده می‌شود -- محاسبه یک مقدار درهم برای یک پیام (برای نمونه SHA-1)
اصالت‌سنجی
رمزنگاری با کلید محرمانه -- محاسبه یک متن رمز که قابل رمزگشایی با همان کلید رمزگذاری است (برای نمونه DES)
رمزنگاری با کلید عمومی -- محاسبه یک متن رمز که قابل رمزگشایی با کلیدی متفاوت با کلید رمزگذاری است (برای نمونه RSA)
امضاهای دیجیتال -- تایید پدیدآور پیام
-- انباشت مخابره‌های صورت گرفته از همه کاربران تا کسی نداند چه چیزی از چه کسی می‌آید
بازیابی اطلاعات خصوصی -- بازیابی اطلاعات پایگاه داده بدون آنکه سرور بداند چه چیزی درخواست شده است
-- allows one to commit to a chosen value while keeping it hidden to others, with the ability to reveal it later
مولد امن اعداد شبه‌تصادفی در رمزنگاری
ترکیب پایه‌های رمزنگاری
پایه‌های رمزنگاری، به خودی خود کاملا محدوداند. نمی‌توان آنها را یک سیستم رمزنگاری کامل در نظر گرفت. برای نمونه یک الگوریتم رمزگذاری برهنه هیچ سازوکار اصالت‌سنجی یا بررسی یکپارچگی پیام مشخصی را ارائه نمی‌دهد. اما تنها هنگامی که با پروتکل‌های امنیتی ترکیب می‌شوند می‌توان آنها را فراتر از فقط یک نیاز امنیتی دانست. برای نمونه برای انتقال یک پیام که علاوه بر کدگذاری شدن، همچنین در برابر حملات بر ضد محرمانگی و یکپارچگی حفاظت شده است می‌توان از یک روال کدگذاری مانند DES به همراه یک روال درهم‌ساز مانند SHA-1 استفاده کرد. اگر مهاجم، کلید رمزگذاری را نداشته باشد نمی‌تواند پیام را دستکاری کند و درنتیجه مقدار درهم (مقدار خلاصه‌شده‌ای که تابع درهم‌ساز می‌دهد) باید درست باشد.
ترکیب پایه‌های رمزنگاری برای ساخت یک پروتکل امن، خود، کاملا یک کار ویژه است. بیشتر خطاهای بهره‌جو (که وجود نا امنی‌ها در سیستم‌های رمزنگاری را می‌رساند) به خاطر خطاهای طراحی در پایه‌ها نیستند (البته با فرض اینکه به خوبی گزینش شده باشند)، بلکه به روش استفاده آنها بر می‌گردد که از آن جمله می‌توان به طراحی بد پروکل و پیاده‌سازی بدون دقت کافی یا دارای اشکال اشاره کرد. توانایی تحلیل ریاضیات پروتکل‌ها در زمان نوشتن این متن از رشد کافی برخوردار نبوده است. البته چند ویژگی ابتدایی وجود دارد که می‌توان آنها را با متدهای خودکار همچون مورد بررسی قرار داد. همچنین متدهایی حتی برای بررسی کامل وجود دارند (مانند SPI calculus) اما بسیار سنگین بوده و امکان انجام خودکار آنها وجود ندارد. طراحی پروتکل، یک هنر است که به دانشی عمیق و تمرین زیادی نیاز دارد، با این حال هنوز هم بروز اشتباهات متداول است. یک نمونه گویا برای یک سیستم واقعی را می‌توان بر روی صفحه اخبار آسیب‌پذیری اپن‌اس‌اس‌ال یافت.
– فهرست پایه‌های رمزنگاری