PDA

View Full Version : امنیت دسترسی به کدها (CAS) - بخش اول - معرفی Strong Name



manager
پنج شنبه 06 اردیبهشت 1386, 20:34 عصر
در این مقاله می خوانید :
1- آشنائی با مفاهیم امضای دیجیتالی
2- معرفی Strong Name در .Net
3- آشنائی با Delay Signing
4- آشنائی با نحوه ی آرایش فیزیکی Strong Name در فایل IL
5- آشنائی با نحوه ی Remove کردن Digital Signature از فایل IL و کرک کردن فایل اسمبلی

قسمتی از مقاله را در اینجا قرار دادم.


به نام خدا

امنیت دسترسی به کدها (CAS)
بخش اول – معرفی Strong Name

Strong Name در .Net چیست ؟

امنیت یکی از مهمترین نیازهای کیفیتی نرم افزار است که طراحان نرم افزاری می بایست اولویت ویژه ای برای آن قائل شوند. این روزها برنامه نویسان (مخصوصا در ایران) بیشتر به ظاهر رابط-کاربر و عملیات و خصوصیات خاص نرم افزارهای خود توجه می کنند تا امنیت و یا حتی کیفیت محصول تولیدی خود.
فرض کنید بعد از یک سال طاقت فرسا توانستید محصول نرم افزاری خود را تهیه کرده و در بازار پخش کنید. بعد از چند روز از پخش آن خبری به گوشتان می رسد که نرم افزار شما دستکاری(Crack) شده است.
هیچ راه کاری وجود ندارد که طی آن شما به کارفرمای خود اطمینان دهید که محصول نرم افزاریتان توسط افراد شرور مورد دستکاری قرار نخواهد گرفت. تنها کاری که می توانید انجام دهید این است که راه های دستکاری نرم افزار را برای هکر ها دشوار تر کنید.

قبل از پرداختن به راز و رمزهای Strong Name بهتر است با مفهوم امضای دیجیتالی آشنا شویم. فرض کنید شما رئیس یک شرکت بزرگ هستید و قصد ارسال یک ایمیل برای برخی کارمندان شرکت خود را دارید. اطلاعات مندرج در این ایمیل برای شما و شرکت شما بسیار حیاتی و محرمانست. به عنوان مثال آخرین رقم مالی در توان شرکت، جهت پیشنهاد شدن در یک مناقصه، قیمت تمام شده ی محصول امسال خود، تاریخ دریافت حقوق کارمندان و ... این اطلاعات به هیچ عنوان نباید مورد دستکاری قرار بگیرند چون جابه جائی یک صفر می تواند دودبان شرکت شما را بر باد فنا دهد. در اینجا نیاز به تمهیداتی است که طی آن گیرنده اطلاعات مطمئن شود که اطلاعات دریافتی بدون دستکاری و از طرف مبدا معتبر است.

امضای دیجیتال
قلب امضای دیجیتالی مبتنی بر الگوریتم های رمزنگاری (مثل RSA، EL Gamal) و الگوریتم های Hashing (مثل SHA، MD5) است. در اینجا قصد دارم به طور مختصر شما را با نحوه ی کار این مهم آشنا کنم.
قبل از انتقال داده ها، آنها با استفاده از الگوریتم های Hashing (معمولا SHA) به صورت یک کد فشرده Hash شده در می آیند. این کد هش شده عصاره ی داده های شما می باشد. مقادیر هش شده دارای طول یکسانی هستند و تغییر یک بیت اطلاعات منجر به تولید مقدار جدیدی به عنوان Hash Code می شود.


http://i19.tinypic.com/2mi5hdj.jpg

الگوریتم های Hashing یک طرفه هستند، به عبارت دیگر هنگامی که اطلاعاتی Hash شدند، به هیچ طریقی نمی توان از روی کدهای هش شده، اطلاعات اصلی را به دست آورد. از این داده های هش شده برای بررسی صحت اطلاعات استفاده می شود. بدین صورت که داده های دریافتی را هش می کنند و کد هش شده ی بدست آمده را با کد هش شده ی اصلی که به همراه داده ها ارسال می شود مقایسه می کنند. درصورتی که این دو کد با هم مقایرت داشته باشند، یعنی داده های دریافتی حداقل در یک بیت با یکدیگر مغایرت دارند و داده های اصلی مورد نظر ما نیستند.


http://i19.tinypic.com/2naqiyx.jpg


در این حالت چالشی که با آن مواجه می شویم آن است که چگونه تضمین کنیم که کد Hash شده در هنگام ارسال اطلاعات توسط فرد شرور در حین تغییر اطلاعات اصلی مورد تغییر قرار نگیرد. به عبارت دیگر امنیت کد Hash را چگونه تامین سازیم ؟ برای پاسخ به این چالش از دو کلید استفاده می کنیم. یک کلید عمومی(Public Key) و یک کلید خصوصی(Private Key). کلید خصوصی، متعلق به شماست و هیچ کس دیگری نمونه ی آن را ندارد. کلید عمومی نیز می تواند در دسترس همگان وجود داشته باشد. اگر اطلاعاتی را توسط کلید خصوصی کد کنید، با تمام کلید های عمومی باز می شود، ولی با استفاده از هیچ کلید عمومی نمی توان اطلاعاتی را همانند کلید خصوصی قفل کرد (و بلعکس).


http://i18.tinypic.com/2nbd9jc.jpg

قبل از ارسال اطلاعات، کد Hash محاسبه شده با استفاده از کلید خصوصی به صورت رمز درآمده و همراه با کلید عمومی به انتهای داده ها الصاق می شود. در مقصد با استفاده از کلید عمومی کد Hash شده ی اصلی از داده ها خارج می شود. همچنین کد Hash واقعی داده ها نیز محاسبه می شود. در پایان مرحله ی تصدیق، در صورتی که کد Hash محاسبه شده با کد Hash همراه داده ها یکسان باشد، معلوم می شود که داده های ارسال شده دستکاری نشده اند. ...
http://i16.tinypic.com/4h2ox0m.png دانلود مقاله (http://mfarahy.persiangig.com/Articles/CAS-Part1-StrongName.rar)

yavari
پنج شنبه 31 خرداد 1386, 08:53 صبح
سلام

جناب فراحی ، ممنون از مقاله قشنگتون !

در ضمن متاسفانه الان لینک دانلودتون جوابگو نیست ! (شدیدا این قضیه برا من حالگیری بود اما خوشبختانه موفق شدم از دوستائی که قبلا دانلود کرده بودن دریافتش کنم . )

مشتاقانه و بی صبرانه منتظر ادامه مقاله هستم . :تشویق:

با تشکر

hamed_bostan
پنج شنبه 26 مهر 1386, 00:34 صبح
منهم نتونستم دانلود کنم و واسه ام یه صفحه باینری باز کرد به جای دانلود . ممنون میشم یه چک بکنید