tomron87/hebrew-wikipedia-sentences-corpus huggingface dataset:
ילדי יישובי צפון בקעת הירדן, הכוללים גם את שדמות מחולה וחמדת, לומדים בבית הספר המשותף "שקד" שבקיבוץ שדה אליהו.
חלק מבני המושב לומדים בתלמוד תורה, ישיבה ואולפנה בבית שאן.
בשנת 2007 הוקם במושב מוסד חינוכי לבנות (מחו"ל) שנפלטו ממסגרות חינוכיות.
בשנת 2024 הוקם שביל טיול בין היישובים מחולה לשדמות מחולה, שהתפלגו לפני שנים עם הקמתם.
הפרויקט לזכר נופלי הבקעה בטבח ה-7 באוקטובר ובמלחמת חרבות ברזל, ולמען אחדות עם ישראל.
הטיילת, באורך של כ-2.5 קילומטרים, כוללת מאות עצי זית ונוי ועוברת במעיין "עין רנה" על שם רנה שנרב, שנרצחה בשנת 2019 על ידי מחבלים.
שמורת נביעות מחולה - הממוקמת כ-2.5 ק"מ מצפון-מערב למושב, הכוללת שטח ביצתי ובו שפע של נביעות שמימיהן זורמים בתעלות לנחל מלחה.
ארץ המעיינות - מקבץ של 9 מעיינות כ-2 ק"מ מצפון למחולה, שעברו שיפוץ והנגשה ב-2023.
עין סוכות - מעיין הנובע מזרחית לכביש 90, באזור שבין מחולה לשדמות מחולה, שמימיו מתנקזים לתוך בריכה טבעית בקוטר של כ-20 מטר ומוקפת קנה מצוי.
עין בליבל - מעיין בקרבת היישוב.
מחול החרבות הוא פרק במערכה האחרונה של הבלט גאינה, אחת מיצירותיו הידועות של אראם חאצ'טוריאן, שהושלמה בשנת 1942. הפרק מחול החרבות כולל ריקוד מלחמה מסחרר בקצב המזורקה, כשהרקדנים מציגים את
עקב הקצב שלו, המסעיר באופן בלתי רגיל, קיבל מחול החרבות מקום מיוחד בביצוע קונצרטים.
מה שהוביל למגוון עיבודים במוזיקה הפופולרית.
סחרור צלחות בקרקס ותעלולים דומים שבוצעו לצלילי הפרק המוזיקלי תרמו לפרסומו.
במהלך השנים גם בוצע הפרק על ידי מבצעים רבים דוגמת יאשה חפץ, נגן הג'אז וודי הרמן ומוזיקאי הרוק אנד רול דייב אדמונדס.
מחול מזרחי , או בשמו העממי "ריקוד בטן", הוא סגנון מחול שמקורו במזרח התיכון ובצפון אפריקה.
למרות שמו המקובל, המחול המזרחי משתמש בתנועה של כל שריר בגוף.
הוא מאופיין כריקוד של רקדנית בודדת, ויש בו אלמנטים של אלתור.
רוב הצעדים והטכניקות הבסיסיים כוללים תנועות מעגליות של חלקי גוף בודדים, כמו הכתפיים, החזה, הבטן, המותניים או האגן.
התנועות מודגשות על ידי ניעור או תנועה בולטת של חלקי גוף אחרים.
שימוש באביזרים, כמו סלים, חרבות ומקלות, או בצעיפי משי ובד שיפון, מציג לראווה את יכולותיה של הרקדנית.
המחול המזרחי הוא בעל שורשים היסטוריים עתיקים במזרח התיכון, ואין ודאות לגבי מקורותיו המדויקים.
מקובל לחשוב שהוא קשור לריקודים הפולחניים העתיקים.
תחריטים המתארים רקדניות, המתוארכים לתחילת האלף הראשון לפני הספירה, נמצאו במסופוטמיה.
נראה שרקדניות אלה היו קדשות, כלומר כוהנות דת שהופיעו בפולחנים נושאי אופי מיני לאלות ולאלים.
לצד מקורות פולחניים אלה, ייתכן שיש לו גם מקורות בריקוד העממי.
יש הקושרים אותו, לדוגמה, לריקודים שנועדו במקורם להדגים ליולדת את מהלך הלידה.
לצד המקורות המזרח-תיכוניים, הושפע המחול המזרחי ממקורות שונים, והשפיע עליהם.
ישנן השפעות הדדיות בין הריקוד המזרחי לסגנונות ריקוד הודיים, הצוענים וכן לסגנונות ספרדיים כמו הפלמנקו.
במרבית המקרים, הריקוד היה מבוצע על ידי נשים למול קהל נשים.
נשים הופיעו זו מול זו, ובאירועים מיוחדים הוזמנו רקדניות מקצועיות להופיע בפניהן.
שורשיה של ההפרדה עוד בתקופה הביזנטית, לפני האסלאם.
במקביל, גברים רקדו ריקודי גברים והופיעו בהם בפני בני מינם.
המפגש עם המערב גרם לסדרה של הפתחויות ששינו את פניו של הריקוד המזרחי.
הגעתם של אירופאים ואמריקאים ככובשים וכתיירים למזרח התיכון, במאות ה-18 וה-19, היא שהפכה את המחול המזרחי מריקוד עממי בעיקרו לאומנות בימתית, בעיקר במצרים, טורקיה ולבנון.
כיבושי נפולאון בצפון אפריקה והגעת התיירים האירופאים לאימפריה העות'מאנית הם גם שהביאו את המחול המזרחי למערב.
ציירים אוריינטליסטיים רשמו (מדמיונם, כמובן) את חיי ההרמון ולציוריהם הייתה הצלחה כבירה באירופה.
לקראת סוף המאה ה-19 החלו נשים מערביות להופיע בגרסאות משלהן למחול המזרחי.
המוכרת ביניהן הייתה מאטה הארי.
בשל חושניותו המובהקת נתפס המחול המזרחי במערב כנחות, והרקדניות נתפסו לרוב כנשים מפוקפקות.
מקור השם המערבי ריקוד בטן הוא בתקופה זו: מונח זה רמז על טבעו של הריקוד באופן מושך, אבל בלי להזכיר חלקי גוף באופן בוטה מדי.
החל משנות ה-20, עם תחילתה של תעשיית הקולנוע במצרים, עבר המחול המזרחי שינויים דרמטיים.
לצרכים קולנועיים, התחילה עבודה עם כוראוגרפיים, שהחליפה את האלתור שאפיין את הריקוד קודם לכן.
בשנות ה-30, הזמרת, הרקדנית והשחקנית באדיה מסבני, ממוצא לבנוני, פתחה בקהיר את ה"קזינו אופרה", מועדון לילה בסגנון אירופאי שהפך לבמה המרכזית למחול המזרחי.
המערב השפיע גם בתלבושות, כשחליפת שני החלקים המעוטרת בחרוזים החליפה את השמלות הארוכות שבהן נעשה שימוש קודם לכן.
לאחר מהפכת הקצינים החופשיים ב-1952 ניסו השלטונות במצרים לאסור את הופעות המחול המזרחי על רקע דתי.
תחת לחץ עממי, האיסור בוטל ב-1954, אבל נקבעו הגבלות רבות בחוק.
הזירה המצרית פרחה עוד עשרות שנים, אבל החל משנות ה-90 של המאה ה-20 יש נסיגה בהצלחה של מופעים אלה, בשל התחזקות האסלאם, ירידה בפופולריות של המחול המזרחי בקרב צעירים מקומיים, וירידה בתיירות העשירה מהמפרץ הפרסי.
עם זאת, המחול המזרחי מצליח בזירות אחרות.
במזרח התיכון, בלבנון ובטורקיה יש פעילות רבה בתחום.
באירופה ובארצות הברית, וגם בישראל, המחול המזרחי זוכה בשנים האחרונות לפריחה, הן כסוגה אומנותית והן כפעילות עממית.
קיימים מספר סגנונות עיקריים במחול המזרחי כיום:
זהו המחול הקלאסי בו נהוג להשתמש באביזרים - כמו צעיף, צלצלים ומניפות.
באלדי – המחול העממי (ידוע גם בכינוי ריקוד פולקלור).
התפתח בכפרים במצרים ומבטא את חיי היום יום של הכפריים.
סגנון סעידי – מקורו באזור הסעיד במצרים.
בריקוד זה משתמשות הרקדניות במקל.
הריקוד התפתח כפרודיה על הגברים שהיו נלחמים במקלות.
סגנון טורקי – סגנון תוסס המבוצע בדרך כלל עם מוזיקה עם מקצבים מהירים וסולו תופים.
פיוז'ן אמריקאי – הנקרא גם טרייבל בלי דאנס.
סגנון שהתפתח בארצות הברית תוך כדי הוספת תנועות שבטיות, אפריקאיות וצועניות לבסיס ריקודי הבטן.
מחולית (וגם פרכסת, מיוונית: כוריאה - Chorea) היא תסמין של פגיעה בעצבים שבאה לידי ביטוי בעוויתות ובתנועות בלתי-רצוניות המזכירות ריקוד, שמציגים חולים במחלות שונות.
המחולית היא תסמין בכמה מחלות:
"מחולית סיינדהם" - עשויה להיות חלק מההסתמנות של קדחת השיגרון, מחלה שלוקים בה בעיקר ילדים.
חלק מהתסמינים שמציגים חולים במחלה תורשתית חשוכת-מרפא בשם מחלת הנטינגטון (ואז תיקרא גם "פרכסת על-שם הנטינגטון"/"מחולית על-שם הנטינגטון").
מקור המילה בשפה היוונית, ופירושה ריקוד.
על אף השם היווני "ריקוד" שבו מכונה התופעה, אין קשר לריקודים ובוודאי שלא לריקודי טירוף כפי שנכתב במקומות שונים.
לפי אמונה שגויה מימי הביניים, המחולית נגרמה מעקיצתו של עכביש הטרנטולה (מכאן שם הריקוד טרנטלה).
לעיתים מכונה התופעה בשם מחול ויטוס הקדוש, עקב הריפוי לכאורה שהשיג את הילדים החולים לאחר שביקרו בבית התפילה על שם ויטוס הקדוש.
מחולל ואן-דה-גראף (Van de Graaff generator) הוא מחולל חשמל, כלומר מכשיר המייצר מתח חשמלי באמצעים מכניים.
המחולל קרוי על שם הפיזיקאי האמריקאי רוברט ואן-דה-גראף שפיתח אותו בשנת 1929. במקור, יועד המכשיר לשמש מקור מתח רב עוצמה (עד לעשרות מיליוני וולט) לשפופרות רנטגן ומאיצי חלקיקים קווים.
עם התפתחות טכנולוגיות אלטרנטיביות להאצת חלקיקים, פחת השימוש במחולל ואן-דה-גראף לצרכים אלו.
כיום עיקר השימוש במחולל ואן-דה-גראף הוא להדגמת תופעות חשמליות שונות.
מבנה סכמטי של מחולל ואן-דה-גראף מתואר בציור.
המחולל מורכב משני כדורי מתכת [(1) ו-(8) בציור].
החגורה [(5),(4)] מסתובבת ועקב כך מתחככת במברשת סיבי המתכת העליונה (2) והתחתונה (7).
כתוצאה מהחיכוך נטענת המברשת העליונה במטען חיובי והתחתונה במטען שלילי.
המברשת העליונה מעבירה את המטען לכדור הגדול (1) והמברשת התחתונה מעבירה את המטען למוט הפריקה (8), כך שבסופו של דבר נוצר הפרש פוטנציאלים בין הכדור הגדול לסביבתו.
ניתן גם לחבר את המברשת התחתונה ישירות להארקה וכך הפרש הפוטנציאלים נוצר בין הכדור הגדול לאדמה.
מחול השעות הוא בלט מתוך האופרה לה ג'וקונדה (1876) שנכתבה על ידי המלחין האיטלקי אמילקארה פונקיילי (1834-1886).
הבלט, מלווה בקטע תזמורתי, מופיע בסוף המערכה השלישית, ובו אלוויזה - מראשי האינקוויזיציה - מקבל את אורחיו באולם הנשפים הגדול והמפואר.
שינויי התלבושות, האפקטים בתאורה, וכמובן התוכניתיות במוזיקה ובכוריאוגרפיה מייצגים את שעות השחר, היום, הדמדומים, והלילה.
כוונתו של המחול היא לסמל את המאבק הנצחי בין כוחות האור לכוחות החושך.
בניגוד לסימבוליזם העמוק שבכוונת הכותב, מחול השעות התפרסם כקטע מוזיקלי חביב וקליל בשלל עיבודים ואזכורים.
המחול הופיע במלואו (בגרסה קצת מורחבת למעשה) בסרט "פנטזיה" של וולט דיסני משנת 1940. רקדני השחר הם יענים, רקדני היום - היפופוטמים, רקדני הערב - פילים, ורקדני הלילה - תנינים.
הם כולם נפגשים בסוף לגראנד פינאלה משעשע.
מוזיקת הנושא של פונקיילי שימשה את אלן שרמן בשירו הלו מדה הלו פדה משנת 1964, שמתאר את חוויותיו של ילד אומלל בקייטנת קיץ.
גרסה עברית לשירו של שרמן, בשם "מכתב מן הקייטנה", נכתבה על ידי חנוך לוין ובוצעה על ידי להקת גייסות השריון עם הסולנית תיקי דיין ב-1966. מחול השעות מצוטט בעוד מקומות רבים נוספים מגארפילד ועד למשפחת סימפסון.
מחולל מספרים פְּסֵאוֹדוֹ־אקראיים הוא אלגוריתם במחשב המייצר סדרת מספרים או אלמנטים המדמים בקירוב תכונות של רצף אקראי שנוצר באמצעות מחולל מספרים אקראיים אמיתי.
לאמיתו של דבר, רצף פסאודו־אקראי אינו אקראי היות שהוא נוצר בשיטה דטרמיניסטית מתוך קבוצה קטנה יחסית של אלמנטים הנקראת גרעין (seed) או מצב התחלתי (initial state) ובהינתן מידע זה ניתן לשחזור מדויק, מסיבה זו מכונה "פסאודו" דהיינו "מדומה".
באמצעות אלגוריתמים המיועדים לכך, ניתן לייצר רצפים פסאודו אקראיים, הקרובים מאוד באיכותם לרצפים שנוצרו באמצעות מחולל אמיתי, באופן שקשה מאוד מבחינה סטטיסטית חישובית להבדיל ביניהם.
מחוללים פסאודו אקראיים משחקים תפקיד חשוב בסימולציה לצורך מדעי, הימורים, משחקי מחשב וקריפטוגרפיה.
בין משפחות האלגוריתמים הנפוצים כיום נמנים גרסאות של Linear Congruential Generators בקיצור LCG המחולל הנפוץ ביותר המבוסס על אריתמטיקה מודולרית.
משפחת מחוללי Lagged Fibonacci generator בקיצור LFG המבוסס על סדרת פיבונאצ'י וכן Linear Feedback Shift Generator בקיצור LFS שהוא אוגר הזזה–החזרה המיושם בחומרה בדרך כלל ונפוץ בגרסאות מסוימות של צופני זרם.
כמו כן קיימים מחוללים אקראיים חדשים כמו Blum Blum Shub (בקיצור BBS) המבוסס על אריתמטיקה מודולרית וכן Fortuna, Mersene Twister ו־Multiply-with-carry של ג'ורג' מרסגליה הידוע גם בשל פיתוח סוללת Diehard (שמרן) – אוסף של מבחנים סטטיסטיים שונים לבדיקת אקראיות.
אלגוריתם פסאודו אקראי מקבל כקלט קבוצה קטנה של מספרים אקראיים הנקראת גרעין התחלתי ומפיק פלט של סדרת מספרים פסאודו אקראיים בהתפלגות אחידה באורך הרצוי.
תפקיד המחולל הוא למעשה "למתוח" את הקלט לאורך הרצוי תוך שמירה על רמת אקראיותו במידת האפשר.
הגרעין ההתחלתי צריך להיות ממקור אקראי ולא ערך קבוע, שאם לא כן תוצאת המחולל תחזור על עצמה בדיוק.
לחיזוק האקראיות לעיתים מעבירים את הפלט של הפונקציה בפונקציית גיבוב או פונקציות הצפנה.
את הפלט האקראי יש לבדוק בזהירות באמצעות מבחנים סטטיסטיים ידועים, בהתאם לרמת האקראיות הנדרשת.
רוברט קוביו פרסם פעם מאמר שכותרתו "יצירת מספרים אקראיים חשובה מדי מכדי להותירה בידי הגורל".
וכמו שהתבדח פעם ג'ון פון נוימן: "עצם המחשבה להשתמש בשיטות אריתמטיות ליצירת מספרים אקראיים היא בגדר חטא".
דונלד קנות' כתב בספרו (The Art of Computer Programming) "אין לייצר מספרים אקראיים באמצעות אלגוריתם שנבחר באקראי".
אם הגרעין התחלתי קבוע, המחולל ייצר רצף זהה שוב ושוב.
היות שהרצף מיוצר מתוך קבוצה מוגבלת של מספרים, בסופו של דבר יחזור על עצמו, דהיינו בשלב כלשהו סדרת המספרים שהמחולל מייצר תחזור שוב לנקודת ההתחלה.
תופעה זו תתרחש במעגל אין סופי.
האורך המקסימלי של הרצף לפני שהוא מתחיל לחזור על עצמו נקרא "מחזור" (period).
אורך המחזור אותו מודדים בסיביות, נקבע על ידי מספר פרמטרים, בראשם המצב התחלתי.
בבחירה מושכלת של פרמטרים, אפשר לייצר רצף אקראי סביר לכל צורך מעשי ובכל אורך רצוי.
הוכח כי אם המצב ההתחלתי של המחולל מכיל סיביות אזי המחזור המרבי לא יעלה על סיביות.
באמצעות אלגוריתמים מסוימים אפשר לחשב מחזוריות מחולל אקראי מבלי לעבור על פני כל המספרים במחזור.
LFSR בדרך כלל מתוכנן לייצר רצף אקראי מקסימלי, באורך של סיביות בדיוק.
שילוב של שיטות שונות מניב בדרך כלל מחזוריות מסדר הגודל של .
מהיבט של תורת האינפורמציה קיימת שאלה פתוחה מבחינה תאורטית ומעשית, האם ניתן לייצר רצף פסאודו אקראי מתוך גרעין התחלתי אקראי אמיתי, באיכות כזו שלא ניתן להבחין בינו ובין רצף אקראי שנוצר על ידי מחולל אמיתי תוך שימוש בעצמת חישוב מוגבלת, אם לא ידוע הגרעין ההתחלתי והאלגוריתם ששימש ליצירת המספרים.
כמעט כל מערכת קריפטוגרפית כוללת שימוש בדרך זו או אחרת במחולל פסאודו אקראי.
בטיחות מרבית האלגוריתמים והפרוטוקולים הקריפטוגרפיים נשענת על ההנחה שלא ניתן מעשית להבחין בין תוצאה של מחולל פסאודו אקראי ומחולל אקראי אמיתי.
הדוגמה המתבקשת היא צופן זרם, צופן זרם ביסודו כולל מחולל פסאודו אקראי מובנה המייצר סדרת מספרים אקראיים המהווים מפתח הצפנה אותו מחברים ב־XOR עם המסר הקריא ליצירת טקסט מוצפן.
פיתוח מחולל פסאודו אקראי המתאים ליישום קריפטוגרפי הוא משימה קשה.
מבחינה מעשית, פלט מחוללים פסאודו אקראיים נפוצים סובל מפגמים רבים שמתגלים במבחנים סטטיסטיים.
ביניהם מחזוריות קצרה מן הצפוי של מצב התחלתי מסוים או קורלציה.
מצב התחלתי הגורם למחזוריות הרצף להיות קצרה מהצפוי נקרא "חלש" במובן שבהינתן מצב התחלתי הזה פלט המחולל אינו בעל התפלגות אחידה ועל כן אקראיותו לקויה.
לעיתים עולה במבחנים סטטיסטיים שהמחולל אינו מפיק פלט הדומה בתכונותיו לפלט אקראי אמיתי.
לדוגמה אלגוריתם RANDU, שזכה לתפוצה רחבה בעיקר בשנות השישים של המאה ה־20, במערכות הפעלה של מחשבים מרכזיים.
האלגוריתם יישם את רעיון מחולל LCG עם פרמטרים שנבחרו באופן לקוי, עקב כך מעריכים שנגרם לא אחת נזק למחקרים שהסתמכו על המחולל.
אחת השיטות המוקדמות ליצירת מספרים פסאודו אקראיים באמצעות מחשב, הייתה של ג'ון פון נוימן ב־1946. השיטה הייתה מאוד פשוטה והיא נקראה "אמצע הריבוע", כדלהלן; מעלים מספר כלשהו בריבוע ונוטלים חלק מספרותיו האמצעיות כחלק מרצף אקראי, איתו משתמשים לאחר מכן כגרעין לחישוב הבא וחוזר חלילה.
לדוגמה אם מעלים בריבוע את המספר 1111 מתקבל 1234321 אם מוסיפים אפס בהתחלה אפשר לשלוף את ארבע הספרות האמצעיות "2343" כמספר אקראי.
אם מעלים את 2343 בריבוע, מוסיפים אפס מתקבל מספר שארבע ספרותיו האמצעיות הם 4896 וכן הלאה.
פון נוימן השתמש במספר בן 10 ספרות.
הבעיה עם שיטה זו היא שמספרים התחלתיים מסוימים נוטים להפיק מחזוריות קצרה מדי.
פון נוימן היה מודע לכך אולם הסתפק בשיטה זו לצרכיו.
הוא היה מודאג יותר בשל החשש שתיקונים מתמטיים כלשהם עלולים יותר להסתיר את הבעיה מאשר לתקנה.
פון נוימן נמנע משימוש במחולל מבוסס חומרה בשל העובדה שכדי לבדוק אקראיות היה צורך באחסון מספרים רבים בזיכרון והמחשבים שהוא השתמש בהם אז כמו ENIVAC היו מוגבלים מאוד בזיכרון מה שהיה עלול לגרום להאטה חמורה בביצועים.
השיטה שאימץ למרות היותה לקויה היוותה מעין פשרה סבירה.
כמובן שכיום השיטות הידועות ליצירת מספרים אקראיים מהירות ויעילות מהשיטה של פון נוימן.
שיטת Linear congruential היא השיטה הוותיקה והפופולרית ביותר כיום.
היא הוצעה לראשונה על ידי דריק הנרי להמר ב־1949. הרעיון מאחורי משפחה זו של אלגוריתמים (הנקראת בקיצור LCG) פשוט בתכלית ובדרך כלל קל ליישום.
המחולל מוגדר על ידי נוסחת הנסיגה: כאשר הוא האיבר ה־ בסדרת המספרים הפסאודו־אקראית המופקת.
הפרמטר מכונה מודולוס, נקרא "כופל" ו־ נקרא "מקדם" (במקרה של מתקבל אלגוריתם פארק–מילר שנמצא בשימוש נרחב, בין היתר, במערכות ההפעלה של מקינטוש).
נקרא "מצב התחלתי" או גרעין התחלתי ובדרך כלל צריך להיות ממקור אקראי כלשהו.
השפעת הפרמטרים על פלט המחולל מכרעת.
LCG אינו מתאים לצורך קריפטוגרפי,מחקרים מראים שניתן לנחש את המשך הרצף מתוך קטע קצר יחסית גם ללא ידיעת הפרמטרים.
הסוגים השונים של משפחה זו נבדלים בעיקר בערכי הפרמטרים.
מחזוריות המחולל תלויה בראש ובראשונה בפרמטר .
למשל גרסת המחולל של פארק–מילר עם המודולוס (שהוא מספר מרסן ראשוני) והפרמטרים , מגיעה למחזוריות בסדר גודל של .
להלן קוד C++ של המחולל הפסאודו אקראי המובנה בסביבת הפיתוח של מיקרוסופט ויז'ואל סטודיו, המבוסס על LCG עם הפרמטרים :
הערך 0x7FFF משמש לצמצום מודולרי.
המחולל מפיק מספר פסאודו אקראי בגודל 15 סיביות.
מחולל מסוג זה מבוסס על הכללה של סדרת פיבונאצ'י.
האלמנט הבא ברצף הפסאודו אקראי הוא תוצאה של פעולה בינארית כלשהי (כמו חיבור או כפל) על שני אלמנטים קודמים לא בהכרח עוקבים (מודולו מספר מסוים).
התאוריה מאחורי מחולל זה די מורכבת וגם הוא רגיש מאוד לשינויים במצב ההתחלתי.
בחירה לא מושכלת של פרמטרים עלולה להוביל לתוצאות גרועות.
מחולל זה יכול להגיע למחזוריות בסדר גודל של כאשר מציין את אינדקס ההפרש המקסימלי במחולל ו־ המודולוס.
אלגוריתם Mersenne twister הומצא ב־1997 על ידי מקוטו מטסומוטו וטאקוג'י נישימורה.
הרעיון של האלגוריתם מבוסס על גרסה מפותלת של אוגר הזזה (בדומה ל־LFSR) מעל השדה הבינארי .
האלגוריתם מייצר רצף פסאודו אקראי באיכות גבוהה והוא בעל מחזוריות גבוהה ביותר, בסדר גודל של (שהוא מספר צירופים עצום, הרבה מעבר למספר החישובים שניתן לעשות בכל שנות קיומו של היקום).
האלגוריתם מהיר ויעיל מכל מחולל אקראי אחר והפך לאחד האלגוריתמים המועדפים כיום לצורכי סימולציה סטטיסטית מדעית.
חסרונו הוא מורכבותו ליישום והעובדה שאינו מתאים בגרסתו הבסיסית לקריפטוגרפיה.
Multiply-with-Carry הוא אלגוריתם ליצירת מספרים פסאודו אקראיים עם מחזוריות משתנה, שהומצא על ידי ג'ורג' מרסגליה.
האלגוריתם מכונה גם "Mother of all pseudorandom generators" והוא מבוסס אריתמטיקה מודולרית בדומה ל־LCG.
בגרסה הבסיסית האלגוריתם כולל "בסיס" (בדרך כלל או ), פרמטר שנקרא "כופל", "גרעין" התחלתי אקראי הכולל קבוצה של ערכים הנקראים "שאריות" ופרמטר הנמוך מ־ הנקרא "נשא".
פלט האלגוריתם בכל שלב הוא הזוגות המחושבים על ידי הנוסחה:
מחזוריות המחולל היא בעצם הסדר של בחבורה הכפלית מודולו (נהוג לבחור כך שהוא יהיה ראשוני).
המחזוריות יכולה להגיע לסדר גודל עצום של .
קיימת בעיה אחת עם הגרסה הבסיסית של המחולל, שהסיבית הגבוהה ביותר שלו סובלת מהטיה קלה.
מחולל אקראי שמוגדר בטוח לצורך קריפטוגרפיה (בקיצור CSPRNG) שונה בכמה היבטים.
ההבדל העיקרי הוא שהאלגוריתם צריך להיות מתוכנן כך שיעמוד בפני התקפות המנצלות חולשות באלגוריתם על מנת לנחש את המשך הרצף האקראי.
דבר שצריך להיבחן היטב במשך זמן רב על ידי קריפטוגרפים מומחים.
אפילו בדיקות מדוקדקות במשך שנים אינן מבטיחות כי האלגוריתם בטוח לחלוטין מבחינה קריפטוגרפית, התקפות חדשות שיתגלו בעתיד עלולות למצוא את האלגוריתם לא מוכן ולא בטוח לשימוש.
באלגוריתם MD4 שנחשב במשך שנים לאלגוריתם בטוח, התגלו לא מזמן ליקויים ועקב כך אינו מומלץ כיום לשימוש למטרות קריפטוגרפיות.
בדרך כלל אלגוריתמים לייצור מספרים פסאודו אקראיים לצורך קריפטוגרפי מיושמים באמצעות פרימיטיבים קריפטוגרפיים ידועים בבטיחותם כמו צופן זרם או צופן סימטרי אחר כמו AES.
מאחר שצופן סימטרי מטבעו מכיל את התכונה שהוא קשה לניחוש, כמעט כל צופן בטוח מתאים להכנת מחולל קריפטוגרפי.
אחת השיטות היא להצפין ערך קבוע (בדרך כלל מחרוזת אפסים) באמצעות מפתח הצפנה הנגזר מגרעין התחלתי אקראי ולהשתמש בפלט הצופן או בחלקו כרצף אקראי.
מחוללים פסאודו אקראיים קריפטוגרפיים בדרך כלל נבנים מ:
דוגמה למחולל פסאודו אקראי קריפטוגרפי המבוסס על הצפנה אסימטרית הוא Blum Blum Shub (בקיצור BBS) שבטיחותו מוכחת, למרות שהיא מותנית בכך שהפרמטרים הפנימיים ישמרו בסוד.
נוסחת האלגוריתם היא מהצורה: כאשר הוא מכפלה של שני מספרים ראשוניים גדולים.
המחולל BBS נחשב לאיטי יחסית ואינו מתאים בכל המקרים, אך הוכח שבטיחותו שקולה לבעיית פירוק לגורמים.
דהיינו ניחוש הסיבית הבאה שהאלגוריתם ייצר שקולה לפירוק לגורמים.
בין האלגוריתמים הייעודיים שעוצבו במיוחד לצורך קריפטוגרפי נמנה CryptoGenRandom של מיקרוסופט כחלק מתשתית API, המפיק גרעין התחלתי מתוך מספר נתוני מערכת ולאחר מכן מעביר את הפלט בפונקציית גיבוב MD4 וצופן RC4. וכן אלגוריתם Yarrow המובנה במערכת ההפעלה Mac OS X ו־Free BSD ואלגוריתם Fortuna.
המשרד הפדרלי הגרמני לאבטחת מידע (BSI) קבע קריטריון המחולק לארבעה מרכיבים לבחינת איכות מחוללי מספרים אקראיים דטרמיניסטיים המבוסס על מחקרים שנעשו עד כה בתחום:
רצף יהיה אקראי אם אינו מכיל בהסתברות גבוהה אלמנטים החוזרים על עצמם ברציפות.
רצף יהיה אקראי אם אינו שונה מרצף אקראי אמיתי על פי המבחנים הסטטיסטיים הבאים: מבחן monobit הבודק האם מספר האחדים והאפסים שווה פחות או יותר ברצף.
מבחן פוקר שהוא בדיקת התפלגות כי בריבוע של הרצף.
מבחן ריצה הסופר את תדירות המופעים של רצפים זהים.
מבחן ריצה ארוך, הבודק אם מופיעים רצפים זהים באורך 34 או יותר סיביות מתוך קטעים של 20,000 סיביות ומבחן אוטו־קורלציה (מתאם עצמי) הבודק את מידת ההתאמה של קטעים חופפים ברצף.
יהיה בלתי אפשרי לכל צורך מעשי, לחשב או לנחש מתוך כל קטע נתון כל ערך שהופיע או יופיע ברצף או לנחש את מצבו הפנימי של המחולל בכל שלב כלשהו.
יהיה בלתי אפשרי לכל צורך מעשי, לחשב או לנחש כל אלמנט שהופיע או יופיע ברצף או מצב קודם או עתידי של המחולל, בהינתן מצבו הפנימי של המחולל בשלב נתון כלשהו.
החלק האחרון חשוב בעיקר לצורך קריפטוגרפיה.
רק אם המחולל עמיד להתקפה מסוג כזה, שבה התוקף מסוגל לנחש או לחשב אלמנטים שיופיעו ברצף או הופיעו בעבר מתוך מצב פנימי בשלב נתון כלשהו של הרצף, ייקרא בטוח מבחינה קריפטוגרפית.
מחולל אקראי בעל התפלגות נורמלית
התפלגות סטטיסטית לא אחידה (כמו התפלגות ריילי או התפלגות פואסון) אפשר לייצר באמצעות שילוב של מחולל PRNG בעל התפלגות סטטיסטית אחידה ופונקציה אי־ליניארית כלשהי.
למשל ההיפוך של פונקציית התפלגות מצטברת עם מחולל PRNG אידיאלי וטווח קלט (0,1), יפיק רצף ערכים בהתפלגות נורמלית.
אולם יש צורך לחתוך את הזנב האינסופי של ההתפלגות לערך סופי.
אפשר לצמצם את ההתפלגות הנורמלית המצטברת באמצעות אלגוריתם כמו זיגורט (Ziggurat).
מחולל מספרים פְּסֵאוֹדוֹ-אקראיים קריפטוגרפי או מחולל פסאודו-אקראי קריפטוגרפי (Cryptographically secure pseudorandom number generator) או בקיצור CSPRNG הוא מחולל פסאודו אקראי עם תכונות המתאימות במיוחד לשימוש בקריפטוגרפיה.
מחולל פסאודו אקראי מהווה מרכיב חיוני ובלתי נפרד במערכות אבטחת מידע.
פרימיטיבים קריפטוגרפיים רבים זקוקים לרצף מספרים אקראיים (או סיביות) כחלק מפעולתם, ביניהם:
אתגר אקראי של פרוטוקול אתגר מענה.
בחירת מספרים ראשוניים אקראיים לצורך הצפנת מפתח ציבורי.
ערך ייחודי חד פעמי, כמו וקטור אתחול.
קיימים מספר דרכים ליצירת מספרים אקראיים אמיתיים באמצעות מכשירים מיוחדים המבוססים על מכניקת הקוונטים, לדוגמה התקן שממיר רעש תרמי או דעיכה רדיואקטיבית לרצף מספרים.
אך לרוב הם יקרים ולעיתים הפלט שלהם סובל מהטיות סטטיסטיות (התפלגותו אינה אחידה).
מלבד זאת לפעמים תנאי הכרחי הוא שיהיה ניתן לשחזר את הרצף בדיוק, תכונה שאינה אפשרית במחולל אמיתי.
דרך אחרת היא להשתמש במחולל פסאודו אקראי בקיצור PRNG.
זוהי פונקציה דטרמיניסטית כלשהי במחשב, שלאחר אתחול באמצעות ערך אקראי ראשוני שנקרא "גרעין", מפיקה רצף מספרים שנראה על פניו כאקראי במובן שהצופה מן הצד שאינו יודע מהו הגרעין ההתחלתי, לא יוכל להבחין בין הפלט שלה לבין פלט מחולל אקראי אמיתי.
חשוב לשים לב שבהינתן אותו מצב התחלתי, הפונקציה לעולם תייצר את אותו הרצף בדיוק.
זוהי תכונה רצויה ואפילו הכרחית.
בצופן זרם המקבל חייב לשחזר את הרצף הפסאודו-אקראי שנוצר בזמן ההצפנה אחרת לא יוכל לפענח.
מחוללים פסאודו-אקראיים שימושיים במספר רחב של תחומים ביניהם; סימולציה, סטטיסטיקה, אלגוריתמים הסתברותיים, משחקי מחשב, משחקי הימורים ועוד.
ממחולל כזה מצפים שיהיה בעל התפלגות סטטיסטית קרובה לרצף אקראי אמיתי.
אך כדי שיתאים לקריפטוגרפיה אין די בתכונות אקראיות טובות, עליו לעמוד בקריפטואנליזה שבה המנתח או המתקיף מנסה לנחש רצף עתידי בהינתן הרצף שהתקבל עד כה או להפך, לנחש מתוך הרצף הנוכחי רצף קודם שהופק מהמחולל.
המחוללים הקלאסיים אינם בנויים לסוג כזה של איום.
איכות האקראיות הדרושה משתנה בהתאם לייעוד.
לצורך ערך ייחודי וחד פעמי איכות נמוכה מספקת ואילו ליצירת מפתח הצפנה יש צורך באיכות הגבוהה ביותר האפשרית.
הוכחת הבטיחות של צופן פנקס חד-פעמי מהיבט תאורטי נכונה רק תחת ההנחה שמפתח ההצפנה הוא מספר אקראי "אמיתי", מספרים אקראיים שנוצרו על ידי תוכנת מחשב אינם אקראיים אמיתיים.
גם מחולל אמיתי צריך להיות מוכח מעל לכל ספק שאינו סובל מהטיות סטטיסטיות או סטיות כלשהן.
מעשית כמעט לא ניתן לקיים דרישה כזו.
למעשה PRNG הוא מעין פשרה, המחולל אמור לקבל רצף אקראי אמיתי קצר וממנו לייצר מחרוזת פסאודו אקראית באורך הרצוי, כך שבהינתן קטע מהמחרוזת לא יצליח יריב בעל עצמת חישוב פולינומית לנחש סיביות עתידיות או סיביות שהופקו קודם, ללא ידיעת הגרעין ההתחלתי.
כלומר שלא יצליח להבחין בזמן פולינומי בין תוצאת המחולל לבין מחרוזת אקראית אמיתית.
PRNG בנוי באופן כללי משלושה רכיבים עיקריים:
המאגר מאותחל בגרעין אקראי אמיתי שנאסף ממקור חיצוני אחד או יותר.
מקורות אפשריים יכולים להיות; מחולל אקראי אמיתי או מפתח סודי.
הדרך הזולה והזמינה ביותר והיא המקובלת כיום, היא לנצל תהליכים בלתי צפויים בתוך המחשב.
כמו תכולת זיכרון, חוצץ המקלדת, קואורדינטות העכבר, פסיקות ונתוני מערכת הנשמרים בכונן הקשיח, אפיקי קלט/פלט, יומני תיעוד של המערכת ועוד.
הגרעין הוא בעל אנטרופיה גבוהה בדרך כלל (דהיינו קשה לניחוש) אך מאידך עלול להיות בעל התפלגות סטטיסטית ירודה.
פונקציית העדכון אחראית לספק התפלגות סטטיסטית אחידה ככל האפשר ולשמר אנטרופיה גבוהה.
דוגמה למחולל פסאודו-אקראי שאינו מתאים לקריפטוגרפיה כלל, הוא המחולל הנפוץ בפונקציות ספרייה של שפות תכנות שנקרא Linear congruential generator.
בדרך כלל המחולל מופעל בקריאה לפונקציה והוא פועל באופן כללי כך:
כאשר הוא הגרעין הקודם, ו- פרמטרים קבועים כלשהם.
במהדר GCC קיימת גרסה של פרמטרים: , , .
פלט מחולל מסוג זה נראה על פניו כאקראי, אך ניתן לחיזוי בקלות.
בהינתן סיביות מהרצף, אפשר בעזרת הנוסחה לחשב כל ערך שיהיה או שהיה.
מחולל קריפטוגרפי משתמש כבסיס באנטרופיה ממקור המכונה "גרעין" (seed).
בהקשר של תורת האינפורמציה אנטרופיה היא כלי למדידת כמות המידע הטמון ברצף נתון, כלומר מידת אי-הוודאות לגביו לפני שהתקבל או הקושי בחיזויו.
היות שרצף של PRNG נקבע לפי הגרעין ההתחלתי, מידת אי-הוודאות שלו זהה למידת אי-הוודאות של הגרעין.
במילים אחרות ניחוש כל חלק של הרצף אינו קשה יותר מניחוש הגרעין ולא משנה מה אורך הרצף.
לכן חשוב שניחוש הגרעין ההתחלתי בכוח גס יהיה מעבר לעוצמת המחשוב הנוכחית.
נכון לשנת 2015 אורך של 256 סיביות מספק מרווח ביטחון ראוי לדעת מומחים רבים.
פונקציית האנטרופיה של שאנון נמדדת לפי מספר הסיביות לסמל מתוך האלפבית :
כאשר היא פונקציית הסתברות המייצגת את התפלגות השפה או הסתברות שמתשנה מקרי שווה , בניסוח רשמי: .
כלומר לפי שאנון כמות המידע המינימלית ההכרחית כדי לשדר את היא סיביות.
האנטרופיה של התפלגות השפה האנגלית מעל קבוצת האותיות A עד Z היא 2.62, אף על פי ש-, מזה נובע שבשפה זו ישנן בערך שתי סיביות יתירות בכל סמל.
אנטרופיה מינימלית , ממשפחת אנטרופיות רניי שהן הכללה של אנטרופיית שאנון, היא הדרך השמרנית ביותר למדידת קושי בניחוש.
אפשר לנסחה כלוגריתם השלילי של התוצאה בעלת ההסתברות הגבוהה ביותר.
או לחלופין מדידת המקרה הגרוע ביותר של ההתפלגות:
יש להביא בחשבון שיכול להיות מצב שלהתפלגות נתונה תהיה אנטרופיית שאנון גבוהה אך אנטרופיה מינימלית נמוכה.
למשל אם עבור כלשהו ההסתברות היא חצי ובכל היתר הסתברות קטנה מאוד.
אנטרופיה ואקראיות הם מושגים חופפים אך לא בהכרח מחייבים הדדית.
אקראיות ככל שתהיה טובה אינה מבטיחה קושי בניחוש.
כדי להבין זאת מספיק להתבונן בדוגמה הבאה; נתון מחולל אקראי שבוחר מספר כלשהו מתוך מאגר של מאה מספרים אקראיים, גם אם השיטה בה נבחר תהיה בעלת תכונת אקראיות גבוהה ביותר, קל ביותר לנחש את תוצאת המחולל פשוט על ידי ניסוי כל מאה האפשרויות.
מחולל פסאודו אקראי מיושם במחשב בצורת אוטומט סופי בעל זיכרון שנקרא "מצב פנימי" שנשמר בין הקריאות.
כל מספר פסאודו-אקראי שמופק מן המחולל הוא פונקציה של המצב הפנימי.
לאור זאת, מובן שכל מחולל פסאודו-אקראי חייב להיות מחזורי, כלומר בהכרח באיזה שהוא שלב המחולל יחזור על ערך שכבר הופק בעבר (לא בהכרח הראשון) ומנקודה זו ואילך הרצף יחזור על עצמו בהעתק מדויק, במעין מעגל אין סופי.
אורך המחזור תלוי במחולל, וחסום על ידי , כאשר הוא מספר הסיביות במחולל.
בשל פרדוקס יום ההולדת, אורך המחזור של פונקציה מקרית הוא בדרך כלל מסדר הגודל של דווקא.
בהצפנה, חשוב מאוד לא להשמש במחולל מעבר לאורך המחזור המקסימלי שלו, כיוון שאז יהיה קל למתקיף לנחש את המשך הרצף מאחר שכבר הופיע בנקודת זמן כלשהי בעבר.
ישנם שני הבדלים מהותיים בין מחולל פסאודו-אקראי לבין מחולל אקראי אמיתי:
האנטרופיה של מחולל פסאודו-אקראי תלויה בגרעין ההתחלתי.
דרישות הביטחון המינימליות בכל מחולל פסאודו-אקראי קריפטוגרפי הן:
הפלט צריך להראות רנדומלי למתבונן מהצד שאינו מכיר את הגרעין ההתחלתי.
מתקיף שהצליח לנחש את המצב הפנימי של המחולל בזמן נתון, לא יוכל לנחש נכונה פלט קודם של המחולל.
ביטחון לאחור (Backward security) או יכולת התאוששות.
מתקיף שהצליח לנחש את מצבו הפנימי של המחולל בזמן נתון לא יוכל לנחש נכונה פלט עתידי של המחולל, בתנאי שהייתה אנטרופיה מספקת בזמן רענון.
ברור שאם המצב הפנימי ידוע למתקיף או שהוא יודע מהו המידע שהשתמשו בו לרענון המחולל באפשרותו לנחש כל פלט עתידי.
ההנחה היא שבעת הרענון לפחות חלק מהמידע שהוזן אינו ידוע למתקיף, רק בדרך זו אפשר "להתאושש" ממצב של פריצה.
להלן פירוט מקצת המחוללים הקיימים כיום.
מחולל פשוט ויעיל הנקרא LFSR הוא רכיב חומרה הכולל אוגר שהוא מערך תאי זיכרון המסוגלים לאחסן סיביות, שעון ופונקציית היזון שמחברת ב-XOR מספר תאים לא בהכרח עוקבים כדי להפיק את "סיבית ההזנה".
בכל פעימת שעון תכולת כל תאי האוגר מוזזת פוזיציה אחת (תכולת כל תא מועתקת לתא שלידו) כאשר תכולת התא הראשון שנפלט מהווה חלק מהרצף הפסאודו-אקראי ואילו התא העליון שהתפנה מוזן בסיבית שחושבה על ידי פונקציית העדכון.
LFSR קל ויעיל למימוש בחומרה והוכח מתמטית שהוא יכול לייצר בתנאים הנכונים רצף פסאודו-אקראי המקסימלי שניתן וכן בעל תכונות סטטיסטיות טובות.
אולם בשל הליניאריות שלו כשלעצמו אינו מתאים לקריפטוגרפיה כי הוא קל לניחוש.
הטכניקה להתגברות על הבעיה היא הוספת אי-ליניאריות.
למשל שליטה בפלט שני LFSR באמצעות פונקציה אי-ליניארית כלשהי, או שליטה בשעון של LFSR אחד באמצעות LFSR אחר, או שילוב של LFSR אם תאומו NFSR (אוגר זיזה ממושב אי-ליניארי) ועוד.
למעשה קיימים צפני זרם מודרניים רבים שפועלים על עיקרון זה, ביניהם כאלו המותאמים לחומרה כמו גריין ו-MICKEY או כאלו שמותאמים לתוכנה כמו SNOW ו-SOSEMANUK.
Blum-Blum-Shub בקיצור BBS הוא מחולל PRNG חזק, מבוסס אריתמטיקה מודולרית שפותח על ידי מנואל בלום, לינור בלום ומייקל שוב.
בוחרים שלם שהוא כפולה של שני מספרים ראשוניים גדולים וסודיים באופן שקשה לפרק את לגורמים וגרעין התחלתי כלשהו.
בכל פעם שנדרשת סיבית אקראית הפלט יהיה הסיבית הכי פחות חשובה של תוצאת העלאה בריבוע מודולו של הערך הפנימי.
האלגוריתם הוכח כבטוח, כלומר ניחוש הסיבית הבאה קשה לפחות כפירוק לגורמים של .
החסרון העיקרי שלו הוא שכדי להפיק סיבית אחת יש לבצע העלאה בחזקה מודולרית של מספר גדול מאוד שהיא פעולה לא יעילה במונחי מחשוב.
הצפנת בלום-גולדווסר מבוססת על מחולל זה.
הרעיון הוא שכדי לייצר מספר פסאודו-אקראי אפשר להשתמש בתוצאת פונקציה חד-כיוונית כלשהי או פונקציה פסאודו אקראית של הגרעין ההתחלתי או חלק ממנה.
צופן סימטרי או פונקציית גיבוב מהווים מועמדים טובים לפונקציה כזו.
בגלל פרדוקס יום ההולדת שמאפשר התקפת איזון זמן/זיכרון ביטחון מחולל כזה מוגבל לפקטור של מחצית מסיביות המפתח.
למשל אם משתמשים בצופן בלוקים מסוג AES עם בלוק בגודל 128 סיביות ומפתח בגודל 256 סיביות אפשר להגיע לביטחון מקסימלי של 128 סיביות בקירוב.
תקן NIST למחולל פסאודו אקראי קריפטוגרפי
תקן ANSI X9.17 (או FIPS 186) הישן מיישם עיקרון זה, הוא משתמש בצופן סימטרי בטוח או פונקציית גיבוב לפי בחירה כדי לייצר ערך אקראי על ידי הצפנה של גרעין התחלתי בעל אנטרופיה גבוהה.
המצב הפנימי מעודכן על ידי הצפנת מונה כלשהו עם הגרעין ההתחלתי והפלט או חלק ממנו נהיה המצב הפנימי החדש.
תקן SP800-90A (גרסת יוני 2015 רביזיה 1) של NIST הוא ממשיכם של FIPS PUB 140-2, ANSI X9.31, X9.62. התקן מפרט כמה שיטות ליצירת מחולל פסאודו אקראי בטוח לצורך קריפטוגרפי שנקרא DRBG לפי השלד המתואר בתרשים משמאל.
כאשר פונקציית המחולל (Generate Function) יכולה להיות בכמה אופציות.
בתקן המקורי פורסמו שלוש שיטות 1. פונקציה מבוססת פונקציית גיבוב 2. פונקציה מבוססת צופן סימטרי 3. פונקציה מבוססת עקום אליפטי שנקראת Dual EC DRBG.
במשך שנים היו שמועות שבמחולל השלישי הוחדרה דלת אחורית שהייתה ידועה רק למפתחי האלגוריתם ול-NSA.
בעקבות חשיפות מסמכי סנודן חלק מהטענות התבררו כנכונות ובעקבות זאת ובעקבות מחקרים נוספים הוחלט להסיר את האופציה השלישית Dual_EC_DRBG מהרשימה המומלצת.
רמות הביטחון של המחולל מושגות בהתאם לפרימיטיב הקריפטוגרפי שבבסיסו.
למשל פונקציית גיבוב SHA-3 או צופן AES עם מפתח 256 סיביות מספקים רמת ביטחון מקסימלית.
המחולל dev/random פותח בהשראת המחולל הפסאודו-אקראי של PGP עבור מערכות הפעלה תואמי UNIX ליצירת מספרים אקראיים המתאימים לצורך קריפטוגרפי.
ב-1994 ייושם האלגוריתם בלינוקס על ידי תיאודור צו.
המחולל dev/random מורכב משלושה תהליכים א-סינכרוניים והוא שוכן בליבת המערכת כך שגישה אליו ברמת משתמש מוגבלת.
בתהליך הראשון נאספים נתוני ליבה (kernel) מתוך מנהלי התקנים כמו מקלדת, עכבר, כונן קשיח ואירועים אחרים.
נתונים אילו מהווים את האנטרופיה הבסיסית של המחולל.
בתהליך השני הנתונים מועברים למאגר בגודל 512 בתים באמצעות פונקציות ערבוב דמוית CRC.
המצב הפנימי של המחולל נשמר בשני מאגרים נוספים כאשר חלק מהסיביות מוחזרות למאגרים לאחר גיבוב.
המחולל נחסם כאשר האנטרופיה נגמרת וממתין עד שנאגרת מחדש מספיק אנטרופיה מההתקנים האמורים, לצורך כך קיים מונה שמנהל מעקב אחר כמות הסיביות שהופקו מהעדכון האחרון.
כאשר יש צורך במספר אקראי התהליך השלישי נכנס לפעולה ומעביר את הרצף הגולמי המופק מהמאגר דרך פונקציית גיבוב SHA-1 ואז מופק פלט אקראי.
בגרסאות קודמות של המחולל התגלו ליקויים שנבעו מאופן ניצול האנטרופיה מהמערכת.
מערכות ההפעלה של מיקרוסופט כוללות את אלגוריתם CryptoGenRandom המובנה בתשתית API קריפטוגרפית הנקראת CSP (קיצור של Cryptographic Service Provider והוא מבוסס על הפונקציה RtlGenRandom מהספרייה Advapi32.dll.
האלגוריתם פועל על עיקרון דומה לתקן FIPS 186-2. תחילה מופק גרעין אקראי אמיתי, שנשמר בנפרד עבור כל יישום המשתמש במחולל.
הגרעין נאסף ממקורות שונים במערכת;
שעון עצר נוכחי מאתחול המחשב.
זמן מקומי ברזולוציה הכי גבוהה.
ערך גיבוב של בלוק משתמש (כולל שם משתמש, שם מחשב, נתיב חיפוש וכדומה).
תכולת אוגרי בקרה פנימיים של המעבד כמו RDTSC, RDMSR, RDPMC.
כל זה מועבר בפונקציית גיבוב SHA-1 ארבע פעמים והפלט משמש כמפתח לצופן RC4 איתו מצפינים את המצב הפנימי.
פלט הצופן משמש לעדכון המצב הפנימי.
ופלט פונקציית הגיבוב מוחזר למשתמש כסיביות פסאודו-אקראיות.
המערכת מאפשרת למשתמש להזין נתונים לתוך החוצץ האקראי לפני קריאה לפונקציה.
אף על פי שהמפרט של המחולל מעולם לא פורסם על ידי מיקרוסופט מלבד תיאור כללי.
פורסמה ב-2007 קריפטואנליזה שלו על ידי ליאו דורנדורף, צבי גוטרמן ובני פינקס מהאוניברסיטה העברית שבו הם מציגים שלושה פגמים רציניים במחולל שהותקן בגרסאות של Windows 2000, לאחר שהצליחו להנדס לאחור את קוד המקור שלו.
(1) בהינתן מצב פנימי של המחולל אפשר לנחש את המצב הפנימי הקודם בזמן של .
(2) המחולל פועל ברמת משתמש ולא ברמת מערכת מה שמאפשר גישה ישירה לזיכרון שלו.
(3) כל תהליך מריץ עותק אחר של המחולל והמצב הפנימי שלו, מה שמאפשר התקפת גלישת חוצץ.
Yarrow פותח ב-1999 על ידי ברוס שנייר, נילס פרגוסון וג'ון קלסי מחברת Counterpane.
הוא מנצל פרימיטיבים קריפטוגרפיים קיימים כמו 3DES או SHA-1 ומורכב מארבעה רכיבים עצמאיים; אוגר אנטרופיה שתפקידו לאסוף נתונים אקראיים שונים ביניהם קלט משתמש ונתוני מערכת שונים לתוך מאגרים מיוחדים (pools).
מנגנון גירעון שמחליף מעת לעת את מפתח ההצפנה של המחולל באמצעות אנטרופיה חדשה.
מחולל שמייצר פלט אקראי באמצעות מפתח ההצפנה עם אלגוריתם 3DES במצב מונה (Counter mode) ופונקציית גיבוב SHA-1 וכן מנגנון בקרת גרעון שאמור לקבוע מתי יש צורך לחדש אנטרופיה כדי למנוע מתוקף לנחש את מצבו הפנימי של המחולל.
האלגוריתם מכיל ליתר דיוק שני מאגרים בגודל 160 סיביות כל אחד, הנקראים "מאגר איטי" ו"מאגר מהיר" המתאימים לפלט SHA-160. המאגר המהיר מרענן את המחולל באנטרופיה חדשה בתדירות כזו שאם מצב פנימי אחד נחשף, פרק הזמן של החשיפה יהיה קצר ככל האפשר.
המאגר האיטי מבצע רענון יסודי אחת לפרק זמן ארוך ליתר ביטחון.
האלגוריתם מכיל מנגנון פנימי להערכת אנטרופיה וכן כולל אופציה לשמירת קובץ המכיל ערכים אקראיים עם אנטרופיה גבוהה לצורך אתחול המחולל לאחר כיבוי והדלקה של המחשב.
האלגוריתם שולב במערכות ההפעלה Mac OS X ו-iOS 7 וכן FreeBSD.
בניגוד לקודמו אינו מכיל רכיב הערכת אנטרופיה.
במקום זאת, כדי לפתור את בעיית הרענון, מכיל 32 מאגרים (pools).
הרענון מתפרס באופן אחיד ככל האפשר על פני כל המאגרים.
כל מקור אנטרופיה שנקרא "אירוע" מבצע עדכון של מאגר אחד מתוך האוסף לפי אינדקס שהוא בוחר, בסגנון Round-Robin (ראה ריבוי משימות).
מקור השם Yarrow הוא פרח שמקורו בסין שהגבעול שלו שימש בעת העתיקה לצורך נבואות.
מקור השם Fortuna הוא אלת המזל מהמיתולוגיה הרומית.
זהו למעשה צופן זרם שעוצב במיוחד לשמש כמחולל מספרים פסאודו-אקראיים קריפטוגרפי.
האלגוריתם מבוסס על וריאציה של צופן זרם RC4, הוא משתמש במערך של 256 כניסות כל אחת בגודל 32 סיביות.
ומשתמש בשלושה פרמטרים שערכיהם הראשוניים קבועים ואינם סודיים; a - אוגר אנטרופיה, b - זוכר את המספר האקראי הקודם ו-c - מונה.
האלגוריתם בונה מערך עזר נוסף בגודל זהה ומזין אותו בערכים אקראיים בהתאם לפרמטרים a,b,c בשילוב פעולות XOR, הזזה (SHIFT) וחיבור מודולו 32 סיביות.
התוצאה היא מערך של מספרים אקראיים שכאשר מנוצל עד תום, חוזרים על פעולת האלגוריתם.
אף על פי שהתגלתה התקפה על האלגוריתם שיעילה מחיפוש השורש הריבועי של כל הערכים ההתחלתיים האפשריים בסיבוכיות של , האלגוריתם עדיין בטוח לשימוש מבחינה מעשית.
בנוסף התגלו מספר גדול של ערכים התחלתיים "חלשים" במובן שבהינתן ערכים אילו האלגוריתם מייצר מספרים אקראיים עם הטיה.
כל מחולל חייב להיבדק שאכן הוא מפיק פלט קרוב בהתפלגותו ככל האפשר לפלט אקראי וכן אינו מכיל ליקויים נסתרים.
ישנם מבחנים סטטיסטיים שנועדו למטרה זו.
המבחנים אינם מוכיחים מעל לכל ספק שהמחולל אקראי אלא רק מצביעים על ליקויים אם ישנם.
גם מחולל פסאודו-אקראי קריפטוגרפי חייב לעבור מבחנים כאלה.
להלן פירוט מספר כלים ידועים לבדיקת אקראיות:
עקרונות האקראיות של סולומון גולומב שהם הניסיון הראשון לפתח תנאים הכרחיים הצפויים מרצף אקראי.
כיום העניין בהם בעיקר היסטורי/אקדמי.
בדיקות האקראיות של דונלד קנות' שהן רצף של בדיקות בסיסיות כמו היחס בין מספר האחדים לבין מספר האפסים או כמות "הריצות" (רצף מתמשך של אחדים או אפסים).
תקן FIPS 140-2 של NIST המבוסס על הרעיונות של קנות'.
מבחן Diehard כולל מגוון מרשים של מבדקים סטטיסטיים.
מבחן גנרי שמסוגל לאתר מגוון רחב של ליקויים ברצף אקראי, המבוסס על ההנחה שאם אפשר לדחוס את הרצף בשיעור בלתי זניח הוא אינו אקראי.
כאן היתירות היא סימן מובהק לאקראיות ירודה.
המבדק מנסה לחשב את שיעור הדחיסה האפקטיבי של הרצף מבלי לבצע את הדחיסה בפועל.
מבחן הסיבית הבאה הוא מבחן אוניברסלי שמגדיר את טיב אקראיות הרצף על ידי הניסוי הבא: בהינתן המחולל עם גרעין התחלתי באורך המסוגל לייצר רצף של סיביות פסאודו אקראיות.
המחולל יעבור את מבחן הסיבית באה אם בהינתן רצף של סיביות כאשר , לא קיים אלגוריתם שמסוגל בזמן ריצה לנחש את הסיבית בהסתברות העולה על חצי בשיעור שהוא פרמטר ביטחון כלשהו או טווח שגיאה.
שי הלוי ובועז ברק הציעו מודל גנרי למחולל פסאודו-אקראי שנקרא "חזק" במובן שהוא מציע גמישות, ביטחון לפנים ויכולת התאוששות.
לפי המודל המחולל מורכב ממאגר ושני שלבי עבודה שרצוי שיהיו נפרדים, שלב חילוץ אנטרופיה ושלב פונקציית פלט.
כאשר הראשון לא חייב להיות קריפטוגרפי.
הרעיון הוא לבחון את ביטחון המודל מנקודת ראות של המתקיף.
הנחת העבודה היא שקוד המחולל וסביבת העבודה מוכרים היטב למתקיף וביכולתו להשפיע על הקלט של המחולל במידה מסוימת.
וכן בהינתן מצב פנימי של המחולל בזמן נתון המתקיף יוכל תמיד לחזות מה יהיה הפלט.
סיטואציה זו מציבה קושי רב במיוחד לאור העובדה שהמתקיף יכול לפעמים לקבל מידע אודות המצב הפנימי של המחולל ממקורות חיצוניים, כמו פריצה למערכת ההפעלה וסריקת זיכרון התהליך המריץ את המחולל.
המטרה היא לאפשר התאוששות מהירה מהמצב, כלומר שהמחולל יאפשר הפעלת פונקציה (שתיתכן גם אוטומטית) לרענון המצב הפנימי כדי להבטיח אנטרופיה גבוהה.
באופן כללי צריך שיהיה קשה עד בלתי אפשרי למתקיף להבחין בין פלט המחולל לפלט מחולל אקראי אמיתי וכן יש צורך להגן על סודיות הקלט ששימש לרענון.
לפי מודל זה, שתי הפונקציות הבאות שלפעמים משולבות יחד הכרחיות בכל מחולל:
פונקציית NEXT המייצרת את הפלט הבא ובד בבד מעדכנת את המצב הפנימי של המחולל, כאשר השאיפה היא שלא תסגיר לידי המתקיף את המצב הפנימי.
פונקציית REFRESH שמבצעת ריענון המצב הפנימי של המחולל בכל נקודת זמן באמצעות מידע חיצוני.
אם הקלט מכיל אנטרופיה גבוהה, המצב הפנימי יהיה בטוח.
אם המתקיף לא הצליח לחשוף את המצב הפנימי לפני רענון, המחולל יהיה בטוח סמנטית במובן שאין לו דרך אפילו לבדוק אם מידע הרענון שניחש נכון או לא.
מאידך אם הצליח לחשוף את המצב הפנימי לפני הרענון אפשר להבטיח רק חד-כיווניות כך שהתוקף לא יהיה מסוגל לשחזר את קלט הרענון מתוך המצב הפנימי, בהנחה שהאנטרופיה גבוהה מספיק כדי למנוע ניחוש בכוח גס.
היות שהאנטרופיה של המאגר הפנימי של המחולל עלולה להיפגע עקב השפעות חיצוניות, המחולל חייב לאפשר "ריענון" עם מידע חיצוני כדי להתאושש מהפריצה ולאפשר שימוש בטוח במחולל לאחר מכן.
הבעיה היא שאין דרך לדעת מתי המצב הפנימי של המחולל נפרץ, מסיבה זו יש כאלו שנוקטים בטכניקה של רענון אוטומטי.
קצב רענון גבוה מדי מהווה בעיה בשל הסיכון לביצוע רענון עם מידע זהה אם המקור לא הספיק להשתנות ואז האנטרופיה תחלש.
מצד שני קצב נמוך מדי גורם להתאוששות איטית יותר.
מסיבה זו מחוללים אחדים (כמו Yarrow) מכילים רכיב שנקרא "הערכת אנטרופיה" שבודק את מידת האנטרופיה של המאגר הפנימי ומבצע החלטה אם לרענן.
מחוללים אחרים מנסים להתגבר על הבעיה על ידי פרמטר ביטחון שקובע את קצב הרענון אחת לזמן מוגדר בטווח שבין דקה אחת לחמש דקות, או במרווחים לפי פונקציית האצה מסוימת.
כמו מיד לאחר אתחול המחשב הקצב צריך להיות אחת לכמה שניות ואז הקצב הולך ויורד, עד שהמערכת נכנסת לעבודה נורמלית.
אלגוריתם פורטונה מתגבר על הבעיה בדרך מקורית, הוא מכיל מספר רב של מאגרים כאשר הרענון מתפרש על פני כולם באופן שווה, כך מרוויחים פרישה אחידה של רענון בקצב גבוה מבלי להסתכן באנטרופיה נמוכה.
הדעות חלוקות לגבי הערכת אנטרופיה.
יש הסבורים שהיא בעייתית מהיבט של ביטחון, לא רק שההערכה עלולה להיות שגויה אלא שהמתקיף יכול לנצלה כדי לשטות במערכת, כמו לכפות רענון עם מידע שקל לו לנחש, או למנוע רענון לגמרי.
כאמור קיים הבדל מהותי בין מקור אקראי לבין מקור בעל אנטרופיה גבוהה.
אם המקור שבדרך כלל הוא אקראי אמיתי (הנובע ממחולל פיזי או נתונים המושגים ממקורות שונים במערכת במצב עבודה נורמלי), הוא בעל אנטרופיה גבוהה אך סובל מהתפלגות סטטיסטית גרועה, אפשר לשפר את האקראיות על ידי פונקציית חילוץ אקראיות (Extractor).
זו היא פונקציה שממירה קלט בעל התפלגות סטטיסטית בלתי ידועה לפלט בעל התפלגות אחידה.
יש כאלו שמחייבים שפונקציית החילוץ תכיל פונקציית Setup עם מקור חיצוני שתבטיח ספיגת האנטרופיה בצורה בטוחה, למשל הפונקציה יכולה לשלב גרעין התחלתי כלשהו.
תוצאת הפונקציה צריכה להבטיח שבהינתן שני ערכים אקראיים ההסתברות ש- תהיה בטווח .
פונקציית החילוץ לא חייבת להיות קריפטוגרפית אף על פי שיש יתרון מסוים בשימוש בפרימיטיב קריפטוגרפי.
ייתכן שהדוגמה הקלאסית לפונקציית חילוץ, הראשונה שהומצאה, נקראת על שמו של ג'ון פון נוימן והיא פועלת על זוגות סיביות בזה אחר זה כדלהלן; אם שתי סיביות קלט עוקבות אינן זהות, מחלצים את הראשונה ונפטרים מהשנייה ואם הן זהות שתיהן נמחקות.
השיטה של פון נוימן תצליח להפיק רצף בעל התפלגות אחידה מכל מקור אקראי שלא קיימת בו קורלציה גבוהה, אך היא מכווצת את הרצף.
תקן SP800-90B של NIST מפרט מספר שיטות לחילוץ אקראיות ביניהן פונקציית גיבוב כמו SHA-2.
הגרעין התחלתי הוא ויהי פרמטר ביטחון (למשל סיביות).
המבנה מכיל מנגנון חילוץ אקראיות ואלמנט PRG קריפטוגרפי חסר זיכרון המסומן (הוא יכול להיות למשל AES במצב מונה או קוד אימות מסרים כמו HMAC-SHA2 במצב מונה), הפונקציה ממירה את הגרעין למחרוזת אקראית כפולה באורכה.
המשתמש יכול לקרוא לאחת משתי הפונקציות הבאות:
הפונקציה קוראת לפונקציה עם הפרמטר שהוא הפלט של מחובר ב-XOR עם המצב הפנימי והתוצאה היא סיביות שמתוכן מחזירה רק את הראשונות שמייצגות את המצב הפנימי החדש (ומתעלמת מ- הסיביות האחרונות).
שקוראת לפונקציה שמחזירה למשתמש את (שהוא הסיביות הראשונות של התוצאה) ומעדכנת את המצב הפנימי ב- (שהוא הסיביות האחרונות).
הביטחון של המודל הזה מתואר בצורה של משחק בין שני שחקנים, המתקיף והמערכת המפעילה את המחולל, לפי פרדיגמה של "עולם אידיאלי/עולם אמיתי".
העולם האידיאלי מייצג מצב שבו משיגים ביטחון מקסימלי שבו המתקיף פסיבי ואינו יכול להשפיע על המערכת כלל לעומת העולם האמיתי המייצג את מתקיף שיכול לכפות רענון גרוע (שיש לו שליטה חלקית או מלאה על הקלט).
בעולם האמיתי, הביטוי מייצג את ההסתברות אלגוריתם המתקיף יחזיר "1" לאחר אינטראקציה עם המערכת המיישמת את המחולל עם הפרמטרים .
כאשר מייצג את העולם האמיתי, הוא פרמטר ביטחון (אורך הפלט בסיביות) ואילו מייצג את ההתפלגות הסטטיסטית של הקלט או האנטרופיה שלו.
בעולם האידיאלי ההבדל הוא שבקריאה ל- (אלגוריתם המתקיף) תמיד מתקבלת מחרוזת אקראית באורך ולא יחול שינוי במצב הפנימי, למעט תנאי אחד.
אם המצב הפנימי היה ידוע למתקיף לפני הקריאה, המערכת תעדכן את המצב הפנימי בהתאם.
ההסתברות שלו להצלחה מבוטאת על ידי .
אומרים שהמחולל יהיה "חזק" (בהתאם לרמת האנטרופיה של הקלט) אם עבור כל אלגוריתם פולינומי ההפרש
זניח ביחס לפרמטר הביטחון .
דרך אחרת להציג זאת, בהינתן פרמטרי ביטחון קבועים, כל פונקציה מהצורה עם גרעין התחלתי שהיא דטרמיניסטית ויעילה במונחי מחשוב, תקרא PRNG אם עבור כל אלגוריתם הפועל בזמן ריצה מתקיים:
במילים, ההתפלגות של רצף אקראי אמיתי בעל התפלגות אחידה מעל , "אינה ניתנת להבחנה" (indistinguishable) מההתפלגות לפי קבועי הביטחון .
תקנים למחוללי מספרים פסאודו-אקראיים (PRNG):
ערכת בדיקה סטטיסטית של NIST גרסה 22–800
בחישוביות, מחולל מספרים אקראיים (מכונה בקיצור RNG, ראשי תיבות של המונח האנגלי Random number generator) הוא התקן פיזי או חישובי המייצר רצף סימנים (מספרים) חסרי תבנית או סדר דטרמיניסטי כלשהו, דהיינו אקראיים.
מערכות מבוססות מחשב נפוצות יותר ביצירת מספרים אקראיים, אם כי לא תמיד איכותן טובה, אף על פי שרובן עוברות בהצלחה מבחנים סטטיסטיים לוודא שאין להן דפוס קבוע כלשהו.
קיים מגוון גדול של מקורות טבעיים להפקת מספרים אקראיים, חלקם היו ידועים מימי קדם וחלקם אמצעים חדשים כגון אלו המבוססים על מכניקה קוונטית.
השיטות הפרימיטיביות ליצירת מספרים אקראיים – קרי קוביות משחק, הטלת מטבע, ערבוב קלפים, גלגל רולטה ומכונת לוטו – עדיין מצויות בשימוש כיום, בעיקר לצורך משחקי הימורים.
הן לא מתאימות כאשר נדרשת כמות גדולה של מספרים אקראיים באיכות גבוהה, כגון בסטטיסטיקה מדעית או בקריפטוגרפיה, ובמיוחד לא נוחות ליישום במחשב.
תופעות טבע שונות, כמו רעש תרמי, נראות על פניהן כאקראיות אמיתיות ויכולות לשמש כבסיס לחומרה ייעודית, אולם מרביתן סובלות מהטיה המקלקלת את אקראיותן, עובדה שנוצלה בעבר על ידי מהמרים, במיוחד במשחקי רולטה ובלאק ג'ק.
בהנחה שניתן להגדיר מספרים אקראיים, המקום הטוב ביותר למצוא אותם הוא בתופעות טבע או בתופעות כאוטיות.
חומרה ליצירת מספרים אקראיים היא מכשיר המתוכנן לנצל תופעות כאלה, דוגמת רעש תרמי, רעש חשמלי, האפקט הפוטואלקטרי או תופעות "קוונטיות" אחרות.
אירועים אילו נחשבים תאורטית כבלתי צפויים לחלוטין, דבר שצריך להיבחן אמנם ביישום מעשי.
מכשיר טיפוסי כזה עשוי לכלול רכיב הגברה שתפקידו להעביר את אירוע הטבעי ליחידה מיקרוסקופית ומתמר שתפקידו להמיר את אירוע לאות דיגיטלי.
בשיטות אחדות ממירים "מקור רעש" למחרוזת סיביות אקראית באמצעות התקן עצמאי המחובר למחשב.
הרעש מוגבר, מסונן ומעובד לסיביות לפני העברתו דרך התקן אחר שנקרא קומפרטור (משווה) המייצר אות לוגי שמשנה מצבים, או שהאות הלוגי מועבר למחשב באמצעות RS-232. בגישה אחרת מנצלים התקן המובנה במרבית המחשבים המודרניים, ממיר דיגיטלי/אנלוגי.
מכשירים אחרים מבוססים על אירועים מאקרוסקופיים כאוטיים כמו גלגל רולטה.
אקראיותם נשענת על תאוריות בתחום מערכות דינמיות ותורת הכאוס, הטוענות שעל אף שאירועים אלו דטרמיניסטיים באופיים לפי חוקי המכניקה הקלאסית, במציאות מתרחשים באופן שלא ניתן לחיזוי משום שהם רגישים למשתנים סביבתיים ותנאים התחלתיים מורכבים ועדינים.
אירועים כאוטיים ניתנים להמרה לאות דיגיטלי באמצעים שונים.
חברת סיליקון גרפיקס צילמה מנורות לבה כדי לייצר מהתמונות מספרים אקראיים.
תאגיד RAND פיתחו מכשיר אלקטרוני המדמה גלגל רולטה כדי לייצר מספרים אקראיים.
רעיונות אחרים הם לצלם בועות אוויר באקווריום או שמיים ביום מעונן ולהמיר את התמונות למחרוזת אקראית.
קומודור 64 מחשב אישי שהיה פופולרי בשנות השמונים הכיל מחולל חומרה שמוקם בכרטיס הקול והשתמש בהמרת אות אנלוגי לאות דיגיטלי ליצירת מספרים אקראיים.
היות שהתופעות הללו אינן נקיות מהטיות סטטיסטיות, מכשירים מתוחכמים יותר עשויים לנצל כמה מקורות ולבצע סינון של אותות בעלי תבנית קבועה או אותות המושפעים מתנאים חיצוניים כלשהם.
בכל מקרה, התוצאה של התקנים פיזיים כאלה אינה נקייה לחלוטין מהטיות סטטיסטיות.
על פי רוב פלט מחולל כזה אינו אקראי לגמרי וסובל מהשפעות גורמים חיצוניים כמו מתח חשמלי, מגנטיות, טמפרטורה או התיישנות.
עקב כך אפשר בניתוח הסתברותי של הפלט לנחש מהי הסיבית הבאה ברצף בסיכויים גבוהים מחמישים אחוז בשיעור מסוים.
על כן מקובל בדרך כלל לבצע תיקונים, אילו נעשים לאחר ייצור המספרים בחומרה המיוחדת לכך או באמצעות תוכנה.
להלן מספר מקורות טבעיים המאפשרים יצירת אקראיות אמיתית:
רעש שוט; מקור רעש קוונטי במעגל חשמלי.
דוגמה פשוטה היא דיודת אור, שבשל עקרון אי הוודאות פוטונים הנתקלים במעגל גורמים לשינויי מתח מקריים.
מחשב Atari 8-bit השתמש בשיטה כזו.
קרינה רדיואקטיבית; כמו זו המשמשת במערכות גילוי עשן מסוימות.
הקרינה נמדדת באמצעות מונה גייגר המחובר למחשב.
חברת HotBits מנצלת טכניקה כזו.
פוטונים; חלקיקי אור העוברים דרך מראה חצי שקופה.
מוצר מסחרי של חברת id Quantique מבוסס על טכנולוגיה דומה.
רעש תרמי; רעש הנובע מנגד המוגבר באמצעות מגבר ליצירת מקור מתח אקראי.
תופעות מסוג זה קלות ליישום ורגישות לטמפרטורה של המערכת.
ומאותה סיבה פגיעות להתקפות ניסיון לשינוי טמפרטורת המכשיר.
רעש מפולת; רעש הנוצר מדיודת מפולת או מדיודת זנר.
רעש אטמוספירי או רעש לבן; נמדד באמצעות מקלט רדיו המחובר למחשב.
חברת Random.org משתמשת בשיטה זו.
פרטים על כיצד מנוצל הרעש לצורך מספרים אקראיים אפשר למצוא באתר החברה.
מנורת לבה; טכניקה ידועה של צילום התנועה האקראית של בועות שעווה צמיגות במכל זכוכית ויצירת מספרים אקראיים מהתמונות.
המחולל האקראי Lavarand של חברת סיליקון גרפיקס פעל בשיטה כזו.
ערבוב פריימים של סרטי וידאו או תמונות של שמים ביום מעונן.
חברת טכנולוגיות ליתיום האמריקאית השתמשה במצלמה קבועה שכוונה לשמים ביום מעונן כדי לייצר מספרים אקראיים.
פיגור שעון (clock drift); תופעה הקיימת בשעונים כמו שעוני יד שנוטים לפגר או למהר לאחר זמן.
הפרש הזמן הנמדד בין השעונים אינו קבוע ויכול לשמש כמקור לאקראיות.
שעונים פועלים על מתנד קריסטלי או קוורץ המייצר אות חשמלי מחזורי.
גרסה מסוימת של מרכזת אינטל כוללת התקן המנצל תופעה זו.
המחולל מורכב משני מתנדים אחד מהיר והשני אטי ודיודה תרמית לאפנון המתנד האיטי שמפעיל בתורו מדידה של המתנד המהיר.
פלט המדידות עובר דה-קורלציה לפני שהופך לרצף אקראי.
על עיקרון דומה פועל מחולל חומרה המובנה במעבדי VIA Technologies, גרסה אחת שלו פועלת על שילוב של ארבעה מתנדים במקצבים שונים.
תוצאת XOR של שניים מהם משמשת להטיה של המתנד השלישי שבתורו משמש לשליטה במתנד הרביעי המייצר את הסיביות האקראיות.
אקראיות מערכת מסוג זה מנצלת את העובדה ששינויים מינוריים במשתנים סביבתיים כמו טמפרטורה ומתח חשמלי משפיעה על קצב המתנדים ובכך מושגת אנטרופיה גבוהה.
קצב העבודה של מחוללים אילו גבוה, הפלט הגולמי מופק בקצב של עשרות מגה בית בשנייה והגישה אליהם מוגבלת ברמת משתמש כדי למנוע ניסיון לשלוט במחולל.
מרבית המכשירים המבוססים על התופעות המנויות בדרך כלל יקרים לייצור ותחזוקה, נוטים להיות אטיים מאוד ותוצאתם לא תמיד נקייה מנטייה סטטיסטית בשל רגישותם הרבה לתנאים סביבתיים ומשתנים חיצוניים.
כיוון שכך, נוהגים למצוא פשרה סבירה בין אקראיות מושלמת הנובעת מחומרה ייעודית מחד ואקראיות אלגוריתמית (חישובית) מאידך, על ידי ניצול אנטרופיה זולה וזמינה.
מרבית אפליקציות האבטחה מנצלות אנטרופיה טבעית שאפשר להפיק מהמערכת עצמה; אפליקציות מסוימות דורשות מהמשתמש לספק מחרוזת ארוכה של קואורדינטות עכבר או הקשות מקלדת אקראיות.
אלגוריתמים אחרים דוגמת Yarrow משתמשים בטכניקה של איסוף נתונים אקראיים מגוונים לתוך "מאגר" (pool), שם הם מעובדים באמצעות פרימיטיבים קריפטוגרפיים כמו אלגוריתם הצפנה או פונקציית גיבוב, לפני שמופק פלט אקראי.
בכך מושג שיפור באקראיות ללא צורך בחומרה יקרה.
טכניקה זו פגיעה להתקפות קורלציה, היות שחלק מהנתונים הללו קל לניחוש.
לא קשה למשל לנחש את נתוני שעון מערכת ששימשו לאתחול המחולל, אם ידוע טווח הזמן המשוער שבו התבצעה קריאה למחולל.
ספריית Cryptolib המכילה אוסף שגרות ספרייה קריפטוגרפיות בשפת C++, מיישמת אלגוריתם הנקרא TrueRand ליצירת מספרים אקראיים המבוסס על רעיון המתנד.
מרבית המעבדים המודרניים מכילים שני מתנדי גביש מובנים, אחד עבור שעון זמן אמת ואחד עבור שעון מעבד ראשי.
אלגוריתם TrueRand מנצל עובדה זו, האלגוריתם משתמש בשרות (service) מערכת שעוצר את שעון זמן האמת.
תת-שגרה אחת קובעת עצירה למשך קליק שעון אחד (1/60 של שנייה) בעוד שתת-שגרה אחרת נכנסת ללולאת המתנה.
מאחר שהעצירה לא נמשכת בדיוק קליק שעון אחד, הסיבית הנמוכה ביותר של מונה הלולאה בין עצירה להפעלה של השעון השני, תהיה אקראית.
בסביבה מרובת משימות אלגוריתם כזה עלול להיתקל בהשפעות לא אקראיות במקרה שמערכת ההפעלה תעצור את הלולאה הפנימית כדי לבצע מטלות אחרות.
מחולל פסידו אקראי (PRNG) הוא אלגוריתם המסוגל לייצר כמות נכבדה של מספרים עם מאפייני אקראיות טובים באיכותם, אך לא אקראיים באמת ועל כן מכונים "מדומים".
אחת השיטות הנפוצות להפקת מספרים פסידו אקראיים היא אלגוריתם linear congruential generator (בקיצור LCG) שמשתמש בנוסחת הנסיגה: .
מחולל זה מייצר רצף מספרים פסידו אקראיים שגודלם אינו עולה על גודלו של ומחזוריותו אינה גבוהה מ-.
בשל פשטותו המחולל נמצא בשימוש נרחב כיום.
השיטה הראשונה והפשוטה ביותר ליצירת מספרים אקראיים (שיטת עט ונייר הנקראת "אמצע הריבוע") הומצאה ב-1946 על ידי ג'ון פון נוימן.
מעלים מספר בריבוע ונוטלים רק את הספרות האמצעיות כמספר אקראי וחוזר חלילה.
השיטה אמנם קלה לביצוע אך איכותה ירודה.
מרבית שפות התכנות כוללות פונקציות או שגרות ספריה התומכות ביצירת מספרים אקראיים כמו בשפת C (שמממשת וריאציה של LCG).
לעיתים הפונקציה מחזירה שבר עשרוני בהתפלגות אחידה בטווח ולעיתים מספר שלם.
מקובל שהפונקציה האקראית כוללת פונקציית עזר נוספת, המאפשרת למשתמש לאתחל את המחולל ממקור אקראי כלשהו במחשב, כמו מספר מילי השניות שחלפו מאז הפעלתו או נתוני מערכת (חסרי חשיבות) אחרים.
פונקציות ספריה סטנדרטיות לרוב בעלות מאפיינים סטטיסטיים גרועים וחלקן בעלי מחזוריות כה קצרה שאחרי כמה עשרות אלפי מספרים המחולל מתחיל לחזור על עצמו בהעתק מדויק.
עבור יישומים פשוטים כמו משחקי מחשב הם מספקים אקראיות סבירה.
כשמדובר במשחקי הימורים בסכומים גבוהים, בקריפטוגרפיה או בניתוחים סטטיסטיים מדעיים, לא מומלץ להשתמש בהם.