انتخاب زبان

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

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

فهرست مطالب

1. مقدمه

در سال‌های اخیر، گزارش‌های مداومی از نشت حساب‌های کاربری وب‌سایت‌ها و رمزهای عبور متنی منتشر شده که اهمیت حیاتی امنیت اطلاعات و رمز عبور را برجسته می‌کند. فراتر از آسیب‌پذیری‌های وب‌سایت، امنیت خود رمز عبور از اهمیت بالایی برخوردار است. روش‌های رایج ناامن رمز عبور شامل رمزهای عبور مبتنی بر کلمات کلیدی، رمزهای عبور مبتنی بر عبارات رایج، رمزهای عبور مبتنی بر اطلاعات کاربر و استفاده مجدد از رمز عبور می‌شود. توسعه سریع هوش مصنوعی و مدل‌های زبانی بزرگ (LLM) به مهاجمان قدرت بیشتری برای حدس زدن مؤثرتر رمزهای عبور می‌دهد.

در حالی که پلتفرم‌ها از دفاع‌هایی مانند رمزهای عبور یک‌بارمصرف (OTP)، احراز هویت چندعاملی (MFA) و ذخیره رمز عبور رمزگذاری شده استفاده می‌کنند، تقویت امنیت ذاتی رمزهای عبور همچنان حیاتی است. این پژوهش یک تولیدکننده رمز عبور امن مبتنی بر یک مولد اعداد شبه تصادفی (PRNG) امن را پیشنهاد می‌کند. PRNG با استفاده از کد احراز هویت پیام مبتنی بر تابع درهم‌ساز (HMAC)، کد احراز هویت پیام مبتنی بر رمز (CMAC) یا کد احراز هویت پیام KECCAK (KMAC) ساخته می‌شود تا اعداد تصادفی امن رمزنگاری شده تولید کند که سپس برای تولید رمزهای عبور استفاده می‌شوند.

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

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

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

بسیاری از زبان‌های برنامه‌نویسی (مانند C، Java) PRNGهایی را بر اساس مولدهای هم‌نهشت خطی (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)$ برای $i \ge 1$

با این حال، LCGها ناامن هستند زیرا حالت بعدی به صورت خطی از حالت قبلی مشتق می‌شود ($f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$)، که به مهاجم اجازه می‌دهد تا به بذر بازگردد.

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

2.2.1. مبتنی بر کد احراز هویت پیام مبتنی بر تابع درهم‌ساز (HMAC)

امنیت HMAC به ویژگی یک‌طرفه توابع درهم‌ساز رمزنگاری (مانند SHA-2، SHA-3) متکی است. برای یک کلید $k$ و پیام $M$، HMAC به صورت زیر محاسبه می‌شود:

$r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$

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

2.2.2. مبتنی بر کد احراز هویت پیام مبتنی بر رمز (CMAC)

امنیت CMAC بر اساس استاندارد رمزگذاری پیشرفته (AES) است. برای یک کلید $k$ و پیام $M$ که به بلوک‌های $M'_i$ به طول $l_a$ تقسیم شده است، در حالت زنجیره‌ای بلوک رمز (CBC) عمل می‌کند:

$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$، با $c_0 = Pad0(0)$.

خروجی نهایی $r_{cmac}(k, Split(M))$ از آخرین بلوک متن رمز پس از پدینگ خاص (Pad1) به دست می‌آید.

2.2.3. مبتنی بر کد احراز هویت پیام KECCAK (KMAC)

KMAC بر اساس ساختار اسفنجی SHA-3 (KECCAK) است که انعطاف‌پذیری و امنیت را ارائه می‌دهد. می‌توان از آن مشابه HMAC در حالت شمارنده برای تولید یک جریان بیتی قطعی و غیرقابل پیش‌بینی مناسب برای اهداف PRNG استفاده کرد، همانطور که در NIST SP 800-108 Rev. 1 شرح داده شده است.

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

این مقاله چارچوب NIST SP 800-90B را برای اعتبارسنجی تصادفی بودن اتخاذ می‌کند و بر دو جنبه کلیدی تمرکز دارد:

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

معماری سیستم پیشنهادی شامل موارد زیر است:

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

تحلیل امنیت، فضای کلید مؤثر رمزهای عبور تولید شده (بر اساس اندازه مجموعه کاراکتر $C$ و طول $L$، که $C^L$ امکان را می‌دهد) را در برابر مقاومت در برابر حمله جستجوی فراگیر AES-128 ($2^{128}$) و AES-256 ($2^{256}$) مقایسه می‌کند. به عنوان مثال، یک رمز عبور 16 کاراکتری از یک مجموعه 94 کاراکتری، حدود $94^{16} \approx 2^{105}$ امکان را ارائه می‌دهد که از AES-128 ضعیف‌تر است اما همچنان برای بسیاری از اهداف قوی است.

4. محیط آزمایشی و نتایج

4.1. تنظیمات آزمایش

آزمایش‌هایی برای تولید دنباله‌های بزرگی از اعداد تصادفی با استفاده از PRNGهای پیشنهادی مبتنی بر HMAC، CMAC و KMAC انجام شد. سپس این دنباله‌ها تحت مجموعه آزمون NIST SP 800-90B قرار گرفتند.

4.2. نتایج اعتبارسنجی تصادفی بودن

یافته کلیدی: نتایج آزمایشی نشان داد که اعداد تصادفی تولید شده توسط هر سه روش PRNG پیشنهادی (HMAC/SHA-256، CMAC/AES-256، KMAC) با موفقیت هر دو آزمون اعتبارسنجی آنتروپی و اعتبارسنجی IID مشخص شده در NIST SP 800-90B را پشت سر گذاشتند.

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

4.3. تحلیل کارایی محاسباتی

اگرچه تمرکز اصلی نیست، اما مقاله به یک مبادله اشاره دارد. HMAC/SHA-256 و KMAC عموماً در نرم‌افزار بسیار کارآمد هستند. CMAC/AES ممکن است مزایای شتاب‌دهی سخت‌افزاری در پلتفرم‌های خاصی داشته باشد. انتخاب می‌تواند بر اساس محدودیت‌های عملکرد محیط استقرار سفارشی شود.

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

این پژوهش با موفقیت یک چارچوب تولیدکننده رمز عبور امن مبتنی بر PRNGهای رمزنگاری قوی (HMAC، CMAC، KMAC) را طراحی و اعتبارسنجی کرد. رمزهای عبور تولید شده امنیت خود را از ویژگی‌های اثبات شده این توابع MAC و تصادفی بودن بالای اعتبارسنجی شده جریان بیتی زیربنایی به دست می‌آورند.

جهت‌های آتی شامل:

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

بینش اصلی: کار چن یک راه‌حل مهندسی عمل‌گرا و مطابق با استانداردها برای یک مشکل امنیتی بنیادی است: آنتروپی ضعیف رمز عبور. این کار به درستی شناسایی می‌کند که علت ریشه‌ای بسیاری از نشت‌های رمز عبور فقط نقص‌های ذخیره‌سازی نیست، بلکه تولید قابل پیش‌بینی است. با لنگر انداختن راه‌حل در سازه‌های تأیید شده توسط NIST (HMAC، CMAC، KMAC) و چارچوب‌های اعتبارسنجی (SP 800-90B)، این پژوهش از نوآوری رمزنگاری صرفاً برای خودش اجتناب می‌کند و در عوض یک روش قابل تأیید و صحیح ارائه می‌دهد. این رویکرد فلسفه پشت سیستم‌های جاافتاده مانند رابط /dev/urandom در لینوکس را منعکس می‌کند که آنتروپی را از رویدادهای سیستم جمع‌آوری می‌کند، اما در اینجا تمرکز بر روی یک فرآیند قطعی، دارای بذر و قابل تأثیرگذاری کاربر است که برای تولید رمز عبور قابل تکثیر مناسب است.

جریان منطقی: استدلال روشمند است: 1) ایجاد مسئله (رمزهای عبور ضعیف و قابل حدس). 2) رد راه‌حل‌های رایج اما ناقص (RNGهای مبتنی بر LCG). 3) پیشنهاد بلوک‌های سازنده با امنیت اثبات شده (MACهای رمزنگاری). 4) سرهم کردن آنها مطابق با استانداردهای موجود (حالت شمارنده NIST SP 800-108). 5) اعتبارسنجی خروجی در برابر معیارهای سختگیرانه (NIST SP 800-90B). این جریان قوی است و بهترین شیوه‌ها در پژوهش رمزنگاری کاربردی را منعکس می‌کند، مشابه ارزیابی ساختاریافته دیده شده در کارهای تأثیرگذار مانند مقاله CycleGAN که کیفیت ترجمه تصویر را در چندین حوزه و معیار به طور سیستماتیک اعتبارسنجی کرد.

نقاط قوت و ضعف: نقطه قوت اصلی قابلیت اطمینان آن است. استفاده از ابزارهای اولیه رمزنگاری آزموده شده در میدان نبرد و راهنمایی NIST خطر را به حداقل می‌رساند. ورودی اختیاری کاربر (TBHM) یک ویژگی هوشمندانه است که اجازه می‌دهد بذرهای شخصی‌سازی شده اما امن داشته باشیم. با این حال، یک نقص قابل توجه عدم وجود یک تحلیل امنیتی مستقیم و مقایسه‌ای در برابر تولیدکننده‌های رمز عبور پیشرفته مانند آنهایی است که از Argon2 یا bcrypt برای کشش کلید در زمینه مشابه استفاده می‌کنند. مقایسه با استحکام حمله جستجوی فراگیر AES مفید اما ساده‌انگارانه است. بردار حمله در دنیای واقعی اغلب شکستن آفلاین رمزهای عبور درهم‌سازی شده است؛ مقاله می‌توانست با مدل‌سازی مقاومت در برابر ابزارهایی مانند Hashcat با مجموعه قواعد بهینه‌شده، استدلال خود را تقویت کند. علاوه بر این، در حالی که آزمون‌های NIST معتبر هستند، برای همه ویژگی‌های رمزنگاری جامع نیستند؛ بحث در مورد مقاومت در برابر حملات کانال جانبی بر پیاده‌سازی PRNG ارزشمند خواهد بود.

بینش‌های قابل اجرا: برای معماران امنیت، این مقاله یک نقشه راه آماده ارائه می‌دهد. توصیه 1: نوع مبتنی بر KMAC را پیاده‌سازی کنید. به عنوان یک مشتق SHA-3، طراحی شده است تا در برابر حملات گسترش طول که به طور نظری HMAC مبتنی بر SHA-2 را در سناریوهای خاص تحت تأثیر قرار می‌دهد، مقاوم باشد و نمایانگر انتخابی آینده‌نگرتر است. توصیه 2: این تولیدکننده را به عنوان موتور اصلی برای صندوق‌های رمز عبور سازمانی یا سیستم‌های SSO که نیاز به ایجاد رمز عبور مبتنی بر خط‌مشی دارند، ادغام کنید. ماهیت قطعی آن (همان TBHM + پارامترها = همان رمز عبور) می‌تواند یک ویژگی برای سناریوهای بازیابی باشد. توصیه 3: این راه‌حل فنی را با آموزش کاربر تکمیل کنید. تولیدکننده می‌تواند یک رشته تصادفی 20 کاراکتری تولید کند، اما اگر کاربر یک TBHM کوتاه و به یاد ماندنی و طول 8 کاراکتر را انتخاب کند، امنیت به شدت کاهش می‌یابد. رابط باید پیش‌فرض‌های معقول (مانند حداقل 12 کاراکتر، مجموعه کاراکتر کامل) را اعمال کند و استحکام آنتروپی را به صورت بصری منتقل کند، بسیار شبیه به سنجه‌های استحکام رمز عبور که توسط پژوهش سازمان‌هایی مانند گروه NCC آگاه شده‌اند.

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

امنیت اصلی به ویژگی تابع شبه تصادفی (PRF) MACها متکی است. PRNG در حالت شمارنده را می‌توان به صورت زیر انتزاع کرد:

$R_i = PRF(K, \text{Counter} \ || \ \text{Label} \ || \ 0x00 \ || \ \text{Input} \ || \ L)$

که در آن $PRF$ برابر است با $HMAC$، $CMAC$ یا $KMAC$، $K$ یک کلید مخفی است و $R_i$ بلوک‌های خروجی هستند که برای تشکیل جریان بیتی نهایی به هم متصل می‌شوند.

نگاشت رمز عبور: با داشتن یک مقدار عدد صحیح تصادفی $v$ مشتق شده از جریان بیتی و یک مجموعه کاراکتر به اندازه $C$، اندیس کاراکتر به صورت زیر انتخاب می‌شود: $index = v \mod C$. این عمل $L$ بار تکرار می‌شود.

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

سناریو: یک سرویس وب نیاز به تولید یک رمز عبور اولیه قوی و تصادفی برای کاربران جدید دارد.

کاربرد چارچوب:

  1. انتخاب پارامتر: سرویس KMAC256 را به عنوان PRF انتخاب می‌کند، یک کلید رمزنگاری $K_{sys}$ مشتق شده از سیستم که به صورت امن ذخیره شده است، و یک TBHM متشکل از UserID منحصر به فرد و تغییرناپذیر کاربر و یک برچسب زمانی.
  2. فرآیند:
    • ورودی: TBHM = "USER12345@2023-10-27T10:30:00Z"، طول $L$ = 16، مجموعه کاراکتر = 94 کاراکتر ASCII قابل چاپ.
    • هسته PRNG این را با $K_{sys}$ در حالت شمارنده پردازش می‌کند تا 128 بیت تصادفی تولید کند (16 کاراکتر * log2(94) ≈ 105 بیت، بنابراین 128 بیت آنتروپی کافی فراهم می‌کند).
    • بیت‌ها به یک رشته مانند s9*!Lq9@Pz%2m#X& تبدیل می‌شوند.
  3. ویژگی‌های امنیتی:
    • غیرقابل پیش‌بینی بودن: بدون $K_{sys}$، خروجی حتی اگر TBHM شناخته شده باشد غیرقابل پیش‌بینی است.
    • قطعی بودن: همان کاربر در آن لحظه دقیق همان رمز عبور را دریافت می‌کند که به رفع اشکال کمک می‌کند.
    • آنتروپی بالا: رمز عبور دارای حدود 105 بیت آنتروپی است که حمله جستجوی فراگیر را غیرممکن می‌کند.

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

10. مراجع

  1. M. Bellare, R. Canetti, and H. Krawczyk, "Keying Hash Functions for Message Authentication," CRYPTO 1996.
  2. NIST, "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication," SP 800-38B.
  3. NIST, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," FIPS PUB 202.
  4. NIST, "Recommendation for the Entropy Sources Used for Random Bit Generation," SP 800-90B.
  5. NIST, "Recommendation for Key Derivation Using Pseudorandom Functions," SP 800-108 Rev. 1.
  6. J. Kelsey, B. Schneier, and N. Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator," SAC 1999.
  7. J. Zhu, T. Park, P. Isola, A.A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," ICCV 2017. (به عنوان نمونه‌ای از ارزیابی روش‌شناختی سختگیرانه ذکر شده است).
  8. NCC Group, "Password Storage Cheat Sheet," OWASP Foundation. (به عنوان منبعی برای راهنمایی عملی خط‌مشی رمز عبور ذکر شده است).