מה זה באמת SHA-256 Cuadernos Lacre · מושג · 19 במאי 2026 https://solo2.net/he/notebooks/articulos/what-sha-256-actually-is.html טביעת אצבע מתמטית שנכנסת בשישים וארבעה תווים ומשתנה כולה אם פסיק בודד בטקסט המקורי זז. מדוע אנחנו קוראים לזה חותם שעווה דיגיטלי. --- הרעיון הפשוט מאחורי השם הטכני דמיינו שקיימת מכונה עם חריץ אחד ומסך אחד. דרך החריץ אתם מכניסים טקסט: מילה, משפט, רומן שלם. על המסך מופיע, כעבור רגעים ספורים, רצף של בדיוק שישים וארבעה תווים. הרצף הזה, לקורא המקצועי אנו קוראים לו hash או סיכום קריפטוגרפי; לקורא הכללי, נוכל לקרוא לו לעת עתה טביעת אצבע מתמטית של הטקסט, כפי שטביעת אצבע היא של אדם. אם תכניסו את אותו הטקסט פעמיים, המכונה תציג את אותה טביעת אצבע פעמיים. אם תכניסו טקסט מעט שונה — פסיק בודד שהוזז, אות גדולה שהפכה לקטנה — המכונה תציג טביעת אצבע שונה לחלוטין מהראשונה. לא דומה: שונה. שתי התכונות הללו יחד — דטרמיניזם ורגישות — הן הרעיון הפשוט. כל השאר ב-SHA-256 הוא המנגנון שגורם להן להתקיים היטב. כדאי לומר כבר מהתחלה מה המכונה לא עושה. היא לא מצפינה את הטקסט. היא לא מסתירה אותו. היא לא שומרת אותו. המכונה מסתכלת על הטקסט, מחשבת את טביעת האצבע, ושוכחת מהטקסט. טביעת האצבע אינה מאפשרת לשחזר את הטקסט שיצר אותה; היא רק מאפשרת, בהינתן טקסט מועמד, לבדוק אם הוא תואם למקור או לא. לכן אנו אומרים שזהו סיכום חד-כיווני: הולכים, לא חוזרים. Hash זה לא אותו דבר כמו הצפנה הבלבול נפוץ וכדאי להבהיר אותו: הצפנה ו-hashing הן פעולות שונות. הצפנה מורכבת משינוי טקסט כך שרק בעל המפתח יוכל להחזיר אותו לצורתו המקורית. Hashing מורכב מיצירת טביעת אצבע של הטקסט שממנה לעולם לא ניתן לשחזר את הטקסט המקורי, לא עם מפתח ולא בלעדיו. הראשונה הפיכה לפי תכנון; השנייה בלתי הפיכה לפי תכנון. התוצאה המעשית חשובה. כשאפליקציה אומרת «אנחנו שומרים את הסיסמה שלך מוצפנת», יש מישהו שיש לו את המפתח לפענח אותה — האפליקציה עצמה, בכל מקרה. כשאפליקציה אומרת «אנחנו שומרים את הסיסמה שלך ב-hash», האפליקציה עצמה לא יכולה לקרוא את הסיסמה המקורית גם אם הייתה רוצה; היא רק יכולה לבדוק אם מה שאתה כותב מייצר שוב את אותה טביעת אצבע. המודל השני, אם נעשה נכון, עדיף בהרבה על הראשון לאחסון סיסמאות. בהמשך נראה מדוע «נעשה נכון» דורש קצת יותר מאשר SHA-256 בלבד. ארבע התכונות שהופכות hash קריפטוגרפי לשימושי פונקציית hash הראויה לתואר קריפטוגרפי מקיימת ארבע תכונות: 1. דטרמיניזם. אותה קלט מייצר תמיד את אותה טביעת אצבע. 2. אפקט המפולת (Avalanche). שינוי קטן בקלט מייצר טביעת אצבע שונה לחלוטין, ללא דמיון נראה לעין לקודמת. 3. עמידות בפני היפוך. בהינתן טביעת אצבע, לא ניתן חישובית למצוא את הטקסט שיצר אותה. 4. עמידות בפני התנגשויות (Collisions). לא ניתן חישובית למצוא שני טקסטים שונים המייצרים את אותה טביעת אצבע. «לא ניתן חישובית» אין פירושו «זה בלתי אפשרי מתמטית». פירושו שהעלות בזמן, אנרגיה וכסף כדי להשיג זאת עולה בסדרי גודל על סך כל כושר המחשוב הזמין באופן סביר. עבור SHA-256, הגבול הזה נמדד באלפי טריליוני שנים אפילו עבור הגישות האופטימיות ביותר עם חומרה ייעודית. מה שלמטרות המעשיות של הקורא, הוא זהה ל-«לא ניתן». SHA-256, באופן ספציפי השם אומר הכל. SHA הן ראשי התיבות של Secure Hash Algorithm: אלגוריתם hash מאובטח. המספר 256 מציין את גודל טביעת האצבע בביטים: מאתיים חמישים ושישה ביטים, כלומר שלושים ושניים בייטים, המוצגים בהקסדצימל הם שישים וארבעה התווים שהקורא כבר מזהה. התקן פורסם על ידי ה-NIST האמריקאי, הגוף המתקנן פונקציות מסוג זה, בשנת 2001 כחלק ממשפחת SHA-2; הגרסה הנוכחית של התקן, FIPS 180-4, היא משנת 2015. הממדים ראויים לרגע של מחשבה. מאתיים חמישים ושישה ביטים מאפשרים שתיים בחזקת מאתיים חמישים ושש ערכים שונים: מספר עם שבעים ושמונה ספרות עשרוניות, גדול בכמה סדרי גודל ממספר האטומים המוערך ביקום הנצפה. כל טקסט בעולם — כל ספר, כל דוא"ל, כל הודעה — נופל על אחד מהערכים הללו. ההסתברות ששני טקסטים שונים יתלכדו במקרה היא, למטרות מעשיות, בלתי ניתנת להבחנה מאפס. איך זה נראה בקוד מדוע אנחנו קוראים לזה חותם שעווה בתכתובת האירופית של המאות החמש עשרה עד התשע עשרה, חותם השעווה סגר את המכתב. טיפת שעווה מותכת, חותם שנלחץ עליה, והמכתב נשאר מסומן בצורה שאינה ניתנת לשחזור. זה לא הגן על התוכן מפני המציצן הנחוש — ניתן היה לקרוא את הנייר מול האור, ניתן היה לשבור את השעווה — אבל זה העיד עליו. כל שינוי בסגירה היה גלוי לנמען עוד לפני פתיחת הנייר. חותם השעווה לא מנע את הנזק; הוא הכריז עליו. ה-SHA-256 של גוף כל Cuaderno ממלא את אותו התפקיד בגרסתו הדיגיטלית. אם מילה בודדת במאמר תשתנה בין רגע הפרסום לרגע שבו אתה קורא אותו, החותם ההקסדצימלי בתחתית הטקסט כבר לא יתאים ל-SHA-256 של הטקסט שלפניך. כל קורא עם חמש שורות קוד יכול לבדוק זאת. הפרסום אינו יכול לשכתב את ההיסטוריה שלו מבלי שהחותם יסגיר אותו. הוא אינו מגן מפני נזק; הוא הופך אותו לניתן לאימות. מה hash הוא לא ארבעה שימושים מתבקשים לעיתים מ-SHA-256 שאינם בתחום אחריותו: 1. הצפנה. Hash מסכם; הוא לא מסתיר. אם אתה רוצה שהטקסט לא יהיה קריא, אתה צריך להצפין אותו, לא לעשות לו hash. 2. אימות המחבר. Hash לא אומר מי כתב את הטקסט, רק איזה טקסט עבר hashing. כדי לשייך מחבר דרושה חתימה קריפטוגרפית מעל ה-hash, לא ה-hash בלבד. 3. אחסון סיסמאות. כאן יש מלכודת שכדאי להבין. SHA-256 תוכנן להיות מהיר מאוד — מה שטוב לדברים רבים, אבל רע לזה. תוקף עם חומרה ייעודית יכול לנסות מיליארדי סיסמאות בשנייה מול hash SHA-256 hasta שימצא את שלך. כדי לשמור סיסמאות יש להשתמש בפונקציות גזירת מפתח איטיות בכוונה כמו Argon2, scrypt או bcrypt, בשילוב עם מלח (salt - נתון אקראי ייחודי לכל משתמש, המונע משני אנשים עם אותה סיסמה לקבל את אותו ה-hash). 4. קריאת ה-hash כמזהה המחבר. זה לא. Hash מזהה את התוכן. אם שני אנשים עושים hash למילה שלום עם SHA-256, שניהם מקבלים את אותו הסיכום — וזוהי התכונה המרכזית, לא פגם: אם אלו היו סיכומים שונים, לא היינו יכולים לבדוק התאמה בין מה שפורסם למה שהתקבל. איפה מופיע SHA-256 בחיי היומיום שלך למרות שאינך רואה זאת, SHA-256 מחזיק חלק גדול ממה שאתה משתמש בו מדי יום באינטרנט. שרשרת הבלוקים של ביטקוין נבנית על ידי שרשור SHA-256 של כל בלוק לבלוק הבא; שינוי בלוק מהעבר מחייב חישוב מחדש של כל השרשרת שבאה אחריו. Git, המערכת שבה מנהלים גרסאות של קוד בחצי מהעולם, מזהה כל אישור (commit) לפי ה-SHA-256 (בגרסאות אחרונות) או לפי קודמו SHA-1 (בגרסאות ישנות יותר) של כל תוכנו. תעודות HTTPS המאמתות את זהות האתר כשאתה נכנס אליו נושאות טביעת אצבע SHA-256 משויכת. הורדות תוכנה מלוות לעיתים קרובות ב-SHA-256 שפורסם על ידי המפתח כדי שתוכל לוודא שהקובץ לא שונה בדרך. וכפי שאמרנו, בתחתית כל Cuaderno Lacre. לקורא המקצועי ארבע תזכורות תפעוליות למי שמחליט או מבקר מערכות: 1. Hash אינו הצפנה. אם ספק מתבלבל בין שני המונחים בתיעוד הטכני שלו, כדאי לשאול למה הוא מתכוון בדיוק. 2. כדי לאחסן סיסמאות לעולם אין להשתמש ב-SHA-256 בלבד. SHA-256 מהיר מדי למשימה זו (ראה סעיף 3 ב-מה hash הוא לא). התקן הנוכחי הוא Argon2id: איטי לפי תכנון, ניתן להגדרה לפי יכולת השרת, בשילוב עם מלח אקראי שונה לכל משתמש. 3. עבור שלמות מסמכים — חוזים, תיקים, קבצים — SHA-256 נותר תקן הייחוס. זהו התקן שבו משתמשים נותני שירותי חותם זמן מוסמכים באיחוד האירופי. 4. לשימור לטווח ארוך (עשורים) כדאי לחשב ולארכב גם SHA-3 או SHA-512 לצד ה-SHA-256; הזהירות הקריפטוגרפית ממליצה לא להסתמך על פונקציה בודדת עבור ארכיונים של מאה שנה. דמיינו שהקמתם את מסלול הדומינו המורכב ביותר בעולם: אלפי אבנים, עשרות הסתעפויות, גשרים מכניים ורמפות שחוצות את החדר כולו, מונחות בזהירות אבן אחר אבן. אם תתנו נקישה לאבן הראשונה, השרשרת תיפול ברצף מדויק וניתן לשחזור. אותה הקמה, אותה נקישה ראשונית ← תבנית סופית זהה של אבנים שנפלו, שוב ושוב. הנה החלק המעניין: הזיזו אבן אחת בלבד חצי סנטימטר הצידה לפני שמתחילים, ונקשו שוב. רמפה שהייתה אמורה להיות מופעלת נשארת דוממת, גשר לא נופל, הסתעפות שונה מופעלת. התבנית הסופית של האבנים על הרצפה בלתי ניתנת לזיהוי לחלוטין בהשוואה לראשונה. SHA-256 הוא המסלול הזה מבחינה מתמטית. הטקסט שאתם כותבים הוא המיקום הראשוני של האבנים. האלגוריתם הוא הנקישה שמשחררת את המפל. והתוצאה הסופית — מה שאנו מכנים hash — היא תצלום סטילס של הרצפה כשהכל נעצר. שנו פסיק אחד בטקסט המקורי, והתמונה תהיה שונה בתכלית. פשוט כל כך, ודרסטי כל כך. --- אם תחזור לתחתית המאמר הזה, תראה חותם הקסדצימלי של שישים וארבעה תווים. זהו ה-SHA-256 של הטקסט שזה עתה קראת, בשפה זו. אם היינו מתרגמים את המאמר, החותם היה אחר; אם מילה בגרסה העברית הייתה משתנה, החותם העברי היה משתנה. החותם אינו מגן על התוכן — לשם כך קיימים כלים אחרים — אלא מזהה אותו באופן ייחודי. וזה, צנוע ככל שזה נשמע, מספיק כדי שאף שלב בשרשרת המערכתית לא יוכל לשנות את הנאמר מבלי שזה יורגש. כל השאר — הצפנה, חתימה, זיהוי — נבנה על גבי הרעיון הפשוט הזה. מקורות וקריאה נוספת - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), אוגוסט 2015. מפרט רשמי של משפחת SHA-2, כולל SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, מאי 2011. גרסה נורמטיבית עבור המממשים. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). פרקים 5 ו-6 מכסים פונקציות hash ואת השימושים הלגיטימיים והבלתי לגיטימיים שלהן. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). דוגמה מעשית לשימוש ב-SHA-256 לשרשור בלוקים במבנה שאינו ניתן לשינוי מעצם בנייתו. - תקנת (EU) 910/2014 (eIDAS) — מסגרת נותני שירותי חותם זמן מוסמכים. SHA-256 הוא פונקציית הייחוס עבור חתימות וחותמות אלקטרוניות מוסמכות המונפקות באיחוד האירופי. - מימוש ייחוס ב-Zig: std.crypto.hash.sha2.Sha256 במאגר הרשמי של השפה (github.com/ziglang/zig → lib/std/crypto/sha2.zig). זוהי הגרסה האופטימלית והמבוקרת שבה Solo2 אכן משתמשת. מועיל להשוואה עם המימוש הדידקטי של הנספח. --- Cuadernos Lacre · פרסום של Menzuri Gestión S.L. · נכתב על ידי R.Eugenio · נערך על ידי צוות Solo2. https://solo2.net/he/notebooks/