قفل گذاری قسمت اول

قفل‌هاي نرم افزاري و سخت افزاري با توجه به فزوني نرم افزار در سيستم‌هاي کامپيوتري از يک طرف و توانايي کنترل کپي‌هاي غيرمجاز از طرفي ديگر دليلي محکم جهت بررسي اين شاخه از مهندسي نرم افزار مي‌باشد. از آنجا که متأسفانه قانون Copyright در تمام جهان بجز ايران و چند کشور ديگر اجرا مي‌گردد. بحث کنترل کپي‌هاي غيرمجاز حساس‌تر مي‌شود.
با توجه به کپي‌هاي غيرمجازي که روزانه بصورت کاملاً عادي و بدون اطلاع سازنده آن صورت مي‌گيرد، جلوگيري از اين عمل و کنترل جدي آن امري ضروري و واجب به نظر مي‌رسد. در اين مقاله آموزش تعميرات کامپيوتر درباره شناخت انواع اين قفل‌ها و چگونگي اعمال آنها بر روي يک برنامه بحث خواهد شد.
تعريف قفل‌هاي سخت افزاري
به هر برنامه‌اي که کنترل کپي آن از طريق سخت افزار اضافي قابل انجام مي‌باشد، قفل سخت افزاري گويند.
تعريف قفل‌هاي نرم افزاري
به هر برنامه‌اي که کنترل کپي آن فقط  از طريق نرم افزار و بدون نياز به سخت افزار اضافي قابل انجام باشد، قفل نرم افزاري گويند.
طريقه استفاده از قفل سخت افزاري
بخش اصلي قفل، از يک حافظه قابل پاک شدن تشکيل شده که با توجه به نوع و حجم آن، داراي عملکردي متفاوت مي‌باشد و عمدتاً به يکي از دو روش زير عمل مي‌کند:
الف) روش اول قفل‌گذاري به اين صورت است که توليد کننده نرم افزار يک يا چند بايت از اطلاعات را در قفل نوشته و برنامه در هنگام اجرا آن را چک مي‌کند. در صورتيکه قفل وجود داشته باشد، برنامه به کار خود ادامه مي‌دهد و اگر قفل وجود نداشته باشد و يا اطلاعات خوانده شده از روي قفل صحيح نباشد، برنامه متوقف شده و با اعلام خطا، از اجراي صحيح، سرباز مي‌زند. اين نوع قفل‌ها داراي ساختاري ساده، حافظه‌اي در حد چند بايت، و قيمتي ارزان هستند. استفاده از اين قفل‌ها بسيار ساده بوده و نياز به تخصص خاصي ندارد، تنها کافيست که نرم افزار ويژه قفل را که (توسط شرکت توليد کننده قفل ارائه شده) اجرا نمود. در ابتدا که قفل فاقد اطلاعات است، اول يک کلمه دلخواه، به عنوان کلمه عبور درخواست کرده و سپس با توجه به نوع قفل، يک يا چند کلمه اطلاعات را دريافت و در حافظه قفل ثبت کنيد. در دفعات بعد مي‌بايست کلمه عبوري که اولين بار ثبت شده، وارد شود تا بتوان به اطلاعات دروني قفل دسترسي داشت. البته بعد از ورود به برنامه اين اطلاعات دروني قفل دسترسي داشت. البته بعد از ورود به برنامه اين کلمه قابل تغيير است. در هر صورت، پس از ثبت اطلاعات در قفل، توليد کننده نرم افزار، اطلاعات ثبت شده در يک برنامه را چک مي‌کند که نحوه چک کردن اطلاعات، با توجه به نوع قفل متفاوت است. در بعضي فقط اطلاعات درون قفل چک مي‌شود و در بعضي ديگر، در مرحله اول وجود قفل چک شده و در مرحله بعدي، اطلاعات درون آن چک مي‌شود.
ب) روش ديگر قفل‌گذاري به اين صورت است که توليد کننده نرم افزار، بخش کوچکي از برنامه را در حافظه قفل قرار مي‌دهد. در اين حالت، چنانچه قفل وجود نداشته باشد برنامه به هيچ وجه، قادر به اجرا و ادامه کار نخواهد بود. اين نوع قفل‌ها داراي ساختاري کمي پيچيده، حافظه اي بعضاً تا چند کيلو بايت، و قيمتي نسبتاً گران هستند. استفاده از اين قفل‌ها، به سادگي نوع قبلي نيست.
البته نحوه کلي کار مشابه روش قبلي است. با اجراي نرم افزار ويژه قفل و وارد نمودن کلمه عبور، بايد نام فايلي را که مي‌خواهيم بر روي آن قفل بزنيم، مشخص کنيم، تا بخشي از آن در قفل ثبت گردد. البته در بعضي ديگر از اين نوع قفل‌ها، که حفاظت بيشتري را انجام مي دهند، مي‌بايست توسط توليد کننده نرم افزار دقيقاً کنترل شود که چه بخش‌هايي از فايل بايد در قفل ثبت گردد که البته انجام اين کار نياز به تخصص و تجربه کافي دارد، چرا که بعضاً ممکن است که خطا در انجام کار، باعث بروز اشکال در برنامه توليدي بشود. چون با اين کار در واقع بخشي از برنامه در قفل ثبت مي‌گردد، واضح است که هر قفل فقط براي يک نسخه از برنامه مي‌تواند مورد استفاده قرار بگيرد و به همين علت کاربرد اين قفل، کمتر است. ضمناً نوع ديگري از قفل‌ها هستند که از از هر دو روش فوق استفاده مي‌کنند، اما طرفدار چنداني ندارند. قفل‌هاي سخت افزاري با توجه به اضافه کردن يک سخت افزار جديد به کامپيوتر (اغلب از طريق ارتباط با پورت چاپگر) برنامه خود را کنترل مي‌کنند. برنامه قبل از اجرا ابتدا با توجه به مراجعه به آدرس سخت افزار نصب شده (اضافه شده با استفاده از دستور Port) به سخت افزار مورد نظر خود مراجعه کرده و در صورت يافتن آن، تست‌هاي مختلف اعم از تست رمز، خواندن اطلاعات و... مي‌تواند تصميم گيري نمايد.
طريقه استفاده از قفل نرم افزاري
با توجه به نوع کاربرد برنامه، اندازه، قابليت کپي برداري از آن بر روي ديسک، تحت شبکه بودن برنامه و... مي‌توانيم از انواع روش‌هايي که جهت حفاظت از نرم افزار در نظر داريم (و متعاقباً توضيح داده خواهد شد) استفاده کنيم. اما مساله قابل بحث اين است که چگونه از يک قفل منتخب استفاده نمائيم؟ جواب اين سوال متغير و وابسته به شرايط زير است مي‌باشد:
الف: اعتقاد طراح نرم افزار به اينکه کاربر حتماً بايد آن را خريداري نمايد تا از امکانات آن مطلع گردد. در اين حالت قفل نرم افزاري در ابتداي شروع به کار برنامه کنترل مي‌گردد حتي طراح مي‌تواند در مواقع حساس نيز قفل را مجدداً کنترل کند و يا در حالتي که طراح واقعاً سخت گير باشد، مي‌تواند در زمان هاي مشخصي از وجود قفل اطمينان حاصل نمايد (مثلاً هر 4 ثانيه). البته در اين حالت طراح بايد روشي را که جهت کنترل قفل استفاده مي کند، نيز در نظر بگيرد.
ب: اعتقاد طراح نرم افزار به اين که کاربر مي‌تواند از نرم افزار به عنوان نسخه نمايشي نيز استفاده کند. طراح در اين حالت مي‌بايست در مکان‌هاي خاصي از برنامه، قفل را کنترل کند. مثلاً در يک برنامه حسابداري مي‌توان تمام بخش‌هاي سيستم را آزاد گذاشته (يعني برنامه نيازي به قفل نداشته باشد) اما در صورتي که کاربر مايل به استفاده از امکانات گزارش گيري سيستم باشد، قفل نرم افزاري درخواست گردد.
مزيت اين روش بر روش قبلي اين است که ديگر نياز به طراحي نسخه نمايشي جهت مشاهده کاربران وجود ندارد.