stanford-oval/wikipedia huggingface dataset:
ג'יין לו
קורות חייה

ג'יין לו, בלידתה לו לי האנג (וייטנאמית Lưu Lệ Hằng), נולדה ביולי 1963 בסייגון שבדרום וייטנאם. אביה, שעבד כמתורגמן בשרות הצבא האמריקאי, לימד אותה צרפתית. עם נפילת סייגון באפריל 1975 היו לו, בת ה-12, ומשפחתה בין הווייטנאמים שפונו על ידי האמריקאים. בארצות הברית התיישבו בקנטקי שם היו להם בני משפחה ובהמשך עברו לקליפורניה. עם הגיעם לארצות הברית בני המשפחה "אינגלתו" את שמותיהם: לו לי האנג הפכה לג'יין לו. לו למדה אנגלית במהירות והצטיינה בלימודיה בבית הספר התיכון אותו סיימה כולדיקטוריאן (Valedictorian) (אנ') של המחזור מה שזיכה אותה במלגה שאפשרה לה ללמוד באוניברסיטת סטנפורד.
לו נשואה לרוני הוגרוורף, אסטרונום אף הוא, אותו הכירה בתקופת שהותה בליידן. בתם נולדה ב-2006.
השכלה ומסלול מקצועי

לו סיימה תואר ראשון בפיזיקה באוניברסיטת סטנפורד ב-1984. בשנת 1986 החלה לימודי דוקטורט ב-MIT, המנחה שלה היה דייוויד ג'וויט (אנ') כאן התחיל שיתוף הפעולה רב השנים ביניהם. היא סיימה את הדוקטורט ב-1990. באותה שנה זכתה במלגת מחקר מטעם הארגון של טלסקופ החלל האבל, במסגרתה עשתה את הפוסט דוקטורט במרכז לאסטרופיזיקה של אוניברסיטת הרווארד, ובהמשך באוניברסיטת קליפורניה בברקלי ובסטנפורד.
משנת 1994 הייתה פרופסורית במחלקה לאסטרונומיה של הרווארד, ובשנת 1998 עברה לאוניברסיטת ליידן.
ב-2001, עם שובה לארצות הברית, ג'יין פנתה לכיוון הטכנולוגי והתמנתה לתפקיד של מדענית בכירה בצוות ההנדסי במעבדת לינקולן ב-MIT (אנ'). באוטוביוגרפיה שלה הסבירה זאת כך: "תמיד הרגשתי שההשכלה שלי לקויה בצד הטכנולוגי, רציתי ללמוד איך המכשירים פועלים".
לו הייתה חברה במספר ועדות מדעיות. ביניהן:
הוועדה המיעצת למחקרי מערכת השמש לעשור 2013-2022(Planetary Science Decadal Survey for 2013 – 2022)
הוועדה המייעצת לחקר היווצרות מערכת השמש (NASA’s Origin of the Solar System Committe).
ועדות שונות להקצאת זמן בטלסקופים.
פעילותה המדעית

הדוקטורט שעשתה בהדרכתו דייוויד ג'וויט (אנ') עסק באסטרואידים.
כבר במהלך עבודת הדוקטוראט הייתה שותפה של ג'וויט בחקר חגורת קויפר. נושא שהפך לתחום מחקרה המרכזי.
הם התחילו את התצפיות במצפה קיט פיק (Kitt Peak)(אנ') שבאריזונה, המשיכו במצפה סרו טולולו ( Cerro Tololo)(אנ') בצ'ילה ולבסוף עברו לטלסקופ UH88tb(אנ') של אוניברסיטת הוואי הממוקם בפסגת הר מאונה קיאה. במקביל גם השתכללה שיטת עבודתם שהחלה בבחינה של צילומים ועברה לסריקה ישירה באמצעות רכיבי CCD. חמש שנים של תצפיות הביאו לבסוף ב-1992 לגילוי של כוכב הלכת המינורי שהם קראו לו "סמיילי" ושמו הרשמי 15760 אלביון. כעבור שישה חודשים הם גילו גוף נוסף שהם כינוהו "קרלה" וכינויו הרשמי הוא 1993 FW (אנ').
הם המשיכו בחקר חגורת קויפר, וב-2004 לו וג'וויט גילו מים קפואים (crystalline water ice ) על קווה-וואר וגם עקבות של אמוניה הידראט (H8N2O).
פרסומים

בסיס הנתונים של נאס"א מונה מעל 200 פרסומים של לו, או שלו הייתה שותפה לכתיבתם.
תפקידים ואותות הוקרה

חברת האקדמיה הנורווגית למדעים(אנ').
פרס אנני ג'אמפ קאנון לאסטרונומיה - 1991
פרס קוולי לאסטרופיזיקה - 2012.
פרס שאו - 2012
האסטרואיד לו-5430 (5430 Luu )(אנ') קרוי על שמה.
הערות שוליים

↑  מתוך ההנמקה למתן הפרס
↑  אוטוביוגרפיה שג'יין לו מסרה לפרס שאו (באנגלית)
↑  מסמך הכולל את רשימת חברי הוועדה (באנגלית)
↑  Physical Studies of Primitive Solar System Bodies
↑  שני השמות נתנו בעקבות הדמויות ברומנים של ג'ון לה קארה אותם קראו בשעות ההמתנה הארוכות
↑  מאמר ב-independent (באנגלית)
↑  NASA/ADS, ui.adsabs.harvard.edu (באנגלית)
| --- | --- |
בקרת זהויות :  PLWABN: 9810626698905606  ISNI: 0000 0003 7224 2845  VIAF: 1039153834737364450005   WorldCat (עם VIAF): 1039153834737364450005
OCB

בקריפטוגרפיה, Offset CodeBook היא משפחה של מצבי הפעלה מקביליים עבור צופן בלוקים המספקים הצפנה מאומתת של מסרים ארוכים. OCB1 פותח ב-2003 על ידי פיליפ רוגווי, מיהיר בלייר אוניברסיטת קליפורניה בסן דייגו וג'ון בלאק מאוניברסיטת קולורדו. OCB הם מצבי הפעלה אלגנטיים, יעילים ובטוחים לפי פרדיגמה של "הצפנה ואחריה אימות" והם שיפור של מצב ההפעלה IAPM שהוצע על ידי Charanjit Jutla. בהתבסס על צופן בלוקים בטוח כמו AES ווקטור אתחול, האלגוריתם מצפין מסר שהוא מחרוזת בינארית ארוכה  M, תוך הפעלה של צופן הבלוקים  \left\lceil |M|/n\right\rceil +2 פעמים, כאשר  n הוא גודל הבלוק שהצופן מקבל (128 סיביות במקרה של AES) תוך חישובי היסט (offset) ותהליך הכנת מפתח מהירים מאוד. ומפיק טקסט מוצפן בליווי תג אימות באורך משתנה לפי הצורך כדי לאמת ולהבטיח את שלמות הטקסט המוצפן. תג האימות מבטיח מעצם ההגדרה שלא ניתן יהיה לזייף טקסט מוצפן עם תג אימות מתאים ללא ידיעת מפתח ההצפנה המשותף לשולח והמקבל, כך שהמקבל לא יבחין בכך. OCB1 הוכח כבטוח כנגד התקפות על שלב הסודיות או האימות בהנחה שצופן הבלוקים מוגדר פרמוטציה פסאודו אקראית (PRP). אולם התגלו בעיות בעמידות בפני התנגשויות, שמגבילות את כמות המידע הניתן להצפנה עם מפתח יחיד. ביישום אופטימלי OCB1 מהיר מאוד ויכול להגיע למהירות של 1.48 CPB על מעבד אינטל 64 ביט (עם AES-NI).
OCB מוגן בפטנט בארצות הברית, השימוש בו כרוך ברישיון מבוסס הרישיון הציבורי הכללי של גנו לשימוש פרטי, בתנאי שאינו משמש לצורך מסחרי או ממשלתי. ב-2013 המפתחים נתנו הסכמתם לרישיון חופשי בקוד פתוח המאושר על ידי OSI. האלגוריתם נכלל ברשימת האלגוריתמים המובילים שמנהל NIST לצורך תקן הצפנה מאומתת. כמו כן מומלץ על ידי IETF.
תרשים לדוגמה של הצפנה מאומתת בשיטת OCB
הצפנה מאומתת

הצפנה מאומתת היא סכמת הצפנה המבוססת על צופן סימטרי שמטרתה לספק סודיות והבטחת שלמות המידע. כאשר פונקציית ההצפנה מקבלת טקסט מקור, מפתח סודי המשותף לשולח והמקבל ווקטור אתחול ומחזירה טקסט מוצפן, בעוד שפונקציית הפענוח מקבלת טקסט מוצפן ווקטור אתחול ומפתח סודי ומפיקה טקסט קריא או סמל מיוחד "INVALID" אם אחד הערכים שונה כתוצאה משגיאה במהלך המשלוח או בזדון. בהקשר זה וקטור האתחול מכונה גם Nonce כלומר ערך ייחודי וחד פעמי אך אינו בהכרח סודי או אקראי כמו למשל מספר רץ. למעשה אפשר להשיג הצפנה מאומתת על ידי שילוב נכון של צופן בלוקים עם קוד אימות מסרים כמו שקורה בפועל ובתקני הצפנה. בעבר השתמשו בטכניקה של ריפוד על ידי הוספת יתירות אולם דרך זו הוכחה כלא בטוחה. שיטות רבות שבשימוש אינן יעילות וחלקן לא בטוחות. המטרה היא השגת אימות במחיר הנמוך ביותר אפשרי מהיבט של יעילות ביישום מעשי בתוכנה או בחומרה, כמעט כמו הצפנה ללא אימות, תוך שמירה על ביטחון גבוה. בנוסף רצוי שתהיה תמיכה במקביליות להשגת תפוקה גבוהה. OCB מכיל את התכונות הבאות:
אורך מינימלי של טקסט מוצפן בהתחשב באורך הטקסט המקורי. כמו כן אורך המסר לא חייב להיות כפולה של גודל הבלוק שהצופן מקבל.
הצורך בוקטור אתחול גמיש. צריך להיות שונה בכל פעם שמצפינים מסר חדש עם אותו מפתח אך אינו חייב להיות סודי או אקראי.
מספר הקריאות לצופן הבלוקים (כאשר המסר ארוך) הוא מינימלי, כמעט אופטימלי.
יש צורך במפתח הצפנה סודי יחיד כאשר מפתח האימות נגזר ממנו.
יעילות רבה בחישובי האופסט או הרצף. ההצפנה והפענוח יכולים להתבצע ללא עיכוב גם אם המסר לא הגיע בשלמותו. וכן היכולת לטפל בבלוקים קצרים ביעילות והיכולת לבצע חישוב מקבילי או לחדש תג אימות ביעילות כאשר בוצע שינוי בחלק מהמסר. זאת ללא חישובים אריתמטיים מסובכים.
תפוקה גבוהה. בניסוי שעשו המפתחים על פנטיום 3 הוכח ש-OCB איטי רק ב-6.5% לעומת הצפנה ישירה ללא אימות. ומהיר פי 54% ממצב הצפנה CBC עם MAC כמו CCM.
יישום מקבילי בחומרה ייעודית יכול להניב תפוקה של 10 Gbps.
ביטחון סמנטי מוכח לפי מודל של מיקלי וגולדווסר שנקרא indistinguishability כנגד התקפת גלוי-נבחר יחד עם אימות מוכח לפי מודל של בלייר כץ ויונג. מה שמספק הגנה כנגד ההתקפה החזקה ביותר התקפת מוצפן-נבחר בקיצור CCA שמקביל גם למודל ביטחון מחמיר שנקרא אי-חשילות של דולב ואחרים. מודלים של ביטחון אילו אינם מתקיימים במצבי הפעלה סטנדרטיים כמו PCBC שייושם בפרוטוקול קרברוס.
הצפנה מאומתת > סימנים מוסכמים

צופן בלוקים המהווה מרכיב פרימיטיבי באלגוריתם הוא פונקציה מהצורה  E:{\mathcal {K}}\times \{0,1\}^{n}\rightarrow \{0,1\}^{n} המסומנת בקיצור  E_{K}(M) כאשר  K הוא מפתח ההצפנה ו- M הוא המסר. גודל בלוק שהצופן מסוגל להצפין בריצה אחת הוא  n שמומלץ שיהיה לפחות 128 סיביות. ואורך התג מיוצג על ידי  \tau  ומומלץ שיהיה לפחות 32 סיביות. בפרוטוקול IPSec התקן הוא 96 סיביות.
כל הערכים הם מחרוזות בינאריות והסימן  A\ \|\ B מייצג שרשור של  A ו- B למחרוזת אחת. המרה של מחרוזת בינארית למספר שלם וההפך היא לפי סדר בתים קטן. הפונקציה  {\text{ntz}}(i) מייצגת את מספר האפסים המסיימים בייצוג הבינארי של המספר  i (בספרות הפחות משמעותיות של המספר) למשל  {\text{ntz}}(7)=0 וכן  {\text{ntz}}(8)=3. הריפוד של  A באפסים מיוצג על ידי  A\ 0^{*}, למשל המספר 5 בייצוג בינארי הוא  0^{*}101 הכוכבית מתייחסת למספר האפסים הדרוש כדי להשלימו לגודל בלוק  n, כלומר אם  n=128 סיביות המספר 5 בייצוג בינארי מרופד ב-125 אפסים בסיביות המשמעותיות כדי להשלימו לגודל בלוק).  הפעולה  A\oplus B נקראת XOR. הסימן  A\ll 1 נקרא הזזה לשמאל (shift left) של סיביות המחרוזת  A צעד אחד, הסיבית המשמעותית ביותר נפלטת ואילו הסיבית הראשונה מתאפסת. וכן לגבי  A\gg 1 בסדר הפוך. כאשר מחלקים את המסר  M לבלוקים בגודל  n צריך לזכור שמספר הבלוקים צריך להיות לפחות אחד, כך שהמחרוזת  הריקה גודלה 1.
הצפנה מאומתת > סימנים מוסכמים > פעולות אריתמטיות בשדה  GF(2^{n})

כדי לחשב את האופסט להלן, רואים במחרוזות באורך  n הסיביות כפולינומים מעל השדה  {\text{GF}}(2^{n}), כך שהמקדמים של האלמנט  a(x)=a_{n-1}x^{n-1}+\cdots +a_{1}x+a_{0} הן הסיביות של המספר  a. למשל בשדה  GF(2^{128}) אפשר לראות במספר 5 כמחרוזת בינארית  0^{125}101 או הפולינום  x^{2}+1. פעולת החיבור של שני אלמנטים בשדה היא חיבור המקדמים בנפרד מודולו 2 שהיא מקבילה לפעולת XOR. כדי לבצע פעולת כפל בשדה  c(x)=a(x)\cdot b(x), יש לבחור תחילה פולינום פרימיטיבי אי-פריק  p(x) ממעלה  n (שרצוי שיהיה עם מספר מקדמים מינימלי, דהיינו משקל בינארי נמוך) שישמש כמייצג של השדה, כך שכל פעולות הכפל בין שני אלמנטים בשדה צריכות להתבצע מודולו  p(x) כדי שהתוצאה תהיה אלמנט בשדה. למשל עבור השדה  {\text{GF}}(2^{128}) הפולינום  x^{128}+x^{7}+x^{2}+x+1 מתאים.
אפשר לראות שקל לבצע כפל של כל פולינום  a(x) בפולינום  x כיוון שהתוצאה
שקולה בעצם להזזת המקדמים שמאלה פוזיציה אחת. כעת אם הסיבית הגבוהה ביותר היא אפס התקבל פולינום ממעלה נמוכה מ-128 והתוצאה נותרת בעצם  a\ll 1. אך אם הסיבית המשמעותית היא 1 מתקבל פולינום ממעלה גבוהה או שווה ל-128, מה שמחייב לצמצם את הפולינום  a מודולו  p(x). דהיינו צריך למצוא פולינומים  q ו- r המקיימים  a^{128}+a=q\cdot p+r ואז לקחת את השארית  r. קל לפתור את המשוואה האחרונה כאשר  q=1 כי אחרי העברת אגפים מתקבל  r=a^{128}+a-p. במילים אחרות צריך לחסר את  p מהתוצאה ואפשר להסתפק במקדמים הנמוכים של  p כי הסיבית הגבוהה מתבטלת. חיסור אלמנט בשדה זה מתבצע על ידי XOR כי הוא הופכי של עצמו לכן חיבור וחיסור הן פעולות זהות. לסיכום:
באופן דומה אפשר לבצע חילוק עם ההופכי הכפלי של  x.
כעת אם  L\in \{0,1\}^{n} הוא מחרוזת בינארית (או פולינום) הביטוי  L(i) עבור  i\geq -1 הוא סימון מקוצר של הפעולה  L\cdot x^{i}. כלומר כפל הפולינום  L בחזקות של הפולינום  x. בעזרת נוסחאות הכפל והחילוק לעיל קל לחשב מתוך  L את  L(i-1),L(0),L(1),...,L(\mu ). עבור  \mu  קטן. את  L(-1) מחשבים על ידי  L\cdot x^{-1}.
לצורך האופסט בהשאלה מקוד גריי מגדירים את  \gamma ^{l}=(\gamma _{0}^{l}\ \gamma _{1}^{l}\cdots \ \gamma _{2^{l}-1}^{l}) של מחרוזות באורך  l סיביות הנבדלות זו מזו רק בסיבית אחת. כאן נעשה שימוש בקוד גריי קנוני שאותו בונים על ידי חישוב  \gamma ^{1}=(0\ 1) ועבור כל  l הגדול מ-0:
הסיבה לבחירה זו היא שלמעשה  \gamma _{i}=\gamma _{i-1}\oplus (0^{n-1}1\ll {\text{ntz}}(i)). שזה XOR עם חזקה של 2 כאשר החזקה היא מספר האפסים המסיימים באינדקס  i. מה שהופך את המשימה לחישוב נקודות האופסט לקלה במיוחד כי כל שנדרש הוא הזזות ו-XOR בלבד. נקודות  \gamma _{i} האמורות שונות זו מזו בסיבית אחת לפחות ושונות מאפס וכן  \gamma _{i}<2i. תוך שימוש בקוד גריי, במחרוזת  L ובמחרוזת  R (שיבוארו להלן) מחשבים באופן רקורסיבי את הערכים הבאים:
כל נקודה מחושבת על ידי XOR של הנקודה הקודמת עם  L({\text{ntz}}(i)). כדי לשלב את וקטור האתחול בתהליך ההכנה תחילה מצפינים אותו עם  L ומחברים את התוצאה  R עם כל ההיסטים  \gamma _{i}, כאשר האופסט הראשון הוא  L\oplus R. כך מבטיחים ייחודיות בכל הצפנה.
הצפנה מאומתת > תיאור האלגוריתם

באלגוריתם הבא, מתייחסים לטקסט המיועד להצפנה כאל מחרוזת סיביות המחולקת ל- m בלוקים. כאשר המסר צריך להיות לפחות  m-1 בלוקים שלמים בגודל 128 סיביות ובלוק האחרון שיכול להיות בלוק חלקי המרופד באפסים במידת הצורך או שהוא יכול להיות ריק לגמרי. על כל פנים צריך שיהיה לפחות בלוק אחד כך שיתקיים  128m\leq |M|.
הצפנה מאומתת > תיאור האלגוריתם > הצפנה ואימות

{\boldsymbol {\mathbf {OCB1} .\mathbf {E} _{\mathbf {K} }(N,M)}}
L=E_{K}(0^{n})
R=E_{K}(N\oplus L)
{\text{For }}i=1{\text{ to }}m{\text{ do:  }}\ Z[i]=\gamma _{i}\cdot L\oplus R
{\text{For }}i=1{\text{ to }}m-1{\text{ do:  }}\ C[i]=E_{K}(M[i]\oplus Z[i])
X[m]={\text{len}}(M[m])\oplus L\cdot x^{-1}\oplus Z[m])
Y[m]=E_{K}(X[m])
C[m]=Y[m]\oplus M[m]
C=C[1],...,C[m]
{\text{Checksum}}=M[1]\oplus \cdots \oplus M[m-1]\oplus C[m]0^{*}\oplus Y[m]
T=E_{K}({\text{Checksum}}\oplus Z[m])[{\text{first }}\tau {\text{ bits}}]
{\text{Return }}C\ \|\ T
הצפנה מאומתת > תיאור האלגוריתם > פענוח ואימות

{\boldsymbol {\mathbf {OCB1} .\mathbf {D} _{\mathbf {K} }(N,C\ \|\ T)}}
L=E_{K}(0^{n})
R=E_{K}(N\oplus L)
{\text{For }}i=1{\text{ to }}m{\text{ do: }}\ Z[i]=\gamma _{i}\cdot L\oplus R
{\text{For }}i=1{\text{ to }}m-1{\text{ do: }}\ M[i]=E_{K}^{-1}(C[i]\oplus Z[i])\oplus Z[i]
X[m]=len(C[m])\oplus L\cdot x^{-1}\oplus Z[m]
Y[m]=E_{K}(X[m])
M[m]=Y[m]\oplus C[m]
M=M[1],...,M[m]
{\text{Checksum}}=M[1]\oplus \cdots \oplus M[m-1]\oplus C[m]0^{*}\oplus Y[m]
T'=E_{K}({\text{Checksum}}\oplus Z[m])[{\text{first }}\tau {\text{ bits}}]
{\text{If }}T=T'{\text{ Then return }}M{\text{ else return INVALID}}
הצפנה מאומתת > תיאור האלגוריתם > תיאור במילים

הקלט הוא מפתח סודי  K, וקטור האתחול  N והמסר  M אותו מחלקים ל- m לבלוקים בגודל  n סיביות, מרפדים באפסים את הבלוק האחרון אם נדרש. לצורך הכנה, תחילה מחשבים את  L על ידי הצפנה של מחרוזת אפסים עם צופן הבלוקים  E והמפתח  K ואז מחשבים ומאחסנים את הסדרה  L(-1),L,L(1),L(2),...,L(\mu ) כאשר  \mu =\left\lceil {\text{log}}_{2}m\right\rceil . אם אורך המסר אינו ידוע מראש אפשר לחשב ולאחסן מראש את הסדרה המתוארת עד לגבול העליון של מספר הבלוקים האפשריים עבור מפתח נתון. את הסדרה מחשבים בשיטה המתוארת לעיל, רקורסיה של כפל ב- x (הזזה ו-XOR מותנה). מחשבים את האופסט הראשון על ידי הצפנה של  L עם וקטור האתחול  E_{K}(N\oplus L) ולאחר מכן באופן רקורסיבי מחשבים את כל האופסטים באמצעות הנוסחה  {\text{Offset}}={\text{Offset}}\oplus L({\text{ntz}}(i)) עבור  i=1,...,m-1. באמצעות צופן בלוקים מצפינים כל בלוק כשהוא מחובר עם האופסט המתאים ב-XOR פעמיים, לפני ואחרי ההצפנה כדי לקבל את הטקסט המוצפן  C. מחשבים את הבלוק האחרון שהוא הצפנה של אורך המסר עם האופסט המתאים, מחשבים את סכום הביקורת אותו מצפינים באמצעות צופן הבלוקים עם האופסט המתאים. מוסיפים הצפנה של הבלוק האחרון עם קידוד של אורך המסר וכן האופסט האחרון. את תג האימות מחשבים על ידי XOR של כל הבלוקים יחד עם הבלוק המוצפן האחרון והצפנתם.  \tau  הסיביות הראשונות של תוצאת ההצפנה האחרונה הן תג האימות  T שמצורף ל- C. תיאור הפענוח דומה. תחילה מבצעים את אותם פעולות הכנה כמו בתהליך ההצפנה. מפענחים את כל הבלוקים המוצפנים כשהם מחוברים ב-XOR עם האופסט המתאים ומחשבים את הבלוק האחרון ותג האימות  T' אותו משווים עם  T שהתקבל מהשולח. אם כל הערכים נכונים האלגוריתם מחזיר את  M, אם אחד מהערכים שגוי האלגוריתם מחזיר  {\text{INVALID}}.
הצפנה מאומתת > ביטחון

OCB נחשב בטוח לפי הגדרות שנהגו לראשונה ב-1984 על ידי מיקלי וגולדווסר בשם ביטחון סמנטי וכן על ידי בלייר ורוגווי ב-1997 ובשנת 2000. תאורטית זיוף תג אימות באופן כללי יכול להצליח בסיבוכיות של  1/2^{\tau }. מעבר לזה, ככל שמוצפנים בלוקים נוספים כמות המידע שעומדת לרשות התוקף גדלה באופן יחסי עד  1.5\sigma ^{2}/2^{n}. כאשר  \sigma  מייצג את מספר הבלוקים. כך שאם  \sigma  קטן OCB יהיה בטוח בהנחה שצופן הבלוקים בטוח. במילים אחרות מצב ההפעלה אינו גורע מביטחון הצופן אלא בשיעור נמוך שצפוי לפחות מכל מצב הפעלה אחר. איבוד הביטחון הנובע מהגדרה זו מביא למסקנה שצופן הבלוקים צריך להיות לפחות 128 סיביות כדי להגיע לרמת ביטחון ראויה לצורך מעשי. לצורך המחשה, אם תג האימות הוא 64 סיביות ולתוקף גישה ל- 2^{40} בתים מוצפנים שהוא בחר ושהוצפנו עם אותו מפתח. הסיכויים שלו להצליח לייצר מסר מזויף עם תג אימות תקף ללא ידיעת המפתח כאשר גודל הבלוק הוא 128, הם בערך  1.5(2^{40-4})^{2}/2^{128}+2^{-64}<2^{-55}. בניסוח פורמלי בהינתן יריב בעל עוצמת חישוב מוגבלת וכן שיש לו גישה לאורקל והוא מסוגל להגיש  q שאילתות שבסך הכול מסתכמות ב- \sigma  בלוקים ואז מנסה לזייף מסר מסוים תוך  c ניסיונות, יהי  {\bar {\sigma }}=\sigma +2q+5c+11, ביטחון שלב האימות של האלגוריתם יהיה
ביטחון שלב הסודיות באלגוריתם מוגדר על ידי
{\text{Adv}} הוא היתרון של היריב המנסה לתקוף את המערכת.  {\text{Perm}} מייצג פרמוטציה (PRP). והסימן  {\text{auth}} מייצג את חלק האימות ואילו  {\text{priv}} הוא הסודיות.
רוגווי הרחיב את אלגוריתם OCB כדי לכלול גם אימות של מידע גלוי נלווה. הבעיה של אימות מידע נלווה לצופן מסומנת בקיצור AEAD - הצפנה מאומתת עם מידע נלווה. הרעיון הוא שלעיתים מתעורר הצורך להצפין מידע באופן מאומת וכן לצרף אליו מידע כלשהו הקשור לטקסס המוצפן שאמור להיות גלוי, אך רצוי שיהיה מאומת בדרך כלשהי ורצוי שלא יגרום לטקסט המוצפן לגדול.
ב-2002 פרסם ניילס פרגוסון התקפת התנגשויות כנגד OCB המכוונת נגד שלב האימות. ההתקפה מאלצת להגביל את כמות המידע שניתן לאימות עם מפתח יחיד לרמה של 64GB. והוא ממליץ שלא להשתמש במצב הפעלה זה.
פסאודו-קוד

| --- | --- |
  {\boldsymbol {{\textbf {OCB1-ENCRYPT}}(K,N,A,P)}}  R=E_{K}(0^{128})  L=R\cdot x  L_{0}=L\cdot x  {\text{For }}i=1{\text{ to }}m{\text{ do: }}L_{i}=L_{i-1}\cdot x   \color {blue}{\mathit {m\ is\ the\ largest\ integer\ so\ that\ 128m\leq |P|}}  P=P_{1}\ \|\ P_{2}\ \|\ ...\ \|\ P_{m}\ \|\ P_{*}  \color {blue}{\mathit {(Note:\ P_{*}\ may\ possibly\ be\ empty)}}   {\text{Nonce}}={\text{num2str}}({\text{TAGLEN mod }}128,7)\ \|\ 0^{120-|N|}\ \|\ 1\ \|\ N  {\text{bottom}}={\text{str2num}}({\text{Nonce}}_{123\ {\text{to}}\ 128})  {\text{Ktop}}=E_{K}({\text{Nonce}}_{1\ ..\ 122}||0^{6})  {\text{Stretch}}={\text{Ktop}}\ \|\ ({\text{Ktop}}_{1..64}\oplus {\text{Ktop}}_{9..72})  {\text{offset}}={\text{Stretch}}_{1+{\text{bottom}}\ {\text{to}}\ 128+{\text{bottom}}}  {\text{checksum}}=0   {\text{For }}i=1{\text{ to }}m{\text{ do:}}  {\text{offset}}={\text{offset}}\oplus L_{{\text{ntz}}(i)}  C_{i}={\text{offset}}\oplus E_{K}(P_{i}\oplus {\text{offset}})  {\text{checksum}}={\text{checksum}}\oplus P_{i}   \color {blue}{\mathit {Process\ any\ final\ partial\ block\ and\ compute\ raw\ tag}}  {\text{offset}}={\text{offset}}\oplus R  {\text{Pad}}=E_{K}({\text{offset}})  C_{*}=P_{*}\oplus {\text{Pad}}_{1\ {\text{to}}\ |P_{*}|}  {\text{checksum}}={\text{checksum}}\oplus (P_{*}\ \|\ 1\ \|\ 0^{127-|P_{*}|})  {\text{Tag}}=E_{K}({\text{checksum}}\oplus {\text{offset}}\oplus L)\oplus {\text{HASH}}(K,A)   {\text{Return: }}C_{1}\ \|\ C_{2}\ \|\ ...\ \|\ C_{m}\ \|\ C_{*}\ \|\ {\text{Tag}}_{1\ {\text{to}}\ {\text{TAGLEN}}}:   {\boldsymbol {{\textbf {hash}}(A,K)}}  {\text{sum}}=0  {\text{offset}}=0  R=E_{K}(0^{128})  L=R\cdot x  L_{0}=L\cdot x  {\text{For }}i=1{\text{ to }}m{\text{ do: }}L_{i}=L_{i-1}\cdot x  \color {blue}{\mathit {m\ is\ the\ largest\ integer\ so\ that\ 128m\leq |A|}}  A=A_{1}\ \|\ A_{2}\ \|\ ...\ \|\ A_{m}\ \|\ A_{*}  \color {blue}{\mathit {(Note:\ A_{*}\ may\ possibly\ be\ empty)}}  {\text{For }}i=1{\text{ to }}m{\text{ do: }}  {\text{offset}}={\text{offset}}\oplus L_{{\text{ntz}}(i)}  {\text{sum}}={\text{sum}}\oplus E_{K}(A_{i}\oplus {\text{offset}})  \color {blue}{\mathit {(process\ final\ partial\ block)}}  {\text{offset}}={\text{offset}}\oplus R  {\text{sum}}={\text{sum}}\oplus E_{K}(A_{*})  {\text{Return }}sum ‎ ‎ ‎  {\textbf {OCB1-DECRYPT}}(K,N,A,C)  \color {blue}{\mathit {(process\ OCB-ENCRYPT\ and\ then:)}}  {\text{If Tag}}_{(1\ {\text{to}}\ {\text{TAGLEN}})}=T\ {\text{then return }}P  {\text{else return }}{\textbf {INVALID}}
OCB2

החסרונות העיקריים ב-OCB הם המחיר של הצפנה נוספת בתהליך ההכנה וכן חישובי האופסטים שדורשים זמן ביצוע לא קבוע. בגרסת OCB2 מ-2004 מוצע פתרון אחר המבוסס על צופן בלוקים בר התאמה להלן תיאור האלגוריתם:
| --- | --- |
  \mathbf {OCB2.Encrypt} {\boldsymbol {_{K}^{N}(M,\tau )}}  {\text{Let }}M=M[1],M[2],...,M[m]  {\text{For }}i\in [1..m-1]{\text{ do }}C[i]\leftarrow {\boldsymbol {\pi }}_{i}^{N}(M[i])  {\text{Pad}}\leftarrow \pi _{m}^{N}({\text{len}}(M[m]))  C[m]\leftarrow M[m]\oplus {\text{Pad}}  C\leftarrow C[1],C[2],...,C[m]  \Sigma \leftarrow M[1]\oplus \cdots \oplus M[m-1]\oplus C[m]0^{*}\oplus {\text{Pad}}  {\text{Tag}}\leftarrow {\bar {\pi }}_{m}^{N}(\Sigma )  T\leftarrow {\text{Tag}}[{\text{first }}\tau {\text{ bits}}]  {\text{return }}{\mathcal {C}}=C\ \|\ T:   \mathbf {OCB2.Decrypt} {\boldsymbol {_{K}^{N}}}({\boldsymbol {\mathcal {C}}},\tau )  {\text{Let }}{\mathcal {C}}=C[1],C[2],...,C[m],T  {\text{For }}i\in [1..m-1]{\text{ do }}M[i]\leftarrow ({\boldsymbol {\pi }}_{i}^{N})^{-1}(C[i])  {\text{Pad}}\leftarrow \pi _{m}^{N}({\text{len}}(M[m]))  M[m]\leftarrow C[m]\oplus {\text{Pad}}  M\leftarrow M[1],M[2],...,M[m]  \Sigma \leftarrow M[1]\oplus \cdots \oplus M[m-1]\oplus C[m]0^{*}\oplus {\text{Pad}}  {\text{Tag}}\leftarrow {\bar {\pi }}_{m}^{N}(\Sigma )  T'\leftarrow {\text{Tag}}[{\text{first }}\tau {\text{ bits}}]  {\text{if }}T=T'{\text{ then return }}M{\text{ else return INVALID}}
{\text{OCB2}}[{\tilde {E}},\tau ] עם צופן בלוקים בר התאמה  {\tilde {E}}:{\mathcal {K}}\times {\mathcal {T}}\times \{0,1\}^{n}\rightarrow \{0,1\}^{n}  המקבל tweak המסומן  {\mathcal {T}}=\{0,1\}\times \{0,1\}^{n}\times [1..2^{n/2}]\times \{0,1\} (סיבית תחילית, ערך בטווח הרצוי וסיבית סופית) ומייצר בנוסף תג אימות באורך  \tau \in [0..n]. למען הפשטות באלגוריתם המתואר הסימן  {\boldsymbol {\pi }}_{i}^{N} (כאשר ה- \pi  מודגש) מייצג צופן בלוקים בר התאמה  {\tilde {E}}_{K}^{1\ N\ i\ 0}  שבו ה-tweak מורכב מטווח ערכים המיוצג על ידי  N בנוסף ל-'1' מוביל, המונה  i ו-'0' מסיים באותו אופן  \pi _{i}^{N} מתאים ל- {\tilde {E}}_{K}^{0\ N\ i\ 0} והאחרון  {\bar {\pi }}_{i}^{N} מתאים ל- {\tilde {E}}_{K}^{0\ N\ i\ 1}. ההבדלים בין הגרסאות הם בסיבית הפותחת והמסיימת.
ראו גם

CCM
GCM
מצב הפעלה של צופן בלוקים
הערות שוליים

↑  OCB: Documentation
↑  MODES DEVELOPMENT
↑  The OCB Authenticated-Encryption Algorithm
↑  Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC
↑  The Software Performance of Authenticated-Encryption Modes
N95 (שיר)

N95 הוא סינגל של הראפר האמריקאי קנדריק לאמאר. השיר יצא לרדיו אירפליי האיטלקי ב-20 במאי 2022, על ידי חברות התקליטים PGLang, טופ דואוג אנטרטיינמנט, אפטרמת' אנטרטיינמנט ואינטרסקופ רקורדס, כסינגל המוביל מתוך אלבום האולפן החמישי שלו, Mr. Morale & the Big Steppers. השיר הופק על ידי בוי-1דה, סאנווייב וג'האן סוויט, וכולל הפקה נוספת של בן דודו של לאמאר, הראפר בייבי קים.
מגזין התרבות סלייט הכתיר את השיר לאחד מהשירים המובילים לשנת 2022 ברשימת הסיכום המוזיקה שלהם.
הרכב ומילים

"N95" תואר כ"ביקורת תרבותית בוערת בה לאמאר יורק מרה לכיוונים מרובים על אינסטרומנטל קליט מונע בס". מבחינה לירית, לאמאר מראפרפ על בגדים יקרים בתור "מסכות" ולא על מסכה בתקן N95 שהייתה בשימוש במהלך מגפת הקורונה, בזמן שהוא אומר "Take all that designer bullshit off and what do you have? Bitch you ugly as fuck" ("תוריד את כל השטויות של המעצבים ומה יש לך? כלב, אתה מכוער ממש"). כמו גם, בשיר לאמאר יוצא, בין השאר, על תרבות הביטול. במהלך הבית השני של השיר, לאמאר משתמש בוורס שנועד במקור עבור "Vent", שיר באלבומו של בן דודו בייבי קים, The Melodic Blue משנת 2021, שלבסוף לא כלל את הוורס.
וידאו קליפ

הווידאו קליפ צולם בספטמבר 2020, והופץ ב-14 במאי 2022 בערוץ היוטיוב של לאמאר, יום לאחר צאת Mr. Morale & the Big Steppers. הקליפ בוים על ידי לאמאר עצמו ודייב פרי.
מיקומי שיא

|   ‏‏‏  מצעדים ודירוגים (2022)> מדינה |   ‏‏‏  מצעדים ודירוגים (2022)> מצעד |   ‏‏‏  מצעדים ודירוגים (2022)> מיקום שיא |   ‏‏‏  מצעדים ודירוגים (2022)>  |
| --- | --- | --- | --- |
|  עולמי | בילבורד גלובל 200 | 2 |  |
|  אוסטריה | Ö3 אוסטריה טופ 40‏ | 21 |  |
|  אוסטרליה | מצעד הסינגלים האוסטרלי | 3 |  |
|  איסלנד | הפלייליסט | 10 |  |
|  אירלנד | מצעד הסינגלים האירי | 4 |  |
|  ארצות הברית | בילבורד הוט 100 | 3 |  |
|  ארצות הברית | מצעד שירי ה-R&B/היפ-הופ | 2 |  |
|  דנמרק | היטליסטן | 12 |  |
|  הולנד | מצעד 40 הסינגלים ההולנדיים | 26 |  |
|  הממלכה המאוחדת | מצעד הסינגלים הבריטי | 6 |  |
|  ליטא | AGATA | 12 |  |
|  נורווגיה | VG-lista | 21 |  |
|  ניו זילנד | המצעד הניו זילנדי הרשמי | 2 |  |
|  סינגפור | RIAS | 20 |  |
|  סלובקיה | ČNS IFPI | 13 |  |
|  פורטוגל | מצעד הסינגלים הפורטוגזי | 6 |  |
|  צ'כיה | ČNS IFPI | 42 |  |
|  צרפת | SNEP | 24 |  |
|  קנדה | קנדה הוט 100 | 2 |  |
|  קרואטיה | טופ ליסטה | 16 |  |
|  שוודיה | סוורייטופליסטן | 22 |  |
|  שווייץ | המצעד השווייצרי | 6 |  |