مولد امن اعداد شبه‌تصادفی در رمزنگاری
تولید کننده عدد شبه تصادفی رمزنگاری ( CSPRNG ) یا تولید کننده عدد شبه تصادفی رمزنگاری ( CPRNG ) یک تولید کننده عدد شبه تصادفی (PRNG) با ویژگی هایی است که آن را برای استفاده در رمزنگاری مناسب می کند . همچنین به صورت عمومی به عنوان یک تولیدکننده عدد تصادفی رمزنگاری ( CRNG ) آزادانه شناخته می شود (به تولید اعداد تصادفی واقعی در مقابل اعداد شبه تصادفی مراجعه کنید ).
بیشترینکاربرد های رمزنگاری که نیاز به اعداد تصادفی دارند ، درموارد زیر دیده میشود: میزان "کیفیت" تصادفی بودن، در کاربردها مختلف متفاوت است. در برخی از پروتوکل ها در تولید یک رمزنانسی فقط یکتا بودن مقدار تصادفی تولید شده کافی است اما در سمت دیگر، تولید یک کلید اصلی با میزان کیفتی بالاتری در بحث تصادفی بودن می طلبد و همچنین باید آنتروپی مولد نیز بیشتر باشد. همچنین در کاربرد پد یکبار مصرف ، نظریه ی اطلاعات تنها در صورتی کلید از یک منبع تصادفی با یک آنتروپی بالا آمده باشد، رازداری را تضمین میکند. بنابراین هر مولد تولید اعداد تصادفی نمیتواند نیاز آنرا برای آن کافی باشد و مفید واقع شود.
به صورت ایده‌آل، اعداد تصادفی مورد نیاز در رمزنگاری باید از منابع با کیفیت بالا مانند مولد سخت‌افزاری اعداد تصادفی یا سیستم‌های پیش‌بینی‌ناپذیر تأمین گردند. اما همواره میزانی همبستگی میان داده های تصادفی که برخی فرآیند های ظاهرا تصادفی وجود دارد.بنابر تئوری اطلاعات، میزان تصادفی بودن و آنتروپی داده های که میتواند توسط یک سیستم تولید شود، همواره برابر آنتروپی خود آن سیستم است اما گاها در مثال های عملی، تعداد اعداد تصادفی مورد نیاز بیشتر از میزان آنتروپی موجود است. دراین موارد CSPRNG  میتواند جایگزین شود که توانایی آنتروپی را در اختیار بیت های بیشتری قراردهد.
ویژگی‌های مورد نیاز برای یک مولد معمولی اعداد شبه‌تصادفی، توسط مولد امن اعداد شبه‌تصادفی نیز تأمین می‌شوند. اما عکس این مطلب درست نیست. ویژگی‌های خاص مولد امن شبه‌تصادفی، دو دسته هستند. اولاً این مولدها باید از آزمون‌های آماری بگذرند و ویژگی‌های آماری مورد نیاز برای اعداد تصادفی تولیدشده را برآورده سازند. ثانیاً این مولدها باید در برابر حمله‌های احتمالی به اندازه کافی مقاوم باشند؛ حتی اگر قسمتی از حالت اولیه یا جاری آنها به دست مهاجمی بیفتد که قصد حمله دارد.اکثر مولدهای اعداد شبه‌تصادفی قابل استفاده به عنوان مولد امن نیستند. چرا که اولاً با اینکه ممکن است در مقابل آزمون‌های آماری کاملاً امن به نظر برسند، اما در حقیقت در برابر مهندسی معکوس آسیب‌پذیر هستند و می‌توان آزمون‌های آماری خاصی یافت که اعداد تولیدشده توسط این مولدها را از اعداد واقعاً تصادفی متمایز می‌سازند. ثانیاً در اکثر مولدهای اعداد شبه‌تصادفی، هنگامی که حالت جاری مولد فاش می‌شود، همه بیت‌های قبلی قابل بازسازی خواهند بود و حمله کننده از این طریق خواهد توانست به همه پیام‌های قبلی و بعدی دسترسی پیدا کند.
CSPRNGs  برای مقاوت در برابر این رمزنگاری طراحی شده است .
در تنظیمات مجانبی ، خانواده ای از توابع قابل محاسبه چند جمله ای قطعی formula_1 برای برخی از چند جملهای ، در صورت ایجاد طول ورودی خود ، یک مولد عدد شبه تصادفی ( PRNG یا PRG است ). formula_2 برای هر و اگر خروجی آن محاسباتی غیر قابل تشخیص برای هر احتمالی چند جمله ای الگوریتم زمان که خروجی 0 یا 1 به عنوان یک distinguisher از اتفاقی واقعی، یعنی،
برای برخی از مقادیرناچیز formula_4 . (علامت گذاری formula_5 بدین معنی است که از یک توزبع یکنواخت مجموعه آمده است . )
یک توصیف معادل وجود دارد: برای هر تابع خانواده ی formula_1 ، یک PRNG است اگر و تنها اگر بیت بعدی خروجی G توسط یک الگوریتم در زمان چندجمله ای غیرقابل حدس باشد.
یک مولد اعداد تصادفی امن رو به جلو با طول بلوک formula_7 یک PRNG است formula_8 ، به طوری که رشته ورودی formula_9 با طول درحالت فعلی و در دوره ام تولید شده است و خروجی ( formula_10 ، formula_11 ) متشکل از حالت بعدی است formula_10 و بلوک خروجی شبه تصادفی formula_11 دوره به نحوی که دربرابر شرایط زیر مقاومت میکند. اگر حالت اولیه formula_14 از یک توزبع یکنواخت روی formula_15 آمده باشند، پس از آن برای هر ، دنباله formula_16 باید به صورت محاسباتی غیرقابل تشخیص باشد از رشته ی formula_17 ، که در آن formula_18 به طور یکنواخت و تصادفی از formula_19 انتخاب شده است.
هر PRNG formula_20 می تواند به یک PRNG امن رو به جلو با طول بلوک formula_21 تبدیل شود که با تقسیم خروجی آن به حالت بعدی و خروجی واقعی حاصل میشود. این کار با تنظیم انجام می شود formula_22 ، که در آن formula_23 و formula_24 ؛ سپس با یک PRNG ایمن رو به جلو است که formula_25 به عنوان حالت بعدی و formula_26 به عنوان بلوک خروجی شبه تصادفی دوره فعلی درنظر گرفته شده است.
سانتا و وزیرانی ثابت کردند جریان های بیتی با تصادف ضعیف میتوانند باهم ترکیب شوند و جریان بیتی شبه تصادفی با کیفتی بالاتری را بسازند .حتی پیش از این ، جان فون نویمان ثابت کرده بود که یک الگوریتم ساده میتواند مقدار قابل توجهی از جانبداری را از هر جریان بیتی حذف کند این الگوریتم باید قبل از هرگونه تغییر در طرح Santha–Vazirani بر روی هر جریان بیتی اعمال شود.
در بحث زیر ، طرح های CSPRNG به سه طبقه تقسیم می شوند: در این دسته از مولدها معمولاً خروجی به طور قطعی بر حسب حالت اولیه معین نمی‌شود. ویژگی اخیر این امکان را فراهم می‌آورد تا حتی در صورت انتشار حالت اولیه، مولد در مقابل حملات احتمالی امن باشد.
تعدادی از مولدهای امن تولید اعداد شبه‌تصادفی با طراحی خاص در ذیل عنوان شده‌اند. برخی مولد های تولید امن اعداد شبه تصادفی رمزشده ،استاندارد شده اند مانند : در ویرایش بعدی ذکر شده است که قدرتی که برای CTR_DRGB ادعا  شده بود، به محدود کردن تعداد کل اعداد درخواست شده و تعداد بیت های درخواست شده در هر درخواست ، وابسته است.مرجع خوب توسط NIST فراهم شده است.
استاندارد هایی برای تست آماری طراحی های CSPRNG  های جدید موجود است : "گاردین" و "نیویورک تایمز" که آژانس امنیت ملی (NSA) یک درپشتی را دریک مولد اعداد شبه تصادفی NIST SP 800-90A قرار داده است که به NSA اجازه میدهد تا به آسانی متونی که با کمک Dual_EC_DRBG رمزگذاری شده اند را رمزگشایی کند. درهر دو مقاله گزارش شده است که ان اس ای به عنوان کارشناسان مستقل امنیتی ، در حال معرفی نقاط ضعف استاندارد CSPRNG 800-90  است. این موارد برای اولین بار توسط یکی از اسناد عالی مخفی که توسط ادوارد اسنودن به گاردین فاش شده است، تایید شد. ان اس ای به طور مخفیانه کار کرد تا نسخه ی شخصی سازی شده اش از پیش نویس استاندارد امنیتی NIST را بدست آورد که در سال 2006 برای استفاده ی جهانی به تصویب رسید. در این اسناد منتشر شده آمده است که " در نهایت NSA تنها ویرایشگر شد." . باوجود مورد پنهان شناخته شده کلیپتوگرافیک و نواقص قابل توجه Dual_EC_DRBG ، بعضی از شرکت ها مانند RSA به استفاده از Dual_EC_DRBG تا سال 2013 که ضعف آن تاییدشد، ادامه دادند. RSA برای این کار 10 ملیون دلار از آزانس امنیت ملی دریافت کرد.
در 23 اکتبر 2017 ، Shaanan Cohney ، Matthew Green و Nadia Heninger ، رمزنگارانی در دانشگاه پنسیلوانیا و دانشگاه جان هاپکینز جزئیات حمله DUHK (از کلیدهای رمزگذاری شده استفاده نکنید) را روی WPA2 منتشر کردند که در آن سخت افزار هایی که در آنها کلید تصادف الگوریتم ANSI X9.31 به صورت مستقیم در کد قرار داده شده اند درتناقض با استفاده از مولد اعداد تصادفی ANSI X9.31 ،عمل میکنند. "در این حمله مهاجم میتواند داده های رمزگذاری شده، با روش سعی و خطاهای فراوان (brute-force) به کار گیرد تا بقیه پارامترهای رمزنگاری را کشف کند و درنتیجه به کلید رمزنگاری اصلی که برای رمزنگاری جلسات وب یا اتصالات شبکه خصوصی مجازی (VPN)استفاده میشود، دست یابد . "