انتخاب زبان

تولیدکننده رمز عبور امن مبتنی بر مولد اعداد شبه تصادفی (PRNG)

مقاله‌ای پژوهشی که یک تولیدکننده رمز عبور امن با استفاده از PRNGهای مبتنی بر HMAC، CMAC یا KMAC را پیشنهاد می‌دهد و با آزمون‌های آنتروپی و IID استاندارد NIST SP 800-90B اعتبارسنجی شده است.
computationalcoin.com | PDF Size: 0.5 MB
امتیاز: 4.5/5
امتیاز شما
شما قبلاً به این سند امتیاز داده اید
جلد سند PDF - تولیدکننده رمز عبور امن مبتنی بر مولد اعداد شبه تصادفی (PRNG)

فهرست مطالب

1. مقدمه

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

در پاسخ، این مقاله یک تولیدکننده رمز عبور امن را پیشنهاد می‌دهد که بر پایه یک مولد اعداد شبه تصادفی (PRNG) امن ساخته شده است. هسته اصلی PRNG با استفاده از ابزارهای رمزنگاری مانند HMAC، CMAC یا KMAC برای تولید اعداد تصادفی با کیفیت بالا ساخته می‌شود که سپس برای ایجاد رمزهای عبور مورد استفاده قرار می‌گیرند. این سیستم امکان ورودی اختیاری کاربر (پیام در انتظار هش‌شدن، TBHM) را برای آغاز فرآیند فراهم می‌کند. مشارکت‌های اصلی عبارتند از:

2. مرور ادبیات

2.1. مولد اعداد شبه تصادفی مبتنی بر مولد هم‌نهشتی خطی

زبان‌های برنامه‌نویسی رایج (مانند C، Java) از مولدهای هم‌نهشتی خطی (LCG) استفاده می‌کنند. با داشتن مقدار اولیه $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)$. این روش ناامن است زیرا حالت آن قابل معکوس شدن است: $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$، که مقدار اولیه و کل دنباله را افشا می‌کند.

2.2. مولد اعداد شبه تصادفی امن

PRNGهای امن بر پایه ابزارهای رمزنگاری هستند که در استاندارد NIST SP 800-108 Rev. 1 تشریح شده‌اند.

2.2.1. مبتنی بر HMAC

امنیت به ویژگی یک‌طرفه توابع هش (مانند SHA2، SHA3) وابسته است. برای کلید $k$ و پیام $M$، HMAC به این صورت محاسبه می‌شود: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$. برای تولید جریان بیتی تصادفی به طول $L$، از حالت شمارنده استفاده می‌شود: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$ که خروجی‌های $r_{hmac,i}$ را تولید می‌کند.

2.2.2. مبتنی بر CMAC

امنیت به رمز بلوکی AES در حالت CBC وابسته است. پیام $M$ به بلوک‌های $M'_1, M'_2, ...$ تقسیم می‌شود. فرآیند به صورت تکرارشونده انجام می‌شود: $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$ با $c_0 = Pad0(0)$. خروجی نهایی $r_{cmac}$ از آخرین بلوک رمز پس از پدینگ خاص (Pad1) به دست می‌آید.

2.2.3. مبتنی بر KMAC

از تابع اسفنجی KECCAK (پایه SHA-3) استفاده می‌کند که یک تابع MAC انعطاف‌پذیر و قوی را ارائه می‌دهد و برای تولید بیت‌های تصادفی قطعی مناسب است.

2.3. روش‌های اعتبارسنجی تصادفی بودن

این مقاله از چارچوب NIST SP 800-90B استفاده می‌کند که استاندارد عملی برای اعتبارسنجی منابع آنتروپی است. این چارچوب شامل دو مجموعه آزمون حیاتی است:

3. تولیدکننده رمز عبور امن پیشنهادی

معماری سیستم پیشنهادی ساده اما قدرتمند است:

  1. ورودی/مقدار اولیه: یک TBHM اختیاری ارائه شده توسط کاربر را می‌پذیرد. اگر ارائه شود، پردازش می‌شود؛ در غیر این صورت، از یک مقدار اولیه امن تولید شده توسط سیستم استفاده می‌شود.
  2. هسته PRNG امن: TBHM/مقدار اولیه به یکی از سه ساختار رمزنگاری PRNG (مبتنی بر HMAC، مبتنی بر CMAC، مبتنی بر KMAC) وارد می‌شود تا یک دنباله بیتی شبه تصادفی با استحکام رمزنگاری بالا تولید کند.
  3. ساخت رمز عبور: بیت‌های تصادفی بر روی یک مجموعه کاراکتر تعریف شده توسط کاربر یا سیستم (مانند حروف و اعداد + نمادها) نگاشت می‌شوند تا یک رمز عبور با طول مورد نظر تولید شود.

تحلیل امنیتی: مقاله استدلال می‌کند که امنیت رمز عبور تولید شده مستقیماً به آنتروپی خروجی PRNG و اندازه مجموعه کاراکتر وابسته است. یک تحلیل تطبیقی انجام می‌دهد و نشان می‌دهد که یک رمز عبور ۱۶ کاراکتری از یک مجموعه ۹۴ کاراکتری تولید شده توسط این روش می‌تواند مقاومت در برابر حمله جستجوی فراگیر قابل مقایسه یا فراتر از کلیدهای AES-128 یا AES-256 ارائه دهد، به شرطی که خروجی PRNG واقعاً تصادفی باشد.

4. نتایج تجربی و تحلیل

اعتبارسنجی تجربی یک نقطه قوت کلیدی مقاله است.

توضیح نمودار (ضمنی): یک نمودار میله‌ای می‌تواند به طور مؤثر تخمین‌های آنتروپی مینیمم (بر حسب بیت به ازای هر بیت) را برای سه روش PRNG در مقایسه با مقدار ایده‌آل ۱.۰ مقایسه کند. همه میله‌ها بسیار نزدیک به ۱.۰ خواهند بود. یک نمودار دوم می‌تواند مقادیر p-value از آزمون‌های کلیدی IID (مانند کای-اسکوئر، کولموگروف-اسمیرنوف) را نشان دهد، که همه مقادیر به طور قابل توجهی بالاتر از آستانه معناداری معمول (مانند ۰.۰۱) هستند و نشان‌دهنده قبولی هستند.

5. نتیجه‌گیری و کارهای آتی

این پژوهش با موفقیت یک چارچوب تولید رمز عبور امن مبتنی بر PRNGهای رمزنگاری را نشان می‌دهد. روش‌های پیشنهادی، رمزهای عبوری با تصادفی بودن کافی تولید می‌کنند که به طور دقیق توسط استانداردهای NIST اعتبارسنجی شده‌اند. جهت‌های کار آینده عبارتند از:

6. تحلیل اصیل و بینش کارشناسی

بینش اصلی: این مقاله درباره اختراع یک ابزار رمزنگاری جدید نیست؛ بلکه درباره کاربرد و اعتبارسنجی منظم ابزارهای موجود و بررسی شده (HMAC، CMAC، KMAC) برای حل مسئله پیش پا افتاده اما حیاتی تولید رمز عبور است. ارزش واقعی آن در پل زدن بین شکاف رمزنگاری نظری و بهداشت امنیتی عملی است، و به طور دقیق ثابت می‌کند که خروجی آن با استفاده از مجموعه آزمون استاندارد طلایی NIST برای هدف مناسب است.

جریان منطقی: استدلال محکم است: ۱) LCGهای استاندارد از نظر رمزنگاری شکسته شده‌اند. ۲) PRNGهای امن ساخته شده از MACهای رمزنگاری به طور قابل اثباتی قوی هستند. ۳) بنابراین، رمزهای عبور مشتق شده از چنین PRNGهایی آن استحکام را به ارث می‌برند. ۴) این ادعا نه تنها توسط تئوری، بلکه با پشت سر گذاشتن آزمون‌های تجربی سختگیرانه (NIST SP 800-90B) اعتبارسنجی شده است. این اعتبارسنجی سرتاسری چیزی است که بسیاری از ابزارهای "تولیدکننده رمز عبور امن" فاقد آن هستند.

نقاط قوت و ضعف:
نقاط قوت: دقت روش‌شناختی قابل تحسین است. استفاده از NIST SP 800-90B برای اعتبارسنجی بلافاصله اعتبار آن را افزایش می‌دهد، مشابه نحوه اعتبارسنجی الگوریتم‌های رمزنگاری از طریق برنامه اعتبارسنجی الگوریتم رمزنگاری (CAVP). مقایسه با استحکام کلید AES یک معیار عملی و مرتبط برای تیم‌های امنیتی است.
نقاط ضعف: مقاله در یک محیط کنترل شده و ایده‌آل عمل می‌کند. فرض می‌کند که مقدار اولیه/TBHM اولیه آنتروپی کافی دارد - یک حلقه حیاتی و اغلب ضعیف در سیستم‌های واقعی. ورودی "اختیاری" کاربر یک شمشیر دولبه است؛ یک عبارت کاربری ضعیف و قابل پیش‌بینی (مانند "mypassword") می‌تواند کل ساختار رمزنگاری را تضعیف کند، ریسکی که به طور کامل کمّی‌سازی نشده است. علاوه بر این، همانطور که در مرور سال ۲۰۲۳ "رمزنگاری پسا-کوانتومی: یک سفر ده ساله" توسط NIST اشاره شده است، این حوزه به سمت الگوریتم‌های مقاوم در برابر کوانتوم در حرکت است. ساختارهای مقاله، اگرچه در برابر رایانه‌های کلاسیک امن هستند، به SHA2/AES متکی هستند که مقاومت بلندمدت کوانتومی آن‌ها نامشخص است.

بینش‌های قابل اجرا: برای معماران امنیتی، این مقاله یک نقشه راه ارائه می‌دهد. PRNG خود را نسازید. از ساختارهای رمزنگاری تأسیس شده به عنوان بلوک‌های سازنده استفاده کنید. مهم‌تر از آن، اعتبارسنجی، اعتبارسنجی، اعتبارسنجی. اعتبارسنجی مداوم آنتروپی (مانند آزمون‌های NIST) را در سیستم‌های حیاتی تولید اعداد تصادفی خود ادغام کنید، روشی که توسط سازمان‌هایی مانند تلاش‌های گواهی معیارهای مشترک (CCC) بنیاد لینوکس تأکید شده است. برای توسعه محصول، نکته فوری جایگزینی هر گونه تولید رمز عبور مبتنی بر LCG در سیستم‌های شما با یک تولیدکننده مبتنی بر KMAC یا HMAC-SHA256 است، با استفاده از یک مقدار اولیه با منبع امن. گام آینده‌نگرانه، شروع نمونه‌سازی اولیه با طرح‌های مبتنی بر SHA-3/KECCAK (مانند KMAC) و نظارت بر تکامل استانداردهای رمزنگاری پسا-کوانتومی NIST برای ادغام نهایی است.

7. جزئیات فنی و فرمول‌بندی ریاضی

عملیات ریاضی اصلی در بخش مرور ادبیات (بخش ۲) تعریف شده‌اند. فرمول‌های کلیدی شامل موارد زیر هستند:

تولید رمز عبور یک عدد صحیح تصادفی $R$ (از خروجی PRNG) را به یک اندیس کاراکتر نگاشت می‌دهد: $\text{index} = R \ \text{mod} \ |S|$، که در آن $|S|$ اندازه مجموعه کاراکتر است.

8. چارچوب تحلیل و مثال موردی

مثال موردی: ارزیابی تولیدکننده رمز عبور یک سیستم قدیمی
سناریو: یک برنامه وب قدیمی از یک LCG اصلاح شده برای تولید رمزهای عبور موقت کاربر استفاده می‌کند. یک حسابرسی امنیتی مورد نیاز است.
کاربرد چارچوب:

  1. شناسایی نوع PRNG: بازرسی کد منبع. پیدا کردن: seed = (a * seed + c) % m; تأیید کنید که یک گونه LCG است.
  2. ارزیابی امنیت رمزنگاری: LCG قطعی و معکوس‌پذیر است. یک مهاجم با به دست آوردن چند رمز عبور متوالی می‌تواند مقدار اولیه را حل کند و تمام رمزهای عبور آینده را پیش‌بینی کند، که این امر دستورالعمل‌های NIST SP 800-63B در مورد تصادفی بودن احراز هویت را نقض می‌کند.
  3. پیشنهاد اصلاح با استفاده از روش مقاله:
    • منبع مقدار اولیه: مقدار اولیه زمان سیستم را با یک CSPRNG (مانند /dev/urandom در لینوکس، CryptGenRandom در ویندوز) جایگزین کنید.
    • هسته تولیدکننده: یک PRNG مبتنی بر HMAC-SHA256 را مطابق با طراحی مقاله پیاده‌سازی کنید.
    • اعتبارسنجی: یک نمونه بزرگ (۱,۰۰۰,۰۰۰ بیت) از تولیدکننده جدید ایجاد کنید و مجموعه آزمون آماری NIST (STS) یا تخمین‌زننده‌های آنتروپی از SP 800-90B را برای تأیید تصادفی بودن قبل از استقرار اجرا کنید.
این چارچوب ارزیابی را از "آیا تصادفی به نظر می‌رسد؟" به "آیا اعتبارسنجی رمزنگاری استاندارد شده را پشت سر می‌گذارد؟" تغییر می‌دهد.

9. کاربردهای آتی و جهت‌های توسعه

اصول فراتر از رمزهای عبور کاربر گسترش می‌یابند:

10. مراجع

  1. M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
  2. NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
  3. NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
  4. NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
  5. NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
  6. J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
  7. M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
  8. NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [Online]. Available: https://csrc.nist.gov/projects/post-quantum-cryptography
  9. Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Available: https://www.linuxfoundation.org/