شاید بپرسید چرا که ما توانستیم با بدبختی یک ماشین تولید عدد رندوم بسازیم (البته با فرض اینکه کاملاً رندوم باشد، که در واقع در کامپیوتر و ریاضیات ما چیزی به نام «رندوم کاملاً» نداریم؛ بلکه در بهترین حالت، داریم چیزی به نام «شبه رندوم»، یعنی غیرقابل پیشبینی).
خب، چرا این عدد را بهعنوان کلید استفاده نمیکنیم؟
ببینید، یک کلید باید حداقل طول مشخصی داشته باشد تا امنیت مناسبی فراهم کند. برای الگوریتمهای رمزنگاری مدرن مانند AES، طول کلید باید حداقل 128 بیت باشد (که معادل 16 بایت است)، اما برای امنیت بیشتر، معمولاً از 256 بیت استفاده میشود. دلیل علمی این قضیه به توان محاسباتی دستگاهها و احتمال شکستن کلید برمیگردد.
قدرت محاسبات یک CPU عادی:
یک CPU معمولی مانند Intel Core i7 میتواند در حدود 10 میلیارد عملیات در ثانیه انجام دهد. با توجه به این قدرت محاسباتی، اگر یک کلید 128 بیتی داشته باشیم، تعداد کل حالتهای ممکن برابر با خواهد بود که معادل حدود 3.4 × 10^{38} حالت مختلف است.
اگر بخواهیم برای شکستن کلید 128 بیتی تمام این حالتها را امتحان کنیم (با فرض اینکه هر عملیات یک ثانیه طول بکشد)، شکستن آن نزدیک به 10^{32} سال طول میکشد.
اما برای یک کلید 256 بیتی، تعداد حالتها برابر با است که معادل 1.15 × 10^{77} حالت است، که این تعداد آنقدر زیاد است که حتی با قدرت محاسباتی حال حاضر هم عملاً غیرقابل شکستن است.
این مقایسه نشان میدهد که طول کلید تأثیر زیادی در امنیت دارد و تولید کلیدهای طولانی و ایمن از چالشهای اصلی در رمزنگاری است.
هزینه و سختی تولید عدد رندوم طولانی:
تولید یک عدد رندوم طولانی (مثلاً 256 بیت) در دنیای کامپیوتر بسیار سخت و هزینهبر است. برای تولید یک کلید رندوم که واقعاً از نظر محاسباتی سخت باشد، ماشینهای تولید عدد رندوم نیاز به منابع سختافزاری خاص دارند. به همین دلیل، استفاده از سیستمهای تولید کلید معمولاً با استفاده از یک seed رندوم کوتاه شروع میشود، مثلاً یک عدد 64 بیتی یا 128 بیتی (که مثلاً از زمان، ورودیهای تصادفی یا دادههای سختافزاری گرفته میشود) و سپس با استفاده از الگوریتمهای ریاضیاتی پیچیده، این seed به یک کلید طولانیتر تبدیل میشود.
بهطور مثال، مقدار seed میتواند به صورت تصادفی از 128 بیت شروع شود و سپس با استفاده از الگوریتمهایی مانند SHA-256 یا HMAC، کلیدهایی با طول 256 بیت (و حتی بیشتر) تولید میشود. این کلید سپس با پیام XOR میشود تا پیام رمزنگاری شده تولید گردد.
در واقع، این الگوریتمها اجازه میدهند که از یک seed کوچک، یک کلید بلند و امن برای رمزنگاری تولید کنیم، بدون اینکه نیاز به ذخیره یا پردازش حجم زیادی از دادههای رندوم داشته باشیم."
در نتیجه:
تولید کلیدهای رندوم طولانی با هزینه بالا و پیچیدگیهای زیادی همراه است، به همین دلیل از الگوریتمهای مبتنی بر seed و فرمولهای پیچیده استفاده میشود تا ضمن داشتن امنیت بالا، هزینهها و پیچیدگیها کاهش یابد.
Post #675
139
- ❤ 2