اصلی - دیوار خشک
مولد اعداد تصادفی. روس ها اولین مولد اعداد تصادفی بیولوژیکی "جهان" را ارائه داده اند. او چگونه کار می کند؟ کاری که کد امنیتی انجام می دهد

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

اعتقاد بر این است که اولین تلاش برای ایجاد یک مولد فیزیکی اعداد تصادفی به 3500 سال قبل از میلاد برمی گردد. و با بازی تخته رویی ، یک سرگرمی سکولار مصر باستان در ارتباط است. طبق بازسازی های مدرن قوانین بازی ، از چهار چوب مسطح برای تعیین تعداد امتیازات هر بازیکن و ترتیب حرکت در این بازی استفاده شد ، که یک طرف آن سفید بود ، و دیگری - سیاه. چوب ها در همان زمان پرتاب می شدند و بسته به ترکیب رنگ ، فرصت های اضافی را برای بازیکنان تعیین می کردند. در آغاز قرن XX. توالی اعداد تصادفی به صورت دستی شبیه سازی شدند - با انداختن یک سکه یا تاس ، گذاشتن کارت های بازی ، رولت ، برداشتن توپ از یک ظرف و غیره سنسورهای مدرن فیزیکی (سخت افزاری) دستگاه های خاصی هستند که بر اساس تبدیل صداهای تصادفی با منشأ طبیعی یا مصنوعی (سر و صدای حرارتی ، اثر شات در لوله های خلا ، پوسیدگی رادیواکتیو و غیره) اعداد تصادفی تولید می کنند. مثلاً یک ماشین ERNIE 4 (تجهیزات نشانگر الکترونیکی عدد تصادفی)),

  • 1 بعضی اوقات ، گرچه به ندرت ، از توزیع داده شده در جدول به عنوان استاندارد 0 1 ... 8 9 یاد می شود
  • 0.1 0.1 ... 0.1 0.1 / برای تعیین تعداد برندگان در قرعه کشی ماهانه انگلیس استفاده می شود ، از نویز حرارتی ترانزیستورها به عنوان منبع متغیرهای تصادفی استفاده می کند. روش فیزیکی به دست آوردن توالی اعداد تصادفی دارای ویژگی هایی است که برای مدل شبیه سازی معایب است. اینها ، اول از همه ، نیاز به اقدامات ویژه ای برای اطمینان از پایداری منبع سیگنال تبدیل شده به اعداد تصادفی و عدم امکان تولید مثل دنباله اعداد تصادفی است.

جداول اعداد تصادفی از این معایب عاری هستند. بگذارید منظور از جدول اعداد تصادفی را توضیح دهیم. فرض کنید ما پیاده سازی کرده ایم ن آزمایشات مستقل ، که منجر به اعداد تصادفی a ، a 2 ، osdr می شود. نوشتن این اعداد (به ترتیب شکل ظاهری و به صورت جدول مستطیل شکل) به آنچه جدول اعداد تصادفی گفته می شود ، می دهد. به شرح زیر استفاده می شود. در طی محاسبات ، ممکن است به یک عدد تصادفی یا یک عدد تصادفی نیاز داشته باشیم. اگر به یک عدد تصادفی نیاز باشد ، می توانیم هر عددی را از این جدول بگیریم. همین مورد در مورد یک عدد صحیح تصادفی صدق می کند - شما می توانید برای هر رقم هر رقمی را انتخاب کنید. اگر به یک عدد تصادفی 0k رقم متوالی cc ، a 2 ، ao / نیاز داشته باشیم و فرض کنیم 8 \u003d (Hoco ^ .-. O ^. در این حالت ، در مورد یک جدول "ایده آل" از رقم تصادفی ، ارقام از آن را می توان به طور تصادفی انتخاب کرد ، می تواند در یک ردیف باشد ، شما می توانید از هر الگوریتم انتخابی که به مقادیر رقم جدول بستگی ندارد استفاده کنید ، از هرجای جدول شروع کنید ، در هر جهت بخوانید.

اولین جدول اعداد تصادفی با استفاده از رولت بدست آمد. این قبیل جداول چندین بار به صورت کتاب منتشر شده است. یکی از مشهورترین جداول که در سال 1927 منتشر شد ، حاوی بیش از 40000 عدد تصادفی بود که "به طور تصادفی از گزارش های سرشماری گرفته شده است".

مرجع تاریخچه

لئونارد تیپت (لئونارد هنری کالب تیپت، 1902-1985) - آماری انگلیسی ، دانش آموز K. پیرسون و R. فیشر. در سال 1965-1966. - رئیس انجمن آماری سلطنتی. برخی از نتایج مهم در نظریه مقادیر شدید با نام وی همراه است ، به عنوان مثال قضیه توزیع فیشر - تیپت و فیشر - تیپت - گدننکو.

بعداً دستگاههای ویژه ای (ماشین آلات) طراحی شدند که به صورت مکانیکی اعداد تصادفی تولید می کنند. اولین ماشین در سال 1939 توسط M.J. Kendall و B. Babington-Smith برای ایجاد جداول حاوی 100000 رقم تصادفی استفاده شد. در سال 1955 این شرکت شرکت RAND جداول معروف را با یک میلیون رقم تصادفی به دست آمده توسط دستگاه دیگری از این نوع منتشر کرده است. کاربرد عملی جداول اعداد تصادفی در حال حاضر ، به طور معمول ، در مسائلی که از روش های انتخاب تصادفی استفاده می کنند محدود است

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

جالبه

در روسیه ، GOST 18321-73 (ST SEV 1934-79) در حال اجرا است ، که قوانینی را برای انتخاب واحدهای محصولات در یک نمونه در هنگام کنترل کیفیت پذیرش آماری ، روش های آماری تجزیه و تحلیل و تنظیم فرآیندهای فن آوری برای انواع قطعه تعیین می کند. محصولات برای اهداف صنعتی و فنی و کالاهای مصرفی. در آن ، به طور خاص ، نشان داده شده است که هنگام انتخاب واحدهای تولید در نمونه "از جداول اعداد تصادفی مطابق با ST SEV 546-77 استفاده کنید".

درخواست مجدد همه اعداد به راحتی قابل تکرار هستند. و عرضه اعداد در چنین توالی محدود است. با این حال ، یک توالی از اعداد شبه تصادفی یک مزیت آشکار نسبت به یک جدول دارد: فرمول های ساده ای برای محاسبه یک عدد شبه تصادفی وجود دارد ، در حالی که دریافت هر عدد فقط 3-5 دستور طول می کشد ، و برنامه محاسبه فقط چند سلول را اشغال می کند در درایو

الگوریتم های زیادی برای بدست آوردن توالی اعداد شبه تصادفی وجود دارد ؛ پیاده سازی این الگوریتم ها ، به نام سنسور (مولد) اعداد شبه تصادفی ، با جزئیات در ادبیات ویژه شرح داده شده است. در اینجا برخی از معروف ترین الگوریتم ها آورده شده است.

  • Tippett L. اعداد نمونه گیری تصادفی. لندن: انتشارات دانشگاه کمبریج ، 1927.
  • نگاه کنید به: D.E. Knut، The Art of Programming. ویرایش سوم م .: ویلیامز ، 2000. T. 2. Ch. 3. اعداد تصادفی.

1396/09/19 ، سه شنبه ، ساعت 13:18 ، به وقت مسکو ، متن: والریا شمیروا

شرکت Security Code ، توسعه دهنده مجموعه رمزنگاری قاره ، حق ثبت حسگر بیولوژیکی عدد تصادفی را دریافت کرد. این دقیقاً یک حسگر بیولوژیکی است ، زیرا اساس تصادفی واکنش کاربر به تصویری است که به او نشان داده شده است. این شرکت اطمینان می دهد که چنین فناوری هایی قبلاً در دنیا ثبت اختراع نشده بودند.

اخذ حق ثبت اختراع

کد امنیتی حق ثبت اختراع فناوری حسگر اعداد تصادفی بیولوژیکی را دریافت کرد. به گفته توسعه دهندگان ، این فناوری با استفاده از "رویکرد جدید برای حل مسئله تولید اعداد تصادفی با استفاده از رایانه و شخص" ایجاد شده است. این توسعه قبلاً در تعدادی از محصولات از جمله Continent-AP ، Secret Net Studio ، Continent TLS و Jinn و همچنین در کتابخانه رمزنگاری SCrypt استفاده شده است.

نمایندگان این شرکت به CNews توضیح دادند که کار بر روی سنسور برای سومین سال است که در حال انجام است. این شامل یک قسمت علمی ، یک اجرا و یک قسمت آزمایشی است. سه نفر مسئول بخش علمی این شرکت هستند ، کل تیم برنامه نویسان در توسعه شرکت کردند و آزمایشات و آزمایشات توسط کل تیم ، که چند صد نفر است ، انجام شد.

قابلیت های فناوری

سنسور جدید می تواند توالی های تصادفی را در دستگاه های شخصی ایجاد کند - هیچ ابزار اضافی یا افزونه سخت افزاری مورد نیاز نیست. می تواند برای رمزگذاری داده ها و در هر منطقه ای که نیاز به توالی دودویی تصادفی وجود دارد استفاده شود. به گفته توسعه دهندگان ، این کلیدهای رمزگذاری بسیار سریعتر در دستگاه های تلفن همراه ایجاد می شود. از این ویژگی می توان برای رمزگذاری داده ها یا تولید امضای الکترونیکی استفاده کرد.

همانطور که توضیح داده شد آلیسا کورنوا، یک تحلیلگر سیستم "کد امنیتی" ، یک سنسور ایجاد شده توسط این شرکت توالی های تصادفی را براساس سرعت و دقت پاسخ دست کاربر به تغییر تصویر در صفحه رایانه شخصی یا رایانه لوحی تولید می کند. برای ورودی از ماوس یا صفحه لمسی استفاده می شود. به نظر می رسد اینگونه است: دایره ها به طور آشفته بر روی صفحه حرکت می کنند ، برخی از پارامترهای آنها با گذشت زمان تغییر می کنند. در برخی از زمان ها ، کاربر نسبت به تغییرات تصویر واکنش نشان می دهد. با توجه به مهارت های حرکتی او ، این در یک بیت تصادفی از بیت ها منعکس می شود.

می توانید توالی اعداد تصادفی را بر اساس واکنش های خود به خودی انسان تولید کنید

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

تازگی علمی

همانطور که این شرکت به CNews توضیح داد ، بسیاری از روشهای شناخته شده ساخت سنسورهای عدد تصادفی مبتنی بر قوانین و پدیده های فیزیکی یا الگوریتم های قطعی هستند. توالی ها را می توان با استفاده از رایانه تولید کرد - در این حالت ، تصادفی بودن مبتنی بر عدم ثبات برخی از قسمتهای رایانه و عدم اطمینان از تداخل سخت افزاری است.

تازگی فناوری "کد امنیتی" در این واقعیت نهفته است که منبع تصادفی واکنش انسان در برابر تغییر تصویر است که در نمایشگر دستگاه نمایش داده می شود. به همین دلیل عنوان اختراع حاوی کلمه "بیولوژیکی" است. این شرکت گزارش می دهد که نه آن و نه Rospatent آنالوگ های اختراع شده این فناوری را در روسیه و جهان پیدا نکرده اند. با این حال ، به طور کلی ، چنین تکنیک هایی شناخته شده است: به عنوان مثال ، یک توالی می تواند براساس اقدامات کاربر مانند کلیک یا حرکت با ماوس یا کلیدهای صفحه کلید ایجاد شود.

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

محصولات با استفاده از فن آوری

"Continent" یک مجموعه سخت افزاری-نرم افزاری است که برای رمزگذاری داده ها طراحی شده است. به عنوان مثال در خزانه داری در بخش دولتی روسیه استفاده می شود. از یک فایروال و جعبه ابزار VPN تشکیل شده است. این توسط NIP "Informzashita" ایجاد شده است ، اکنون توسط "Security Code" LLC در حال توسعه است.

به طور خاص ، سرور دسترسی قاره و سیستم رمزگذاری اطلاعات Continent-AP یک ماژول دسترسی از راه دور ایمن با استفاده از الگوریتم های GOST هستند ، و Continental TLS VPN سیستمی برای دسترسی امن از راه دور به برنامه های وب با استفاده از الگوریتم های رمزگذاری GOST است.

Secret Net Studio یک راه حل جامع برای محافظت از ایستگاه های کاری و سرورها در داده ها ، برنامه ها ، شبکه ، سیستم عامل و سطح جانبی است که "کد امنیتی" را نیز توسعه می دهد. Jinn-Client برای محافظت رمزنگاری از اطلاعات برای ایجاد امضاهای الکترونیکی و تجسم قابل اعتماد اسناد طراحی شده است و Jinn-Server یک مجموعه نرم افزاری و سخت افزاری برای ساخت سیستم های مدیریت اسناد الکترونیکی از نظر قانونی است.

کتابخانه رمزنگاری SCrypt که از حسگر جدیدی نیز استفاده می کند ، توسط "کد امنیتی" ساخته شده است تا کاربرد الگوریتم های رمزنگاری را در محصولات مختلف آسان کند. این یک کد برنامه واحدی است که از بررسی خطا عبور کرده است. این کتابخانه از الگوریتم های رمزنگاری برای هش کردن ، امضای الکترونیکی ، رمزگذاری پشتیبانی می کند.

کاری که کد امنیتی انجام می دهد

Security Code یک شرکت روسی است که نرم افزار و سخت افزار را توسعه می دهد. این محصول در سال 2008 تاسیس شده است. دامنه محصولات حفاظت از سیستم های اطلاعاتی و انطباق آنها با استانداردهای بین المللی و صنعت ، از جمله محافظت از اطلاعات محرمانه ، تا اسرار دولتی است. Security Code دارای نه مجوز از سرویس فدرال کنترل فنی و صادرات (FSTEC) روسیه ، سرویس امنیت فدرال (FSB) روسیه و وزارت دفاع است.

این شرکت حدود 300 متخصص استخدام می کند ؛ 900 شریک مجاز در تمام مناطق روسیه و کشورهای CIS در فروش محصولات مشغول هستند. تعداد سرویس گیرندگان کد امنیتی حدود 32 هزار سازمان دولتی و تجاری است.

PRNG های قطعی

هیچ الگوریتم قطعی نمی تواند اعداد کاملا تصادفی تولید کند ، فقط می تواند برخی از خصوصیات اعداد تصادفی را تقریبی کند. همانطور که جان فون نویمان گفت ، " هرکسی که ضعف در روش های محاسبه به دست آوردن اعداد تصادفی داشته باشد بدون شک گناهکار است».

هر PRNG با منابع محدود دیر یا زود در یک حلقه گیر می کند - شروع به تکرار همان توالی اعداد می کند. طول چرخه های PRNG به خود ژنراتور بستگی دارد و به طور متوسط \u200b\u200bحدود 2 n / 2 است ، جایی که n اندازه حالت داخلی بیت است ، اگر چه مولدهای همخوان خطی و LFSR حداکثر چرخه های نظم 2 n را دارند. اگر یک PRNG بتواند به چرخه های خیلی کوتاه همگرا شود ، PRNG قابل پیش بینی و غیر قابل استفاده می شود.

اکثر ژنراتورهای حساب ساده ، اگرچه سریع هستند ، اما از اشکالات جدی زیادی رنج می برند:

  • دوره / دوره ها خیلی کوتاه است.
  • مقادیر متوالی مستقل نیستند.
  • برخی از بیت ها "کمتر تصادفی" از بقیه هستند.
  • توزیع یک بعدی ناهموار.
  • برگشت پذیری

به طور خاص ، الگوریتم اصلی به نظر می رسد بسیار ضعیف است ، که باعث ایجاد تردید در مورد قابلیت اطمینان نتایج بسیاری از مطالعات با استفاده از این الگوریتم می شود.

PRNG با منبع آنتروپی یا RNG

در کنار نیاز موجود برای تولید توالی اعداد تصادفی که به راحتی قابل تکرار هستند ، همچنین نیاز به تولید اعداد کاملاً غیر قابل پیش بینی یا کاملاً تصادفی نیز وجود دارد. به چنین ژنراتورهایی گفته می شود مولد اعداد تصادفی (RNG - مهندسی مولد اعداد تصادفی ، RNG) از آنجا که این مولدها اغلب برای تولید کلیدهای متقارن و نامتقارن منحصر به فرد برای رمزگذاری مورد استفاده قرار می گیرند ، بیشتر آنها از ترکیبی از یک PRNG قوی و یک منبع خارجی آنتروپی ساخته می شوند (و این ترکیب است که امروزه به عنوان RNG شناخته می شود) .

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

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

نمونه هایی از RNG ها و منابع آنتروپی

چند نمونه از RNG ها با منابع آنتروپی و ژنراتورهای آنها:

منبع آنتروپی PRNG مزایای معایب
/ dev / random در لینوکس شمارنده چرخه پردازنده ، اما فقط در هنگام وقفه های سخت افزاری جمع آوری می شود LFSR ، با هش کردن خروجی از طریقبرای مدت بسیار طولانی "گرم می شود" ، می تواند برای مدت طولانی "گیر کند" یا به عنوان PRNG کار می کند ( / dev / urandom)
بومادران توسط بروس اشنایر روشهای سنتی (میراثی) AES -256 وطراحی رمزنگاری انعطاف پذیر "گرم شدن" برای مدت طولانی ، حالت داخلی بسیار کوچک ، بیش از حد به قدرت رمزنگاری الگوریتم های انتخاب شده بستگی دارد ، آهسته ، که فقط برای تولید کلید کاربرد دارد
ژنراتور لئونید یوریف نویز کارت صدا ? به احتمال زیاد یک منبع خوب و سریع آنتروپی است هیچ PRNG مستقل و مشهوری به عنوان رمزنگاری قوی که فقط به عنوان ویندوز در دسترس است
مایکروسافت ساخته شده در ویندوز ، "گیر نمی کند" حالت درونی کوچک ، به راحتی قابل پیش بینی است
تعامل بین نخ ها جاوا هنوز گزینه دیگری ندارد ، وضعیت بزرگ داخلی مجموعه آنتروپی آهسته
هرج و مرج توسط Ruptor شمارنده چرخه پردازنده ، به طور مداوم جمع آوری می شود هش کردن حالت داخلی 4096 بیتی بر اساس یک نوع غیر خطی از ژنراتور Marsaglia تا زمانی که سریعترین حالت ، حالت عالی داخلی "گیر نکند"
RRAND توسط Ruptor شمارنده چرخه پردازنده رمزگذاری حالت داخلی با رمز عبور جریانبسیار سریع ، حالت داخلی با اندازه دلخواه با انتخاب ، "گیر نمی کند"

PRNG در رمزنگاری

نوعی PRNG PRBG است - مولد بیت های شبه تصادفی و همچنین رمزهای مختلف جریان. PRNG ، مانند رمزهای جریان ، از یک حالت داخلی (معمولاً از 16 بیت تا چندین مگابایت در اندازه) تشکیل شده است ، تابعی برای مقداردهی اولیه حالت داخلی با یک کلید ، یا دانه (مهندسی دانه) ، توابع بروزرسانی وضعیت داخلی و توابع خروجی. PRNG ها به محاسبات ساده ، رمزنگاری شکسته و قوی رمزنگاری تقسیم می شوند. هدف مشترک آنها تولید توالی اعدادی است که با روشهای محاسباتی نمی توان آنها را از تصادفی تشخیص داد.

اگرچه بسیاری از PRNG های رمزنگاری شده یا رمزهای جریانی قوی تعداد "تصادفی" بسیار بیشتری را ارائه می دهند ، اما این تولیدکننده ها بسیار کندتر از مولدهای حساب معمولی هستند و ممکن است برای هر نوع تحقیق که برای پردازش محاسبات مفیدتر آزاد باشد ، مناسب نباشد.

برای اهداف نظامی و میدانی ، فقط از PRNG های رمزنگاری قوی طبقه بندی شده همزمان (رمزهای جریانی) استفاده می شود ، رمزهای بلوکی استفاده نمی شوند. نمونه هایی از PRNG های معروف رمزنگاری شناخته شده عبارتند از ISAAC ، SEAL ، Snow ، الگوریتم نظری بسیار کند Blum ، Blum و Shub ، و همچنین شمارنده هایی با توابع هش رمزنگاری یا رمزهای بلوکی قوی رمزنگاری به جای عملکرد خروجی.

سخت افزار PRNG

جدا از ژنراتورهای قدیمی و مشهور LFSR که در قرن بیستم به عنوان سخت افزار PRNG مورد استفاده قرار می گرفتند ، متأسفانه اطلاعات کمی در مورد سخت افزارهای مدرن PRNG (رمزگذارهای جریان) شناخته شده است ، زیرا بیشتر آنها برای اهداف نظامی طراحی شده اند و به صورت مخفی نگهداری می شوند . تقریباً تمام PRNG های سخت افزاری تجاری موجود ثبت شده و همچنین مخفی نگه داشته می شوند. PRNG های سخت افزاری با الزامات دقیق حافظه مصرفی (اغلب استفاده از حافظه ممنوع است) ، سرعت (1-2 چرخه زمانی) و مساحت (چند صد FPGA) - یا

به دلیل کمبود PRNG سخت افزاری خوب ، تولیدکنندگان مجبور به استفاده از رمزهای بلوک بسیار کندتر اما شناخته شده موجود هستند (Computer Review # 29 (2003)

  • یوری لیفشیتس دوره "مشکلات مدرن رمزنگاری" سخنرانی 9: مولدهای شبه تصادفی
  • ل. باراش. الگوریتم AKS برای بررسی اعداد برای سادگی و پیدا کردن ثابت مولدهای اعداد شبه تصادفی
  • ژلنیکوف ولادیمیر. توالی شبه تصادفی اعداد // رمزنگاری از پاپیروس به کامپیوتر م.: ABF ، 1996.
  • random.org (eng.) - سرویس آنلاین برای تولید اعداد تصادفی
  • اعداد تصادفی رمزنگاری (انگلیسی)
  • نظریه و عمل تولید اعداد تصادفی (سازنده)
  • Zvi Gutterman ، بنی پینکاس ، Tzachy Reinman. تجزیه و تحلیل تولید کننده شماره تصادفی لینوکس (مهندسی)
  • مجموعه تست آماری برای تولیدکننده های تعداد تصادفی و شبه تصادفی برای کاربردهای رمزنگاری NIST SP 800-22
  • PRNG های قطعی

    هیچ الگوریتم قطعی نمی تواند اعداد کاملا تصادفی تولید کند ، فقط می تواند برخی از خصوصیات اعداد تصادفی را تقریبی کند. همانطور که جان فون نویمان گفت ، " هرکسی که ضعف در روش های محاسبه به دست آوردن اعداد تصادفی داشته باشد بدون شک گناهکار است».

    هر PRNG با منابع محدود دیر یا زود در یک حلقه گیر می کند - شروع به تکرار همان توالی اعداد می کند. طول چرخه های PRNG به خود ژنراتور بستگی دارد و به طور متوسط \u200b\u200bحدود 2 n / 2 است ، جایی که n اندازه حالت داخلی بیت است ، اگر چه مولدهای همخوان خطی و LFSR حداکثر چرخه های نظم 2 n را دارند. اگر یک PRNG بتواند به چرخه های خیلی کوتاه همگرا شود ، PRNG قابل پیش بینی و غیر قابل استفاده می شود.

    اکثر ژنراتورهای حساب ساده ، اگرچه سریع هستند ، اما از اشکالات جدی زیادی رنج می برند:

    • دوره / دوره ها خیلی کوتاه است.
    • مقادیر متوالی مستقل نیستند.
    • برخی از بیت ها "کمتر تصادفی" از بقیه هستند.
    • توزیع یک بعدی ناهموار.
    • برگشت پذیری

    به طور خاص ، الگوریتم اصلی به نظر می رسد بسیار ضعیف است ، که باعث ایجاد تردید در مورد قابلیت اطمینان نتایج بسیاری از مطالعات با استفاده از این الگوریتم می شود.

    PRNG با منبع آنتروپی یا RNG

    در کنار نیاز موجود برای تولید توالی اعداد تصادفی که به راحتی قابل تکرار هستند ، همچنین نیاز به تولید اعداد کاملاً غیر قابل پیش بینی یا کاملاً تصادفی نیز وجود دارد. به چنین ژنراتورهایی گفته می شود مولد اعداد تصادفی (RNG - مهندسی مولد اعداد تصادفی ، RNG) از آنجا که این مولدها اغلب برای تولید کلیدهای متقارن و نامتقارن منحصر به فرد برای رمزگذاری مورد استفاده قرار می گیرند ، بیشتر آنها از ترکیبی از یک PRNG قوی و یک منبع خارجی آنتروپی ساخته می شوند (و این ترکیب است که امروزه به عنوان RNG شناخته می شود) .

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

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

    نمونه هایی از RNG ها و منابع آنتروپی

    چند نمونه از RNG ها با منابع آنتروپی و ژنراتورهای آنها:

    منبع آنتروپی PRNG مزایای معایب
    / dev / random در لینوکس شمارنده چرخه پردازنده ، اما فقط در هنگام وقفه های سخت افزاری جمع آوری می شود LFSR ، با هش کردن خروجی از طریقبرای مدت بسیار طولانی "گرم می شود" ، می تواند برای مدت طولانی "گیر کند" یا به عنوان PRNG کار می کند ( / dev / urandom)
    بومادران توسط بروس اشنایر روشهای سنتی (میراثی) AES -256 وطراحی رمزنگاری انعطاف پذیر "گرم شدن" برای مدت طولانی ، حالت داخلی بسیار کوچک ، بیش از حد به قدرت رمزنگاری الگوریتم های انتخاب شده بستگی دارد ، آهسته ، که فقط برای تولید کلید کاربرد دارد
    ژنراتور لئونید یوریف نویز کارت صدا ? به احتمال زیاد یک منبع خوب و سریع آنتروپی است هیچ PRNG مستقل و مشهوری به عنوان رمزنگاری قوی که فقط به عنوان ویندوز در دسترس است
    مایکروسافت ساخته شده در ویندوز ، "گیر نمی کند" حالت درونی کوچک ، به راحتی قابل پیش بینی است
    تعامل بین نخ ها جاوا هنوز گزینه دیگری ندارد ، وضعیت بزرگ داخلی مجموعه آنتروپی آهسته
    هرج و مرج توسط Ruptor شمارنده چرخه پردازنده ، به طور مداوم جمع آوری می شود هش کردن حالت داخلی 4096 بیتی بر اساس یک نوع غیر خطی از ژنراتور Marsaglia تا زمانی که سریعترین حالت ، حالت عالی داخلی "گیر نکند"
    RRAND توسط Ruptor شمارنده چرخه پردازنده رمزگذاری حالت داخلی با رمز عبور جریانبسیار سریع ، حالت داخلی با اندازه دلخواه با انتخاب ، "گیر نمی کند"

    PRNG در رمزنگاری

    نوعی PRNG PRBG است - مولد بیت های شبه تصادفی و همچنین رمزهای مختلف جریان. PRNG ، مانند رمزهای جریان ، از یک حالت داخلی (معمولاً از 16 بیت تا چندین مگابایت در اندازه) تشکیل شده است ، تابعی برای مقداردهی اولیه حالت داخلی با یک کلید ، یا دانه (مهندسی دانه) ، توابع بروزرسانی وضعیت داخلی و توابع خروجی. PRNG ها به محاسبات ساده ، رمزنگاری شکسته و قوی رمزنگاری تقسیم می شوند. هدف مشترک آنها تولید توالی اعدادی است که با روشهای محاسباتی نمی توان آنها را از تصادفی تشخیص داد.

    اگرچه بسیاری از PRNG های رمزنگاری شده یا رمزهای جریانی قوی تعداد "تصادفی" بسیار بیشتری را ارائه می دهند ، اما این تولیدکننده ها بسیار کندتر از مولدهای حساب معمولی هستند و ممکن است برای هر نوع تحقیق که برای پردازش محاسبات مفیدتر آزاد باشد ، مناسب نباشد.

    برای اهداف نظامی و میدانی ، فقط از PRNG های رمزنگاری قوی طبقه بندی شده همزمان (رمزهای جریانی) استفاده می شود ، رمزهای بلوکی استفاده نمی شوند. نمونه هایی از PRNG های معروف رمزنگاری شناخته شده عبارتند از ISAAC ، SEAL ، Snow ، الگوریتم نظری بسیار کند Blum ، Blum و Shub ، و همچنین شمارنده هایی با توابع هش رمزنگاری یا رمزهای بلوکی قوی رمزنگاری به جای عملکرد خروجی.

    سخت افزار PRNG

    جدا از ژنراتورهای قدیمی و مشهور LFSR که در قرن بیستم به عنوان سخت افزار PRNG مورد استفاده قرار می گرفتند ، متأسفانه اطلاعات کمی در مورد سخت افزارهای مدرن PRNG (رمزگذارهای جریان) شناخته شده است ، زیرا بیشتر آنها برای اهداف نظامی طراحی شده اند و به صورت مخفی نگهداری می شوند . تقریباً تمام PRNG های سخت افزاری تجاری موجود ثبت شده و همچنین مخفی نگه داشته می شوند. PRNG های سخت افزاری با الزامات دقیق حافظه مصرفی (اغلب استفاده از حافظه ممنوع است) ، سرعت (1-2 چرخه زمانی) و مساحت (چند صد FPGA) - یا

    به دلیل کمبود PRNG سخت افزاری خوب ، تولیدکنندگان مجبور به استفاده از رمزهای بلوک بسیار کندتر اما شناخته شده موجود هستند (Computer Review # 29 (2003)

  • یوری لیفشیتس دوره "مشکلات مدرن رمزنگاری" سخنرانی 9: مولدهای شبه تصادفی
  • ل. باراش. الگوریتم AKS برای بررسی اعداد برای سادگی و پیدا کردن ثابت مولدهای اعداد شبه تصادفی
  • ژلنیکوف ولادیمیر. توالی شبه تصادفی اعداد // رمزنگاری از پاپیروس به کامپیوتر م.: ABF ، 1996.
  • random.org (eng.) - سرویس آنلاین برای تولید اعداد تصادفی
  • اعداد تصادفی رمزنگاری (انگلیسی)
  • نظریه و عمل تولید اعداد تصادفی (سازنده)
  • Zvi Gutterman ، بنی پینکاس ، Tzachy Reinman. تجزیه و تحلیل تولید کننده شماره تصادفی لینوکس (مهندسی)
  • مجموعه تست آماری برای تولیدکننده های تعداد تصادفی و شبه تصادفی برای کاربردهای رمزنگاری NIST SP 800-22
  • نرم افزار تقریباً همه رایانه ها برای تولید دنباله اعداد شبه یکنواخت توزیع شده توابع داخلی دارند. با این حال ، برای مدل سازی آماری ، نیازهای بیشتری به تولید اعداد تصادفی اعمال می شود. کیفیت نتایج حاصل از چنین مدلی مستقیماً به کیفیت مولد اعداد تصادفی توزیع شده یکنواخت بستگی دارد ، از آنجا که این اعداد همچنین منابعی (داده های اولیه) برای بدست آوردن متغیرهای تصادفی دیگر با قانون توزیع معین هستند.

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

    برای استفاده در فیزیک محاسباتی ، یک ژنراتور باید دارای ویژگی های زیر باشد:

      بازده محاسباتی کوتاهترین زمان ممکن برای محاسبه چرخه بعدی و میزان حافظه برای ژنراتور است.

      طول بزرگ L یک توالی تصادفی از اعداد. این دوره باید حداقل مجموعه اعداد تصادفی لازم برای آزمایش آماری را شامل شود. بعلاوه ، حتی نزدیک شدن به انتهای L خطرناک است ، که می تواند منجر به نتایج نادرست یک آزمایش آماری شود.

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

    برای محاسبه معتبر این احتمال ، از نظر آماری ، تعداد تکرارهای آزمایش را می توان با فرمول تخمین زد:

    جایی که
    - عملکرد معکوس عملکرد توزیع نرمال ، - احتمال خطای محرمانه اندازه گیری احتمال

    بنابراین ، برای اینکه خطا از فاصله اطمینان فراتر نرود با سطح اطمینان ، به عنوان مثال \u003d 0.95 لازم است که تعداد تکرارهای آزمایش کمتر نباشد:

    (2.2)

    به عنوان مثال ، برای خطای 10٪ ( \u003d 0.1) به دست می آوریم
    ، و برای خطای 3٪ ( \u003d 0.03) ما قبلاً دریافت کردیم
    .

    برای سایر شرایط اولیه مدل ، یک سری تکرار جدید از آزمایشات باید در یک توالی شبه تصادفی متفاوت انجام شود. بنابراین ، هر دو تابع برای تولید یک دنباله شبه تصادفی باید پارامتری داشته باشد که آن را تغییر دهد (به عنوان مثال ، R 0 ) ، یا طول آن باید حداقل باشد:

    جایی که ک - تعداد شرایط اولیه (نقاط منحنی تعیین شده با روش مونت کارلو) ، ن تعداد تکرار آزمایش مدل در شرایط اولیه است ، ل طول دنباله شبه تصادفی است.

    سپس هر سری از ن تکرارهای هر آزمایش در بخش خود از توالی شبه تصادفی انجام خواهد شد.

      تکرارپذیری همانطور که در بالا نشان داده شد ، داشتن پارامتری مطلوب است که تولید اعداد شبه تصادفی را تغییر دهد. معمولاً این R است 0 . بنابراین ، بسیار مهم است که تغییر در R 0 کیفیت (به عنوان مثال پارامترهای آماری) تولید کننده اعداد تصادفی را خراب نمی کند.

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

    بنابراین ، علاوه بر آزمایش ژنراتور ، بررسی آن با استفاده از کارهای معمولی که امکان ارزیابی مستقل نتایج را با روش های تحلیلی یا عددی فراهم می کند ، از اهمیت فوق العاده ای برخوردار است.

    می توانیم بگوییم که ایده قابلیت اطمینان اعداد شبه تصادفی در فرآیند استفاده از آنها با تأیید دقیق نتایج در هر زمان ممکن ایجاد می شود.



     


    خواندن:



    چگونه می توان کمبود پول را برای ثروتمند شدن از بین برد

    چگونه می توان کمبود پول را برای ثروتمند شدن از بین برد

    هیچ رازی نیست که بسیاری از مردم فقر را یک جمله می دانند. در حقیقت ، برای اکثریت مردم ، فقر یک حلقه معیوب است ، که سالها از آن ...

    "چرا یک ماه در خواب وجود دارد؟

    دیدن یک ماه به معنای یک پادشاه ، یا یک وزیر سلطنتی ، یا یک دانشمند بزرگ ، یا یک غلام فروتن ، یا یک فرد فریبکار ، یا یک زن زیبا است. اگر کسی ...

    چرا خواب ، آنچه آنها به سگ دادند چرا در مورد هدیه توله سگ خواب می بینم

    چرا خواب ، آنچه آنها به سگ دادند چرا در مورد هدیه توله سگ خواب می بینم

    به طور کلی ، سگ در خواب به معنای دوست است - خوب یا بد - و نمادی از عشق و ارادت است. دیدن آن در خواب به منزله دریافت خبر است ...

    چه زمانی طولانی ترین و کوتاه ترین روز سال است

    چه زمانی طولانی ترین و کوتاه ترین روز سال است

    از زمان های بسیار قدیم ، مردم بر این باور بودند که در این زمان می توان تغییرات مثبت بسیاری را در زندگی آنها از نظر ثروت مادی و ... جلب کرد.

    خوراک-تصویر RSS