mohammadi4net
ببخشید که چنین درخواستی دارم.
بعد یک ساعت علافی فهمیدم این تایپک بار علمی نداره برای جلوگیری از اتلاف وقت دیگران و پر نشدن سایت برنامه نویس با مطالب غیر مفید، این تایپک رو حذف کنید.
نویسنده تایپک، یک جدید ایجاد کنه و تایپک های مفید که از تعداد انگشت دست هم کمتر هستند رو به آنجا منتقل کنه.
بازهم از دوستانی که مطالب مفیدی بیان کردند معذرت خواهی می کنم.
به توجه به درخواست این دوست گرامی و دیگر دوستان این کار انجام شد:
************************************************** *********
سلام به همگی.
دوستان هدف از راه اندازی این تاپیک این است تا با هم دیگر شیوه های برقراری امنیت در برنامه نویسی به این زبان را بررسی کنیم. چونکه این مبحث بسیار گسترده است ابتدا از این سوال شروع می کنیم که:
چکار کنیم که دستیابی به کدهای برنامه بوسیله نرم افزارهایی همانند Reflector سخت تر انجام شود؟ |---------------------------------------------------------|
بقیه سوالات به تدریج در این تاپیک بحث خواهد شد. از دوستان نیز می خواهم در صورتی که سوالی در مورد این موضوع دارند بیان کنند تا با دوستان در جهت رفع آن اقدام گردد.
پیشاپیش از همکاری شما در این بحث تشکر می کنم.
************************************************** *********
گویا dotfuscator که نسخه ی Community ورژن 4 همراه vs 2008 نصب میشه واسه همین کاره
************************************************** *********
************************************************** *********
این نرم افزار در منوی تولز ویژوال استدیو هست کارشم اینه که اسامی متغیرها و فرم ها و کلاس ها رو عوض میکنه. ضدش هم وجود نداره یعنی اگه شما یه متغیر رو Customer گذاشته باشید و بعدی رو Product این نرم افزار اسم اولی رو میکنه A و دومی رو میکنه B همین به همین ترتیب تمام متغیرها و فرم ها و کلاسها رو تغییر نام میده تا نا خونا تر بشه و کار دیگه ای انجام نمیده
************************************************** *********
************************************************** *********
نه دوست من فقط اسم متغیرها و کلاس های تعریفی شما رو به صورت خودکار تغییر میده نه کلاسهای پایه دات نت رو
روش کار: اول باید پروژه اصلی رو ترجمه کنید و فایل exe بسازید و بعد در برنامه Dotfus... کریت نیو پروجکت رو انتخاب میکنید
حالا باید حداقل دو گزینه رو مشخص کنید یکی فایل های trigger و دیگری مسیر فایل مقصد (فایل ناخوانا شده
در زبانه trigger فایل اجرایی خودتون رو انتخاب کنیدو بعد بر روی زبانه build کلیک کنید و مسیر مقصد رو وارد کنید.
بعداز منوی فایل سیو پروجکت رو انتخاب کنید.
برای انجام کار و ساختن فایل ناخوانا از منوی فایل build رو انتخاب کنید.
تنظیمات دیگه هم داره اما من همینقدرشو بلدم.
************************************************** *********
************************************************** *********
میتونید از Smart Assembly استفاده کنید.
تاحدی سخت تر از بقیه هست.
************************************************** *********
************************************************** *********
میشه از پکرهای موجود استفاده کرد.
من خودم هنوز روی .net تست نکردم ببینم که آیا پکر جواب میده یا نه.
ولی Exe های vb و delphi رو باهاش پک کردم.
از دسترسی این جوجه کرکرها فایل رو محافظت میکنه.
ولی برای جلو گیری از کرک شدن هیچ راهی وجود نداره(در هیچ زبونی).
************************************************** *********
************************************************** *********
دیشب تو اینترنت گشت می زدم با نرم افزار Eazfuscator.NET 2.5 آشنا شدم. این نرم افزار نمرش روی فایل های Exe به نظر من 15 است ولی متاسفانه روی فایل های dll به خوبی جواب نمی ده. (می تونید امتحان کنید) نرم افزار دیگه ای که خواستم امتحان کنم xenocode postbuild 2008 بود ولی متاسفانه نتونستم شماره سریال برنامه مربوطه را بدست آورم. شاید اینجا جای مناسبی برای مطرح کردن این موضوع نباشه. پیشاپیش عذر می خواهم. لطفا اگه کسی شماره سریال این برنامه را داره لطفا به من هم بگه.
************************************************** *********
************************************************** *********
هدف آنتی دامپ بودن برنامه نیست که اصلا" نشه ازش دامپ گرفت و ... , هدف این هست که کراکر نتونه به سورس کد برنامه دسترسی داشته باشه که برای این امر هم من Smart Assembly نسخه 4 رو توصیه میکنم که البته باید نسخه کرک شده اون رو پیدا کنید , این برنامه کدها رو به شکلی نامفهوم میکنه که حتی اگر کراکر حرفه ای باشه و بتونه کد اصلی رو استخراج کنه فقط 30% رو میتونه برگردونه.
************************************************** *********
************************************************** *********
در مورد امنیت میتونم بگم , تضمینی در کار نیست , چون دیر یا زود قفلش میشکنه ولی 2 تا توصیه میکنم.
در طراحی قفل خودتون اول از رمزنگاری غیر متقارن برای تولید کد فعالسازی استفاده کنید و دوم اینکه تا میتونید قفل رو در جای جای برنامه خودتون بررسی کنید.
************************************************** *********
************************************************** *********
با سلام مجدد
عنوان تاپیک "امنیت در سی C#" می باشد. این عنوان به نظر بنده بسیار کلی است(با توجه به ماهیت کلمه امنیت). به نظر من ابتدا می بایستی تعریفی جامع از امنیت ارائه می شد و پس از آن به بررسی روش ها و ابزارهای مورد نیاز در جهت رسیدن به امنیت بالاتر در برنامه ها بحث می شد.
این تاپیک می توانست با عنوانی مثلا" امنیت در برنامه های دات نت " و در بخش کلی تری مطرح گردد. چرا که چهارچوبه زبان های برنامه نویسی که بر پایه پلت فرم دات نت می باشند یکی است.
اما در متن تاپیک (اولین پست)، اشاره به این شده که به عنوان سوال اول، هدف جلوگیری از سورس شدن برنامه های دات نت می باشد.
دوستان می توانند در این باره بحث کنند و به یک نتیجه واحد برسند.که فکر می کنم به اندازه کافی در این مورد بحث شده. کاربر ایجاد کننده تاپیک می توانند یک نتیجه گیری کلی در مورد سوال اول انجام داده و نتیجه را به سمع و نظر کاربران برساند.
پس از آن می توانند به سوال دیگری بپردازند.
اما در هر صورت توجه به نکات زیر می تواند روند مثبت تری به تاپیک دهد:
1- پاسخ ها بدون تعصب نسبت به یک زبان، یک فریم ورک و ... باشند
2-پاسخ ها همراه با مدرک و سند قابل استناد باشند
3-از فرستادن پاسخ های نا مرتبط مثلا قرار دادن فایل های Crack Me و ... خودداری شود
4-از کل کل کردن پرهیز شود
5....
********
موفق باشید
پ و:
شاید در اینده ای نزدیک، بسته به روند تاپیک، تاپیک را به محل مناسب تری و با عنوان مناسب تری انتقال دهم
************************************************** *********
************************************************** *********
یک public-key certificate یک امضای دیجیتالی است که از سوی یک نهاد یا موسسه ارائه می گردد. بیشتر از این مورد در مرورگرهای اینترنتی که پروتوکل SSL را پشتیبانی می کنند استفاده می گردد.
X.509 تعیین می کند که چه اطلاعاتی به عنوان امضای دیجیتالی استفاده شود و چگونه آن ها باید نوشته شوند.
تا حالا دو سوال مطرح شده:
سوال: چکار کنیم تا جلوی نفوذ به کدهایمان گرفته شود؟
جواب و نتیجه: به نظر عده ای از دوستان نتیجه های زیر:
1- به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود. فقط می توان کاری کرد که این کار سخت تر انجام شود.
2- شما می توانید بوسیله نرم افزارهای Obfuscator نفوذ به کدهایتان را مشکل نمایید. این کار با تغییر نام متغیرها و ... برنامه شما انجام می گیرد.
و به نظر عده ای دیگر در مقابل نتیجه گیری بالا:
۱.نتیجه گیری اول بدست آوردن کدها را ساده جلوه میده، در حالی که که حتی یک نفر از کسانی که این نتیجه را قبول دارند نتوانستند کد یک تابع کوچک که در همین تالار فرستاده شده بود را دربیارند، پس نتیجه گیری را باید به این تغییر داد:
۱.با اینکه به هیچ وجه امکان ندارد که جلوی نفوذ به کدهایمان گرفته شود، اینکار کار آسانی نیست و یک پروژه کاملا را تبیدل به سورس نمیکنه، فقط یک شبه کد بدست میاد که بعدش هم باید با تلاش زیاد بشه ازش استفاده کرد.
و حالا نتیجه گیری کلی با خودتون.
سوال دومی که پرسیده شد:
سوال: کسی راجع به X509Certificates که در فضای نام Security.Cryptography قرار داره می تونه یه سری اطلاعات در اختیار بقیه قرار بده.
جواب: به این صفحه مراجعه کنید. ولی در کل جواب خیلی ناقصه و هنوز نیازه روی آن کار بشه. لطفا دوستان با هم یه همکاری داشته باشین تا بتونیم برای این سوال هم یه جواب بگیریم.
ببینید دوستان روند تاپیک مشخصه.... من آخرین صحبت هام رو قبلا در این پست نوشتم. دیگه حرفی ندارم.
تا سوال بعدی بای.
************************************************** *********
************************************************** *********
اینم یک سری اطلاعات که از سایت های مختلف جمع آوری شده است:
Certificate يک فايل است که بر روي سرور وب نصب مي شود تا وب سايت را شناسايي کند اين روش براي شناساندن هويت يک شرکت يا تاجر به خريداران آنلاين کمک کرده تا به سايت اعتماد کنند براي بررسي صحت اين ادعا (براي اينکه باور کنيم آنچه ادعا مي کنند هستند ) شرکت ها و وب سايت هاي آنها توسط يک شرکت ثالث مانند Verisign و Thawte .
وقتي صحت ادعاي شرکت ها و وب سايت آنها مورد تأييد قرار گرفت آنها يک گواهينام? SSL ( به مبلغ چند صد دلار ) به آنها اعطا مي کنند . اين گواهينامه ديجيتال بر روي وب سرور آنها نصب شده و توسط کاربراني که وارد سايت مي شوند قابل ديدن است . شما با نگاه کردن آدرس وب سايت مي توانيد متوجه اين گواهينامه شويد . وب سايت هايي که داراي گواهينامه هستند با HTTPS شروع مي شوند . براي ديدن گواهينامه مي توانيد بر روي آيکون قفل در گوش? مرورگر خود کليک کنيد .
از آنجا که گواهينامه هاي ديجيتال وضعيت جاري يک شرکت را تأييد مي کنند اعتبار آنها دائمي نيست . گواهينامه هاي SSL معمولاً هر يک تا سه سال منقضي مي شوند . اگر Certificate در موئد مقرر تجديد نشود در حين مرور ، وب سايت شما با يک پيغام مبني بر اينکه گواهينام? اين وب سايت منقضي شده است مواجه مي شود اين خطا به شما و کامپيوتر شما مربوط نمي شود اما به معني آن است که وب سروري که شما به آن متصل شده ايد گواهينامه خود را تجديد نکرده است . هر چند که اين به معني اينکه وب سايت مذکور لزوماً کلاه بردار است ، نيست اما حداقل نشان دهند? آن است که وب سايت خيلي حرفه اي هم نيست . http://www.gamadirect.com/DicDef.aspx?ID=20
تضميني براي آنکه نرم افزار دريافتي از طريق اينترنت از يک منبع قابل اطمينان است. هر گواهينامه ديجتال اطلاعاتي درباره نرم افزار فراهم مي کند –مثلاً اطلاعات شناسايي تهيه کننده نرم افزار و تاريخ ثبت آن بوسيله مسئول صدور گواهينامه(CA)، و نيز ميزان مقاومت در برابر سرقت.
کارت شناسايي کاربر، يا " گواهينامه استفاده" در فضاي کامپيوتري. گواهينامه هاي ديجيتال که توسط مسئولين صدور گواهينامه صادر مي شوند، نوعي اعتبار الکترونيکي هستند که درستي و اعتبار يک کاربر را در اينترنت و اينترانت ها تائيد مي کنند. رسمي گواهينامه هاي ديجيتال با استفاده از تکنولوژي رمزگذاري عمومي، انتقال Online و قانوني اطلاعات محرمانه، پول يا ديگر اطلاعات حساس را تضمين مي کنند.
دارنده هر گواهينامه ديجيتال دو کليد دارد (رشته اي از اعداد): يک کليد خصوصي که تنها کاربر براي "امضاي" پيام هاي ارسالي و رمزگشايي پيام هاي دريافتي در دست دارد، و يک کليد عمومي براي استفاده اشخاص ديگر، جهت رمز گذاري داده ها به منظور ارسال به يک کاربر خاص.
http://www.gamadirect.com/DicDef.aspx?ID=239
امضای دیجیتال
امضای دیجیتال ، ماحصل رمزنگاری مقدار Hash داده مبادله شده بوده و روشی ایمن به منظور امضای الکترونیکی اطلاعات با استفاده از کدها ویا علائمی است که از لحاظ الکترونیکی معادل یک امضای دستی می باشند. امضای دیجیتالی، مبتنی بر ترکیب ایده سنتی Hashing داده و رمزنگاری کلید عمومی است .یک مرکز معتبر صدور گواهینامه های دیجیتال ، گواهینامه های دیجیتالی صادرشده را به کلیدهای عمومی مربوط به هر یک نسبت می دهد . فرآیند امضاء ، مخالف فرآیند رمزنگاری است : از کلید خصوصی به منظور رمزنگاری Hash و از کلید عمومی برای بررسی صحت امضاء ( رمزگشائی ) استفاده می شود .
فرآیند امضای داده توسط فرستنده پیام :
•دریافت پیام اولیه و محاسبه یک مقدار Hash با استفاده از یک الگوریتم hashing
•رمزنگاری Hash توسط یک تابع رمزنگاری و اعمال کلید خصوصی توسط فرستنده پیام ( پیام اولیه به همراه مقدار Hash رمز شده ، یک پیام دیجیتالی امضاء شده را تشکیل می دهند ) .
•ارسال پیام دیجیتالی امضاء شده برای گیرنده
فرآیند بررسی صحت امضاء ارسالی همراه داده :
•پس از دریافت پیام توسط گیرنده ، در ابتدا ، Hash رمز شده با استفاده از کلید عمومی فرستنده رمزگشائی می گردد ( Hash رمزگشائی شده ) .
•محاسبه محلی مقدار Hash پیام ارسالی با استفاده از یک الگوریتم Hashing
•مقایسه نتایج بدست آمده در مراحل قبل : Hash رمزگشائی شده با مقدارمحلی Hash مقایسه و در صورتیکه نتیجه یکسان باشد ، صحت و اعتبار پیام ارسال شده توسط فرستنده تائید می گردد .
لازم است به این موضوع دقت شود که ضرورتی به رمزنگاری محتوی پیام وجود نداشته و صرفا" امضای دیجیتالی رمز می گردد( مگر اینکه شرایط خاصی در ارتباط با محرمانگی محتوی وجود داشته باشد که در چنین مواردی می بایست محتوی نیز رمزنگاری گردد ) . در صورتیکه به هر دلیلی محتوی پیام توسط افراد غیرمجاز تغییر داده شود ، Hash رمز شده اولیه با مقداری که بصورت محلی مجددا" محاسبه می گردد ، مطابقت نداشته و صحت امضای فرستنده تائید نمی گردد . همچنین ، ایجاد یک امضای تقلبی عملا" غیرممکن است ، چراکه افراد غیر مجاز آگاهی لازم در ارتباط با کلید خصوصی را دارا نمی باشند ( رمزنگاری مقدار محاسبه شده Hash با در نظر گرفتن کلید خصوصی فرستنده انجام خواهد شد ) .
یک گواهینامه چیست ؟
گواهیینامه دیجیتال ،رکوردی منحصربفرد مشتمل بر اطلاعاتی ضروری به منظور بررسی هویت یک فرد و یا یک سازمان می باشد . گواهینامه های دیجیتال از فرمت استاندارد X.509 تبعیت می نمایند . استاندارد فوق ، برخی از ملزومات موردنیاز گواهینامه را تشریح می نماید : فرمت نسخه استفاده شده توسط گواهینامه ، شماره سریال گواهینامه ، شناسه الگوریتم استفاده شده به منظور تائید گواهینامه ،مرکز صادرکننده گواهینامه ، تاریخ صدور و سررسید اعتبار گواهینامه ، مشخصات صاحب گواهینامه ، کلید عمومی صاحب گواهینامه ، امضای دیجیتال مرکز صادر کننده گواهینامه .
هر یک از فیلدهای اطلاعاتی فوق متناظر با فیلدهای خاصی در ساختار تعریف شده برای یک گواهنیامه می باشد. گواهینامه ها ، ممکن است شامل اطلاعات دیگری نظیر آدرس پستی ، آدرس پست الکترونیکی ، نام کشور ، سن ، جنسیت نیز باشند . اطلاعات اضافی فوق اختیاری بوده و بستگی به نوع خاص گواهینامه دارد .
مراکز صدور گواهینامه (CA:Certificate Authority
مراکز صدور گواهینامه که از آنان با عنوان CA نیز نام برده می شود ،مراکزی امین و معتبر بوده که مسئولیت تطبیق کلیدها ی عمومی به منظور شناسائی و تائید هویت را برعهده دارند. به عبارت دیگر ، مراکز فوق تعلق یک کلید عمومی خاص به یک کاربر معتبر را تائید می نمایند . مراکز CA ، مسئولیت صدور ، ابطال و تمدید یک گواهینامه را برعهده دارند. مراکز CA ،همچنین می بایست رویه های بسیار دقیق و سختگیرانه ای را به منظور تائید افراد و سازمان ها ئی که درخواست گواهنیامه می نمایند را نیز دنبال نمایند .بدین ترتیب ، پس از تائید یک فرد و یا سازمان توسط یک مرکز معتبر و امین CA ، امکان تطبیق کلید ( انطباق کلید عمومی با کلید خصوصی مرتبط با آن ) آنان از یک مرکز ایمن ، فراهم می گردد. عملکرد چنین مراکزی نظیر دفاتراسناد رسمی در اینترنت است .
در ساختار گواهینامه ، دو فیلد اطلاعاتی مرتبط با CA نیز وجود دارد : نام صادرکننده گواهینامه و امضای دیجیتالی صادرکننده . وجود فیلدهای فوق در گواهینامه صادر شده ، تضمین لازم در خصوص تعلق کلید عمومی به صاحب آن را ارائه می نماید.بدین ترتیب مسئله امین بودن از افراد به مراکز CA منتقل می گردد.وجود یک مرکز امین و معتبر ، از جمله مهمترین دلایل حضور CA ، محسوب می گردد . در حال حاضر ، سازمان های متعددی ، اقدام به صدور گواهینامه می نمایند و هر روز نیز تعداد آنان افزایش می یابد . زمانیکه دو کاربر و یا دو سازمان قصد مبادله گواهینامه را داشته باشند ، هر یک از آنان می تواند هویت طرف مقابل خود را با استفاده از تائیدیه مراکز CA و گواهینامه های صادرشده توسط مراکز CA ، انجام دهد. هر گواهینامه شامل کلید عمومی مربوط به خود نیز می باشد ، بنابراین می توان از آن به منظور رمزنگاری داده برای ارسال به صاحب گواهینامه استفاده نمود. گواهینامه ها همچنین شامل امضای دیجیتال مرکز CA صادرکننده گواهینامه نیز می باشند. یک امضای دیجیتال با استفاده از کلید خصوصی مولف سند ایجاد می گردد . بنابراین به منظور بررسی یک گواهینامه که توسط یک مرکز CA خاص تائید شده است ، به کلید عمومی مرکز CA نیز نیاز خواهد بود. کلید ها ی عمومی اکثر مراکز CA به همراه مرورگرها ، برنامه های پست الکترونیکی و سایر پکیج های نرم افراری توزیع می گردد .
نمایش محتویات یک Certificate:
شما بوسیله قطعه کد زیر می توانید محتویات یک فایل Certificate را مشاهده کنید:
کد:
string Certificate = "path";// Load the certificate into an X509Certificate object.X509Certificate cert = newX509Certificate(Certificate);// Get the value.string resultsTrue = cert.ToString(true);// Display the valueMessageBox.Show(resultsTrue);
برای دریافت اطلاعات بیشتر می توانید از کلاس زیر استفاده نمایید:
X509Certificate2
************************************************** *********
************************************************** *********
دوستان کسی می تونه توضیح بده ClickOnce چیه و به چه دردی می خوره؟
************************************************** *********
************************************************** *********
نقل قول:
ClickOnce applications are based on the .NET Framework and are subject to code access security constraints. For this reason, it is important that you understand the implications of code access security and write your ClickOnce applications accordingly.
Code access security is a mechanism in the .NET Framework that helps limit the access that code has to protected resources and operations. You should always configure the code access security permissions for your ClickOnce application to include only those permissions that your application requires. Visual Studio provides the tools necessary to determine and configure the permission set for your application.
ClickOnce is a deployment technology that allows you to create self-updating Windows-based applications that can be installed and run with minimal user interaction. ClickOnce deployment overcomes three major issues inherent in deployment:
#
Difficulties in updating applications. With Microsoft Windows Installer deployment, whenever an application is updated, the user must reinstall the entire application; with ClickOnce deployment, you can provide updates automatically. Only those portions of the application that have changed are downloaded, then the full, updated application is reinstalled from a new side-by-side folder.
#
Impact to the user's computer. With Windows Installer deployment, applications often rely on shared components, with the potential for versioning conflicts; with ClickOnce deployment, each application is self-contained and cannot interfere with other applications.
#
Security permissions. Windows Installer deployment requires administrative permissions and allows only limited user installation; ClickOnce deployment allows non-administrative users to install and grants only those Code Access Security permissions necessary
for the application.
برای اطلاعات بیشتر به اینجا برید
************************************************** *********