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

بیایید این موضوع را با یک مثال ساده بیشتر توضیح دهیم:

تصور کنید که شما و دوستتان تصمیم دارید به سینما بروید و فیلمی را تماشا کنید، اما نمی خواهید یک غریبه (مثلاً یک هکر) بداند که در حال تماشای چه فیلمی هستید. زیرا ممکن است به هر حال برنامه دوستی شما را مختل کند.

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

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

فیلم

سکه

پیام

آ

شیر نر

در دشت های اسپانیا باران می بارد

آ

خط

طوفان به ندرت در هرتفورد، هرفورد و همپشایر رخ می دهد

ب

شیر نر

طوفان به ندرت در هرتفورد، هرفورد و همپشایر رخ می دهد

ب

خط

در دشت های اسپانیا باران می بارد

بنابراین، اگر فیلم B را انتخاب کنید و این یک سکه شیر است، به دوستتان پیامک می‌دهید: «طوفان‌ها در هرتفورد، هرفورد و همپشایر نادر است، دوست شما وقتی سکه را پرتاب کردید، همراه شما بود و جواب آن قسمت را می‌داند.» سپس از روی جدول یاد می گیرد که باید برای تماشای یک فیلم B آماده شود.

نکته اینجاست که هکر از نتیجه پرتاب سکه اطلاعی ندارد. فقط می توان گفت که 50٪ احتمال خطوط و 50٪ احتمال دم وجود دارد. بنابراین “در هرتفورد…” به او کمک نمی کند. نتیجه؟ اطلاعات هکر در همان سطح ابتدایی باقی می ماند زیرا 50 درصد شانس انتخاب فیلم A و 50 درصد شانس انتخاب فیلم B وجود دارد.

تمام رمزنگاری ها بر اساس عدم تقارن اطلاعاتی است

بیایید به مفهوم “غیرقابل پیش بینی” برگردیم. اگر نتیجه پرتاب سکه معلوم بود چه؟ فرض کنید اگر هکر یک سکه تقلبی را در جیب شما بگذارد و بداند که نتیجه پرتاب آن سکه برای سه بار اول به ترتیب سر، دم و دم خواهد بود، 100% از نتیجه اولین پرتاب مطمئن بود. سکه و صرف نظر از پیامی که فرستاده اید، او می تواند حدس بزند

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

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

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

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

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

یک کامپیوتر باید به یک منبع داده تصادفی دسترسی داشته باشد تا داده های غیرقابل پیش بینی و نامرتب مورد نیاز برای رمزگذاری قوی تولید کند. جالب اینجاست که به نظر می رسد «دنیای واقعی» منبع بزرگی از تصادفی است، زیرا رویدادهای جهان فیزیکی قابل پیش بینی نیستند.

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

چرا کامپیوترهای معمولی نمی توانند اعداد تصادفی تولید کنند؟

کامپیوترها بر اساس منطق کار می کنند. برنامه‌های رایانه‌ای نیز بر اساس دستورات if-then توسعه می‌یابند: اگر شرط خاصی برآورده شد، آن عمل خاص را انجام دهید. بنابراین همان ورودی برنامه ها معادل همان بار خروجی خواهد بود.

رایانه ها به دلیل قابل پیش بینی بودن مفید هستند

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

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

چگونه یک کامپیوتر ورودی تصادفی دنیای واقعی را به داده های تصادفی تبدیل می کند؟

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

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

  • اگر دو داده یا عبارت یکسان در یک خط ورودی داشته باشیم، الگوریتم دقیقاً خروجی یکسانی را برای هر دو ارائه می دهد.
  • اگر یک PRNG به طور نامحدود اجرا شود، اثبات اینکه نتایجی که تولید می کند همیشه کاملاً تصادفی هستند دشوار است.

به همین دلیل، الگوریتم دائماً به ورودی های تصادفی جدید نیاز دارد. ورودی تصادفی به عنوان “دانه رمزنگاری” شناخته می شود.

مولد اعداد شبه تصادفی رمزنگاری امن

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

  • این برنامه باید تست های آماری تصادفی خاصی را برای اثبات غیرقابل پیش بینی بودن خود بگذراند.
  • یک هکر هنوز نباید بتواند خروجی های CSPRNG را پیش بینی کند، حتی اگر دسترسی جزئی به برنامه داشته باشد.

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