מבנים אלגבריים למדעי המחשב - ארז שיינר: הבדלים בין גרסאות בדף

מתוך Math-Wiki
שורה 15: שורה 15:
*<math>\mathbb{Z},\mathbb{Z}_n,{GL}_n,{SL}_n,S_n</math>.
*<math>\mathbb{Z},\mathbb{Z}_n,{GL}_n,{SL}_n,S_n</math>.
*תת חבורות; קווטרניונים, מעגל היחידה ושורשי יחידה, המרוכבים ללא אפס כתת חבורה של מטריצות ממשיות בגודל 2 על 2.
*תת חבורות; קווטרניונים, מעגל היחידה ושורשי יחידה, המרוכבים ללא אפס כתת חבורה של מטריצות ממשיות בגודל 2 על 2.
*תנאי מקוצר לבדיקת תת חבורה.
 
 
*תת קבוצה H של חבורה G הינה תת חבורה אם ורק אם מתקיימים שני התנאים הבאים:
**<math>e_G\in H</math>.
**לכל שני איברים <math>a,b\in H</math> מתקיים כי <math>ab^{-1}\in H</math>.
 
 
*כתיב אקספוננט <math>g^n=g\cdots g</math> או כפל <math>ng=g+\cdots+g</math> בהתאם לסימון פעולת החבורה.
*כתיב אקספוננט <math>g^n=g\cdots g</math> או כפל <math>ng=g+\cdots+g</math> בהתאם לסימון פעולת החבורה.
*סדר של איבר, תת חבורה ציקלית, סדר האיבר הוא גודל החבורה הציקלית.
*סדר של איבר, תת חבורה ציקלית, סדר האיבר הוא גודל החבורה הציקלית.


===הרצאה 3 חבורת תמורות, סימן התמורה; פרק 5 מ[http://abstract.ups.edu/aata/ הספר] ===
===הרצאה 3 חבורת תמורות, סימן התמורה; פרק 5 מ[http://abstract.ups.edu/aata/ הספר] ===

גרסה מ־17:18, 7 בדצמבר 2017

ספר הקורס

ההרצאות מבוססות באופן כללי על הספר Abstarct Algebra - Theory and Applications by Thomas W. Judson

נושאי ההרצאות

הרצאה 1 הקדמה; הסבר על קידוד והצפנה, מבוא למבנים אלגבריים

  • קידוד הוא שיטה להעברת מידע ובין היתר מטרתו היא להבטיח את נכונות המידע ולזהות (ולתקן) שגיאות.
  • הצפנה היא שיטה להסתרת מידע במקום בו כולם רואים את התוכן המועבר, דרך להבטיח מי הוא מקור המידע (חתימה) ודרך להבטיח את אמינות המידע (ללא חוסרים וללא שינויים).
  • המבנים האלגבריים שאנו עוסקים בהם בקורס הם חבורה, חוג ושדה.


הרצאה 2 חבורות ותת חבורות; פרקים 3,4 מהספר

  • תזכורת לגבי חבורות, תכונת הצמצום.
  • [math]\displaystyle{ \mathbb{Z},\mathbb{Z}_n,{GL}_n,{SL}_n,S_n }[/math].
  • תת חבורות; קווטרניונים, מעגל היחידה ושורשי יחידה, המרוכבים ללא אפס כתת חבורה של מטריצות ממשיות בגודל 2 על 2.


  • תת קבוצה H של חבורה G הינה תת חבורה אם ורק אם מתקיימים שני התנאים הבאים:
    • [math]\displaystyle{ e_G\in H }[/math].
    • לכל שני איברים [math]\displaystyle{ a,b\in H }[/math] מתקיים כי [math]\displaystyle{ ab^{-1}\in H }[/math].


  • כתיב אקספוננט [math]\displaystyle{ g^n=g\cdots g }[/math] או כפל [math]\displaystyle{ ng=g+\cdots+g }[/math] בהתאם לסימון פעולת החבורה.
  • סדר של איבר, תת חבורה ציקלית, סדר האיבר הוא גודל החבורה הציקלית.

הרצאה 3 חבורת תמורות, סימן התמורה; פרק 5 מהספר

  • הגדרת סימן של תמורה לפי חלוקת פולינומים, הוכחת כפליות הסימן.
  • הצגת תמורה כמחזורים זרים, הצגת מחזורים כהרכבה של חילופים, סימן חילוף הוא שלילי.


הרצאה 4 הומומורפיזמים, איזומורפיזמים, משפט קיילי, משפט לגראנג'; פרקים 9 ו6 מהספר

  • הומומורפיזמים, איזומורפיזמים.
  • תמונה של הומומורפיזם היא תת חבורה.
  • משפט קיילי- כל חבורה איזומורפית לתת חבורה של חבורת תמורות.


  • תת חבורה מחלקת חבורה למחלקות שקילות (קוסטים) שוות בגודלן לגודל תת החבורה.
  • אינדקס תת החבורה הוא מספר מחלקות השקילות שהיא מייצרת בחבורה, וזה בדיוק גודל החבורה חלקי גודל תת החבורה (משפט לגראנג').
  • בחבורה סופית, לכל איבר יש סדר סופי ותת חבורה צקלית בגודל סדר האיבר. לכן סדר כל איבר מחלק את גודל החבורה.
  • חבורה מגודל ראשוני חייבת להיות ציקלית, וכל איבר פרט לאיבר היחידה יוצר אותה.


  • לפני הרצאה זו, חזרו בבקשה על הנושא של יחסי שקילות. ניתן לצפות בסרטון הבא:


הרצאה 5 חבורת אוילר, משפטי אוילר ופרמה; פרק 6 מהספר

  • זוג מספרים שלמים [math]\displaystyle{ a,b }[/math] נקראים שקולים מודולו n אם קיים שלם [math]\displaystyle{ q }[/math] כך ש [math]\displaystyle{ a=b+q\cdot n }[/math]
  • חלוקה עם שארית: לכל מספר טבעי a ולכל מספר שלם b קיים זוג שלמים יחיד [math]\displaystyle{ q,r }[/math] כך ש [math]\displaystyle{ b=q\cdot a+r }[/math] וגם [math]\displaystyle{ 0\leq r \lt a }[/math].
  • המספר q נקרא מנת החלוקה והמספר r נקרא שארית החלוקה.
  • יהיו שני טבעיים [math]\displaystyle{ a,b }[/math] ויהיו [math]\displaystyle{ r_a,r_b }[/math] השאריות שלהם בחלוקה בn. אזי [math]\displaystyle{ ab\equiv r_ar_b \mod n }[/math]


  • לכל שני מספרים טבעיים [math]\displaystyle{ k\lt n }[/math] מתקיים כי [math]\displaystyle{ gcd(n,k)=gcd(n-k,k) }[/math]
  • לכל שני מספריים טבעיים [math]\displaystyle{ n,k }[/math] קיימים מספרים שלמים [math]\displaystyle{ a,b }[/math] כך ש [math]\displaystyle{ an+bk=gcd(n,k) }[/math]
  • (הוכחה באינדוקציה על הגודל של n+k. אם n=k סיימנו, אחרת אם [math]\displaystyle{ k\lt n }[/math] אזי [math]\displaystyle{ gcd(n,k)=gcd(n-k,k)=a(n-k)+bk=an+(b-a)k }[/math])


  • שני מספרים טבעיים n,k נקראים זרים אם [math]\displaystyle{ gcd(n,k)=1 }[/math]
  • ב[math]\displaystyle{ \mathbb{Z}_n }[/math] עם פעולת הכפל מודולו n האיברים ההפיכים הם בדיוק המספרים הזרים ל n.
  • עבור מספר טבעי [math]\displaystyle{ 1\lt n }[/math] קבוצת המספרים הטבעיים הזרים לn וקטנים ממנו מהווה חבורה ביחס לכפל מודולו n, היא נקראית חבורת אוילר ומסומנת [math]\displaystyle{ U_n }[/math].
  • [math]\displaystyle{ \mathbb{Z}_n }[/math] עם פעולות חיבור וכפל מודולו n הוא שדה אם ורק אם n הינו מספר ראשוני.


  • פונקצית אוילר [math]\displaystyle{ \phi(n) }[/math] היא מספר המספרים הטבעיים שקטנים או שווים לn וזרים לו.
  • משפט אוילר - יהיו שני מספרים טבעיים זרים [math]\displaystyle{ a\lt n }[/math]. אזי [math]\displaystyle{ a^{\phi(n)}\equiv 1 }[/math] מודולו n.
  • המשפט הקטן של פרמה - יהי p ראשוני ומספר טבעי [math]\displaystyle{ a\lt p }[/math] אזי [math]\displaystyle{ a^{p-1}\equiv 1 }[/math] מודולו p.
  • בפרט, בתנאי המשפט, [math]\displaystyle{ a^p\equiv a }[/math] מודולו p.
  • למעשה התוצאה תקיפה לכל מספר טבעי [math]\displaystyle{ a }[/math], כיוון ש [math]\displaystyle{ a^{\phi(n)}\equiv r^{\phi(n)} \mod n }[/math], וגם השארית [math]\displaystyle{ r }[/math] זרה ל [math]\displaystyle{ n }[/math].


הרצאה 6 הצפנה סימטרית (מפתח פרטי), הצפנה אסימטרית (מפתח ציבורי), RSA; פרק 7 מהספר

  • הצפנה; העברת מידע בערוץ פומבי כך שרק המשתתפים בהצפנה יוכלו להבין אותו, הוכחה לזהות כותב המידע (בין היתר כותב המידע לא יוכל להתנער ממנו), הוכחה לאמינות המידע (המידע אינו חלקי ואף אחד לא שינה אותו).
  • הצפנה סימטרית - הצפנה בה לשני הצדדים יש סוד משותף שהעבירו מראש בערוץ שאינו פומבי (משאית ברינקס למשל).
  • הצפנה פומבית - הצפנה ללא סוד מתואם מראש, באמצעות מפתחות פומביים (שכולם רואים).
  • פרקטית הצדדים מעבירים מפתח סודי באמצעות הצפנה פומבית, ואז עוברים להצפנה סימטרית.


  • ההצפנה "המושלמת" - רצף בינארי אקראי באורך המידע המוסכם על שני הצדדים. ללא תלות במידע ובחוקיותו, חיבור בכל ביט (xor) של המידע עם הרצף ייצר תוכן שבו לכל ביט יש סיכוי שווה להיות 0 או 1.
  • אם הרצף קצר מהמידע וחוזר על עצמו, חיבור שתי חתיכות שנשלחו יאפס את הרצף הסודי וישאיר לנו שתי חתיכות מידע גלוי המחוברות (זה כמעט מידע חשוף).
  • קוד חילוף אותיות - נשבר ע"י חקר סטטיסטיקת שכיחות האותיות. אם המידע עובר תהליך שגורם לו להראות אקראי - עדיף
  • מטא דטא - מידע על המידע שעשוי לעניין אותנו:
    • אם רצף נשלח פעמיים, גם אם אין אנו יודעים מהו, ייתכן שנסיק מההקשר.
    • הזמן שבו נשלח מסר (אמצע הלילה למשל).
    • הזמן שלקח למכונה להצפין את המידע.
    • עצם העובדה ששני צדדים מסוימים מדברים (רוסיה ונציגי קמפיין לנשיאות ארה"ב).
    • אורך המידע (בהנחה שהוא אינו מרופד באפסים).

RSA

  • אליס בוחרת שני ראשוניים גדולים [math]\displaystyle{ \{p,q\} }[/math] זה הסוד שלה.
  • אליס מחשבת את המכפלה [math]\displaystyle{ n=p\cdot q }[/math]
  • אליס מחשבת את פונקצית אוילר [math]\displaystyle{ m=\phi(n)=(p-1)(q-1) }[/math]
  • (הסבר - המספרים שאינם זרים לn מחלקים את אחד הראשוניים. [math]\displaystyle{ p,2p,3p,...,q\cdot p }[/math] וגם [math]\displaystyle{ q,2q,3q,...,p\cdot q }[/math]. סה"כ [math]\displaystyle{ p+q-1 }[/math] כי [math]\displaystyle{ n=p\cdot q }[/math] נספר פעמיים.)
  • אליס בוחרת מספר כלשהו e כך שהוא זר לm.
  • אליס מחשבת את ההופכי של e מודולו m, נקרא לו d. היא יודעת לעשות את זה כיוון שהיא הקשיבה בהרצאה קודמת על gcd ומציאת הופכי.
  • אליס מפרסמת לכל העולם ואחותו את זוג המספרים [math]\displaystyle{ n,e }[/math]


  • כעת בוב מעוניין לשלוח לאליס מידע שרק היא תוכל לפענח.
  • בוב בעצם הולך "לנעול" את המידע באמצעות המנעול [math]\displaystyle{ e,n }[/math] של אליס. כל אחד יכול לנעול אותו, ורק אליס יודעת לפתוח אותו.
  • המידע שבוב מעוניין לשלוח הוא מספר [math]\displaystyle{ x\lt n }[/math], בוב שולח את המידע המוצפן [math]\displaystyle{ x^e\mod n }[/math]
  • אם בוב רוצה לשלוח יותר מידע, הוא יצטרך לפרק אותו לחתיכות. שימו לב שאם המנעול של אליס ישאר קבוע לחלוטין זה יהווה חולשה.


  • אליס מקבלת את המידע המוצפן ומפענחת אותו באופן הבא: [math]\displaystyle{ x=\left(x^e\right)^d \mod n }[/math]
  • הוכחה - נחלק לשני מקרים.
  • אם [math]\displaystyle{ gcd(x,n)=1 }[/math]:
    • נתון כי [math]\displaystyle{ de=km+1=k\phi(n)+1 }[/math].
    • [math]\displaystyle{ \left(x^e\right)^d=x^{de}=x^{k\phi(n)+1}=\left(x^{\phi(n)}\right)^k\cdot x\equiv x \mod n }[/math]
    • זה נכון כיוון שלפי משפט אוילר [math]\displaystyle{ x^{\phi(n)}\equiv 1 \mod n }[/math]
  • אם [math]\displaystyle{ gcd(x,n)\neq 1 }[/math]:
    • כיוון ש[math]\displaystyle{ n=p\cdot q }[/math] אז x הוא כפולה של p או q. נוכיח במקרה שx מתחלק בp.
    • קיים [math]\displaystyle{ h\lt q }[/math] עבורו [math]\displaystyle{ x=hp }[/math] וכמו כן x זר לq (אחרת בשני המקרים יוצא ש [math]\displaystyle{ x\geq n }[/math]).
    • לכן לפי פרמה הקטן יוצא ש [math]\displaystyle{ x^{q-1}\equiv 1 \mod q }[/math]
    • לכן [math]\displaystyle{ x^{km}=x^{k(p-1)(q-1)}=\left(x^{q-1}\right)^{k(p-1)}\equiv 1 \mod q }[/math]
    • לכן [math]\displaystyle{ x^{de}=x^{km+1}=x^{km}x=(1+tq)x=x+tqhp=x+th\cdot n\equiv x \mod n }[/math]


  • שימו לב: אמנם [math]\displaystyle{ 4\equiv 3 \mod 1 }[/math] אך [math]\displaystyle{ 2^4 \not\equiv 2 \mod 3 }[/math] כלומר לחשב את ההופכי של e מוד n זה אמנם קל, אך לא יעיל לשום דבר...


הרצאה 7 המשך הצפנה - בדיקת ראשוניות, דיפי הלמן, חתימה, חישוב חזקות;

שיטת מילר-רבין לבדיקת ראשוניות

  • חלק מהותי בשיטות שאנו לומדים הוא מציאת ראשוניים גדולים. כיצד הדבר נעשה? האם יש רשימה גדולה של כל הראשוניים בעולם?
  • ידוע שכמות הראשוניים עד המספר [math]\displaystyle{ n }[/math] היא בערך [math]\displaystyle{ \frac{n}{\ln(n)} }[/math].
  • לכן הסיכוי בבחירת מספר אקראי עד [math]\displaystyle{ n }[/math] שהוא יהיה ראשוני הוא בערך [math]\displaystyle{ \frac{1}{\ln(n)} }[/math].
  • אנו זקוקים למבחן ראשוניות - נגריל מספרים אקראיים ונבדוק האם הם ראשוניים, ומהר מאד נמצא אחד כזה בהתחשב בסיכוי הנ"ל.
  • זכרו שפירוק לגורמים ראשוניים היא בעייה קשה (אחרת RSA מיותר ממילא).


  • לפי משפט פרמה הקטן, אם [math]\displaystyle{ p }[/math] ראשוני, אזי לכל [math]\displaystyle{ a\lt p }[/math] מתקיים [math]\displaystyle{ a^{p-1}\equiv 1 \mod p }[/math].
  • האם ההפך נכון? כלומר, האם [math]\displaystyle{ a^{p-1}\equiv 1 \mod p }[/math] רומז ש[math]\displaystyle{ p }[/math] ראשוני?
  • מספרי קרמייקל מקיימים את התכונה הזו כמעט לכל [math]\displaystyle{ a }[/math] למרות שאינם ראשוניים.


  • טענה: אם [math]\displaystyle{ p }[/math] ראשוני, ו[math]\displaystyle{ x\in U_p }[/math] איבר כך ש [math]\displaystyle{ x^2=1 }[/math] אזי [math]\displaystyle{ x=\pm 1 }[/math]
  • הוכחה:
    • נזכור ש[math]\displaystyle{ U_p }[/math] הוא שדה כיוון שמדובר במספר ראשוני, ולכן אין בו מחלקי אפס.
    • [math]\displaystyle{ x^2=1 }[/math] אם"ם [math]\displaystyle{ (x-1)(x+1)=0 }[/math] אם"ם [math]\displaystyle{ x=\pm 1 }[/math]


  • בהנתן מספר [math]\displaystyle{ p }[/math] נתאר מבחן הסתברותי הבודק האם הוא ראשוני
    • נבחר מספר [math]\displaystyle{ 1\lt a\lt p }[/math].
    • אם [math]\displaystyle{ a,p }[/math] אינם זרים, אז [math]\displaystyle{ p }[/math] אינו ראשוני בוודאות וסיימנו.
    • אחרת, לפי משפט פרמה הקטן [math]\displaystyle{ a^{p-1}\equiv 1 \mod p }[/math].
    • המספר [math]\displaystyle{ p-1 }[/math] הוא זוגי (ביננו, אף אחד לא יבדוק האם [math]\displaystyle{ p=2 }[/math] ראשוני).
    • נחלק את [math]\displaystyle{ p-1 }[/math] ב2 שוב ושוב עד שנגיע למספר אי זוגי r ולכן [math]\displaystyle{ p-1=2^s\cdot r }[/math]
    • כעת נביט במספר [math]\displaystyle{ a^r \mod p }[/math], ידוע שאם נעלה אותו בריבוע s פעמים נקבל 1 (אם p ראשוני כמובן).
    • כלומר אם נעלה אותו בריבוע שוב ושוב נקבל את סדרת המספרים [math]\displaystyle{ a^r,a^{2r},a^{4r},...,a^{2^s\cdot r} }[/math] (מוד p כמובן).
    • אם אחד האיברים בסדרה אינו [math]\displaystyle{ \pm 1 }[/math] והבא אחריה הוא כן 1, סימן ש[math]\displaystyle{ p }[/math] אינו ראשוני בוודאות וסיימנו.
    • אם אף אחד מהחזקות אינה 1 סימן ש[math]\displaystyle{ p }[/math] אינו ראשוני בוודאות וסיימנו.
    • אחרת [math]\displaystyle{ a }[/math] הינו עד חזק לראשוניות של [math]\displaystyle{ p }[/math].


  • אם [math]\displaystyle{ p }[/math] ראשוני אזי כל המספרים [math]\displaystyle{ 1\lt a\lt p }[/math] הם עדים חזקים לכך.
  • אם [math]\displaystyle{ p }[/math] אינו ראשוני, ידוע שלכל היותר רבע מבין המספרים [math]\displaystyle{ a }[/math] יכולים להיות עדים חזקים.
  • לכן הסיכוי שמצאנו עד חזק למרות שהמספר שאנו בודקים אינו ראשוני הוא רבע.
  • אם נבחן k מספרים אקראיים שונים, הסיכוי שכולם יהיו עדים חזקים אך המספר אינו ראשוני הוא [math]\displaystyle{ \frac{1}{4^k} }[/math] (נמוך מאד).

דיפי-הלמן

  • למדנו שבעזרת RSA ניתן להעביר פיסת מידע באופן בטוח בערוץ פומבי, ולרוב נרצה להעביר מפתח סודי לצורך הצפנה סימטרית.
  • אלגוריתם דיפי-הלמן הוא שיטה לתיאום מפתח סודי בלבד ולא להעברת מידע.


  • אליס ובוב מתאמים מספר ראשוני גדול [math]\displaystyle{ p }[/math] שאינו סודי כמובן.
  • כמו כן הם מתאמים יוצר [math]\displaystyle{ g }[/math] של [math]\displaystyle{ U_p }[/math] (כלומר [math]\displaystyle{ U_p=\lt g\gt }[/math]), או לפחות איבר מסדר מאד גדול.
  • כעת אליס בוחרת מספר אקראי סודי [math]\displaystyle{ a\leq p-1 }[/math] ושולחת לבוב את [math]\displaystyle{ g^a \mod p }[/math].
  • בוב בוחר מספר אקראי סודי [math]\displaystyle{ b\leq p-1 }[/math] ושולח לאליס את [math]\displaystyle{ g^b \mod p }[/math].
  • כעת אליס ובוב שניהם יכולים לחשב בקלות את הסוד המשותף [math]\displaystyle{ g^{ab} }[/math].


  • על מנת לשבור את ההצפנה צריך לחשב את [math]\displaystyle{ a }[/math] בהנתן [math]\displaystyle{ g^a \mod p }[/math], זו בעיית הלוגריתם הדיסקרטי שנחשבת לקשה.
  • אם [math]\displaystyle{ g }[/math] מסדר נמוך חישוב כל החזקות האפשריות שלו הוא קל.
  • גישה פרקטית למשל:
    • נבחר את p להיות מספר ראשוני "בטוח", כלומר [math]\displaystyle{ p=2q+1 }[/math] כאשר [math]\displaystyle{ q }[/math] ראשוני.
    • כעת ב[math]\displaystyle{ |U_p|=2q }[/math] ולכן הסדר של כל איבר ב[math]\displaystyle{ U_p }[/math] הוא אחד מבין [math]\displaystyle{ 1,2,q,2q }[/math].
    • נגריל איבר [math]\displaystyle{ g\neq 1 }[/math] כך ש[math]\displaystyle{ g^2\not\equiv 1 \mod p }[/math] וגם [math]\displaystyle{ g^q\not\equiv 1 \mod p }[/math].
    • האיבר שבחרנו הוא יוצר.

חתימה

  • פונקציות גיבוב (hash) - מעבירות קלט בגודל אקראי לקלט באורך קבוע.
  • התנגשות היא מצב בו שני קלטים מובילים לאותו ערך מגובב. לפי שובך היונים התנגשויות קיימות, אך בפונקציות גיבוב "טובות" הסיכוי לכך נמוך מאד.
  • סיפרנו על אליס שייצרה מפתח פומבי [math]\displaystyle{ (n,e) }[/math], ושמרה לעצמה את הערכים הסודיים [math]\displaystyle{ m,d }[/math]
  • כעת בוב שרוצה לשלוח לה מידע ולהבטיח את זהותו ואת אמינות המידע, מייצר באופן דומה מפתח פומבי [math]\displaystyle{ (n',e') }[/math] ושומר ערכים סודיים [math]\displaystyle{ m',d' }[/math]
  • בוב מעביר את המידע שלו דרך פונקצית גיבוב ומקבל את הערך המגובב [math]\displaystyle{ a }[/math]
  • בוב מחשב את [math]\displaystyle{ y=a^{d'} \mod n' }[/math] ושולח לאליס בנוסף למידע.
  • אפילו בהנתן [math]\displaystyle{ a }[/math] לא ניתן לחשב את [math]\displaystyle{ d' }[/math] (זו בעיית הלוגריתם הדיסקרטי).
  • אף אחד אחר לא יכול לחשב את y כיוון ש [math]\displaystyle{ d' }[/math] סודי.


  • כעת אליס מחשבת את [math]\displaystyle{ a=y^{e'} \mod n' }[/math] ומוודאת כי המידע שהיא קיבלה הוא המידע שבוב התכוון לשלוח עד כדי המקרה הבלתי סביר של התנגשות.
  • אף אחד אחר לא יכל ליצור את הוכחת אמינות המידע הזו פרט לבוב.


  • שימו לב שעל מנת למנוע תקיפת 'אדם באמצע' באמצעות חתימה המפתחות הפומביים צריכים להיות מאומתים על פני ערוץ מאובטח (מקודדים בתוך הדפדפן למשל).

חישוב חזקה

  • שיטת הריבועים החוזרים לחישוב חזקה.
  • לדוגמא, אנו מעוניינים לחשב את [math]\displaystyle{ x^{41} \mod n }[/math] במעט פעולות
    • [math]\displaystyle{ 41=2^5+2^3+1 }[/math]
    • [math]\displaystyle{ x^{41}=x^{2^5}\cdot x^{2^3}\cdot x }[/math]
    • [math]\displaystyle{ x^{41}=\left(\left(\left(\left(x^2\right)^2\right)^2\right)^2\right)^2\cdot \left(\left(x^2\right)^2\right)^2 \cdot x }[/math]
    • סה"כ חישבנו את החזקה עם 8 העלאות בריבוע, ושלוש הכפלות, במקום 41 הכפלות.


הרצאות 8-9 משפט האיזומורפיזם; פרקים 10,11 מהספר

  • תהי חבורה G ותהי תת חבורה N. תת החבורה N נקראת נורמלית אם לכל [math]\displaystyle{ a\in G }[/math] מתקיים כי [math]\displaystyle{ aN=Na }[/math].
  • ברור שבחבורה אבלית כל חבורה היא תת חבורה נורמלית.
  • דוגמא:
    • נביט בחבורה הסימטרית [math]\displaystyle{ G=S_3 }[/math] ובתת החבורה [math]\displaystyle{ N=\lt (1\ 2)\gt =\{(1),(1\ 2)\} }[/math].
    • אזי [math]\displaystyle{ (1\ 3)N=\{(1\ 3), (3\ 1\ 2)\} }[/math] אך [math]\displaystyle{ N(1\ 3)=\{(1\ 3),(2\ 1\ 3)\} }[/math] וקל לראות כי [math]\displaystyle{ (1\ 3)N\neq N(1\ 3) }[/math].
    • אזי N תת חבורה לא נורמלית!


  • טענה תהי N תת חבורה נורמלית אזי [math]\displaystyle{ (aN)(bN)=abN }[/math]
  • הוכחה - הכלה דו כיוונית:
    • יהי [math]\displaystyle{ anbk\in (aN)(bN) }[/math] כיוון ש [math]\displaystyle{ bN=Nb }[/math] אזי [math]\displaystyle{ anbk=abmk\in abN }[/math].
    • יהי [math]\displaystyle{ abn\in abN }[/math] כיוון ש [math]\displaystyle{ bN=Nb }[/math] אזי [math]\displaystyle{ abn=amb=ambe\in (aN)(bN) }[/math].


  • תהיינה G חבורה וN תת חבורה נורמלית, אזי [math]\displaystyle{ G/N=\{aN|a\in G\} }[/math] היא חבורה.


  • יהי הומומורפיזם בין חבורות [math]\displaystyle{ \varphi:G\to H }[/math]. נגדיר את הגרעין [math]\displaystyle{ \ker(\varphi)=\{a\in G|\varphi(a)=e_H\} }[/math].
  • הגרעין הוא תת-חבורה נורמלית של [math]\displaystyle{ G }[/math].
  • הוכחה - נסמן [math]\displaystyle{ K=\ker(\varphi) }[/math]:
    • ראשית עלינו להוכיח שמדובר בתת-חבורה: אכן [math]\displaystyle{ e_G\in K }[/math] ואם [math]\displaystyle{ a,b\in K }[/math] אז [math]\displaystyle{ \varphi(ab^{-1})=\varphi(a)\left(\varphi(b)\right)^{-1}=e_H }[/math].
    • כעת יהי [math]\displaystyle{ a\in G }[/math] עלינו להוכיח כי [math]\displaystyle{ aK=Ka }[/math]. נעשה הכלה בכיוון אחד, הכיוון השני דומה.
    • יהי [math]\displaystyle{ ak\in aK }[/math] רוצים למצוא [math]\displaystyle{ m\in K }[/math] כך ש [math]\displaystyle{ ak=ma }[/math].
    • לכן עלינו לבחור [math]\displaystyle{ m=aka^{-1} }[/math], נותר להוכיח שאכן [math]\displaystyle{ m\in K }[/math].
    • אכן [math]\displaystyle{ \varphi(m)=\varphi(aka^{-1})=\varphi(a)e_H\left(\varphi(a)\right)^{-1}=e_H }[/math].


  • משפט האיזומורפיזם הראשון. יהי [math]\displaystyle{ \varphi:G\to H }[/math] איזומורפיזם בין חבורות. אזי [math]\displaystyle{ G/\ker(\varphi)\cong im(\varphi) }[/math]
  • הוכחה:
    • לצורך הנוחות נסמן [math]\displaystyle{ K=\ker(\varphi) }[/math] ו[math]\displaystyle{ M=im(\varphi) }[/math].
    • עלינו להראות שקיים איזומורפיזם (כלומר הומומורפיזם חח"ע ועל) [math]\displaystyle{ f:G/K\to M }[/math].
    • לכל [math]\displaystyle{ aK\in G/K }[/math] נגדיר [math]\displaystyle{ f(aK)=\varphi(a) }[/math].
    • ראשית, עלינו להוכיח כי מדובר בפונקציה מוגדרת היטב. כלומר, בהנתן [math]\displaystyle{ a,b\in G }[/math], אם [math]\displaystyle{ aK=bK }[/math] עלינו להוכיח כי [math]\displaystyle{ f(aK)=f(bK) }[/math].
      • [math]\displaystyle{ a=ae\in aK }[/math] ולכן [math]\displaystyle{ a\in bK }[/math]. כלומר קיים [math]\displaystyle{ k\in K }[/math] כך ש [math]\displaystyle{ a=bk }[/math].
      • [math]\displaystyle{ \varphi(a)=\varphi(bk)=\varphi(b)\varphi(k)=\varphi(b) }[/math].
      • [math]\displaystyle{ f(aK)=\varphi(a)=\varphi(b)=f(bK) }[/math].
    • כעת, עלינו להוכיח ש[math]\displaystyle{ f }[/math] הינו הומומורפיזם.
      • [math]\displaystyle{ f\left((aK)(bK)\right)=f(abK)=\varphi(ab)=\varphi(a)\varphi(b)=f(aK)f(bK) }[/math]


הדגמה על ידי חבורת המודולו, מותר להפעיל את המודולו בכל שלב שנרצה.

הרצאה 10 קידוד; פרק 8 מהספר

קידוד, ספרת ביקורת של תעודת זהות, קוד לינארי, קוד המינג.

checksum בפרוטוקולי IP, TCP, UDP.


הרצאה 11 חוג הפולינומים; פרקים 16,17 מהספר

חלוקה עם שארית, אידיאלים.


הרצאה 12 קודים ציקליים; פרק 22 מהספר

השדה הבינארי, קודים פולינומיים.

CRC בשימוש פרוטוקול Ethernet.