Strongly Names Assembly :

PinPoint

New member
Strongly Names Assembly :

להבנתי מטרת הנושא הוא לפתור את בעיית ה DLL Hell. קראתי מספר מאמרים בנושא (בעיקר מה MSDN) ומסתבר שדברים בסיסים אינם מובנים לי (חוזרים על עצמם בלכ המאמרים...), לכן אשמח אם תוכלו להבהיר לי אותם
: 1. כדי לחתום אסמבלי, אני צייך לייצר מפתח, ואני עושה זאת ע"י sn -k aaa נוצר לי קובץ aaa וע"י sn -tp aaa אני יכול לראות את תוכנו. הוא מכיר את המפתח (שדרה ארוכה מאוד מאוד של תווים), ובסופו מחזורת נוספת קצרה, שנקראת Token. מה זה ה Token הזה בדיוק ? הרצה של אלגוריתם מסויים על המחרוזת הארוכה וקבלת מחזורת "קומפקטית יותר" ? מה מטרתה ? האם רק לטובת נוחות ? 2. על סמך מה נוצר קובץ ה aaa ? מה מונע מאדם אחר, במקום אחר, ליצור במקרה אותו מפתח כמו שלי ? 3. אני רואה בקובץ רק מפתח אחד, היכן נכנס אלמנטי המפתח הפרטי והציבורי ? (או שזה לא רלוונטי, ורק מפתח אחד משמש לחתימת האסמבלי ?) 4. מה בכלל משמעות החתימה ? האם זה רק לטובת זיהוי חד חד ערכי של האסמבלי וגירסתו, או גם לטובת אבטחה (אולי אי אפשר לראות את הקוד של אסמבלי חתום / לערוך בו שינויים ?) 5. המזהה החד חד ערכי של אסמבלי ב GAC הוא : שם האסמבלי, גירסא, Culture ומפתח ה Token. לשם מה צריך את כל הארבעה ? הרי ה Token עצמו הוא כבר מזהה חד חד ערכי, לא ? 6. נניח ויש לי 2 גרסאות שונות חתומות ב GAC (של אותו DLL), ומתוך קוד #C שלי אני רוצה להפעיל פונקציה מתוך אחד ספציפי - כיצד אני עושה זאת ? (ניסיתי לבצע Add Reference ל DLL הזה, אבל כשאני עושה Add Reference ואז Browse ומנווט לתיקיית ה GAC, אי אפשר לבחור משם כלום...) 7. הבנתי שכדי לחתום אסמבלי מסויים, כל מה שאני צריך לעשות הוא לכתוב בתוכו את השורה הרלוונטית
[assembly:AssemblyKyFile("aaa")]​
היכן אני כותב את זה ? והאם זה אכן כל מה שצריך ? 8. ושאלה לקינוח
מה בדיוק קורה מה בדיוק מוצפן כש CLR חותם את האסמבלי ? מקווה שלא נרדמתם...
 

pagis

New member
HASH codes

בעיקרון Strongly Names Assembly עובדים עם מפתח ציפורי פרטי. אחתה חותם במפתח פרטי ומצרף ל Assembly עצמו את הציבורי. זה מאפשר לוודא ברמה מסויימת (די נמוכה) שה Assembly לא שונה מאז החתימה. אתה יכל לראות את המפתח כחלק מהאסמבלי. התשובה לאיך לא יווצרו שני TOKENS זהים בשני מקומות שונים היא שזה עובד על אלגוריתמיקה של HASH CODES. אני חושב ש SHA1 אבל לא סגור על זה. מצורפת הפניה ל RFC של SHA1. אם אתה רוצה לחתום על ה ה Assembly בצורה יותר בטוחה תבדוק את Signcode.exe. אבל אני מדגיש, המטרה של חתימה על קוד היא ווידוא אותנטיות ה Assembly וזה משהו שרוב היישומים הסטנדרטים לא צריכים.
 

PinPoint

New member
../images/Emo181.gifרגע רגע רגע...

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

pagis

New member
עניתי על מה שאני יודע בשלוף

את שאר הדברים ע"ע גוגל
 

PinPoint

New member
גוגל סיבך אותי עוד יותר.לכן הגעתי

לכאן עם שאלות ממוקדות, אשמח אם מישהו יוכל לענות, תודה.
 

PinPoint

New member
../images/Emo7.gif ישבתי וניסחתי רשימה... ../images/Emo7.gif

ממוקדת ככל שניתן, ואף אחד לא מתייחס....
 
למעלה