מחשבים מייצרים מספר אקראי לכל דבר, החל מקריפטוגרפיה ועד משחקי וידאו והימורים. ישנן שתי קטגוריות של מספרים אקראיים - מספרים אקראיים "אמיתיים" ומספרי פסבדור - וההבדל חשוב לביטחון מערכות ההצפנה.
מחשבים יכולים ליצור מספרים אקראיים באמת על ידי התבוננות בנתונים חיצוניים, כמו תנועות עכבר או רעש מאוורר, שאינו צפוי, ויצירת נתונים מהם. זה מכונה אנטרופיה. פעמים אחרות, הם מייצרים מספרי "פסאודורנדום" באמצעות אלגוריתם כך שהתוצאות נראות אקראיות, למרות שלא.
נושא זה נעשה שנוי במחלוקת לאחרונה, כאשר אנשים רבים מטילים ספק האם שבב מחולל המספרים האקראיים החומרה המובנה של אינטל אמין. כדי להבין מדוע זה אולי לא אמין, יהיה עליכם להבין כיצד נוצרים מלכתחילה מספרים אקראיים ולמה הם משמשים.
לשם מה משתמשים במספרים אקראיים
נעשה שימוש במספרים אקראיים במשך אלפי שנים רבות. בין אם זה הטלת מטבע או גלגול קוביות, המטרה היא להשאיר את התוצאה הסופית לסיכוי אקראי. מחוללי מספרים אקראיים במחשב דומים - הם ניסיון להשיג תוצאה אקראית בלתי צפויה.
קָשׁוּר: מהי הצפנה, ואיך זה עובד?
מחוללי מספרים אקראיים שימושיים למטרות רבות ושונות. מלבד יישומים ברורים כמו יצירת מספרים אקראיים למטרות הימורים או יצירת תוצאות בלתי צפויות במשחק מחשב, אקראיות חשובה לקריפטוגרפיה.
קריפטוגרפיה דורש מספרים שתוקפים לא יכולים לנחש. אנחנו לא יכולים להשתמש באותם מספרים שוב ושוב. אנחנו רוצים לייצר את המספרים האלה בצורה מאוד לא צפויה, כך שהתוקפים לא יכולים לנחש אותם. המספרים האקראיים הללו חיוניים להצפנה מאובטחת, בין אם אתה מצפין קבצים משלך ובין אם רק באמצעות HTTPS אתר באינטרנט.
מספרים אקראיים אמיתיים
ייתכן שאתה תוהה כיצד מחשב באמת יכול ליצור מספר אקראי. מהיכן ה"אקראיות "הזו. אם זו רק חתיכת קוד מחשב, האם לא ייתכן שהמספרים שהמחשב מייצר יכולים להיות צפויים?
בדרך כלל אנו מקבצים את המספרים האקראיים שמחשבים מייצרים לשני סוגים, תלוי באופן יצירתם: מספרים אקראיים "אמיתיים" ומספרים פסאודו-אקראיים.
כדי ליצור מספר אקראי "אמיתי", המחשב מודד סוג כלשהו של תופעה פיזית המתרחשת מחוץ למחשב. לדוגמה, המחשב יכול למדוד את הריקבון הרדיואקטיבי של אטום. על פי תיאוריית הקוונטים, אין שום דרך לדעת בוודאות מתי תתרחש ריקבון רדיואקטיבי, כך שזו בעצם "אקראיות טהורה" מהיקום. תוקף לא יוכל לחזות מתי תתרחש ריקבון רדיואקטיבי, כך שלא יידעו את הערך האקראי.
לדוגמא יומיומית יותר, המחשב יכול להסתמך על רעש אטמוספרי או פשוט להשתמש בזמן המדויק שלחיצת המקשים במקלדת כמקור לנתונים בלתי צפויים או לאנטרופיה. לדוגמה, המחשב שלך עשוי לשים לב שלחצת על מקש בדיוק ב- 0.23423523 שניות לאחר השעה 14:00. קח מספיק מהזמנים הספציפיים הקשורים ללחיצות מקשים אלה ויהיה לך מקור אנטרופיה שתוכל להשתמש בו כדי ליצור אקראי "נכון" מספר. אתה לא מכונה צפויה, ולכן תוקף לא יכול לנחש את הרגע המדויק שבו אתה לוחץ על המקשים האלה. ה / dev / מכשיר אקראי בלינוקס , שמייצר מספרים אקראיים, "חוסם" ולא מחזיר תוצאה עד שהוא אוסף מספיק אנטרופיה כדי להחזיר מספר אקראי באמת.
מספרים מזויפים
מספרים מזויפים הם אלטרנטיבה למספרים אקראיים "אמיתיים". מחשב יכול להשתמש בערך זרע ובאלגוריתם כדי ליצור מספרים שנראים אקראיים, אך למעשה הם צפויים. המחשב אינו אוסף נתונים אקראיים מהסביבה.
זה לא בהכרח דבר רע בכל סיטואציה. לדוגמא, אם אתה משחק במשחק וידיאו, זה לא ממש משנה אם האירועים המתרחשים באותו משחק נגרמים על ידי מספרים אקראיים "אמיתיים" או ממספרי מזויף. מצד שני, אם אתה משתמש בהצפנה, אתה לא רוצה להשתמש במספרי פסאודור-אקראי שתוקף יכול לנחש.
לדוגמא, נניח שתוקף מכיר את האלגוריתם ואת ערך הזרע בו מחולל מספר פסאודור-אקראי משתמש. ובואו נגיד שאלגוריתם הצפנה מקבל מספר מזויף מהאלגוריתם הזה ומשתמש בו כדי ליצור מפתח הצפנה מבלי להוסיף שום אקראיות נוספת. אם תוקף יודע מספיק, הם יכולים לעבוד לאחור ולקבוע את מספר הפסבדור שאלגוריתם ההצפנה בחר במקרה זה, ולשבור את ההצפנה.
מחולל המספרים האקראיים של החומרה של ה- NSA ושל אינטל
כדי להקל על המפתחים ולעזור ביצירת מספרים אקראיים מאובטחים, שבבי אינטל כוללים מחולל מספרים אקראי מבוסס חומרה המכונה RdRand. שבב זה משתמש במקור אנטרופיה במעבד ומספק מספרים אקראיים לתוכנה כאשר התוכנה מבקשת זאת.
הבעיה כאן היא שמחולל המספרים האקראיים הוא בעצם קופסה שחורה ואנחנו לא יודעים מה קורה בתוכה. אם RdRand מכיל דלת אחורית של NSA, הממשלה תוכל לשבור מפתחות הצפנה שנוצרו עם נתונים בלבד המסופקים על ידי אותו מחולל מספרים אקראי.
זהו דאגה רצינית. בדצמבר 2013, המפתחים של FreeBSD הסירו את התמיכה בשימוש ישירות ב- RdRand כמקור לאקראיות, ואמרו שהם לא יכולים לסמוך על זה. [ מָקוֹר ] הפלט של מכשיר ה- RdRand יועבר לאלגוריתם אחר שמוסיף אנטרופיה נוספת, ומבטיח שדלתות אחוריות במחולל המספרים האקראיים לא יהיו חשובות. לינוקס כבר עבדה בצורה זו, והקצתה אקראית את הנתונים האקראיים המגיעים מ- RdRand כך שלא ניתן יהיה לחזות אותם גם אם היה דלת אחורית. [ מָקוֹר ] ב- AMA ("שאל אותי כל דבר") שנערך לאחרונה על Reddit, מנכ"ל אינטל בריאן קרזניץ 'לא ענה לשאלות בנוגע לחששות אלה. [ מָקוֹר ]
כמובן, ככל הנראה זו לא רק בעיה עם שבבי אינטל. מפתחי FreeBSD קראו גם לשבבים של ויה בשמם. מחלוקת זו מראה מדוע כל כך חשוב ליצור מספרים אקראיים שהם באמת אקראיים ואינם צפויים.
כדי ליצור מספרים אקראיים "אמיתיים", מחוללי מספרים אקראיים אוספים "אנטרופיה", או לכאורה נתונים אקראיים מהעולם הפיזי סביבם. למספרים אקראיים שלא בֶּאֱמֶת צריך להיות אקראי, הם עשויים להשתמש רק באלגוריתם ובערך זרע.
אשראי תמונה: rekre89 ב- Flickr , ליסה ברוסטר בפליקר , ריאן סומה בפליקר , Huangjiahuion Flickr