PDA

View Full Version : سوال: کاربرد عملی strong key



Devilprogramer
دوشنبه 13 خرداد 1387, 12:11 عصر
اینکه strong key توسط فریم ورک دات نت، برای تشخیص منحصر بفرد کامپوننتها و اسمبلی هاست رو می دونم .. از کلید عمومی استفاده می کنه و این حرفها هم درست .. و اینکه در
Versioning
Authentication
به کار می ره .. که مورد اول راجع به dll ها و مانع بروز dll hell می شه
دومی هم می تونه در Code group ها به کار بره و یه سری جاهای دیگه
فرض برای یه اسمبلی strong key تعریف کردم .. شخص دیگه ای خواست مطمئن شه من این اسمبلی رو نوشتم .. اگه کلید عمومی همراه اسمبلی باشه اول اینکه اون شخص چجوری ازش استفاده می کنه تا بفهمه کلید عمومیه با کلید خصوصی ای که من به این اسمبلی اختصاص دادم (یعنی در حقیقت امضای من) می خونه .. یعنی از چه برنامه ای استفاده ی کنه و عملاً چی کار می کنه .. تئوریش که تابلوهه .. دوم اینکه اصلاً کلید عمومی اگه همراه اسمبلی باشه که مسخره است هر کسی می تونه یه اسمبلی بذاره با کلید عمومی همراهش و یه جا مثل این CA ها باید کلید عمومی من به عنوان کلید عمومی من ثبت شده باشه ..

این لینک هم ببینید
http://www.codeproject.com/KB/security/StrongNameExplained.aspx

رسماً می خوام ببینم این strong key رو عملاً کی باید استفاده کنیم ..

__H2__
یک شنبه 02 تیر 1387, 22:03 عصر
سلام
strong key همانطور که گفتید مثل یک امضای دیجیتال میماند.
شما یک کلید دارید که فایل نهایی را با آن امضا میکنید و حاصل KeyToken ای خواهد شد.

تا اینجا که مشکل ندارید.؟؟؟


اگر کسی بیاید و dll یا exe شما را دستکاری کند، دیگر آن dll یا exe که strong key دارد کار نخواهد کرد (چه جالب!)

ولی شخص میتواند امضای شما را از dll یا exe نهایی حذف کند تا مجدداً ان dll یا exe کار کند، حتی خودش میتواند با یک کلید dll یا exe را امضا کند، و فایل هم کار خواهد کرد!!!!

حتماً دارید فکر میکنید، چه مسخره؟ پس به چه درد میخورد؟ هر کس میخواهد امضا میکند و هرکس میخواهد پاک میکند؟

ولی نکته انجا است که اگر کس دیگری dll را دستکاری-امضا را حذف-امضای مجدد را انجام دهد KeyToken جدیدی برای ان exe یا dll ساخته میشود.

در اصل هیچ کس نمیتواند فایل را ویراش کند و همان keytoken شما را برای فایل بگذارد باشد.

این دو مزیت دارد
1) به راحتی مشخص میشود که فایل مورد نظر دستکاری شده و با نمونه اصلی ارائه شده توسط سازنده تفاوت دارد، البته طبیعی است که من باید امضای شما یا همان keytoken اصلی شما را قبلاً دیده باشم.

2) فایلهای دیگری که این فایل را به خودشان Refrence کرده و از آن استفاده میکنند، KeyToken فایل شرکت سازنده را هم همراه دارند و با فایل جدید کار نخواهد کرد.


در اصل کسی نمیتواند به نام شما فایلهایتان را دستکاری کند و کدهای خودش را در ان جا سازی کند و به نام شما و حتی در کنار برنامه های شما و به جای فایلهای اصلی شما ، آن را ارائه و توسعه بدهد.

Devilprogramer
دوشنبه 25 شهریور 1387, 08:43 صبح
مرسي .. حالا قانع شدم ..