چکیده
با توجه به فزونی نرم افزار در سیستم های کامپیوتری از یک طرف و توانایی کنترل کپی های غیرمجاز ( از دیدگاه اقتصادی آن ) از طرفی دیگر دلیلی محکم جهت بررسی این شاخه از مهندسی نرم افزار می باشد.
از آنجا که متاسفانه قانون Copyright در تمام جهان بجز ایران و چند کشور دیگر اجرا می گردد, بحث کنترل کپی های غیرمجاز حساس تر می شود. در این مقاله سعی بر این است تا علاوه بر آشنایی با انواع قفل های نرم افزاری و اختلاف آن ها با قفل های سخت افزاری, بتوانیم به عنوان طراح یک قفل نرم افزاری از محصولات نرم افزاری خودمان حمایت کنیم. ضمنا علاوه بر آشنایی با مفاهیم فوق, نوشتن روتین های ضد دیباگ و همچنین نحوه کد کردن اطلات نیز لحاظ شده است.
مقدمه
از آنجا که زمان زیادی تا سال 2000 باقی نمانده, اما هنوز در کشور ما ایران, نرم افزار جای خود را به عنوان یک محصول صادراتی پیدا نکرده چرا که یکی از دلایل اصلی آن عدم توجه جدی به حمایت از تولید کنندگان نرم افزار می باشد. به هر حال قصد اینجانب از ارائه مقاله, بررسی کم و کاستی های نرم افزار در ایران نیست بلکه طریقه حل مشکل موجود در این بازار نابسامان می باشد. با توجه به کپی های غیرمجازی که روزانه بصورت کاملا عادی و بدون اطلاع سازنده آن صورت می گیرد, جلوگیری از این عمل و کنترل جدی آن امری ضروری و واجب بنظر می رسد.
آشنایی با قفل های نرم افزاری و سخت افزاری
تعریف قفل های نرم افزاری: به هر برنامه ای که کنترل کپی آن فقط از طریق نرم افزار و بدون نیاز به سخت افزار اضافی قابل انجام باشد, گویند.
تعریف قفل های سخت افزاری: به هر برنامه ای که کنترل کپی آن از طریق سخت افزار اضافی قابل انجام باشد, گویند.
با توجه به تعاریف فوق می توان به تفاوت قفل های سخت افزاری و نرم افزاری پی برد. قفل های سخت افزاری با توجه به اضافه کردن یک سخت افزار جدید به کامپیوتر ( اغلب از طریق ارتباط با پورت چاپگر ) برنامه خود را کنترل می کنند. برنامه قبل از اجرا ابتدا با توجه به مراجعه به آدرس سخت افزار نصب شده ( اضافه شده با استفاده از دستور Port) به سخت افزار مورد نظر خود مراجعه کرده و در صورت یافتن آن, تست های مختلف اعم از تست رمز, خواندن اطلاعات و ... می تواند تصمیم گیری نماید. اما در قفل های نرم افزاری برنامه بدون نیاز به سخت افزار اضافی و با کنترل رسانه ذخیره سازی می تواند تصمیم گیری کند. ضمنا لازم به توضیح است که هدف از طراحی قفل های نرم افزاری/ سخت افزاری این نیست که هیچکس توانایی شکستن ( باز کردن ) آنرا ندارد بلکه مقصود بالا بردن سطح کنترل کپی های غیر مجاز تا حد ممکن می باشد. ( چرا که می دانیم اطلاعات همه در یک سطح نیست)
طریقه استفاده از قفل نرم افزاری در برنامه مورد نظر
با توجه به نوع کاربرد برنامه ( کوچک وقابل کپی بر روی یک دیسکت, تحت شبکه و ... ) می توانیم از انواع روش هایی که جهت حفاظت از نرم افزار در نظر داریم ( و متعاقبا توضیح داده خواهد شد ) استفاده کنیم. اما مساله قابل بحث این است که چگونه از یک قفل منتخب استفاده نمائیم؟
جواب این سوال متغییر و وابسته به شرایط زیر می باشد:
الف: اعتقاد طراح نرم افزار به اینکه کاربر حتما باید آنرا خریداری نماید تا از امکانات آن مطلع گردد.
در این حالت قفل نرم افزاری در ابتدای شروع به کار برنامه کنترل می گردد حتی طراح می تواند در مواقع حساس نیز قفل را مجددا کنترل کند و یا در حالتی که طراح واقعا سخت گیر باشد, می تواند در زمان های مشخصی از وجود قفل اطمینان حاصل نماید ( مثلا هر 4 ثانیه ). البته در این حالت طراح باید روشی را که جهت کنترل قفل استفاده می کند, نیز در نظر بگیرد.
ب: اعتقاد طراح نرم افزار به این که کاربر می تواند از نرم افزار به عنوان نسخه نمایشی نیز استفاده کند.
طراح در این حالت می بایست در مکان های خاصی از برنامه, قفل را کنترل کند. مثلا در یک برنامه حسابداری می توان تمام بخش های سیستم را آزاد گذاشته ( یعنی برنامه نیازی به قفل نداشته باشد ) اما در صورتی که کاربر مایل به استفاده از امکانات گزارشگیری سیستم باشد, قفل نرم افزاری در خواست گردد. مزیت این روش بر روش قبلی این است که دیگر نیاز به طراحی نسخه نمایشی جهت مشاهده کاربران وجود ندارد.
آشنایی با نحوه قفل گذاری بر روی یک برنامه
الف: طراح به سورس برنامه دسترسی دارد.
در این حالت طراح پس از انتخاب روش قفل گذاری, کافیست آنرا به زبان مورد نظر خود پیاده سازی نموده و در برنامه خود بگنجاند. ( که مکان های قرار دادن قفل در عنوان قبلی توضیح داده شد) .
ب: طراح ( مجری پروژه ) به سورس برنامه دسترسی ندارد.
گاهی اوقات به یکسری برنامه های ارزشمندی برخورد می کنیم که فاقد قفل هستند, بنابراین نیاز به قفل گذاری وجود دارد. ( البته این حالت بیشتر در کشور ما و چند کشور دیگر که در آن ها قانون Copyright معنی ندارد, کاربرد دارد. ) جهت تزریق قفل به این گونه برنامه ها, نیاز به آشنایی کامل به ساختار فایل های اجرایی (EXE, COM, SYS, …) وجود دارد چرا که باید برنامه ای طراحی کنیم تا همانند یک ویروس کامپیوتری به فایل اجرایی مشخصی بچسبد. البته جهت اینکار بهترین زبان برنامه نویسی, اسمبلی می باشد. ( بدلیل توانایی دخالت در روند اجرای برنامه )
البته در رابطه با نحوه نوشتن این گونه برنامه ها, روش های زیادی وجود دارد که خود بحثی مجزا را می طلبد و از حوصله این مقاله خارج است.
ضمنا برای بالا بردن سطح امنیت برنامه لازم است تا یکسری کد های ضد دیباگ در برنامه گنجانده شوند. کدهای ضد دیباگ, دستوراتی به زبان اسمبلی هستند که در حالت اجرای عادی برنامه, هیچ تغییری در روند اجرای نمی گذارند بلکه در صورتی که برنامه توسط دیباگرها اجرا گردد ( مورد ارزیابی قرار گیرد ) بتواند از اجرای آن جلوگیری نماید. با اضافه کردن کد های ضد دیباگ به ابتدای برنامه ( یا قبل از کنترل قفل ) می توان احتمال قفل با استفاده از موقعیت فایل روی هارد دیسک
این نوع قفل فقط بر روی هارد دیسک قابل استفاده بوده و به این صورت است که فایل اجرایی به موقعیت خود بر روی هارد حساس می باشد چرا که قبل از اجرا ابتدا موقعیت خود را از روی سکتورهای ROOT خوانده و سپس شماره کلاستر اشاره گر به خودش را بدست می آورد, سپس آنرا با شماره کلاستری که قبلا توسط برنامه نویس بر روی یکی از فایل های برنامه ( ممکن است بصورت کد شده باشد ) قرار داده شده, مقایسه کرده و در صورت برابر بودن اجرا می شود. این نوع قفل نسبت به قفل قبلی ( شماره 2 ) استفاده کمتری داشته چرا که در صورتیکه برنامه از روی بخشی از هارد به ناحیه دیگری انتقال یابد, اجرا نخواهد شد و این از نظر کاربر بسیار ناپسند می باشد. ( ضمنا امکان Defra, Scandisk, و ... نیز وجود ندارد چرا که شماره کلاستر اشاره گر به فایل تغییر خواهد کرد)
ضریب اطمینان این نوع قفل نیز 80%-70% می باشد. دستکاری در برنامه را پائین آورد. ( نحوه نوشتن کد های ضد دیباگ در پیوست A آورده شده است)
روش ساده دانشگاه پرینستون برای سرقت اطلاعات هارد دیسک
هنگامی که تراشهها را توسط یک توده هوا سرد میکنید، اطلاعات هم در جای خود منجمد میشوند و در نتیجه نمیتوان به راحتی این رشتههای بلند صفر و یک را از تراشههای کامپیوتری استخراج کرد.
دانشمندان عنوان کردهاند که تراشههای حافظه استاندارد، اطلاعات را تا چند ثانیه یا حتی چند دقیقه پس از خاموش شدن دستگاه در خود نگه میدارند.
یک گروه از محققان امنیت کامپیوتر دانشگاه پرینستون روش سادهای ابداع کردهاند که به وسیله آن میتوان اطلاعات رمزی ذخیره شده در هارد دیسک را به سرقت برد.
در این روش که میتواندبحث نرمافزارهای امنیتی را به چالش بکشد، فقط کافی است تراشه حافظه کامپیوتر را به وسیله تودهای از هوای سرد، منجمد کرد. نرمافزارهای رمزنگاری به طور فراگیر توسط شرکتها و نهادهای دولتی گوناگون مورد استفاده قرار میگیرند، ضمن آن که یکی دیگر از کابردهای عمده آنها در کامپیوترهای همراه یا همان لپتاپهاست و امکان سرقت آنها نیز بالاست.
در این روش، از نفوذپذیری محدود تراشه DRAM بهره گرفته میشود. این تراشهها، اطلاعات را به طور موقت نگهداری میکنند که از جمله میتوان به الگوریتم رمزگذاری پیشرفته اطلاعات اشاره کرد. هنگامی که کامپیوتر خاموش میشود و منبع برق از کار میافتد. اطلاعات گوناگون از جمله این الگوریتم ناپدید میشود.
در یک یادداشت فنی که در توضیح این دستاورد جدید از طرف دانشگاه پرینستون منتشر شده است، دانشمندان عنوان کردهاند که تراشههای حافظه استاندارد، اطلاعات را تا چند ثانیه یا حتی چند دقیقه پس از خاموش شدن دستگاه در خود نگه میدارند.
هنگامی که تراشهها را توسط یک توده هوا سرد میکنید، اطلاعات هم در جای خود منجمد میشوند و در نتیجه نمیتوان به راحتی این رشتههای بلند صفر و یک را از تراشههای کامپیوتری استخراج کرد.
ادوارد فلتن (Edward Felten) یکی از دانشمندان کامپیوتری دانشگاه پرینستون میگوید: اگر تراشهها را در نیتروژن مایع (دمای 196- درجه سانتیگراد) منجمد کنید، تراشهها بدون منبع انرژی، ساعتها در حالت اولیه خود به این شکل باقی میمانند. حال فقط کافی است آنها را به کامپیوتر برگردانید تا بتوانید تمامی اطلاعات و محتویات آنها را بخوانید.
دانشمندان به این منظور و برای شناسایی موانع و کلیدهای امنیتی میان میلیاردها اطلاعات کامپیوتری مختلف در تراشههای حافظه، نرمافزار الگو شناختی خاصی را مورد استفاده قرار دادند.
فلتن در این باره میگوید: ما بر این باوریم که امنیت اطلاعات مردم امر مهمی تلقی میشود و باید روی این موضوع بیشتر از اینها کار کرد.
این گروه تحقیقاتی دانشگاه پرینستون از پنج دانشجوی فارغالتحصیل کامپیوتر تشکیل شده که توسط فلتن رهبری میشوند. علاوه بر این، سه متخصص فنی هم با گروه فلتن به همکاری میپردازند. طبق اعلام این گروه، با روش یاد شده، اطلاعات کامپیوترهای دولتی مورد تهدید قرار میگیرد، چون جزییات چگونگی طبقهبندی این اطلاعات کاملا محرمانه است و در سطح عمومی اطلاعی از آنها در دست نیست.
محققان همچنین عنوان کردند که این روش سرقت اطلاعات را روی سیستمهای رمزگذاری امنیتی جدید که در برخی از دیسکهای تجاری به کار گرفته میشود، امتحان نکردهاند.
با وجود این، فلتن مدعی است که گروه تحقیقاتیاش میتواند ثابت کند که سیستم سختافزاری
" ما بر این باوریم که امنیت اطلاعات مردم امر مهمی تلقی میشود و باید روی این موضوع بیشتر از اینها کار کرد.... "
مطرح Trusted Computing هم که به عنوان فناوری پیشرو در افزایش ضریب امنیت کامپیوترهای خانگی مدرن از آن یاد میشود، در مقابل چنین حملهای ناتوان است. وی میافزاید: نتایج تحقیقات ما نشان میدهدکه نمیتوان با قاطعیت درباره امنیت کامپیوتر و نفوذناپذیری سیستمهای امنیتی صحبت کرد و همواره باید به این امر با شک و تردید نگریست.
پیتر نیومن (Peter Neumann) یکی از محققان امنیتی شرکت SRI در کالیفرنیا میگوید: این هم یک نمونه دیگر، حاکی از آن که اوضاع همیشه به همان شکلی نیست که در ظاهر شاهد هستیم. دانشمندان دانشگاه پرینستون اعلام کردندکه میتوانند به اطلاعات رمزگذاری شدهای که توسط برنامههای کاربردی مخصوص سیستمهای عامل ویندوز، مکینتاش و لینوکس ذخیره شده است، نفوذ کنند.
اپل از سال 2003 تاکنون در سیستمعامل OS X یک سیستم رمزگذاری به نام File Vault را به کار گرفته است و مایکروسافت هم از سیستم رمزنگاری BitLocker در ویندوز ویستا بهره میبرد. این در حالی است که هر دو برنامه برای رمزگذاری اطلاعات در هنگام خواندن و رایت آنها، از الگوریتم «سیستم رمزگذاری پیشرفته» دولت فدرال ایالات متحده بهره میبرند و هر دو نیز کلید دسترسی به اطلاعات را خارج از قالب رمزنگاری در کامپیوتر باقی میگذارند.
مت بلیز (Matt Blaze) استادیار علوم اطلاعات و کامپیوتر دانشگاه پنسیلوانیا میگوید: دنیای نرمافزاری ترجیح میدهد از این مشکلات چشمپوشی کند، ولی ما ترجیح میدهیم که روی سختافزار کامپیوتر به حدس و گمان بپردازیم؛ البته هنگامی که فرضیهمان غلط از آب در میآید، دچار دردسر میشویم.
هر دو شرکت اپل و مایکروسافت عنوان کردهاندکه برنامه رمزگذاری سیستمهای عاملشان به طور پیشفرض غیر فعال است و این بر عهده خود کاربر است که به دلخواه، این قابلیت را فعال کند. مقامات مایکروسافت اعلام کردند که برنامه BitLocker از یک سری گزینههای امنیتی و حفاظتی برخوردار است که در سه سطح خوب، بهتر و عالی به رمزگذاری اطلاعات میپردازد.
استین ویلسون (Austin Wilson) رییس بخش مدیریت امنیت محصولات مایکروسافت عنوان کرد که بهتر است BitLocker در برخی موارد و به همراه سختافزارهای امنیتی جانبی مورد استفاده قرار گیرد. حال این سختافزار میتواند یک قفل سختافزاری USB یا یک کارت شناسایی ایمن باشدکه تعدادی از قفلهای جانبی را ارایه میکند.
محققان دانشگاه پرینستون اذعان کردند که در حالت امنیتی پیشرفته BitLocker، اطلاعات رمزگذاری شده به وسیله منجمد کردن تراشههای حافظه، قابل دسترس نیست.
از طرفی، یکی از سخنگویان شرکت اپل اعلام کرد که ضریب امنیت سیستم رمزگذاری File Vault را میتوان با اضافه کردن یک کارت امنیتی به سیستم، بالا برد.
مساله حفاظت از اطلاعات کامپیوتری با استفاده از فناوری رمزنگاری زمانی سروصدا به پا کرد که اواخر سال 2006، ماموران گمرک ایالات متحده یک شهروند کانادایی را به جرم به همراه داشتن فایلهای هرزهنگاری کودکان در کامپیوترش توقیف کردند.
هنگامی که مسوولان، کامپیوتر این فرد متهم را بررسی کردند، متوجه شدند که اطلاعات وی رمزگذاری و حفاظت شده است. از طرفی، فرد مظنون هم از بازگو کردن رمز عبور سرباز زد. در این پرونده که کار آن به دادگاه کشیده شد، یک مامور فدرال شهادت دادکه هیچ راهی برای پیبردن به رمز عبور کامپیوتر این مجرم کانادایی وجود ندارد و تنها میتوان از یک برنامه حدس کلمه عبور استفاده کرد که این کار سالها طول میکشد.
این در حالی است که بنابر حکم دادگاه فدرال آمریکا، تحت فشار قرار دادن مظنون برای فاش کردن رمز عبور، غیرقانونی است.
چگونه کامپیوتر خود را قفل کنید
.1حفاظت فیزیکی:
حتی با داشتن سخت ترین رمز عبور، بهترین شیوه رمزگذاری و شدیدترین تدابیر امنیتی روی کامپیوتر خود، اگر آن را به لحاظ فیزیکی تحت حفاظت نگرفته باشید، یک همکار، دوست، فامیل، یا کلا هر کسی که شما وی را «دوست» فرض می کنید، می تواند دور از چشم شما به سرقت اطلاعات تان پرداخته و مرزهای امنیتی کامپیوترتان را در هم بشکند. طبق یک نظرسنجی از مدیران ارشد IT شرکت ها که توسط موسسه امنیت کامپیوتر انجام شد، 45 درصد شرکت ها اعلام داشتند که در سال 2003 دسترسی غیرمجاز به اطلاعات شان از طرف پرسنل و کارکنان داخلی شرکت صورت گرفته است. پس می بینیم که این خطر بسیار جدی است و بدتر این که شناسایی و مقابله با دوستان بسیار دشوارتر از مقابله با نفوذگری است که از بیرون راهی را برای نفوذ به سیستم شما جستجو می کند.
جلوگیری از بوت شدن
رمز عبور شما در ویندوز ممکن است رمزی پیچیده با رعایت تمام توصیه های امنیتی باشد (مثلا طولانی باشد و در آن از حروف، اعداد و علائم خاص استفاده شده باشد)، ولی چه فایده اگر کسی بتواند بدون بالا آوردن ویندوز به اطلاعات هارد دیسک شما دست پیدا کند؟ یک جاسوس با معلومات، می تواند با استفاده از سی دی یا فلاپی دیسک قابل بوت، به محتوای هارد شما دست پیدا کند و نیازی هم به ویندوز ندارد. برای جلوگیری از انجام چنین نفوذ هایی،از طریق برنامه Blos کامپیوتر خود، تمام اجزای قابل بوت کردن سیستم را به غیر از هارددیسک غیر فعال کنید. یا اگر این کار امکان پذیر نیست، حداقل هارددیسک را به عنوان اولویت اول بوت تعریف کنید. برای محافظت از کامپیوترهای مستقر در مراکز پر رفت وآمد و دفاتری که با ارباب رجوع سروکار دارند، توصیه می شود تمام فلاپی درایوها و سی دی درایوها را از سیستم باز کنید و پورت های USB یا FireWire آن ها را ببندید تا کسی نتواند با سی دی لینوکس یا کول دیسکهای USB، کامپیوتر را بوت کند.
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 35 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود مقاله طریقه استفاده از قفل نرم افزاری