تصادفی هیچگاه واقعا تصادفی نبوده است!
زمانی که کامپیوتری اقدام به تولید یک عدد تصادفی میکند، اینکار را از طریق الگوریتمهای مشخصی انجام میدهد که به کامپیوتر اجازه میدهند اعدادی را انتخاب کند. اما واقعیت این است که این اعداد هیچگاه تصادفی نخواهند بود و همه آنها بر مبنای الگوریتیمی که کامپیوتر از آنها استفاده میکند، تولید میشوند. اعداد تصادفی زمانی برای کامپیوتر ارزشمندتر میشوند که از آنها در حوزههایی همچون بازیها و رمزنگاری استفاده میکند.
اما همانگونه که گفتیم روشهای سنتی خالی از اشکال نبودهاند. اما به تازگی پیشرفت قابل توجهی در زمینه استخراج و تولید اعداد تصادفی رقم خورده است. راهکاری که به ماشینها کمک میکند فرآیند پرتاب تاس را به منظور تولید اعداد تصادفی به شیوه سادهتر اما در مقابل قدرتمندی مدیریت کنند. در این روش دانشمندان برای تولید یک تصادف واقعی در روند انتخاب اعداد سعی میکنند از رخدادی که در کامپیوتر و در خارج از یک برنامه تعریف شده و در جریان است استفاده کنند. بهطور مثال، اندازهگیری یکی از رخدادهای طبیعی کامپیوتر این پتانسیل را به وجود میآورد تا اعداد تصادفی واقعی تولید شوند. این راهکار به میزان قابل توجهی کیفیت تولید اعداد تصادفی را بهبود میبخشد. در سازوکار سنتی استخراجگر اعداد تصادفی از دو منبع تصادفی و ضعیف استفاده میکند. دانا مشکویتز دانشمند علوم کامپیوتر در MIT در این ارتباط گفته است: «راهکار جدید گام بزرگی در زمینه غلبه بر مشکل بنیادین اعداد تصادفی به شمار میرود. بهطوری که باعث بهبود فرآیندهایی میشود که پیش از این انجام گرفتهاند.»
اشان چاتوپادهیای، دانشمند علوم کامپیوتر و دیوید زاکرمن، از دانشگاه تگزاس استخراجگر تصادفی جدید خود را در سمپوزیم تئوری محاسبات که در تاریخ 20 ژوئن در کمبریج برگزار شد در معرض دید همگان قرار دادند. برای کامپیوترها اعداد تصادفی یک منبع با ارزش به شمار میروند. به ویژه در ارتباط با رمزنگاری اطلاعات حساس، مدلسازی سیستمهای پیچیده شبیه به آبوهوای زمین و انتخاب نمونههای مستقلی از دادهها، شما نیازمند آن هستید که این اعداد طبیعی را خالصسازی کنید. اما بهطور معمول، همواره با مشکلات مختلفی در ارتباط با تولید درست اعداد تصادفی روبرو هستید. کامپیوترها بهطور معمول در زمینه تولید اعداد واقعا تصادفی موفق نیستند. بسیاری از برنامههای کاربردی دنیای کامپیوتر بر شبه اعداد تصادفی که به نظر میرسد تصادفی هستند اما در عمل اینگونه نیست، تاکید دارند. اما در راهکار جدید اعداد تصادفی کامپیوتر بر مبنای الگوریتیمی که اعداد تصادفی را تولید میکنند تکیه دارند.
کاربرد اعداد تصادفی در کجاست؟
بدون شک کاربرد اصلی اعداد تصادفی در زمینه تولید کلیدهای رمزنگاری که از اطلاعات خصوصی همچون شماره کارتهای اعتباری و جزییات حسابهای بانکی محافظت به عمل میآورند و آنها را از چشمان فرصتطلب دور نگه میدارند، استفاده میکنند. اما اگر اعدادی که برای رمزنگاری مورد استفاده قرار میگیرند، قابل پیشبینی باشند، یک هکر ممکن است توانایی شکستن کدها را داشته باشد. بنابر این هرگونه انحرافی در زمینه تولید اعداد تصادفی باعث ایجاد یک حفره امنیتی میشود. زاکرمن در این ارتباط گفته است: «یک روش شایع که هکرها موفق به شکستن سیستمها میشوند، بهرهبرداری از این حقیقت است که مردم از اعداد تصادفی با کیفیت بالا استفاده نمیکنند.»
یک فناوری جدید در زمینه خلق اعداد تصادفی
در سازو کار جدید این دانشمندان علوم کامپیوتر موفق شدهاند اعداد تصادفی را بر مبنای یک الگوی غیر مترقبه از محیط کامپیوتری تولید کنند. در این راهکار ورودیها از ماوس و صفحهکلید به دست میآیند. در این روش مختصات ماوس بر مبنای چند نقطه در یک زمان نمونهسازی شده و این مقادیر در قالب رشتهای از اعداد تولید و تبدیل میشوند. اما این روش هنوز هم برای تولید اعداد تصادفی ضعیف بوده و شکست خورده به شمار میرود. در شرایطی که ممکن است ماوس برای یک لحظه در سمت چپ صفحهنمایش قرار گیرد، اما احتمال اینکه به همان نسبت در سمت راست صفحهنمایش قرار گیرد کم است. در نتیجه این احتمال وجود دارد که اعداد متوالی با محوریت مقدار خاصی بهطور مرتب تولید شوند. در نتیجه استخراجگر اعداد تصادفی اقدام به تحلیل اعداد غیر مترقبه تولید شده توسط این دو منبع کرده، اعداد قابل پیشبینی و غیر مصرفی را به کناری نهاده تا یک عدد تصادفی واقعا خالص تولید شود. موشکویتز در این ارتباط گفته است: «غیر مترقبه بودن اعداد یک منبع است. منبعی که شبیه به یک معدن طلا در اختیار شما قرار دارد. برای آنکه به این معدن طلا از اعداد تصادفی دست پیدا کنید ابتدا باید آنها را خالصسازی کنید.» استخراجگر اعداد تصادفی جدید دو منبع مستقل از اعداد تصادفی ضعیف را داخل یک مجموعه که تقریبا تصادفی هستند ( همراه با یک انحراف جزیی) با یکدیگر ترکیب میکند. در ادامه محققان از یک تابع انعطافپذیر، متدی که اطلاعات را ترکیب میکند استفاده میکنند. این متد برای وارد کردن رشتهای از اعداد داخل یک بیت کاملا تصادفی مورد استفاده قرار میگیرد. توابع انعطافپذیر اطلاعات را به روشی که میتواند مقدار مشخصی از انحراف به سمت خاصی را تحمل کند ترکیب میکنند. در مجموع استخراجگر جدید بهطرز قابل توجهی باعث بهبود نتایج شده و به لحاظ تولید اعداد تصادفی افقهای روشنی را پیش روی دنیای محاسبات قرار داده است. دانا مشکویتز در این ارتباط گفته است: «همواره در هر مشکل بزرگی، موفقیت بزرگی مستتر شده است. این سرآغازی خواهد بود بر بهبود کارهایی که در گذشته صورت گرفتهاند.»