فهرست مطالب
1. مقدمه
این پژوهش به مسئله پایدار نشت رمزهای عبور و ریسک ناشی از افشای دادههای شخصی میپردازد. اگرچه امنیت وبسایت یک عامل است، اما استحکام ذاتی خود رمز عبور از اهمیت بالایی برخوردار است. آسیبپذیریهای رایج شامل رمزهای عبور مبتنی بر کلمات کلیدی، عبارات پرطرفدار، اطلاعات کاربر و استفاده مجدد از رمز عبور میشود. ظهور هوش مصنوعی و مدلهای زبانی بزرگ، مهاجمان را بیش از پیش در حدس زدن رمزهای عبور توانمند میسازد.
در پاسخ، این مقاله یک تولیدکننده رمز عبور امن را پیشنهاد میدهد که بر پایه یک مولد اعداد شبه تصادفی (PRNG) امن ساخته شده است. هسته اصلی PRNG با استفاده از ابزارهای رمزنگاری مانند HMAC، CMAC یا KMAC برای تولید اعداد تصادفی با کیفیت بالا ساخته میشود که سپس برای ایجاد رمزهای عبور مورد استفاده قرار میگیرند. این سیستم امکان ورودی اختیاری کاربر (پیام در انتظار هششدن، TBHM) را برای آغاز فرآیند فراهم میکند. مشارکتهای اصلی عبارتند از:
- ساخت PRNGهای امن مبتنی بر HMAC، CMAC و KMAC.
- تحلیل امنیتی رمزهای عبور تولید شده تحت مجموعهکاراکترها و طولهای مختلف و مقایسه استحکام آنها با AES-128 و AES-256.
- اعتبارسنجی تجربی تصادفی بودن با استفاده از استاندارد NIST SP 800-90B، با تمرکز بر آزمونهای آنتروپی و توزیع مستقل و یکسان (IID).
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 استفاده میکند که استاندارد عملی برای اعتبارسنجی منابع آنتروپی است. این چارچوب شامل دو مجموعه آزمون حیاتی است:
- ارزیابی آنتروپی: میزان آنتروپی مینیمم در جریان بیتی تولید شده را تخمین میزند که نشاندهنده غیرقابل پیشبینی بودن آن است.
- آزمون IID (توزیع مستقل و یکسان): مجموعهای از آزمونهای آماری (مانند کای-اسکوئر، کولموگروف-اسمیرنوف) برای تعیین این که آیا بیتهای خروجی از نظر آماری مستقل هستند و از یک توزیع یکسان پیروی میکنند.
3. تولیدکننده رمز عبور امن پیشنهادی
معماری سیستم پیشنهادی ساده اما قدرتمند است:
- ورودی/مقدار اولیه: یک TBHM اختیاری ارائه شده توسط کاربر را میپذیرد. اگر ارائه شود، پردازش میشود؛ در غیر این صورت، از یک مقدار اولیه امن تولید شده توسط سیستم استفاده میشود.
- هسته PRNG امن: TBHM/مقدار اولیه به یکی از سه ساختار رمزنگاری PRNG (مبتنی بر HMAC، مبتنی بر CMAC، مبتنی بر KMAC) وارد میشود تا یک دنباله بیتی شبه تصادفی با استحکام رمزنگاری بالا تولید کند.
- ساخت رمز عبور: بیتهای تصادفی بر روی یک مجموعه کاراکتر تعریف شده توسط کاربر یا سیستم (مانند حروف و اعداد + نمادها) نگاشت میشوند تا یک رمز عبور با طول مورد نظر تولید شود.
تحلیل امنیتی: مقاله استدلال میکند که امنیت رمز عبور تولید شده مستقیماً به آنتروپی خروجی PRNG و اندازه مجموعه کاراکتر وابسته است. یک تحلیل تطبیقی انجام میدهد و نشان میدهد که یک رمز عبور ۱۶ کاراکتری از یک مجموعه ۹۴ کاراکتری تولید شده توسط این روش میتواند مقاومت در برابر حمله جستجوی فراگیر قابل مقایسه یا فراتر از کلیدهای AES-128 یا AES-256 ارائه دهد، به شرطی که خروجی PRNG واقعاً تصادفی باشد.
4. نتایج تجربی و تحلیل
اعتبارسنجی تجربی یک نقطه قوت کلیدی مقاله است.
- اعتبارسنجی آنتروپی: دنبالههای تصادفی تولید شده از هر سه نوع PRNG (HMAC-SHA256، CMAC-AES256، KMAC256) آزمون ارزیابی آنتروپی NIST SP 800-90B را با موفقیت پشت سر گذاشتند و آنتروپی مینیمم بالایی نزدیک به مقدار ایدهآل ۱ بیت به ازای هر بیت خروجی را نشان دادند.
- اعتبارسنجی IID: دنبالهها همچنین مجموعه آزمون IID را با موفقیت پشت سر گذاشتند که تأیید میکند بیتها از نظر آماری مستقل و با توزیع یکسان هستند و هیچ الگو یا سوگیری قابل تشخیصی وجود ندارد.
- عملکرد: اگرچه تمرکز اصلی نیست، مقاله به کارایی محاسباتی اشاره میکند. HMAC-SHA256 و KMAC256 سرعت قابل مقایسهای نشان دادند، در حالی که CMAC-AES256 به دلیل عملیات رمز بلوکی کمی کندتر بود، اما همه در محدوده عملی برای تولید رمز عبور قرار داشتند.
توضیح نمودار (ضمنی): یک نمودار میلهای میتواند به طور مؤثر تخمینهای آنتروپی مینیمم (بر حسب بیت به ازای هر بیت) را برای سه روش PRNG در مقایسه با مقدار ایدهآل ۱.۰ مقایسه کند. همه میلهها بسیار نزدیک به ۱.۰ خواهند بود. یک نمودار دوم میتواند مقادیر p-value از آزمونهای کلیدی IID (مانند کای-اسکوئر، کولموگروف-اسمیرنوف) را نشان دهد، که همه مقادیر به طور قابل توجهی بالاتر از آستانه معناداری معمول (مانند ۰.۰۱) هستند و نشاندهنده قبولی هستند.
5. نتیجهگیری و کارهای آتی
این پژوهش با موفقیت یک چارچوب تولید رمز عبور امن مبتنی بر PRNGهای رمزنگاری را نشان میدهد. روشهای پیشنهادی، رمزهای عبوری با تصادفی بودن کافی تولید میکنند که به طور دقیق توسط استانداردهای NIST اعتبارسنجی شدهاند. جهتهای کار آینده عبارتند از:
- ادغام تولیدکننده در افزونههای مرورگر یا مدیران رمز عبور.
- کاوش الگوریتمهای رمزنگاری پسا-کوانتومی (مانند مبتنی بر شبکهها، توابع هش) به عنوان پایه PRNG برای تضمین امنیت بلندمدت.
- توسعه یک اثبات امنیتی رسمی تحت مدلهای رمزنگاری استاندارد.
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. جزئیات فنی و فرمولبندی ریاضی
عملیات ریاضی اصلی در بخش مرور ادبیات (بخش ۲) تعریف شدهاند. فرمولهای کلیدی شامل موارد زیر هستند:
- LCG (ناامن): $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$
- HMAC: $r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$
- HMAC در حالت شمارنده برای PRNG: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$
- تکرار CMAC (CBC-MAC): $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$
تولید رمز عبور یک عدد صحیح تصادفی $R$ (از خروجی PRNG) را به یک اندیس کاراکتر نگاشت میدهد: $\text{index} = R \ \text{mod} \ |S|$، که در آن $|S|$ اندازه مجموعه کاراکتر است.
8. چارچوب تحلیل و مثال موردی
مثال موردی: ارزیابی تولیدکننده رمز عبور یک سیستم قدیمی
سناریو: یک برنامه وب قدیمی از یک LCG اصلاح شده برای تولید رمزهای عبور موقت کاربر استفاده میکند. یک حسابرسی امنیتی مورد نیاز است.
کاربرد چارچوب:
- شناسایی نوع PRNG: بازرسی کد منبع. پیدا کردن:
seed = (a * seed + c) % m;تأیید کنید که یک گونه LCG است. - ارزیابی امنیت رمزنگاری: LCG قطعی و معکوسپذیر است. یک مهاجم با به دست آوردن چند رمز عبور متوالی میتواند مقدار اولیه را حل کند و تمام رمزهای عبور آینده را پیشبینی کند، که این امر دستورالعملهای NIST SP 800-63B در مورد تصادفی بودن احراز هویت را نقض میکند.
- پیشنهاد اصلاح با استفاده از روش مقاله:
- منبع مقدار اولیه: مقدار اولیه زمان سیستم را با یک CSPRNG (مانند
/dev/urandomدر لینوکس، CryptGenRandom در ویندوز) جایگزین کنید. - هسته تولیدکننده: یک PRNG مبتنی بر HMAC-SHA256 را مطابق با طراحی مقاله پیادهسازی کنید.
- اعتبارسنجی: یک نمونه بزرگ (۱,۰۰۰,۰۰۰ بیت) از تولیدکننده جدید ایجاد کنید و مجموعه آزمون آماری NIST (STS) یا تخمینزنندههای آنتروپی از SP 800-90B را برای تأیید تصادفی بودن قبل از استقرار اجرا کنید.
- منبع مقدار اولیه: مقدار اولیه زمان سیستم را با یک CSPRNG (مانند
9. کاربردهای آتی و جهتهای توسعه
اصول فراتر از رمزهای عبور کاربر گسترش مییابند:
- تولید کلید API و توکن: تولید خودکار کلیدهای API و توکنهای نشست رمزنگاری شده تصادفی در معماریهای ریزسرویسها.
- پیکربندیهای پیشفرض امن: تعبیه چنین تولیدکنندههایی در دستگاههای اینترنت اشیاء یا نصابهای نرمافزار برای ایجاد رمزهای عبور پیشفرض مدیر منحصربهفرد و قوی، کاهش حملات گسترده با اعتبارنامههای پیشفرض.
- تکامل پسا-کوانتومی: ساختار مبتنی بر KMAC ذاتاً بر پایه SHA-3 (KECCAK) است که مقاوم در برابر کوانتوم در نظر گرفته میشود. این تولیدکننده میتواند پایهای برای سیستمهای "چابک رمزنگاری" باشد. کار آینده باید PRNGهای مبتنی بر الگوریتمهای استاندارد شده پسا-کوانتومی NIST مانند CRYSTALS-Kyber یا امضاهای مبتنی بر هش را ادغام کند، زیرا جامعه رمزنگاری برای عصر رایانش کوانتومی آماده میشود.
- ادغام با مدیران رمز عبور و SSO: این تولیدکننده میتواند یک جزء اصلی از مدیران رمز عبور متنباز یا سیستمهای تکثبتنام (SSO) باشد و منبعی شفاف و قابل حسابرسی از تصادفی بودن رمز عبور ارائه دهد.
10. مراجع
- M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
- NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
- NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
- NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
- NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
- J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
- M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
- 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
- Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Available: https://www.linuxfoundation.org/