PKCS15-PROFILE(5) OpenSC File Formats PKCS15-PROFILE(5)

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 یا هر فایل پروفایل موجود دیگر مراجعه فرمایید.

pkcs15-init(1), pkcs15-crypt(1)

06/02/2026 opensc