فهرست مطالب
1. مقدمه
گزارشهای مستمر از نشت حسابهای کاربری و رمزهای عبور وبسایتها، اهمیت حیاتی امنیت اطلاعات و رمز عبور را برجسته میسازد. در حالی که آسیبپذیریهای وبسایت یک عامل است، امنیت ذاتی خود رمز عبور از اهمیت بالایی برخوردار است. روشهای رایج ناامن رمز عبور شامل رمزهای عبور مبتنی بر کلمات کلیدی، استفاده از عبارات رایج، گنجاندن اطلاعات شخصی و استفاده مجدد از رمز عبور میشود. ظهور هوش مصنوعی و مدلهای زبانی بزرگ، توانایی مهاجمان را برای حدس زدن مؤثرتر رمزهای عبور افزایش میدهد.
این پژوهش یک تولیدکننده رمز عبور امن مبتنی بر مولدهای اعداد شبه تصادفی رمزنگاریشده (PRNG) را پیشنهاد میکند. این سیستم با استفاده از کد احراز هویت پیام مبتنی بر هش کلیددار (HMAC)، کد احراز هویت پیام مبتنی بر رمز (CMAC) یا کد احراز هویت پیام KECCAK (KMAC)، PRNGهایی میسازد تا اعداد تصادفی امن تولید کند که سپس برای تولید رمز عبور استفاده میشوند. تصادفی بودن اعداد تولید شده، مطابق با استاندارد NIST SP 800-90B از طریق آزمونهای آنتروپی و آزمون توزیع مستقل و یکسان (IID) اعتبارسنجی میشود.
مشارکتهای کلیدی:
- ساخت PRNGهای امن مبتنی بر HMAC، CMAC و KMAC برای تولید رمز عبور.
- تحلیل امنیتی رمزهای عبور تحت مجموعهکاراکترها و محدودیتهای طول مختلف، با مقایسه با AES-128/256.
- اعتبارسنجی تجربی با استفاده از آزمونهای آنتروپی و IID استاندارد NIST SP 800-90B.
2. مرور ادبیات
2.1. PRNG مبتنی بر مولد همنهشتی خطی
این مولدها که معمولاً در زبانهایی مانند C و Java استفاده میشوند، دنبالهای از اعداد را با استفاده از یک رابطه بازگشتی خطی تولید میکنند. با داشتن بذر $k$، مقدار اولیه $f_0(k)$ به صورت $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ محاسبه میشود. اعداد بعدی توسط $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$ تولید میشوند. با این حال، LCGها ناامن هستند زیرا حالت آنها را میتوان با استفاده از $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$ معکوس کرد که بذر و کل دنباله را افشا میکند.
2.2. مولد اعداد شبه تصادفی امن
برای رفع آسیبپذیریهای LCG، استفاده از PRNGهای رمزنگاریشده امن ضروری است. این مقاله بر سه ساختار توصیهشده توسط NIST تمرکز دارد.
2.2.1. PRNG مبتنی بر HMAC
امنیت این روش مبتنی بر خاصیت یکطرفه توابع درهمساز (مانند SHA2، SHA3) است. برای یک کلید $k$ و پیام $M$، HMAC به صورت $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$ محاسبه میشود که در آن $ipad$ و $opad$ ثابت هستند. برای تولید یک جریان بیتی طولانی، از حالت شمارنده استفاده میشود: $M_i = i \ || \ KDF \ || \ 0x00 \ || \ M \ || \ L$ که خروجیهای $r_{hmac,i}$ را تولید میکند.
2.2.2. PRNG مبتنی بر CMAC
امنیت این روش مبتنی بر استاندارد رمزگذاری پیشرفته (AES) است. با استفاده از حالت زنجیرهای بلوک رمز (CBC) با کلید $k$، پیام $M$ به بلوکهای $M'_1, M'_2, ...$ تقسیم میشود. متن رمز به صورت تکراری محاسبه میشود: $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$، که در آن $c_0 = Pad0(0)$ است. خروجی نهایی $r_{cmac}$ از آخرین بلوک به دست میآید.
2.2.3. PRNG مبتنی بر KMAC
این روش مبتنی بر تابع درهمساز SHA-3 (KECCAK) است. KMAC یک خروجی با طول متغیر ارائه میدهد و به عنوان یک کاندید قوی برای رمزنگاری پساکوانتومی در نظر گرفته میشود. ساختار آن از اصل درهمسازی احراز هویت شده مشابهی پیروی میکند و تضمینهای امنیتی بالایی ارائه میدهد.
2.3. روشهای اعتبارسنجی تصادفی بودن
استاندارد NIST SP 800-90B روشهایی را برای ارزیابی کیفیت مولدهای اعداد تصادفی ارائه میدهد. دو جنبه کلیدی مورد ارزیابی قرار میگیرند:
- اعتبارسنجی آنتروپی: غیرقابل پیشبینی بودن یا "تصادفی بودن" هر بیت در دادهها را اندازهگیری میکند. آنتروپی بالا برای رمزهای عبور امن حیاتی است.
- اعتبارسنجی IID (توزیع مستقل و یکسان): آزمون میکند که آیا دنباله تولید شده از نظر آماری مستقل است و از یک توزیع یکسان پیروی میکند یا خیر، که اطمینان میدهد هیچ الگو یا همبستگیای وجود ندارد.
3. تولیدکننده رمز عبور امن پیشنهادی
معماری سیستم شامل دو مرحله اصلی است:
- تولید عدد تصادفی امن: کاربر میتواند به صورت اختیاری یک پیام برای درهمسازی (TBHM) ارائه دهد. این پیام، همراه با یک کلید رمزنگاری، توسط PRNG امن انتخابشده (مبتنی بر HMAC/CMAC/KMAC) پردازش میشود تا یک دنباله بیتی تصادفی قوی از نظر رمزنگاری تولید کند.
- تولید رمز عبور: بیتهای تصادفی بر روی یک مجموعه کاراکتر تعریفشده توسط کاربر یا سیستم (مانند حروف الفبا و اعداد به همراه نمادها) با طول مشخص نگاشت میشوند تا رمز عبور متنی نهایی تولید شود. استحکام امنیتی با توجه به آنتروپی ارائهشده توسط اندازه مجموعه کاراکتر و طول رمز عبور، نسبت به AES-128/256 تحلیل میشود.
4. آزمایشها و نتایج
4.1. تنظیمات آزمایشی
آزمایشهایی برای اعتبارسنجی تصادفی بودن خروجیهای PRNG انجام شد. مجموعه آزمون، رویههای ارزیابی NIST SP 800-90B را برای تخمین آنتروپی و آزمون IID بر روی نمونههای بزرگی از اعداد تصادفی تولیدشده از هر سه نوع PRNG پیادهسازی کرد.
4.2. نتایج اعتبارسنجی تصادفی بودن
خلاصه نتایج: PRNGهای پیشنهادی مبتنی بر HMAC، CMAC و KMAC همگی با موفقیت آزمونهای اعتبارسنجی آنتروپی و IID استاندارد NIST SP 800-90B را پشت سر گذاشتند. دنبالههای تولید شده هیچ انحراف آماری معنیداری از تصادفی بودن واقعی نشان ندادند که مناسب بودن آنها را برای تولید رمز عبور رمزنگاریشده تأیید میکند.
توضیح نمودار (فرضی): یک نمودار میلهای که تخمینهای حداقل آنتروپی (بر حسب بیت در هر بیت) را برای سه نوع PRNG در برابر آستانه قبولی NIST مقایسه میکند. هر سه میله به طور قابل توجهی بالاتر از خط آستانه نشان داده میشوند، که در آن KMAC احتمالاً بالاترین مقدار را نشان میدهد و به دنبال آن HMAC-SHA3 و CMAC-AES256 قرار دارند.
4.3. تحلیل عملکرد
یک تحلیل مقایسهای از کارایی محاسباتی (مانند تولید در ثانیه) انجام شد. مولدهای مبتنی بر CMAC (با استفاده از شتابدهنده سختافزاری AES-NI) معمولاً بالاترین توان عملیاتی را نشان دادند، پس از آن مولدهای مبتنی بر HMAC (SHA2/SHA3) قرار گرفتند و KMAC از نظر محاسباتی سنگینتر بود اما ویژگیهای امنیتی قوی پساکوانتومی را ارائه میداد.
5. نتیجهگیری و کارهای آینده
این پژوهش با موفقیت یک تولیدکننده رمز عبور امن ساخته شده بر پایه PRNGهای رمزنگاریشده امن (HMAC، CMAC، KMAC) را طراحی و اعتبارسنجی کرد. امنیت رمزهای عبور تولید شده از استحکام اثباتشده این زیرساختهای رمزنگاری پایه و تصادفی بودن بالای تأییدشده خروجی PRNG نشأت میگیرد. کارهای آینده شامل ادغام این تولیدکننده در افزونههای مرورگر یا مدیران رمز عبور، بررسی استفاده از آن در تولید کلیدهای رمزنگاری فراتر از رمز عبور و انجام تحلیل مقاومت در برابر حملات کانال جانبی بر روی سیستم کامل است.
6. تحلیل اصلی و تفسیر کارشناسی
بینش اصلی: این مقاله یک پاسخ عملی و مهندسیمحور به حلقه ضعیف همیشگی در امنیت سایبری است: رمزهای عبور انتخابشده توسط انسان. ارزش اصلی آن در رمزنگاری نوآورانه نیست، بلکه در کاربرد صحیح و اعتبارسنجی دقیق ساختارهای موجود و آزموده شده (HMAC، CMAC، KMAC) برای یک مورد استفاده خاص و پرتأثیر است. این مقاله به درستی شناسایی میکند که انتقال تولید رمز عبور از ذهن کاربر به یک فرآیند رمزنگاری اعتبارسنجیشده، یک ارتقاء امنیتی اساسی است، مشابه تغییر از رمزنگاری متقارن به نامتقارن برای تبادل کلید.
جریان منطقی: منطق مقاله صحیح است و از یک الگوی پژوهش کاربردی کلاسیک پیروی میکند: تعریف مسئله (رمزهای عبور ضعیف) → نقد راهحلهای رایج (LCGهای ناامن) → پیشنهاد یک راهحل قوی (تولیدکننده مبتنی بر CSPRNG) → اعتبارسنجی تجربی (آزمونهای NIST). انتخاب استاندارد NIST SP 800-90B به عنوان معیار اعتبارسنجی عالی است، زیرا این استاندارد، معیار بالفعل برای ارزیابی تصادفی بودن در زمینههای رمزنگاری است و بلافاصله اعتبار را به نتایج میبخشد.
نقاط قوت و ضعف:
نقاط قوت: بزرگترین نقطه قوت مقاله، اعتبارسنجی عملی آن است. بسیاری از پیشنهادها در مرحله طراحی متوقف میشوند. با قرار دادن خروجی در معرض آزمونهای سختگیرانه NIST، نویسندگان شواهد ملموسی از امنیت ارائه میدهند که برای پذیرش آن حیاتی است. گنجاندن KMAC، که مبتنی بر SHA-3 است، دوراندیشی در مورد ملاحظات پساکوانتومی را نشان میدهد، همانطور که در فرآیند استانداردسازی رمزنگاری پساکوانتومی جاری NIST ذکر شده است.
نقاط ضعف/کاستیها: تحلیل تا حدی منزوی است. یک نقص مهم، عدم بحث در مورد مدیریت بذر است. امنیت هر PRNG در صورتی که بذر آن قابل پیشبینی یا افشا باشد، از بین میرود. سیستم چگونه کلید رمزنگاری اولیه برای HMAC/CMAC/KMAC را تولید، ذخیره و محافظت میکند؟ این موضوع به اندازه خود الگوریتم حیاتی است. علاوه بر این، در حالی که مقایسه استحکام رمز عبور با AES مفید است، یک مقایسه مستقیمتر با تولیدکنندههای رمز عبور موجود (مانند آنهایی که در KeePass یا 1Password وجود دارند) و PRNGهای زیربنایی آنها (مانند استفاده از ChaCha20)، زمینه بهتری برای مزیت رقابتی آن فراهم میکند.
بینشهای قابل اجرا: برای متخصصان امنیت، این مقاله به عنوان یک نقشه راه عمل میکند. اقدام 1: بلافاصله هرگونه استفاده از LCGها یا RNGهای غیررمزنگاری مشابه (مانند `rand()`) برای وظایف حساس امنیتی را منسوخ کنید. اقدام 2: هنگام ساخت یا حسابرسی یک تولیدکننده رمز عبور، موارد اصلی چکلیست باید اینها باشند: 1) استفاده از یک CSPRNG (مانند HMAC_DRBG، CTR_DRBG از استاندارد NIST SP 800-90A، یا ساختارهای ارائهشده در اینجا)، 2) اعتبارسنجی خروجی آن با مجموعهای مانند NIST SP 800-90B یا Dieharder، و 3) پیادهسازی تولید بذر قوی از یک منبع آنتروپی بالا (مانند `getrandom()` در لینوکس). مقاله با موفقیت بر مورد 2 تمرکز دارد، اما موارد 1 و 3 نیز به همان اندازه بخشهای حیاتی تصویر کامل هستند.
7. جزئیات فنی و فرمولبندی ریاضی
امنیت تولیدکننده پیشنهادی به توابع رمزنگاری زیربنایی وابسته است. عملیات ریاضی کلیدی عبارتند از:
- HMAC: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- CMAC (CBC-MAC): $c_{i+1} = E(k, c_i \oplus M_{i+1})$، که در آن $E$ رمز بلوکی (AES) است.
- آنتروپی رمز عبور: آنتروپی $H$ یک رمز عبور تولید شده برابر است با $H = L \cdot \log_2(N)$، که در آن $L$ طول رمز عبور و $N$ اندازه مجموعه کاراکتر است. برای یک رمز عبور 16 کاراکتری از یک مجموعه 94 کاراکتری، $H \approx 16 \cdot \log_2(94) \approx 105$ بیت میشود.
8. چارچوب تحلیل و مثال موردی
مثال موردی: حسابرسی عملکرد بازنشانی رمز عبور یک برنامه وب
سناریو: یک برنامه وب، یک رمز عبور موقت برای کاربرانی که روی "فراموشی رمز عبور" کلیک میکنند، تولید میکند.
کاربرد چارچوب:
- شناسایی RNG: کد سمت سرور را بررسی کنید. یافتن `Math.random()` (جاوااسکریپت) یا یک LCG ساده در PHP یک شکست بحرانی خواهد بود.
- ارزیابی منبع آنتروپی: PRNG چگونه بذر میخورد؟ آیا از آنتروپی سیستم (`/dev/urandom`، `CryptGenRandom`) استفاده میکند؟
- نگاشت به راهحل پیشنهادی: توصیه به جایگزینی RNG معیوب با یک ماژول که طراحی این مقاله را پیادهسازی میکند — برای مثال، یک تابع پایتون با استفاده از `hmac.new` با SHA256 و یک بذر از `os.urandom(32)`.
- اعتبارسنجی خروجی (پس از پیادهسازی): نمونهای از ۱,۰۰۰,۰۰۰ رمز عبور موقت تولید کنید، به جریان بیتی تبدیل کنید و مجموعه آزمون NIST STS (یک مجموعه آزمون مرتبط) را اجرا کنید تا از تصادفی بودن اطمینان حاصل شود.
9. کاربردهای آینده و جهتگیریها
فناوری هستهای کاربردهایی فراتر از تولید رمز عبور کاربر دارد:
- تولید کلید API و توکن: تولید کلیدهای API و توکنهای نشست امن و تصادفی برای معماریهای ریزسرویس.
- اعتبارنامههای پیشفرض امن: تعبیه چنین تولیدکنندهای در میانافزار دستگاههای اینترنت اشیاء برای ایجاد رمزهای عبور پیشفرض منحصربهفرد و قوی برای هر دستگاه، که حملات گسترده مبتنی بر پیشفرضهای رایج را کاهش میدهد.
- تولید بذر رمزنگاری: خروجی با کیفیت بالا میتواند برای بذر دادن به سایر سیستمهای رمزنگاری یا برای تولید نانسها و بردارهای مقداردهی اولیه (IV) استفاده شود.
- ادغام با مدیران رمز عبور: این الگوریتم میتواند به عنوان موتور هستهای برای مدیران رمز عبور متنباز ادغام شود و منبعی شفاف و قابل حسابرسی از تصادفی بودن ارائه دهد.
- آمادگی برای دوران پساکوانتومی: بررسی و بهینهسازی بیشتر تولیدکننده مبتنی بر KMAC، همسو با استانداردهای FIPS 202 و SP 800-185 NIST، برای آمادهسازی برای عصر محاسبات پساکوانتومی.
10. مراجع
- M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
- NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
- NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
- NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
- J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
- D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
- NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
- NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
- M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
- P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.