עזרה דחוף ביותר........

ygphoto

New member
עזרה דחוף ביותר........

שלום לכולם. למבינים בקריפטוגרפיה או שעשו קורס בנושא (הצפנות)(או מתמטיקה) יש לי שאלה---> אני מתכנת את הצפנת AES128 של RIJANDAEL, ההצפנה הינה סימטרית כלומר מפתח ההצפנה והפענוח אותו דבר. בהצפנה זו אני מקבל מפתח באורך 8 בתים ויוצר טבלת מפתחות באורך 88 בתים(מטריצה). אלגוריתם יצירת המפתחות אמור להיות תואם לשני הצדדים גם למצפין וגם למפענח, הבעיה שאני שם את אותה טבלת מפתחות בצד המפענח אני לא מקבל את המידע שאמור להתקבל. באתר של מחבר האלגוריתם האמור לעיל ראיתי דוגמא ובה הוא לוקח עבור הצפנה הפוכה טבלת מפתחות אחרת שונה מטבלת מפתחות ההצפנה חוץ מן 128 ביט הראשונים והאחרונים(עבור טבלה זו התוכנית שלי עובדת כנדרש). ניסיתי להגיע לערכים שלו בכל דרך ולא הצלחתי. (אולי זה יעזור, אני משתמש בהצפנה ב- SBOX בהצפנה הפוכה ב- INVSBOX וכן ליצירת טבלת מפתחות בקבועים RCON המופיעים בכל ספר העוסק בהצפנה זו). אני מקווה שתעזרו לי ,זה ממש דחוף לי. תודה מראש ושבת שלום. יוסי
 

yossiea

New member
שבוע טוב...

א. זה לא מדוייק שבהצפנה סימטרית מפתח ההצפנה והפענוח זה אותו דבר, אף אחד לא אמר שזה חייב להיות אותו דבר, ההגדרה היא שמפתח הפענוח ניתן להכנה מתוך מפתח ההצפנה בקלות, למשל בתהליך מוגדר מראש ומוסכם. ב. אף פעם לא נסיתי לממש את AES בעצמי מתוך התיעוד, ככה שאני לא יכול לומר לך בוודאות איפה הבעיה במיוחד שלא צירפת קוד. אבל על פניו נראה שמשהו עם הכנת המפתח שלך לא בסדר הנה כמה נקודות שלמיטב ידיעתי מהוות בעיה אצלך: 1. AES128 צריך 44 words שזה 176 בתים להרחבת המפתח. לא יודע איך הגעת ל-88. 2. הכנת המפתח לפיענוח זה תהליך הפוך. קודם מרחיבים את המפתח עם S-boxes ו- Rcon (כמו מפתח ההצפנה) אח"כ הופכים את סדר השורות במטריצה, אח"כ צריך למצוא את ההופכי של כל כניסה ברשימה. תצטרך לעשות כאן פעולות כפל בשדות סופיים מודולו פולינום מסויים d(x) כדי לקבל את ההופכיים. אבל בכל המימושים של AES לתוכנה שאני ראיתי משתמשים בטבלאות (lookup table) מוכנות מראש, ככה שלא צריך להיכנס לכל החשובונות האלו, זה די מסובך. אם אתה מתעקש תקרא על הפרוצדורה Inverse MixColumn בתיעוד של האלגוריתם. 3. הכי טוב זה לממש 2 פונקציות עזר אחת להכנת מפתח הצפנה ואחת להכנת מפתח פענוח. לפני קריאה לפענוח או הצפנה אתה קורא לפונקציית ההכנה המתאימה. זה מה שאני יכול להעיר. בהצלחה.
 

ygphoto

New member
שבוע טוב יוסי.....

1. אתה צודק כנראה הבנתי אחרת מספרים שונים. 2. כבר ממשתי את קוד ההצפנה והפענוח (בשפת VHDL). 3. ממשתי את הפונציה של אלגוריתם יצירת המפתחות עבור הצפנה.הבעיה שלי שאין לי מושג איך למצוא את אלגורתים ליצירת מפתחות עבור פענוח,ניסיתי ללכת הפוך ולא הצלחתי( האם צריך להשתמש ב INV-SBOX ו- INV-SHIFT וכו')? תודה ושבוע טוב יוסי
 

ygphoto

New member
יוסי תודה רבה בזכותך אני בדרך...

הנכונה
תודה ושיהיה שבוע טוב
 
למעלה