تا حالا به این فکر کردین که کارت ملی شما چه امکانات و چه اطلاعاتی درون خودش ذخیره کرده ؟ یا مثلا وقتی از کارت هوشمند خود استفاده می کنین چه عملیات و چه اطلاعاتی بین کارت شما و دستگاه رد و بدل می شه ؟
کارت هوشمند یک کارت پلاستیکی هست که روی اون و یا در بین لایه هاش تراشه های حافظه و ریزپردازنده برای ذخیره سازی و پردازش اطلاعات قرار داره. در حقیقت وجود مدار مجتمع و ریزپردازنده در کارت به جای نوار مغناطیسی، قابلیت هوشمند بودن به اون میده. اگر هنوز راجب قطعات و ساختار کارت های هوشمند اطلاعی ندارید پیشنهاد میکنم ابتدا مقاله ساختار کارت های هوشمند را مطالعه کنید.
خب حالا بیاید شروع کنیم…
در این مقاله بصورت کامل ساختار فرمان هایی که به کارت هوشمند ارسال و پاسخی که از سمت کارت دریافت میشه رو توضیح خواهم داد.
استاندارد های کارت هوشمند
ISO (سازمان بین المللی استاندارد) و IEC (کمیسیون بین المللی الکتروتکنیکی) سیستم تخصصی استانداردسازی در سراسر جهان را تشکیل می دهند. نهادهای ملی که عضو ISO یا IEC هستند از طریق کمیتههای فنی که توسط سازمان مربوطه برای رسیدگی به زمینههای خاص فعالیت فنی ایجاد میشوند، در توسعه استانداردهای بینالمللی شرکت میکنند. کمیته های فنی ISO و IEC در زمینه های مورد علاقه مشترک با یکدیگر همکاری می کنند. همچنین سایر سازمان های بین المللی، دولتی و غیردولتی، در ارتباط با ISO و IEC نیز در این کار مشارکت دارند.
(ISO/IEC 7816-(all parts یک استاندارد بینالمللی مربوط به کارتهای شناسایی الکترونیکی، بهویژه کارتهای هوشمند و اخیراً دستگاههای تلفن همراه بدون تماس است که به طور مشترک توسط سازمان بینالمللی استاندارد (ISO) و کمیسیون بینالمللی الکتروتکنیکی (IEC) مدیریت میشود. این کارتها، کارتهای شناسایی هستند که برای تبادل اطلاعات بین دنیای خارج و مدار مجتمع موجود در خود تبادل اطلاعات میکنند.
شرح پارت های استاندارد ISO7816
-
ISO/IEC 7816-1 | کارت تماسی: مشخصات فیزیکی کارت های تماسی را مشخص می کند.
-
ISO/IEC 7816-2 | کارت تماسی: ابعاد و موقعیت کانتکت ها را مشخص می کند.
-
ISO/IEC 7816-3 | کارت تماسی: رابط الکتریکی پروتکل های انتقال را برای کارت های ناهمگام مشخص می کند.
-
ISO/IEC 7816-10 رابط الکتریکی و پاسخ را برای بازنشانی کارت های همگام مشخص می کند.
-
ISO/IEC 7816-12 رابط الکتریکی و رویه های عملیاتی را برای کارت های USB مشخص می کند.
تمام قسمت های دیگر مستقل از فناوری رابط فیزیکی هستند. آنها برای کارت هایی که با کانتکت ها یا فرکانس رادیویی که به آنها دسترسی دارند، اعمال می شوند.
-
ISO/IEC 7816-4 سازمان، دستورات و امنیت مبادله را مشخص می کند.
- ISO/IEC 7816-5 ثبت ارائه دهندگان برنامه را مشخص می کند.
- ISO/IEC 7816-6 عناصر داده بین صنعتی را برای مبادله مشخص می کند.
- ISO/IEC 7816-7 دستوراتی را برای زبان پرس و جوی کارت ساختار یافته مشخص می کند.
- ISO/IEC 7816-8 دستورات عملیات امنیتی را مشخص می کند.
- ISO/IEC 7816-9 دستوراتی را برای مدیریت کارت مشخص می کند.
- ISO/IEC 7816-11 تأیید هویت را از طریق روش های بیومتریک مشخص می کند.
- ISO/IEC 7816-13 دستوراتی را برای مدیریت چرخه عمر برنامه ها مشخص می کند.
- ISO/IEC 7816-15 کاربرد اطلاعات رمزنگاری را مشخص می کند.

استاندارد ISO7816-4 در کارت هوشمند دقیقا چیست ؟
این پارت از استاندارد ساختار یک APDU را بیان می کند. (application protocol data unit) APDU واحد ارتباط بین کارت خوان و کارت هوشمند است. در واقع هر فرمانی که داشته باشیم توسط APDU به کارت ارسال می کنیم و پاسخ مناسب را دریافت می کنیم. ساختار یک فرمان و پاسخ APDU به شکل زیر می باشد:

ساختار فرمان APDU
سکتور APDU شامل یک هدر و یک بدنه است که هر کدام به چندین فیلد تقسیم می شوند.
هدر شامل فیلدهای CLA، INS، P1 و P2 است.
-
CLA: Class Byte
-
INS: Instruction
-
P1,P2: Parameter
-
Lc: Length of command data
-
Data: Command data
-
Le: Length of expected data
بطور مثال CLA یک کلاس برنامه و INC دستورالعمل پردازش را تعریف می کنند.
فیلدهای P1 و P2 برای واجد شرایط بودن دستورالعملهای خاص استفاده میشوند و بنابراین تعاریف خاصی توسط هر دستورالعمل [CLA, INS] ارائه میشوند.
تصویر بالا یک جفت فرمان-پاسخ، یعنی یک فرمان APDU و به دنبال آن یک پاسخ APDU را در جهت مخالف را نشان می دهد. نباید جفت های فرمان-پاسخ در سرتاسر اینترفیس در هم آمیخته شوند، به عنوان مثال، پاسخ APDU باید قبل از شروع یک جفت فرمان-پاسخ دیگر دریافت شود.
بدنه APDU یک جزء با اندازه و شکل متغیر است که برای انتقال اطلاعات به پردازنده APDU کارت به عنوان بخشی از یک فرمان یا برای انتقال اطلاعات از کارت به خواننده به عنوان بخشی از پاسخ به یک فرمان استفاده می شود.
Lc تعداد بایت هایی را که باید به عنوان بخشی از یک دستورالعمل به کارت منتقل شود را مشخص می کند و شامل طول فیلد دیتا است.
فیلد داده شامل دادههایی است که باید به کارت منتقل شوند تا به پردازنده APDU آن اجازه دهد دستور مشخص شده در APDU را اجرا کند.
Le تعداد بایت هایی را مشخص می کند که توسط پردازنده APDU کارت در APDU پاسخ برای این دستور خاص به خواننده بازگردانده می شود.
حالت های مختلف فرمان APDU
بدنه APDU می تواند چهار شکل مختلف داشته باشد:
- هیچ اطلاعاتی به یا از کارت منتقل نمی شود، بنابراین APDU فقط شامل مولفه هدر است.
- هیچ اطلاعاتی به کارت منتقل نمی شود، اما داده ها از کارت برگردانده می شوند، بنابراین بدنه APDU فقط شامل یک فیلد Le غیر تهی است.
- اطلاعات به کارت منتقل می شوند اما در نتیجه دستور، هیچ دیتایی از کارت برگردانده نمی شود، بنابراین بدنه APDU شامل فیلد Lc و فیلد اطلاعات یا دیتا است.
- اطلاعات به کارت منتقل می شوند و در نتیجه دستور داده ها از کارت بازگردانده می شوند، بنابراین بدنه APDU شامل فیلد Lc، فیلد دیتا و فیلد Le است.
ساختار CLA
کد CLA که در هر دستور APDU وجود دارد که دارای دو جزء اضافی است که باید به آنها توجه کرد:
- دو بیت مرتبه پایین بایت CLA می توانند برای تعیین یک کانال ارتباطی منطقی بین برنامه سمت ریدر و پردازنده APDU کارت استفاده شوند.
- دو بیت مرتبه بالاتر بعدی از بایت CLA را می توان برای نشان دادن اینکه پیام ایمن بین برنامه ریدر و پردازنده APDU کارت وجود دارد، استفاده کرد.
پس از ایجاد پروتکل پیوند بین برنامه سمت ریدر و پردازنده APDU کارت، یک کانال منطقی در سطح پایه (فرمان) ایجاد می شود. این (در بایت CLA) با 0 بودن هر دو بیت مرتبه پایین نشان داده می شود. با استفاده از دستور Manage Channel که توسط ISO 7816-4 تعریف شده است، می توان کانال های منطقی اضافی ایجاد کرد.
ساختار پاسخ APDU
شکل پایین ساختار بسیار ساده تر پاسخ APDU را نشان می دهد. شامل یک بدنه و یک تریلر می باشد. بسته به دستور خاصی که به آن پاسخ می دهد و بسته به اینکه آیا آن فرمان توسط پردازنده APDU کارت با موفقیت اجرا شده است یا خیر، یا شامل یک فیلد دیتا است. اگر APDU پاسخ شامل یک فیلد دیتا باشد، طول آن توسط فیلد Le فرمانی که پاسخ مربوط به آن است تعیین می شود.
پاسخ APDU همچنین شامل یک قسمت تریلر است که می تواند شامل دو قسمت از اطلاعات وضعیت باشد که به عنوان SW1 و SW2 ارجاع می شوند. این فیلدها (از پردازنده APDU کارت) یک کد وضعیت را به برنامه سمت ریدر باز می گرداند که طبق ISO 7816-4 دارای یک طرح شماره گذاری است که در آن یک بایت برای انتقال یک دسته خطا و بایت دیگر برای انتقال وضعیت خاص فرمان یا نشانه خطا استفاده می شود.
این طرح شماره گذاری را در شکل زیر مشاهده می کنید:
جمع بندی
در این مقاله ابتدا به شرح استاندارد های کارت های هوشمند پرداختیم سپس با ساختار فرمان APDU و حالت های های آن آشنا شدیم. از الان به بعد دقیقا می دونید هربار که کارت شما عملیاتی را انجام دهد دقیقا چه سناریوهایی طی میشود تا شما نتیجه عملیات رو در کسری از ثانیه مشاهده کنید.