كيفية عمل البطاقات الذكية

كيفية عمل البطاقات الذكية

هناك عدة أنواع من البطاقات الذكية. بطاقات خطوط المحمول هي واحدة منها. بشكل عام البطاقة الذكية هي أي بطاقة بها شريحة ذكية تحتوي علة متحكم إلكتروني (ميكروكنترولور). هذه الشريحة عبارة عن ذاكرة غير محددة غير سريعة التأثر بالعوامل الخارجية.

 

مصطلحات المقال

سنعتمد في هذا المقال المصطلحات العلمية التالية:
ثمــن: بالإنجليزية Byte وبالفرنسية Octet
زوج: بالإنجليزية وبالفرنسية bit 

ملاحظة 1: حتى تفهم المقال جيدا يجب أن تكون على علم بأن ثمنا واحد يساوي ثمانية أزواج، أي:

1 Byte = 1 Octet = 8 bits
1 ثمن = 8 زوج

ملاحظة 2: تم الاعتماد على شرح بطاقة جوال يونانية ويمكن اعتبارها كمنطلق لفهم بطاقات الجوال في البلدان الأخرى.

 

تهيئة البطاقات الذكية

بداية تعالوا نرى طريقة توصيلات الشريحة الذكية. إذا نظرت بقرب للشريحة ستجد أنها مقسمة بواسطة خطوط إلى ستة أو ثمانية مناطق أو أجزاء كما هو ظاهر بالصور:

 

1: فرق جهد قيمته 5 فولط يستخدم من أجل التغذية الكهربائية
2: إعادة التهيئة.
3: الساعة النبضية.
4: وصلة للإستخدام المستقبلي. 
5: الأرضي.
6: فرق جهد لبرمجة الشريحة
 (5 أو 21 فولط بخصوص 
NMOS).
7: دخل وخرج.
8: وصلة إضافية للإستخدام المستقبلي.

 

1: VCC, the 5 volts supply for the microcontroller
2: Reset
3: Clock
4: Reserved for Future Use
5: GND
6: VPP, programming voltage
    (5 or 21 volts if NMOS card) 
7: I/O pin
8: Reserved for Future Use

شرح مختصر

رقم 1 و 5 لإمداد الطاقة، وهي تساوي 5 فولت.
رقم 3 و 7 هما ساعة البرنامج وتعريف البيانات عن طريق نبضات الساعة يتغير الدخل والخرج للشريحة ثم يقوم منفذ إعادة الساعة بإرجاع الذاكرة إلى حالتها الأولى بعد إنتهاء العملية.

 

بروتوكول الإتصال

كأي تعريف آخر، البطاقات الذكية لها بروتوكول خاص بها. هذا البروتوكول بسيط للغاية، وعلي أن أوضح أنني سأتكلم هنا عن البطاقات الذكية من الجيل الثاني اليوناني ذي الذاكرة 128 زوج والعداد الثماني ذي 5 أثمان. تعالوا الآن نرى الأربع عمليات المتاحة عن طريق شريحة الجوال :

 1- قراءة ذاكرة الشريحة

خلال عملية القراءة يجب أن تكون وصلة إعادة الساعة على الوضع المنخفض (low) حيث هناك عداد داخلي للذاكرة يزداد كلما مرت نبضة من وصلة الساعة. يزداد العداد الداخلي خلال الجزء الموجب من نبضات الساعة، أما خلال الجزء السالب فتظهر البيانات خلال وصلة الدخل والخرج.

 2- إعادة تهيئة عداد الذاكرة الداخلي

ليس هناك طريقة مباشرة لمعرفة أي زوج من الذاكرة نريده لقراءة عملية أخرى، الطريقة الوحيدة هي عمل إعادة تشغيل للعداد والقراءة من الزوج رقم 0 مجددا. من المهم جدا وجود تسلسل لعملية إعادة التشغيل قبل البدء بعملية أخرى حيث أنه لا يمكننا معرفة مكان توقف العداد الداخلي للذاكرة بعد الإنتهاء من العملية الأخيرة.

وطريقة عمل التسلسل هي كالآتي : 

·      التأكد من أن وصلة الساعة ووصلة إعادة التشغيل كلاهما على الوضع المنخفض (low)

·      بعد ذلك نغير وضع وصلة إعادة التشغيل إلى الوضع المرتفع (high)

·      الإنتظار لمرور 400 دورة من الساعة مع معدل تأخير 1 ميليثانية تقريبا.

·      ضبط وصلة الساعة على الوضع المرتفع (high)

·      الإنتظار لمرور 400 دورة أخرى. مع معدل تأخير 1 ميليثانية تقريبا.

·      ضبط وصلة إعادة التشغيل على الوضع المنخفض (low)

·      الإنتظار لمرور 400 دورة أخرى. مع معدل تأخير 1 ميليثانية تقريبا.

·      ضبط وصلة إعادة التشغيل على الوضع المنخفض (low)

 بعد هذا التسلسل سيصبح العداد الداخلي للذاكرة يساوي 0. وسيظهر أول زوج من بيانات الشريحة على وصلة الدخل والخرج. يمكنك حينها قراءته ومن ثم قراءة باقي الشريحة عن طريق ذلك التسلسل.

 3- الكتابة على العداد الثماني الموجود بذاكرة البطاقة

عن طريق الأوامر يمكنك أن تكتب على عداد الذاكرة الثماني والذي يحمل وحدة الإتصال. باختصار العداد الثماني عبارة عن عداد بـ 4 أو 5 أثمان يحمل وحدة الإتصال التي تحتويها الشريحة. هذا العداد الثماني يعمل بشكل تنازلي فقط.

بالرغم من أن التسلسل الموجود بالشريحة مشترك بين جميع الشرائح في العالم إلا أن العداد الموجود بالذاكرة من الممكن أن يختلف من بلد لأخرى. وهذا هو التسلسل السليم للجيل الثاني من شرائح البطاقات اليونانية :
 

·      بداية اذهب إلى الموضع بالذاكرة الذي تريد الكتابة عليه.

·     ضع وصلة إعادة الساعة على الوضع المرتفع (high). انتظر مرور بعض من دورات الساعة ثم ضع وصلة إعادة الساعة على الوضع المنخفض (low)

·      انتظرمرور بعض من دورات الساعة ثم ضع وصلة الساعة على الوضع المرتفع (high)

·      انتظر على الأقل 10 ميليثانية.

·      ضع وصلة الساعة على الوضع المنخفض (low) 

بعد إنتهاء هذا التسلسل، يتم محو الذاكرة غير المحفوظة وتظهر القيمة الجديدة تلقائيا على وصلة الدخل والخرج.

 4- كتابة حمل في ذاكرة البطاقة

من الممكن أن تتساءل لو كان خلال الكتابة لا يمكن للتسلسل إلا أن يقل، إذن كيف يمكن للعداد الثماني ذو الأربعة أثمان أن يستعير حمل من ثمن إلى آخر؟ فلنفترض أنه لدينا 2 ثمن من العداد الثماني. ثمن للـHIGH  وثمن للـLOW. الثمن HIGH يساوي 00001111 والثمن LOW يساوي 00000000. خلال عملية التقليل سوف يقل الثمن HIGH بواحد فيصبح يساوي 00001110 والـثمن LOW سوف يستعير واحد ويصبح يساوي 11111111.
 

00001111:00000000

---- بعد التقليل التالي ------                            1 ثمن = 8 زوج

00000110:11111111

 الآن المشكلة أصبحت واضحة: الجزء الأيسر من الثمن الموجود بالأعلى يمكن كتابته عن طريق أوامر الكتابة كما شرحنا من قبل، ولكن الجزء الموجود بالثمن السفلي يجب أن يساوي 1 مرة أخرى والمشكلة أننا كما قلنا أنه لا يمكن الزيادة من 0 إلى 1 بل هناك عملية واحدة فقط وهي التقليل من 1 إلى 0. إذن؟

هذه المشكلة تم حلها عن طريق تسلسل كتابة الحمل. خلال هذا التسلسل يحدث شيئين:

·      الأول هو أن موضع الذاكرة المختار يقل بـ 1، ويحدث ذلك بنفس طريقة كتابة الأمر.

·      الثاني هو أن الثمن التالي في العداد الثماني يتم محوه ويتحول إلى 11111111.

وهذا هو تسلسل برمجة كتابة الحمل:

1-   بداية إذهب إلى موضع الذاكرة الذي تود الكتابة عليه.

2-   ضع وصلة إعادة التشغيل على الوضع المرتفع (high)، إنتظر بعض من دورات الساعة ثم ضع وصلة إعادة التشغيل على الوضع المنخفض (low)

3-    إنتظر بعض من دورات الساعة ثم ضع وصلة الساعة على الوضع المرتفع (high)

4-    إنتظر على الأقل 10 ميليثانية.

5-    ضع وصلة الساعة على الوضع المنخفض (low)

6-   إنتظر بعض من دورات الساعة ثم ضع وصلة إعادة التشغيل على الوضع المرتفع (high)، إنتظر بعض من دورات الساعة ثم أعد وصلة إعادة التشغيل إلى الوضع المنخفض (low)

7-    إنتظر بعض من دورات الساعة ثم ضع وصلة الساعة على الوضع المرتفع (high)

8-    إنتظر على الأقل 10 ميليثانية.

9-    أعد وضع الساعة إلى الوضع المنخفض (low)

 من الممكن ملاحظة أن تسلسل حمل الكتابة هو في الواقع عبارة عن جزئين من التسلسل في صف واحد. ولكن في الواقع خلال كتابة التسلسل الأول يتم محو بيانات الزوج المختار. لو حدث كتابة تسلسل ثاني إذن سيتم محو الثمن التالي الموجود بالعداد الثماني ومساواته بـ 11111111 وهنا تتم عملية كتابة الحمل، ومثال على ذلك:

00000000-00000011-00000000-00000000 

لو الزوج رقم 23 (من اليسار بداية من الزوج رقم 0) تم اختياره وحدثت عملية كتابة الحمل، إذن ذلك الزوج ستتحول قيمته إلى 0 والزوج الذي يليه سيتم محوه وتحويل قيمته إلى 11111111.

11111111-00000010-00000000-00000000

وهذا هو الرسم التخطيطي لتسلسل كتابة الحمل:


أقسام الذاكرة لشريحة الجوال

تنقسم الذاكرة إلى 8 أثمان. لسوء الحظ يختلف تقسيم الذاكرة من الخاصة بشرائح الجوال من بلد إلى بلد. وهنا سأشرح الشريحة الخاصة بشركة الاتصالات اليونانية كمثال على ذلك.

بداية من الثمن رقم 0:

·      الأربعة أثمان الأولى (من الثمن 0 إلى الثمن 3) تعطي معلومات عن المصنع والدولة، وأنا لا أعلم معلومات أخرى عنها.

·      الأربعة أثمان التالية (من الثمن 4 إلى الثمن 7) تحمل الرقم التسلسلي لبطاقة الهاتف، وهو رقم يتكون من 32 زوج. الجزء الأيمن من الرقم يتكون من أول 7 أثمان على اليمين والجزء الأيسر يتكون من أول 4 أثمان على اليسار. كمثال رقم تسلسلي مثل 0236111001 سيكون كالآتي:

·      الخمسة أثمان التالية (من الثمن 8 إلى الثمن 12) تبقى في العداد الثماني للذاكرة. وهذا هو وضع الذاكرة الوحيد الذي يمكن لعملية الكتابة أو كتابة الحمل أن تتم. هذا الوضع للذاكرة يحمل مكالمات الإتصال التي تمت والذي يشرح أيضا لماذا العداد تنازلي فقط. العداد الثماني يعمل بهذه الطريقة: بداية، عليك أن تحسب عدد أرقام الواحد في الثمن الواحد. هذا الرقم تضاعفه بالأس بالنسبة لموضعه بالثمن. هذه المضاعفة تساوي 84  أي 4096 لأول ثمن، 83 أي 512 لثاني ثمن، 82 أي 64 لثالث ثمن، 81 أي 8 لرابع ثمن و80 أي 1 لخامس ثمن.

تعالوا لنرى مثالا على هذا. فلنفترض أن لدينا بطاقة بها شكل الأثمان للعداد الثماني الآتي:


إليك طريقة حساب قيمة المكالمات لهذه الشريحة


عن طريق جمع تلك القيم نحصل على القيمة الكلية:

 

القيمة الكلية = 0 +  2048 + 192 + 56 + 5 = 2301

 

بالنسبة للبطاقات اليونانية، هذه الأرقام تعني 2301 يورو متبقي من المكالمة.


تأليف

تأليف: Giorgos Lazaridis
ترجمة: عبد الله سعد فراج (مصر)
البريد الإليكتروني للمترجم: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته. 


المراجع

http://www.pcbheaven.com/userpages/How_Phonecard_Smart_Cards_Work/index.php?topic=worklog&p=0
http://www.pcbheaven.com/userpages/How_Phonecard_Smart_Cards_Work/index.php?topic=worklog&p=1

أضف تعليق


كود امني
تحديث

المزيد في هذه الفئة :


Go to top