PDA

View Full Version : strong name و dll signing



com_engineer_ab
سه شنبه 31 فروردین 1389, 13:30 عصر
سلام دوستان کسی در مورد dll signing و strong name چیزی می دونه که یه توضیح عملی وروش کار کردن باهاشون رو توضیح بده و همچنین از مزایا و معایب این روش

r00tkit
سه شنبه 31 فروردین 1389, 17:07 عصر
plz search

strong name :
A name that consists of an assembly's identity-its simple text
name, version number, and culture information (if provided)-
strengthened by a public key and a digital signature generated
over the assembly. Because the assembly manifest contains file
hashes for all the files that constitute the assembly
implementation, it is sufficient to generate the digital signature
over just the one file in the assembly that contains the assembly
manifest. Assemblies with the same strong name are expected to
be identica
How to: Sign an Assembly with a Strong Name (http://msdn.microsoft.com/en-us/library/xc31ft41.aspx)

com_engineer_ab
سه شنبه 31 فروردین 1389, 18:28 عصر
plz search

strong name :
A name that consists of an assembly's identity-its simple text
name, version number, and culture information (if provided)-
strengthened by a public key and a digital signature generated
over the assembly. Because the assembly manifest contains file
hashes for all the files that constitute the assembly
implementation, it is sufficient to generate the digital signature
over just the one file in the assembly that contains the assembly
manifest. Assemblies with the same strong name are expected to
be identica
How to: Sign an Assembly with a Strong Name (http://msdn.microsoft.com/en-us/library/xc31ft41.aspx)
لطفا فارسی اگه امکانش هست

com_engineer_ab
چهارشنبه 01 اردیبهشت 1389, 12:46 عصر
اگه وقت کردم حتما":چشمک:
خیلی ممنون می شم

r00tkit
چهارشنبه 01 اردیبهشت 1389, 13:42 عصر
clr دو نوع اسمبلی رو ساپورت می کنه اسمبلی با اسم ضعیف و اسم قوی


weakly named assemblies and strongly named
assemblies
اسمبلی ها با اسم قوی و اسمبلی با اسم ضعیف از دید ساختاری برابر هستنند
هر دو از از نوع PE file format هستنند همشون CLR header و metadata و manifest table و IL رو دارن

تنها فرق بین اسمبلی قوی اسم با ضعیف اسم در این هستش که اسمبلی های با اسم قوی توسط یه جفت کلید عمومی و خصوصی "public/private key pair" امضا می شن که با این امضا
هویت سازنده ی ان معلوم می شه و اسمبلی امن می شه و ورژن ان معلوم می شه( فرض کن چیزی به اسم اسمبلی قوی نبود ان وقت یکی مثل من می امد و تو GAC اسمبلی خودش رو به جای یه اسمبلی NET. قرار می داد و یه RootKit به همین اسونی) و این اسم قوی به CLR در تشخیص درستی اسمبلی کمک می کنه تشخیص فقط با اسم امن نیست

اسمبلی قوی از 4 قسمت تشکیل شده 1- اسم فایل 2- ورژن 3- اطلاعات فرهنگی و کلید عمومی
کلید عمومی خیلی طولا نی هستش به جای ان از یه کد hash از همون کلید استفاده می شه که بهش

public key
tokenمی گن

مثال:


"MyTypes, Version=1.0.8123.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
البته اسم بدون پسوند استفاده می شه
همه می تونن اسم و فرهنگ و ورژن رو تکرار کنن ولی public/private key هیچ موقع تکراری نمی شه

ادامه دارد...

com_engineer_ab
پنج شنبه 02 اردیبهشت 1389, 20:15 عصر
ممنونم بابت وقتی که گذاشتید
کماکان منتظر ادامه مطلب هستیم؟
یک سوال
آیا وقتی که یه اسمبلی به نام من شناسایی و ثبت شد ممکن است شخص دیگه ای بتونه از فایل اسمبلی من استفاده کنه.منظورم اینه که این اسمبلی فقط روی پروژه کار می کنه که کلید خصوصی رو داره؟

r00tkit
جمعه 03 اردیبهشت 1389, 00:12 صبح
آیا وقتی که یه اسمبلی به نام من شناسایی و ثبت شد ممکن است شخص دیگه ای بتونه از فایل اسمبلی من استفاده کنه.منظورم اینه که این اسمبلی فقط روی پروژه کار می کنه که کلید خصوصی رو داره؟


نخیر اگه دقت می کردی گفتم اسمبلی های .net امضا شده هستنند پی هر کس می تونه استفاده کنه

اصولا" اسمبلی های public امضا می شن
و اسمبلی های private مهم نیست ولی بهتره امضاع بشن

این داستان ادامه دارد.....

com_engineer_ab
شنبه 04 اردیبهشت 1389, 11:49 صبح
نخیر اگه دقت می کردی گفتم اسمبلی های .net امضا شده هستنند پی هر کس می تونه استفاده کنه

اصولا" اسمبلی های public امضا می شن
و اسمبلی های private مهم نیست ولی بهتره امضاع بشن

این داستان ادامه دارد.....

آیا روشی هست که بشه این کارو انجام داد یعنی dll که نوشتید فقط روی پروژه های خودمون کار کنه؟؟؟؟؟؟

r00tkit
شنبه 04 اردیبهشت 1389, 18:27 عصر
فکر کنم yes
با Friend Assemblies (http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx)

نوع هاتو internal کن بعد ...