گسترش اينترنت و ارتباطات ديجيتال بي سيم به سرعت شيوۀ ارتباط انسانها با يکديگر را تغيير داد . امروزه به علت اينکه جهان در حال ارتباطات هر چه بيشتر است روش تجارت از شکل رو در رو به داد و ستد online تکامل يافته که با چند عمل کليک موس در خانه و محيط کار انجام مي گيرد . ظهور تجارت الکترونيک نه تنها باعث بروز تجارت و داد و ستد جديد شده بلکه يک فرصت بزرگ براي صنعت به وجود آورده تا دسترسي به مشتريان و معرفي خدمات جديد را داشته باشند .
موفقيت فروشگاههاي تجارت الکترونيک متکي بر اعتمادي است که اين فروشگاهها طي سالها تجارت و داد و ستد رو در رو به دست آورده اند . همچنين علت ديگر موفقيت آنها در تکنولوژي ساده ايست که براي خريداران به وجود آورده اند . امنيت و قابليت حمل کارتهاي هوشمند استفادۀ ساده و راحت و قابل اعتماد بودن و بي خطري اين کارتها را تضمين مي کند .
دنياي کامپيوتر روز به روز در حال پيشرفت است و همه روزه تکنولوژي جديد با حجم و قيمت کمتري نسبت به تکنولوژي هاي پيشين توسط شرکتهاي مختلف ارائه مي شود . آنچه در ادامه ارائه شده است نمونه اي از تکنولوژي نو با حجم کم ولي با امکانات بسيار و پر کار برد کارت هاي هوشمند مي باشد . در اين پروژه ابتدا به معرفي سخت افزار و امکانات کارت هاي هوشمند ، همچنين نحوۀ ارتباط و پروتکل هاي ارتباطي بين کارت و کارت خوان و بسته نرم افزاري شامل مشخصات ماشين ماي تعبيه شده براي اين سخت افزارها مي پردازيم و سپس به اصل موضوع پروژه که ايجاد يک سيستم ذخيره و بازيابي اطلاعات در قالب رکودهاي اطلاعاتي روي محيط کارتهاي هوشمند جارا است پرداخته شده است . در اين پروژه هدف بر اين است که رکوردهاي اطلاعاتي با تنوع تايپ در فيلدهاي آن در محيط کارتهاي هوشمند جادا قبل ذخيره و بازيابي باشد .
فصل اول :
Smart card ( کارت هوشمند ):
سايز اين کارتها دقيقاً به اندازۀ کارتهيا اعتباري است . يک کارت هوشمند اطلاعات را در يک مدار الکترونيکي که در قطعۀ سيليکوني لحاط شده در پلاستيک به عنوان بدنه ، قرار دارد ، ذخيره و پردازش مي کند . کارت هوشمند يک کامپيوتر قابل حمل و تغيير يافته است . بر خلاف کارتهاي نوار مغناطيسي ف کارتهاي هوشمند هم حامل اطلاعات دست و هم قدرت پردازش بر روي آنها را دارد . بنابراين ، در هنگام انتقال اطلاعات احتياج به دسترسي به پايگاه داده remote نيست .
تاريخچه اي کوتاه :
ايدۀ يکپارچگي يک مدار پيچيده و يک کارت پلاستيکي براي بار اول توسط دو مخترع الماني مطرح شد . جرج دتلوف و هلمات گروتراپ ( سال 1968)
بعدها جواز ثبت اختراع آلماني براي اختراعشان گرفتند در اواخر دهۀ هفتاد ميلادي ف CII – Honeywell – Bull براي اولين بار به تکنولوژي کارتهاي هوشمند جنبۀ تجاري داد و کارتهاي ريز پردازنده اي را معرفي کرد .
کارتهيا هوشمند اوليه در روايل دهۀ هشتاد در فرانسه و آلمان ازمايش شد . در ابتدا از کارتهاي هوشمند براي کارت پيش پرداز تلفن و کارتهاي بانکي پرداختي – دريافتي امن استفاده مي شد . اين موفقيت کارتهاي هوشمند پتانسيل بالاي کارتهاي هوشمند در برابر انعطاف پذيري و دستکاري شدن را اثبات کرد .
اخيرا ، به علت پيشرفت در فن آوي ساخت chip و روش رمز نگاري جديد کارتهاي هوشمند بسيار قدرتمند شده است . اين کارتها امروز پول را به صورت الکترونيکي رسيده مي کنند و جايگزين پولهاي کاغذي شده اند . همچنين مي توانند اطلاعات پزشکي و سلامت افراد را در خود ذخيره و حفظ کنند .
اين کارتها از دسترسي غير مجاز به کابلها و Broadcast جلوگيري مي کنند و باعث پيشرفت امنيت تلفن هاي بي سيم شده اند .
امروزه اين کارتها در اروپا و اسيا بسيار پر کاربرد است به علت همه گير شدن برنامه هايي نظير GSM و استفاده از کارتهاي بانکي . کارتهاي هوشمند براي اولين بار به فروشگاههاي امريکا در سال 1990 راه يافت .
مزايا
علاقه به کارتهاي هوشمند به علت مزايايي است که اين کارتها دارند . يکي از مزاياي آن قدرت حساب کردن و شمارش درون ساختاري آن است . امنيت ، قابل حمل بودن وابسته سادگي استفاده از آن از ديگر مزاياي آن است .
پردازشگر ، حافظۀ و ورودي و خروجي در داخل يک مدار محاط شده در کارت پلاستيکي هستند . کارتهاي هوشمند در برابر حملات مقاوم هستند زيرا مستقل از آسيب هاي گستردۀ منابع هستند .
به طور کلي نفوذ به اطلاعات کارت هوشمند بسيار سخت تر از نود به يک کامپيوتر خانگي است . مزيت ديگر کارتهاي هوشمند در قابل حمل بودن ذاتي آن است . شما مي توانيد يک کارت هوشمند را در کيف پول خود قرار دهيد . به همين علت کارت هوشمند هر جا که به ان نياز است در دسترس است حتي اگر کارت خوان از مکاني به مکان ديگر منتقل شود کار با کارت هوشمند بسيار ساده است . براي اين کار ، قرار دادن کارت در يک دستگاه گيرندۀ کارت و خارج کردن کارت از دستگاه وقتي کار تمام شد تمام کاري است که بايد انجام شود .
کاربردها :
کارت هاي هوشمند اغلب براي ذخيرۀ اطلاعات و اطمينان از امنيت انتقال مورد استفاده قرار مي گيرند . در زير نمونه هايي از کاربردهاي آن را مي آوريم :
1- در صنعت ارتباط دور برد . (Telecommunication Indastry)
2- در صنعت کارهاي بانکي و پرداخت.
3- استفاده از اين کارت به جاي بليط در صنعت حمل و نقل و مسافرتهاي شهري و بين شهري
4- در اينترنت
5- در محيطهاي بسته مانند شرکتها ، دانشگاهها و …
کارتهاي هوشمند اگر به مقبوليت بيشتري دست يابند ، در آينده در جيب تمام افراد مي توان آنها را يافت .
به کار بردن جاوا در کارت هاي هوشمند:
تکنولوژي جاوا کارتها راه کارهايي را در جهت رفع اشکالات در جهت پذيرش کارتهاي هوشمند پيشنهاد مي دهد . جاوا کارت به کارتهاي هوشمند و ديگر دستگاههاي با حافظۀ محدود اين اجازه را مي دهد تا برنامه هاي خود را به زبان جاوا در اين کارتها اجرا کنند . در حقيقت تکنولوژي جاوا کارت اين امکان را به کارت هوشمند مي دهد تا با استفاده از مزاياي زبان جاوا امنيت را بالا برده و بتوان از خاصيت چند کاربرد بودن کارتهاي هوشمند استفاده کرد
مزاياي تکنولوژي کارت جاوا:
براي پيشرفت کاربرد کارتهاي هوشمند مي توان از مزاياي تکنولوژي کارت جاوا که در زير آمده است استفاده نمود .
سادگي گسترش برنامه ها :
زبان جاوا گسترش برنامه هاي کارتهاي هوشمند را ساده مي کند . از اين زبان به جاي برنامه نويسي بر روي 5051 و 6805 مي توان استفاده کرد . همچنين به علت ويژگي مجزا بودن بنرامه هاي به زبان جاوا از platform وابستگي به سيستم از بين مي رود .
امنيت :
امنيت همواره يکي از المانهاي مهم مرود بررسي در کارتهاي هوشمند بوده است . جاوا ويزگي امنيتي درون ساختاري دارد که مناسب محيط کارتهاي هوشمند است . براي فعال سطح دسترسي به متدها و متغيرها به طور شديدي تحت کنترل است . به علاوه Applet هاي جاوا کارت توسط ديواره آتش اپلت کاملا از هم مجزا هستند بنابراين راه کاري وجود دارد که از application هايي که سعي در خراب کردن برنامه هاي ديگر دارند جلوگيري به عمل آورده شود .
استقلال سخت افزاري :
تکنولوژي جاوا کارت از نوع سخت افزار مورد استفاده جدا شده است . اين تکنولوژي بر روي تمام پردازشگرهاي کارت هوشمند ( از جمله 8 بيتي ، 16 بيتي يا 32 بيتي ) قابل اجرا است . اپلت هاي کارت جاوا بر بيروني ترين لايه plarform نوشته مي شود بنابراين از سخت افزار مستقل هستند .
قدرت ذخيره و کنترل چند برنامه در يک زمان :
يک کارت هوشمند مي تواند ميزبان چند اپلت باشد به طور مثال برنامه بهداشت و سلامت يک فرد ، برنامه تشخيص هويت فرد و .. را در خود داشته باشد .
به علت مکانيزم fire wall جاوا کارتها ، اپلت ها قادر به دسترسي به يکديگر نيستند مگر اينکه اجازه صريح داشته باشند . وقتي يک کارت ذخيره شد مقادير دروني آن ثابت نخواهد بود بلکه برنامه هاي جديدي مي توان در ان بارگذاري کرد .
سازگاري با استانداردهاي کارت هاي هوشمند موجود:
تکنولوژي کارت هوشمند جاوا بر مبناي استاندارد بين المللي کارت هوشمند يعني ISO 7816 است . بنابراين مي تواند سيستم هاي کارت هوشمند و برنامه هاي آن را که با ISO 7816 سازگارند حمايت کند .
تاريخچه اي کوتاه از تکنولوژي کارت جاوا :
API هاي جاوا کارت براي اولين بار در نوامبر 1996 توسط گروه مهندسي در اوستين تگزاس معرفي شدند . آنها در پي اين بودند که بتوانند کارت هوشمند را پيشرفته تر کنند و برنامه هاي آن را قابل گسترش کنند در عين اينکه امنيت در کارت حفظ شود . آنها خيلي زود دريافتند که برنامه نويسي به زبان جاوا راه حل اين مشکل است .
اين گروه پيش نويس اوليه اي را پينشهاد کردند براي API هاي کارت جاوا و اولين کمپاني کارت هوشمند داراي گواهي نامۀ مجاز شدند . چند ماه بعد Bull و Gemplus هم به اين گروه پيوستند تا در ساخت کارت جاوا همکاري کنند . در اببتدا نسخۀ 1.0 جاوا توليد و بعد از مدت کوتاهي نسخه 2.0 آن با حمايت sun micro system به بازار آمد . نسخۀ نهايي کارت جاوا يعني نسخۀ 2.1 در مارس 1999 با سه ويژگي خاص معرفي شد
1) ويژگي API مخصوص کارت جاواي 2.1 .
2) زمان اجراي کارت جاواي 2.1
3) خاصيت ماشين مجازي کارت جاواي 2.1 .
اين نسخه مبتني بر نسخۀ 2.0 بود با اين تفاوت که زمان اجرا run time ان بسيار بالاتر از استاندارد بوده ويژگي اصلي اين نسخه اين است که معماري ماشين مجازي جاوا را به طور صريح شناخته و در خود تعريف کرده است .
فصل 2
تکنولوژي کارت جاوا
تکنولوژي کارت جاوا اين امکان را به برنامه مي دهد تا به زبان برنامه نويسي جاوا نوشته شوند تا بر روي کارت هاي هوشمند يا وسيلۀ با حافظۀ محدود اجرا شوند . اين فصل کلياتي در مورد تکنولوژي کارت جاوا و در مورد معماري سيستم و اجزاي ان مي دهد .
کليات معماري :
کارتهاي هوشمند يکي از ساختارهاي کامپيوتري کوچک است که امروزه مورد استفاده قرار مي گيرد . ساختار حافظۀ اين کارتها به صورت يک کيلو بايت RAM و 16 کيلو بايت EEPROM و 24 کيلو بايت ROM است .
مهمترين چالش تکنولوژي طراحي کارت جاوا مناسب بودن نرم افزار سيستمي جاوا در کارت هوشمند است . راه حل آن نيز اين است که فقط از يک زير مجموعه از ويژگي هاي زبان جاوا استفاده شود و يک مدل جداگانه براي پياده سازي ماشين مجازي جاوا به کار برده شود .
ماشين مجازي کارت جدا به دو قسمت تقسيم مي شود : اولين قسمت روي off – card اجرا مي شود و قسمت ديگر روي on-card قسمتي از پردازش task ها که محدود به اجرا در زمان runtime نيستند مثل بارگذاري کلاسها يا شفافيت و پيوند اطلاعات link يا بهينه سازي به ماشين مجازي جاوا اختصاص يافته اند . که بر روي off-card اجرا مي شود جاي که منابع معمولا اهميت زيادي ندارند.
کارت هوشمند با کامپيوترهاي خانگي از چند نظر متفاوتند . علاوه بر اينکه زبان جاوا را نيز حمايت مي کند ، يک محيط run time يي را به وجود مي اورد که حافظه و نحوه ارتباط و امنيت و مدل اجراي برنامه هاي کابردي را نيز حمايت مي کند . محيط اجراي run time کارت جاوا با استاندارد ISO 7816 بين الملي کارت هوشمند مطابقت دارد . مهم ترين خاصيت محيط run time کارت جاوا اين است که برنامه هاي کاربردي را از سيستم کارت هوشمند مجزا کرده است .
به علت معماري مجزاي ماشين مجازي اين plat form بين کارت هوشمند و محيط کامپيوتر تقسيم شده هم از بعد مکان و هم زمان . که شامل 3 بخش مي شود و هر بخش در قالب يک مشخصه بيان مي شود.
- مشخصۀ ماشين مجازي کارت جاواي (JCVM) 2.1 يک زير مجموعه از زبان جاوا و تعاريف ماشين مجازي را شامل مي شود که مناسب Application هاي کارت هوشمند است .
- مشخصه محيط اجراي کارت جاواي (JCRE) 2.1 که رفتار و مشخصات زمان اجراي کارت جاوا را مشخص مي کند ، شامل مديريت حافظه ، مديريت برنامه و ديگر ويژگي هاي زمان اجرا مي شود .
- مشخصۀ واسط برنامه نويس برنامه ها (API) در نسخۀ کارت جاواي 1 يک مجموعه از core و package هاي قابل گسترش جاوا و کلاسها را براي نوشتن برنامه هاي کارت هوشمند تعريف مي کند.
فصل آخر :
هدف از انجام اين پروژه ايجاد يک سيستم ذخيره و بازيابي اطلاعات در قالب رکوردهاي اطلاعاتي روي محيط کارتهيا هوشمند جاوا است به نحوي که رکوردهاي اطلاعاتي با تنوع تايپ در فيلدهاي آن در محيط کارتهيا هوشمند جاوا قابل ذخيره و بازيابي باشند .
در اين پروژه بر روي راه کارهاي مختلف در خصوص ذخيره کردن اطلاعات با فرمتهاي شبيه رکوردهاي بانک اطلاعاتي بر روي کارتهاي هوشمند جاوا انجام مي گردد تا بتوان سيستمي تهيه نمود که اطلاعات مربوط را تبديل به اطلاعات byte stream براي ذخيره سازي روي کارتهاي مذکور نمايد اينکار ذخيره سازي لازم براي نگهداري رکوردهاي اطلاعاتي دانشجويان جهت کارتهاي ورود به جلسه امتحان و حضور غياب الکترونيکي را فراهم مي اورد . در نهايت . prototype يا الگويي ارائه خواهد شد که چند نمونه از رکوردهاي بانک اطلاعاتي SQL server را روي يک نمونه کارت هوشمند جاوا ذخيره و بازيابي نمايد .
يکي از ويژگي هاي کارت هاي هوشمند جاوا اين است که بنرامه هاي نوشته شدۀ کاربردي توسط کاربران را مي توان توسط زباني غير از جاوا نوشت و بعد آن را به فرمت قابل ذخيره بر روي کارت تبديل کرد . برنامۀ ذخيره و بازيابي اطلاعات نيز چون برنامه اي oncard نيست مي تواند بازباني ديگري نوشته شود به همين علت از زبان visual Basic که آشنايي بيشتري با ويژگي هاي برنامه نويسي ان نسبت به زبان Java داريم براي اين منظور استفاده شده است .
در ابتدا يک view همه جانبه از table ها و view هاي بانک اطلاعاتي دانشکده که در اختيار داشتيم را نوشته و ثبت کرديم تا در برنامه اصلي مورد استفاده قرار دهيم . برنامۀ اصلي از يک قسمت تشخيص فرد مورد نظر که کارت متعلق به اوست همچنين قسمتي جهت ذخيرۀ اطلاعات مربوط به شخص و قسمتي ديگر براي بازيابي ان در زمان مورد نظر تشکيل شده است تشخيص فرد مورد نظر توسط فيلد شمارۀ دانشجويي و نام و نام خانوادگي حاصل مي گردد چنانچه فردي با اين مشخصات وجود داشت و کارت براي ذخيره مورد استفاده قرار گرفت اطلاعات مربوط به ترم و اطلاعات اختصاصي فرد در Flexgrid مربوط به ذخيره اطلاعات ذخيره و نمايش داده مي شود . اطلاعات مورد نظر از همان view که در ابتدا نوشته شده بود گرفته مي شود اطلاعات بانک اطلاعاتي نيز در ابتداي هر ترم update مي شود بنابراين اطلاعات کارت هوشمند هر شخصي شامل اطلاعات اختصاصي او ( نام ، نام خانوادگي ، شماره شناسنامه ، شمارۀ دانشجويي ، نام پدر ، تاريخ تولد و … و اطلاعات هر نيمسال ( نام واحدها ، نام اساتيد ، تاريخ امتحان ، ساعت امتحان و … مي باشد . براي بازيابي اطلاعات نيز نام و نام خانوادگي و شمارۀ دانشجويي را وارد کرده و دکمۀ جستجوي مربوط به قسمت بازيابي را کليک مي کنيم تا اطلاعات مربوط به ترم جاري و اطلاعات اختصاصي هر فرد نمايش داده شود .
همان طور که مشخص است در قسمت ذخيرۀ اطلاعات تابعي وجود دارد به نام set – vsf- main table که نام ستونهاي flan grid را ذخيره مي کند ( مانند : نام ، نام خانوادگي و … ) و بعد اطلاعات مربوط به نام ستونها را در فيلد مورد نظر از روي بانک اطلاعاتي نمايش مي دهد سپس با کليک بر روي تلۀ فرمان نمايش اطلاعات تبديل شده به Byte stream در ليستي نمايش داده مي شود . اين کار توسط تابعي به نام ( Fill – vsf – main tablel انجام مي گيرد . بعد اين اطلاعات بر روي کارت ذخيره مي گردد.
در هنگام بازيابي اطلاعات با وارد کردن نام و نام خانوادگي و شمارۀ دانشجويي اطلاعاتي که به صورت Bytestream روي کارت قرار دارد نمايش داده مي شود ( به صورت مجموعه اي از صفر و يک ) سپس با کليک بر روي دکمۀ فرمان بازيابي اطلاعات تبديل به فيلدهاي اطلاعاتي بر روي يک flen grid نمايش داده مي شود اين اطلاعات همان اطلاعات اختصاصي و اطلاعات مربوط به نميسال جاري است که مراقب مي تواند با مراجعه به آن حضور و غياب را به درستي در جلسۀ امتحان انجام دهد . عمل بازيابي شامل اجراي چند تابع است . در ابتدا اطلاعات مربوط به نام ستونها در جدول flen grid ست مي شود سپس اطلاعات مربوط به هر فرد تبديل به اطلاعات قابل نمايش شده و در فيلدهاي ان قرار مي گيرد که اين کار توسط توابع Set – VSFG و fill – VSFG انجام مي گيرد .
اگر هنگام ذخيره يا بازيابي اطلاعات شمارۀ دانشجويي درست وارد نشود پنجره اي ظاهر مي شود که درخواست ورود اطلاعات صحيح را مي کند . و امکان ورود دوبارۀ اطلاعات را فراهم مي سازد . تبديل فرمتهاي مختلف نيز به bytestream توسط تابعي به نام Charge Binary و عکس آن توسط تابعي به نام Chargestring انجام مي گيرد .
در اين دو تابع يک سري عمليات رياضي براي انجام کار مورد نظر نوشته شده است.
در انتها برنامۀ نوشته شده به صورت الگويي ( prototype ) در آمده ودر کارت ذخيره مي شود تا در هنگام ذخيره و يا بازيابي اطلاعات مورد استفاده قرار گيرد.