pkcs15-profile -
فایلهای
پروفایل
شخصیسازی
کارت
هوشمند PKCS#15 در
OpenSC
ابزار pkcs15-init
برای
شخصیسازی
کارت
هوشمند بر
اساس PKCS #15 توسط
پروفایلها
کنترل
میشود. در
هنگام
راهاندازی،
این ابزار
در حال حاضر
دو پروفایل
را
میخواند:
یک پروفایل
عمومی
برنامه، و
یک پروفایل
مختص کارت.
پروفایل
عمومی باید
در خط فرمان
مشخص شود،
در حالی که
فایل مختص
کارت بر
اساس نوع
کارت
شناساییشده
انتخاب
میگردد.
پروفایل
عمومی
برنامه،
اطلاعات
کلی درباره
چیدمان
ساختار
کارت را
تعریف
میکند،
مانند مسیر DF
برنامه،
فایلهای
گوناگون PKCS #15
در آن
دایرکتوری،
و شرایط
دسترسی به
این
فایلها.
همچنین
اطلاعات
عمومی
درباره
اشیاء PIN،
کلید و
گواهی را
تعریف
مینماید.
در حال
حاضر، تنها
یک پروفایل
عمومی از
این دست
وجود دارد،
pkcs15.profile.
پروفایل
مختص کارت
شامل
اطلاعات
تکمیلی
مورد نیاز
در طول
مقداردهی
اولیه کارت
است، مانند
مکان
فایلهای PIN،
مراجع کلید
و غیره. این
پروفایلها
در حال حاضر
در مسیر زیر
قرار دارند:
/usr/share/opensc
اصطلاحات
پایه PKCS#15:
1.پرونده
اصلی یا MF (Master File)
ریشه
ساختار
درختی
سامانه
فایل است
2.پوشه DF(PKCS#15)
دایرکتوری
حاوی
فایلها و
دایرکتوریهای
PKCS#15 است
3.پرونده
EF(ODF) یا Object Directory File
فایل
ابتدایی
حاوی
اشارهگرهایی
به سایر
فایلهای
ابتدایی
است (PrKDFs، PuKDFs، SKDFs،
CDFs، DODFs و AODFs)
4.پرونده PrKDF
یا Private Key Directory File فایل
ابتدایی
شامل
اشارهگرهایی
به کلیدهای
خصوصی و
اطلاعات
تکمیلی
درباره
آنها است
5.پرونده
PubKDF یا Public Key Directory File
فایل
ابتدایی
شامل
اشارهگرهایی
به کلیدهای
عمومی و
اطلاعات
تکمیلی
درباره
آنها است
6.پرونده CDF
یا Certificate Directory File فایل
ابتدایی
حاوی
اشارهگرهایی
به
گواهیها و
اطلاعات
تکمیلی
درباره
آنها است
7.پرونده
EF(TokenInfo) فایل
ابتدایی با
اطلاعات
عمومی
درباره
کارت است
نحو
بلوکها در
فایلهای
پروفایل
بهطور کلی
مشابه
فایلهای
پیکربندی
است. فایل
پروفایل از
بلوکهایی
تشکیل شده
که عموماً
ساختار زیر
را دارند:
key [, name...] {
block_contents
}
بخش block_contents یک
یا چند مورد
از block_item است که
هر block_item یکی از
موارد زیر
میباشد:
•# رشته
توضیح
•key[, name...] =
value;
•block
در سطح
ریشه،
پروفایل
شامل چندین
بلوک
پیکربندی
است.
کلیدهای
بلوکها به
شرح زیر
هستند:
•cardinfo:
پیکربندی
اطلاعات
عمومی
کارت.
•pkcs15: کنترل
برخی
جنبههای
عمومی PKCS#15
قرارگرفته
روی کارت.
•option:
گزینههای
پروفایل
برای تغییر
رفتار
پروفایل.
•PIN:
پیکربندی و
محدودیتها
برای نوع
خاصی از PIN.
•filesystem:
مشخصات
سامانه
فایلی که
قرار است
روی کارت
ایجاد شود.
•macros
پیکربندی
اطلاعات
کارت (Configuration of Card Information)
cardinfo { block_contents }
پیکربندی
اطلاعات
عمومی
درباره
کارت:
label = name;
برچسب
کارت
(پیشفرض: OpenSC Card).
manufacturer = name;
سازنده
کارت
(پیشفرض: OpenSC
Project).
min-pin-length = int;
حداقل
طول PIN
(پیشفرض: 4).
max-pin-length = int;
حداکثر
طول PIN، که
باید در
پروفایل
مختص کارت
بازنویسی
شود
(پیشفرض: 8).
pin-encoding = value;
نوع
کدگذاری PIN.
پارامترهای
شناختهشده:
•BCD:
دهدهی با
کد دودویی
(binary-coded decimal)
•ascii-numeric:
مقادیر
عددی ASCII
•utf8
•half-nibble-bcd
•iso9564-1
(پیشفرض:
ascii-numeric).
pin-pad-char = value;
نویسه
مورد
استفاده
برای پدینگ
(تکمیل طول) PIN
در صورت
نیاز
(پیشفرض: 0x00).
pin-domains = bool;
برخی
کارتها
باید همه
PINهای خود را
در
دایرکتوریهای
جداگانه
نگهداری
کنند.
کلیدهای
خاص در آن
دامنه زیر DF
مربوط به PIN
مشخصشده
قرار
خواهند
گرفت.
(پیشفرض: no)
پیکربندی
PKCS#15 (Configuration of PKCS#15)
pkcs15 { block_contents }
کنترل
برخی از
جنبههای
عمومی PKCS#15
قرارگرفته
روی کارت.
پارامترهای
موجود در
این بلوک
عبارتند از:
direct-certificates = bool;
سامانه PKCS#15
باید حداقل
شامل یک CDF
باشد، این
فایل یا
مستقیماً
شامل
گواهیها
است و یا
شامل
ارجاعاتی
به
گواهیها
میباشد.
این گزینه
مشخص
میکند که
آیا
گواهیها
باید
مستقیماً
در خود CDF قرار
گیرند یا
خیر
(پیشفرض: no).
encode-df-length = bool;
ذخیره
طول DF در فایل
ODF. در صورتی
که برای
کارایی
بهتر و
پایداری
بیشتر،
گواهیها
را
مستقیماً
در CDF ذخیره
کنیم مفید
است
(پیشفرض: no).
do-last-update = value;
ذخیره
اطلاعات
مربوط به
آخرین
بهروزرسانی
در EF(TokenInfo)
(پیشفرض: yes).
pkcs15-id-style = value;
روش
محاسبه
شناسه (ID)
اشیاء
رمزنگاری.
پارامترهای
شناختهشده:
•native: 'E' +
number_of_present_objects_of_the_same_type
•mozilla: برای RSA
مقدار SHA1(modulus)
•rfc2459 SHA1(SequenceASN1 of public key
components as ASN1 integers)
(پیشفرض: native)
.sp
minidriver-support-style = value;
سبک
پشتیبانی pkcs15-init
از minidriver.
پارامترهای
شناختهشده:
•none
•gemalto
(پیشفرض:
none)
پیکربندی
گزینه
پروفایل (Configuration of
Profile Option)
option name {
block_contents }
نام،
گزینههای
پروفایل را
برای تغییر
رفتار
پروفایل
مشخص
میکند که
میتواند
یکی از
موارد زیر
باشد:
•default: گزینه
تنظیمات
پیشفرض را
مشخص
میکند و
این بلوک
همراه با
گزینه
همواره
پردازش
میشود،
•onepin: گزینه
استفاده از
۱ PIN کاربر؛
ایجاد/حذف/تولید
توسط PIN کاربر
و در نتیجه
توسط خود
کاربر
کنترل
میشود (در
نتیجه تنها
۱ PIN کاربر
ممکن است)،
•small: گزینه
مناسب برای
کارتهایی
با حافظه
کوچک.
این
گزینهها
توسط ابزار
pkcs15-init از طریق --profile name
یا -p name
استفاده
میشوند:
•pkcs15+default:
پیشفرض
(نیازی به
مشخص کردن
آن نیست)
•pkcs15+onepin: برای
گزینه
پروفایل onepin
•pkcs15+small: برای
گزینه
پروفایل small
بلوک option
میتواند
شامل
زیربلوکهای
زیر باشد:
macros { block_contents }
ماکروها
در قالب
جفتهای name = value;
مشخص
میشوند.
pkcs15 { block_contents }
بلوک
داخلی برای
پیکربندی
ساختار PKCS#15.
پیکربندی
PINها (Configuration of PINs)
PIN name {
block_contents }
نام، نوع PIN
را مشخص
میکند که
میتواند
یکی از
موارد زیر
باشد:
•pin یا user-pin
(نیازی به
تنظیم مسیر
فایل یا
ارجاع نیست
زیرا به
صورت پویا
انجام
میشود)
•puk یا user-puk
•sopin یا so-pin
•sopuk یا so-puk
پارامترهای
شناختهشده
عبارتند از:
attempts = int;
تعداد
دفعات تلاش
برای PIN
مشخصشده
را تعیین
میکند
(پیشفرض: 3).
flags = value...;
فلگها
ویژگیهای PIN
را تعیین
میکنند.
فلگهای
ممکن
عبارتند از:
•case-sensitive
•local
•change-disabled
•unblock-disabled
•initialized
•needs-padding
•unblockingPin
•soPin
•disable-allowed
•integrity-protected
•confidentiality-protected
•exchangeRefData
(پیشفرض:
local,initialized,needs-padding).
auth-id = value;
مقدار
مورد
استفاده
برای شناسه
احراز هویت
(auth ID) (پیشفرض: 0).
min-length = int;
حداقل
طول PIN
(پیشفرض:
مقدار min-pin-length
تنظیمشده
در بلوک cardinfo).
max-length = int;
حداکثر
طول PIN
(پیشفرض:
مقدار max-pin-length
تنظیمشده
در بلوک cardinfo).
reference = int;
مقدار
ارجاع PIN
(پیشفرض:
تعیینشده
در درایور
کارت
مربوطه).
file = name;
فایل
حاوی PIN،
گزینه
منسوخشده
(پیشفرض: None).
offset = int;
آفست PIN در
فایل PIN،
گزینه
منسوخشده
(پیشفرض: 0).
encoding = value;
نوع
کدگذاری PIN.
مقادیر
ممکن:
•BCD
•ascii-numeric
•utf8
•half-nibble-bcd
•iso9564-1
(پیشفرض:
مقدار pin-encoding
تنظیمشده
در بلوک cardinfo).
stored-length = int;
(پیشفرض:
مقدار max-pin-length
تنظیمشده
در بلوک cardinfo).
max-unlocks = int;
(پیشفرض:
0).
مقادیر
موجود در
این بلوک را
میتوان
توسط
ماکروها
تنظیم کرد.
این کار
امکان
تعیین
مقادیر خاص
را با
استفاده از
گزینه (option)
فراهم
میسازد.
پیکربندی
سامانه
فایل (Configuration of Filesystem)
filesystem {
block_contents }
این بلوک
حاوی
مشخصات
سامانه
فایلی است
که باید روی
کارت ایجاد
شود. سامانه
فایل ( filesystem ) از
چندین بلوک
تو در تو
تشکیل شده
که
فایلهای DF و
EF را نشان
میدهند.
هنگامی که
DFها یا EFها در
پروفایل
مختص کارت
مشخص شوند،
به اطلاعات
سامانه
فایل
تعیینشده
در پروفایل
اصلی
افزوده
میشوند.
EF name {
block_contents }
این بلوک
یک فایل
ابتدایی (elementary file)
را در
سلسلهمراتب
فایلهای PKCS#15
تعریف
میکند. نام
میتواند
یکی از
موارد زیر
باشد:
•PKCS15-TokenInfo
•PKCS15-ODF
•PKCS15-UnusedSpace
•PKCS15-PRKDF
•PKCS15-PUKDF
•PKCS15-PUKDF-TRUSTED
•PKCS15-SKDF
•PKCS15-CDF
•PKCS15-CDF-TRUSTED
•PKCS15-CDF-USEFUL
•PKCS15-DODF
•PKCS15-AODF
بلوک EF
میتواند
شامل موارد
زیر باشد:
type = EF;
نوع باید
با نوع فایل
مطابقت
داشته
باشد.
acl = value;
مقدار ACL
(لیست کنترل
دسترسی)
(پیشفرض: NONE)
file-id = EF;
شناسه
فایل، مسیر
نسبی.
structure = value;
ساختار
فایل یکی از
موارد زیر
است:
•TRANSPARENT
•LINEAR-FIXED
•LINEAR-FIXED-TLV
•LINEAR-VARIABLE
•LINEAR-VARIABLE-TLV
•CYCLIC
•CYCLIC-TLV
DF name {
block_contents }
این بلوک
یک فایل
دایرکتوری
(DF) را در
سلسلهمراتب
فایلهای PKCS#15
تعریف
میکند. نام
میتواند
یکی از
موارد زیر
باشد:
•MF
•PKCS15-AppDF
•حالتهای
خاص برای
DFهایی که
بهطور
جداگانه
توسط منطق PKCS15
مدیریت
میشوند
بلوک DF
میتواند
شامل موارد
زیر باشد:
type = DF;
نوع باید
با نوع فایل
مطابقت
داشته
باشد.
path = value;
مشخصات
مسیر فایل
دایرکتوری.
file-id = value;
شناسه
فایل، مسیر
نسبی.
aid = value;
مقدار AID،
در قالب XX:XX:XX:...:XX:XX:XX
میباشد.
acl = value;
نوع باید
با نوع فایل
مطابقت
داشته
باشد.
size = int;
اندازه
فایل بر حسب
بایت.
EF name { block_contents }
بلوکی که
یک فایل
ابتدایی تو
در تو را
مشخص
میکند.
معمولاً
ریشه DF همان MF
است.
وجود
ورودی DF برای
MF (Master File) در فایل
پروفایل
اجباری است.
در غیر این
صورت فایل
پروفایل
ناقص بوده و
قابل
استفاده
نخواهد
بود.
بلوک DF
میتواند
شامل سایر
بلوکهای DF
یا MF باشد.
برای
مشاهده
نمونههایی
از ساختار
سامانه
فایل،
لطفاً به pkcs15.profile
یا هر فایل
پروفایل
موجود دیگر
مراجعه
فرمایید.