View Full Version : گفتگو: مراحل تامین کردن امنیت....
saed2006
دوشنبه 28 دی 1388, 14:12 عصر
پیشنهادی رو برای ارتقای سطح کیفی تالار c# دادم
http://barnamenevis.org/forum/showpost.php?p=889702&postcount=10
که اگه دوستان موافق باشن در این بخش هم برقرار بشه
و اما بحث امنیت:
داشتم تاپیکهای این بخش رو میخوندم به برخی از مفاهیم مانند Compressor - Packer - Encryptor Obfuscator برخورد کردم
فهمیدم که برای بالا بردن امنیت میشه از قفل نرم افزاری یا سخت افزاری یا هر دو استفاده کرد
تعداد زیادی روشها که هر کدوم جای خود قوی و خوب هستند اوکی
اما اگر بخواهیم همه اینها رو جمع بندی کرده و ترتیب مراحل رو بیان کنیم چجوری این کار رو میکنیم؟
منظورم اینه که روند کار بیان بشه یک دورنمایی داده بشه
مثلا بگین اول Pack رو انجام بده
بعد قفل نرم افزار رو بزار بعد فلان کار انجام بده
واسه این من ابتدا چند سوال رو مطرح میکنم:
جایگاه قفل نرم افزاری کجاست؟
جایگاه قفل سخت افزاری کجاست؟
این دو چه ارتباطی با هم دارن؟
جایگاه Reflector کجاست؟ چه ارتباطی با دو تا مفهم بالا داره؟
Nima NT
دوشنبه 28 دی 1388, 14:47 عصر
قفل نرم افزاری و سخت افزاری دو مقوله جدا از هم هستن ، یعنی باید جداگانه در موردشون بحث بشه ، البته نقاط مشترکی دارن ولی نقاط غیر مشترک اونها که شاید باعث به هم ریختن نظم بحث بشه خیلی بیشتر هست برای همین پیشنهاد میکنم فعلا" در مورد قفل نرم افزاری صحبت کنیم.
قفل نرم افزاری روالی هستش که یا خودتون مینویسید یا اینکه نمونه های نوشته شده رو خریداری میکنید.
اگر از مورد دوم استقبال کنید یعنی قفلی رو خریداری کنید مسلما" برای شما نحوه عملکرد اون پنهان خواهد بود یعنی فقط شما بر اساس فاکتورهایی مثل اعتماد ، پیشنهاد دوستان و از این قبیل چیزها از قفل خریداری شده استفاده میکنید ، ولی اگر بخواهید خودتون قفل رو بنویسید مساله فرق میکنه....
اول باید مشخص کنید که هدفتون از قفلی که میخواهید داشته باشید چی هست ، برنامه کپی نشه ؟ CD کپی نشه ؟ و از این مدل سوالها ، برای طراحی قفل هم باید در مورد توابع API و کمی در مورد مهندسی معکوس بدونید چون در غیر این صورت قفل شما دوام زیادی نخواهد آورد ( زود کرک خواهد شد ).
جایگاه قفل نرم افزاری کجاست؟
در بالا کمی توضیح دادم ، اول باید هدفتون رو از قفل نرم افزاری مشخص کنید تا بشه در موردش بحث کرد.
جایگاه قفل سخت افزاری کجاست؟
:لبخند:
جایگاه Reflector کجاست؟ چه ارتباطی با دو تا مفهم بالا داره؟
این برمیگرده به مهندسی معکوس و همون کرک خودمون ، شما اول باید در مورد کرک و نحوه کرک کردن چند برنامه ساده تحقیق کنید بعد روی بیارید برای نوشتن قفل ، جایگاه Reflector در کرکینگ هست و ربطی به قفل ها و انواع اونها نداره ، ارتباطی هم که بین اونها هست ( قفل - کرکینگ ) به یک ابزار نمیشه محدودش کرد ، برای نمونه شاید من و شما Reflector رو به عنوان بهترین ابزار برای کرک فایلهای دات نت میدونیم در صورتی که تیمهای کرک از ابزارهای پیچیده و بهتری استفاده میکنن که حتی روح ما هم از وجودشون خبر نداره ، بنابراین سعی نکنید با ایجاد رابطه بین ابزار و قفلها ، سعی در بلوکه کردن یک ابزار خاص داشته باشید چون هر لحظه که میگذره یه روش جدید و تازه در دنیای کرک تولید میشه.
سوالاتی هم که بنده دارم این هست....
از چه زبانی میخواهید برای تولید قفل استفاده کنید ؟
میزان اهمیت نرم افزارتون چقدر هست ؟
نوع مشتری شما چیست ؟ ( میزان آگاهی در کار با کامپیوتر ).
saed2006
سه شنبه 29 دی 1388, 09:40 صبح
ممنون که پاسخ دادی
در حاشیه:
قبل از اینکه پاسخ بدم این نکته رو یاد اوری کنم که فرض کن من یک برنامه نویس عادی هستم (به مفاهیم امنیت اشنا نیستم) هدف من نوشتن قفل نیست. من میخوام به مفاهیم کار شما اشنا بشم و بتونم از شما کمک بگیرم و مراحل و راهکار های تامین امنیت رو بفهمم ورودی من به شما پروژه ام خواهد بود و خروجی شما به من یک نرم افزار کاملا امن از هر جهت اگر به امنیت یک نرم افزار نمره 0 تا 100 بدیم من میخوام بدونم برای به 100 رسوندن امنیت برنا مه ام چه کنم.
و اما ادامه بحث:
گفتی:
از چه زبانی میخواهید برای تولید قفل استفاده کنید ؟
پروژه با سی شارپ نوشته شده
اما سوال:
مگه نوع زبان هم توی انتخاب قفل نرم افزاری موٍثر هست؟
نوع زبان توی نوشتن قفل موثر هست یا در استفاده از قفل های رایج بازار یا هر دو؟
در این مورد کمی بیشتر توضیح بده
گفتی:
میزان اهمیت نرم افزارتون چقدر هست ؟
اینقدر اهمیت داره که وقتی میاد توی بازار عده زیادی رو بیکار میکنه (پس اقبال زیادی وجود داره که خیلی سریع قفلش شکسته بشه) اینقدر واسمون مهم هست که اگه بدونیم قراره قفلش به راحت شکسته بشه اجازه نمیدیم نرم افزار وارد بازار بشه پس خیلی خیلی مهم هست واسمون
گفتی:
نوع مشتری شما چیست ؟ ( میزان آگاهی در کار با کامپیوتر ).
نوع مشتری ما قشر عوام کاربر ها هستند
هدف از ایجاد نرم افزار : همون کاری که توسط کاربری یک کاربر متخصص با نرم افزار های پیچیده انجام میشد با یک نرم افزار بسیار سادهتر و کاربری یک "کاربر عام " انجام بشه
Nima NT
سه شنبه 29 دی 1388, 14:20 عصر
مگه نوع زبان هم توی انتخاب قفل نرم افزاری موٍثر هست؟
صد در صد موثر هستش ، نوشتن قفل رو به نظر من با یکی از زبانهای Win32 باید انجام داد ، چرا که دات نت با توجه به نقاط ضعفی که داره زیاد امنیت چندانی رو نمیتونه برای شما به ارمغان بیاره.
نوع زبان توی نوشتن قفل موثر هست یا در استفاده از قفل های رایج بازار یا هر دو؟
بیشتر در نوشتن قفل تاثیر گذارهست وگرنه قفلهای موجود در بازار اکثر زبانها رو پشتیبانی میکنن.
نوع مشتری ما قشر عوام کاربر ها هستند
هدف از ایجاد نرم افزار : همون کاری که توسط کاربری یک کاربر متخصص با نرم افزار های پیچیده انجام میشد با یک نرم افزار بسیار سادهتر و کاربری یک "کاربر عام " انجام بشه
در مورد اینکه نوع مشتری رو پرسیدم میخواستم به این مطلب برسم که چقدر باید قفل رو پیچوند ، برای مثال اگر شما برای عوام ( که آشنایی زیادی ) با کامپیوتر ندارن بیاید و یه برنامه با Sql Server بنویسید خوب طرف شاید نتونه درست و حسابی برنامه رو جمع و جور کنه تا بخواد تو اینترنت براش درخواست کرک بده !!!!
منظورم استفاده از روشهایی هست که عوام از اون اطلاع ندارن و به نظرشون خیلی بزرگ و پیچیده میاد ، این برای شما که قرار هست برنامه رو نصب کنید زیاد فرقی نمیکنه ولی برای کاربر میتونه مشکل زا باشه.
قبل از اینکه پاسخ بدم این نکته رو یاد اوری کنم که فرض کن من یک برنامه نویس عادی هستم (به مفاهیم امنیت اشنا نیستم) هدف من نوشتن قفل نیست. من میخوام به مفاهیم کار شما اشنا بشم و بتونم از شما کمک بگیرم و مراحل و راهکار های تامین امنیت رو بفهمم ورودی من به شما پروژه ام خواهد بود و خروجی شما به من یک نرم افزار کاملا امن از هر جهت اگر به امنیت یک نرم افزار نمره 0 تا 100 بدیم من میخوام بدونم برای به 100 رسوندن امنیت برنا مه ام چه کنم.
واقعیت امر بنده نمیدونم شما چه اصطلاحاتی رو نمیدونید برای همین فکر کنم بهتر باشه شما سوالهایی رو که در باب کرکینگ و کلا" امنیت نرم افزاری دارید بپرسید تا یکی یکی به جواب برسیم.
saed2006
جمعه 02 بهمن 1388, 12:44 عصر
در مورد اینکه نوع مشتری رو پرسیدم میخواستم به این مطلب برسم که چقدر باید قفل رو پیچوند ، برای مثال اگر شما برای عوام ( که آشنایی زیادی ) با کامپیوتر ندارن بیاید و یه برنامه با Sql Server بنویسید خوب طرف شاید نتونه درست و حسابی برنامه رو جمع و جور کنه تا بخواد تو اینترنت براش درخواست کرک بده !!!!
منظورم استفاده از روشهایی هست که عوام از اون اطلاع ندارن و به نظرشون خیلی بزرگ و پیچیده میاد ، این برای شما که قرار هست برنامه رو نصب کنید زیاد فرقی نمیکنه ولی برای کاربر میتونه مشکل زا باشه.
مشتری یک کاربر عوام پولدار :لبخند:که حاضره پول خرج کنه تا نرم افزار رو کرک کنه
پس شما حساب کنید مشتری یه کرکر حرفه ای هست
واقعیت امر بنده نمیدونم شما چه اصطلاحاتی رو نمیدونید برای همین فکر کنم بهتر باشه شما سوالهایی رو که در باب کرکینگ و کلا" امنیت نرم افزاری دارید بپرسید تا یکی یکی به جواب برسیم
اگر اجازه بدین بریم سر اصل مطلب:
اولین قدم برای تا مین امنیت برنامه چی میتونه باشه؟
(با توجه به مفاهیمی که در بحث کرک و امنیت وجود داره)
Nima NT
جمعه 02 بهمن 1388, 13:31 عصر
اولین قدم برای تا مین امنیت برنامه چی میتونه باشه؟
اولین قدم این هست که شما یه قفل بنویسی ( البته پیش نیاز داره و اون هم اینه که کمی با کارهای سیستمی و مهندسی معکوس آشنا باشید ) ؛ در اولین قدم زیاد مهم نیست که امنیت قفل چقدره فقط تنها کاری که قفل میکنه اینه که اجرای برنامه رو محدود میکنه ، حالا در مراحل بعدی هست که باید بررسی کنید که این قفل چقدر امنیت داره و برای افزایش اون به میزان حداکثری چی کار باید کرد.
saed2006
شنبه 03 بهمن 1388, 08:41 صبح
ممنون از پاسخ هات
فرض رو بر این بزاریم که قفل نرم افزاری رو از یک شرکت بسیار معتبر در زمینه امنیت نرم افزار تهیه کردیم
و حالا میخوایم این قفل رو به برنامه متصل کرده و ما بقی کار ها رو انجام بدیم
لطفا توضیح بدین که از این مرحله به بعد باید چه کنیم؟
Babak.Hassanpour
شنبه 03 بهمن 1388, 12:52 عصر
در کل به امضا ی خودتون می رسید.
Nima NT
شنبه 03 بهمن 1388, 19:43 عصر
ممنون از پاسخ هات
فرض رو بر این بزاریم که قفل نرم افزاری رو از یک شرکت بسیار معتبر در زمینه امنیت نرم افزار تهیه کردیم
و حالا میخوایم این قفل رو به برنامه متصل کرده و ما بقی کار ها رو انجام بدیم
لطفا توضیح بدین که از این مرحله به بعد باید چه کنیم؟
خوب اگر قفل رو خریداری کرده باشید دیگه کاری برای شما باقی نمی مونه ، فقط باید طبق روالهای موجود در راهنما از قفل استفاده کنید ، یعنی اگر بخواهید بدونید که قفل چی کار کرده و در این کار موفق هم بشید باید در استفاده از اون قفل تجدید نظر کنید ( چون اصولا" قفل باید جوری باشه که کمی مرموز و سری باشه تا نشه روش اون رو بیرون کشید ).
saed2006
یک شنبه 04 بهمن 1388, 08:47 صبح
بحث Compressor - Packer - Encryptor fuscator دیگه منتفی میشه؟
Nima NT
یک شنبه 04 بهمن 1388, 13:06 عصر
در مورد هر قفل فرق میکنه ، مثلا" قفل کولاک به کاربران خودش پیشنهاد میکنه که حتما" فایل DLL رو پک کنن ، خوب در این مورد منتفی نیست ولی در مورد قفل شتاب همچین چیزی وجود نداره چون لایه قفل گذار خودش به صورت اتوماتیک این کارها رو انجام میده.
کاملا" بستگی داره به قفلی که استفاده میکنید.
saed2006
یک شنبه 04 بهمن 1388, 14:03 عصر
بهترین قفل رو از این نظر چی میدونید؟
Nima NT
یک شنبه 04 بهمن 1388, 14:56 عصر
بهترین قفل رو از این نظر چی میدونید؟
نمیخوام تبلیغ بکنم ولی با توجه به دات نت کار بودن شما فکر کنم قفل شتاب بیشتر بتونه نیازهای شما رو رفع کنه ولی توجه داشته باشید که این قفلها یه جورایی سر میبرن ( قیمتهای بالایی دارن ) ؛ اگر بتونید از قفل سخت افزاری استفاده کنید شاید در مواردی براتون بهتر و به صرفه تر باشه.
saed2006
چهارشنبه 07 بهمن 1388, 10:00 صبح
خب فرض کنید یک قفل نرم افزاری عالی خریداری شد
راهکار های بالا بردن امنیت برای ادامه راه کدام هست؟
گذاشتن قفل سخت افزاری و...
با تشکر
Nima NT
چهارشنبه 07 بهمن 1388, 13:43 عصر
قبلا" هم گفتم اگر قرار باشه قفلی خریداری بشه فقط باید به دستور العمل های تولید کننده عمل بکنید و نیازی به کار دیگه ای نیست ، بالا بردن امنیت یه قفل برای یک نرم افزار تنها زمانی معنا داره که شما خودتون تولید کننده باشید.
saed2006
چهارشنبه 07 بهمن 1388, 13:51 عصر
مرسی
اما مثلا همه برنامه نویسها نمیتونن کارشناس امنیت نرم افزار هم باشند
شما چه فکر میکنید؟
Nima NT
چهارشنبه 07 بهمن 1388, 14:13 عصر
درسته ؛ همه چیز را همگان دانند ولی نمیشه دست رو دست هم گذاشت برای همین بهتره اگر برنامه نویسی اطلاعات لازم رو برای نوشتن قفل نداره ( که البته مساله ای کاملا" طبیعی هست ) میتونه از نمونه های آماده ( قفلهای تجاری ) استفاده کنه و برای استفاده هم همه این قفلها راهنماهای خوبی دارن که مرحله به مرحله روش کار رو توضیح میدن که چطوری قفل رو به برنامه خودتون اضافه کنید.
bigboy_user
پنج شنبه 08 بهمن 1388, 18:23 عصر
خب فرض کنید یک قفل نرم افزاری عالی خریداری شد
راهکار های بالا بردن امنیت برای ادامه راه کدام هست؟
گذاشتن قفل سخت افزاری و...
راستش من یه تجربه هایی روی امنیت فایل EXE دارم و با توجه به تجربه ام پیشنهاد میکنم که از یه قفل سخت افزاری توی برنامه ات استفاده کنی که مانع کپی شدن نرم افزار میشه بعد هم واسه اینکه از کرک یا دیباگ با حالا هرهیچی برنامه جلوگیری کنی از یه EXEprotector استفاده کن (منظورم از EXEprotevtor یه برنامه ای که فایل EXE را بهش میده و روش یه سری کارهایی میکنه که دیگه به سادگی نمیشه EXE را دیباگ کرد)
اکثر شرکتهایی که قفل سخت افزاری میدن برنامه EXEProtector خودشان رت هم دارند
saed2006
دوشنبه 12 بهمن 1388, 11:32 صبح
برای نرم افزار هایی که با میکرو کنترل ها کار میکنند
مثلا نرم افزاری برای کار با دستگاه های cnc
ایا میشه مغز برنامه رو توی میکرو قرار داد تا به امنیت بیشتری برسیم؟
Nima NT
سه شنبه 13 بهمن 1388, 02:31 صبح
اگر منظورتون از این جمله ...
ایا میشه مغز برنامه رو توی میکرو قرار داد تا به امنیت بیشتری برسیم؟
این هست که تکه ای از فایل رو درون قفل سخت افزاری ( حافظه قفل ) بذاریم بله امنیت بالا میره ولی اینکه کدوم قسمت برنامه باشه زیاد توفیقی نمیکنه.
saed2006
سه شنبه 13 بهمن 1388, 12:42 عصر
ایا از نظر امنیتی بین استفاده از قفل سخت افزاری usb یا فرستادن قسمتی از برنامه بر روی میکروهای داخل دستگا های مکانیکی تفاوتی وجود دارد؟
Nima NT
سه شنبه 13 بهمن 1388, 13:12 عصر
مسلما" استفاده از حافظه برای قراردادن برنامه در حافظه امنیت بیشتری داره.
saed2006
سه شنبه 13 بهمن 1388, 13:30 عصر
مسلما" استفاده از حافظه برای قراردادن برنامه در حافظه امنیت بیشتری داره.
تشکر از شما
اگر نرم افزار ی قوی ترین قفل نرم افزاری رو داشت و خواست تا از حافظه داخلی استفاده کند
ایا در این صورت امکان کرک بار هم وجود خواهد داشت؟
با توجه به انتقال قسمتی از برنامه به حافظه میکرو راه کار شما برای پیاده سازی این روش چیست؟
و چگونه میتوان با پیاده سازی درست این روش به بالاترین حالت امن رسید؟
تشکر فراوان به جهت لطف شما در پاسخدهی
Nima NT
سه شنبه 13 بهمن 1388, 13:40 عصر
خواهش میکنم.
اگر نرم افزار ی قوی ترین قفل نرم افزاری رو داشت و خواست تا از حافظه داخلی استفاده کند
ایا در این صورت امکان کرک بار هم وجود خواهد داشت؟
بله امکانش خواهد بود ؛ ولی خوب کار هرکسی نیست.
با توجه به انتقال قسمتی از برنامه به حافظه میکرو راه کار شما برای پیاده سازی این روش چیست؟
و چگونه میتوان با پیاده سازی درست این روش به بالاترین حالت امن رسید؟
هر قدر اطلاعات منتقل شده به حافظه میکرو حجمشون زیاد باشه همون قدر امنیت بیشتر خواهد بود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.