OpenSC
دادههای
پیکربندی
را از منابع
زیر و به
ترتیب زیر
به دست
میآورد:
1.گزینههای
خط فرمان
2.متغیرهای
محیطی
3.کلید
رجیستری
ویندوز در
HKEY_CURRENT_USER (در صورت
وجود)
4.کلید
رجیستری
ویندوز در
HKEY_LOCAL_MACHINE (در صورت
وجود)
5.فایل
پیکربندی
سراسری
سیستم (/etc/opensc.conf)
فایل
پیکربندی،
opensc.conf، از
بلوکها (blocks)
تشکیل شده
است که
بهطور کلی
قالب زیر را
دارند:
key [, name...] {
block_contents
}
block_contents یک یا
چند block_item است
که در آن هر
block_item یکی از
موارد زیر
میباشد:
•# رشته
توضیح (comment string)
•key[, name...] =
value;
•بلوک
(block)
در سطح
ریشه (root level)، opensc.conf
باید شامل
یک یا چند
بلوک
پیکربندی
مختص به
برنامه
باشد:
app application {
block_contents
}
application یکی از
موارد زیر
را مشخص
میکند:
•filename: بلوک
پیکربندی
برای
برنامهای
با مسیر
فایل
مشخصشده.
•default: بلوک
پیکربندی
جایگزین (fall-back)
برای تمامی
برنامهها
•opensc-pkcs11: بلوک
پیکربندی
برای ماژول
PKCS#11 (opensc-pkcs11.so)
•onepin-opensc-pkcs11:
بلوک
پیکربندی
برای ماژول
تکپین PKCS#11
(onepin-opensc-pkcs11.so)
•cardmod: بلوک
پیکربندی
برای
مینیدرایور
ویندوز (opensc-minidriver.dll)
•cardos-tool, cryptoflex-tool, dnie-tool,
egk-tool, eidenv, gids-tool, iasecc-tool, netkey-tool, npa-tool, openpgp-tool,
opensc-asn1, opensc-explorer, opensc-notify, opensc-tool, piv-tool,
pkcs11-tool, pkcs15-crypt, pkcs15-init, pkcs15-tool, sc-hsm-tool,
westcos-tool: بلوک
پیکربندی
برای
ابزارهای OpenSC
debug = num;
میزان
اطلاعات
اشکالزدایی
برای چاپ
(پیشفرض: 0).
مقدار
بزرگتر به
معنای
اطلاعات
اشکالزدایی
بیشتر است.
متغیر
محیطی OPENSC_DEBUG
این تنظیم
را
بازنویسی
میکند.
debug_file = filename;
فایلی که
خروجی
اشکالزدایی
در آن نوشته
خواهد شد
(پیشفرض: stderr).
مقادیر
ویژه stdout و stderr
شناسایی
میشوند.
profile_dir = filename;
دایرکتوری
پروفایلهای
مقداردهی
اولیه/شخصیسازی
PKCS#15 برای
pkcs15-init(1)
(پیشفرض:
/usr/share/opensc).
در صورتی
که این
مقدار
پیکربندی
در ویندوز
یافت نشود،
کلید
رجیستری Software\OpenSC
Project\OpenSC\ProfileDir بررسی
میشود.
disable_colors = bool;
غیرفعالسازی
رنگهای
پیامهای
گزارش
(پیشفرض: false
در صورت
اتصال به
کنسول، true در
غیر این
صورت).
disable_popups = bool;
غیرفعالسازی
پنجرههای
بازشو واسط
کاربری
گرافیکی
توکار
(پیشفرض: false).
enable_default_driver = bool;
card_drivers = name...;
فهرست
مجاز
درایورهای
کارت برای
بارگذاری
در زمان
راهاندازی.
مقدار ویژه
internal (پیشفرض)
تمام
درایورهای
پیوندشده
بهصورت
ایستا را
بارگذاری
میکند.
اگر
درایور
ناشناختهای
(یعنی غیر از
internal یا old) ارائه
شود، باید
یک بلوک
پیکربندی
جداگانه
برای آن
درایور
نوشته شود.
مقدار ویژه
old تمام
درایورهای
پیوندشده
بهصورت
ایستا را که
ممکن است در
آینده حذف
شوند
بارگذاری
میکند.
فهرست
نامهای
درایورهای
پشتیبانیشده
کارت را
میتوان از
خروجی opensc-tool --list-drivers
به دست
آورد.
متغیر
محیطی OPENSC_DRIVER
این تنظیم
را
بازنویسی
میکند.
ignored_readers = name...;
فهرست
کارتخوانهایی
که باید
نادیده
گرفته شوند
(پیشفرض:
خالی). اگر هر
یک از
رشتههای
جداشده با
کاما در نام
کارتخوان
مطابقت
داشته باشد
(حساس به
بزرگی و
کوچکی
حروف،
تطبیق جزئی
امکانپذیر
است)،
کارتخوان
توسط OpenSC
نادیده
گرفته
میشود. از
opensc-tool --list-readers برای
مشاهده
تمام
کارتخوانهای
متصل فعلی
استفاده
کنید.
reader_driver name {
block_contents }
پیکربندی
درایور
کارتخوان
هوشمند که
در آن
name یکی
از موارد
زیر است:
•ctapi: بخش
“پیکربندی
کارتخوانهای
CT-API” را
ببینید
•pcsc: بخش
“پیکربندی
کارتخوانهای
PC/SC” را
ببینید
•openct: بخش
“پیکربندی
کارتخوانهای
OpenCT” را
ببینید
•cryptotokenkit: بلوک
پیکربندی
برای
کارتخوانهای
CryptoTokenKit
بخش
“پیکربندی
درایور
کارتخوان
هوشمند (Configuration of Smart
Card Reader Driver)” را
ببینید.
card_driver name {
block_contents }
پیکربندی
درایور
کارت که در
آن
name یکی از
موارد زیر
است:
•npa: بخش
“گزینههای
پیکربندی
برای کارت
شناسایی
آلمان (Configuration Options for German ID
Card)” را
ببینید
•dnie: بخش
“گزینههای
پیکربندی
برای DNIe (Configuration Options for DNIe)”
را ببینید
•edo: بخش
“گزینههای
پیکربندی
برای کارت eID
لهستان (Configuration Options for
Polish eID Card)” را
ببینید
•eoi: بخش
“گزینههای
پیکربندی
برای کارت eID
اسلوونی (Configuration
Options for Slovenian eID Card)” را
ببینید
•myeid: بخش
“گزینههای
پیکربندی
برای کارت MyEID
(Configuration Options for MyEID Card)” را
ببینید
•dtrust: بخش
“گزینههای
پیکربندی
برای
کارتهای
امضای D-Trust (Configuration Options for
D-Trust Signature Cards)” را
ببینید
•هر
مقدار دیگر:
بلوک
پیکربندی
برای یک
درایور
کارت
بارگذاریشده
بهصورت
خارجی
card_atr hexstring {
block_contents }
علاوه بر
فهرست
توکار
کارتهای
شناختهشده
در درایور
کارت،
میتوانید
کارت جدیدی
را با
استفاده از
بلوک
card_atr
برای
درایور
پیکربندی
کنید.
برای
جزئیات،
بخش
“پیکربندی
بر اساس ATR (Configuration based
on ATR)” را
ببینید.
disable_hw_pkcs1_padding = value;
غیرفعالسازی
فاصلهگذاری
(padding)
سختافزاری
PKCS#1 v1.5 زمانی که
کارت از
عملیات خام RSA
پشتیبانی
میکند.
پارامترهای
شناختهشده:
•no:
فاصلهگذاری
PKCS#1 v1.5 در
سختافزار
در صورت
پشتیبانی
کارت فعال
است.
•sign:
فاصلهگذاری
PKCS#1 v1.5 فقط برای
امضاها (PKCS#1 v1.5
نوع ۱)
غیرفعال
است.
•decipher:
فاصلهگذاری
PKCS#1 v1.5 فقط برای
رمزگشایی (PKCS#1 v1.5
نوع ۲)
غیرفعال
است.
•both:
فاصلهگذاری
PKCS#1 v1.5 هم برای
امضاها و هم
برای
رمزگشایی (PKCS#1 v1.5
نوع ۱ و ۲)
غیرفعال
است.
(پیشفرض:
decipher).
openssl_config = path;
مشخص
کردن یک
فایل
پیکربندی OpenSSL
جهت
بارگذاری
در بافت
کتابخانه OpenSC.
این گزینه
برای
عملکرد
عمومی لازم
نیست، اما
در صورتی
نیاز است که
بخواهید
ویژگیهای
خاصی از OpenSSL را
بدون نیاز
به کامپایل
مجدد OpenSC
پیکربندی
کنید (برای
مثال،
پیکربندی و
بارگذاری
ارائهدهنده
FIPS). برای
اطلاعات
بیشتر
درباره
پیکربندی
OpenSSL، به
config(5) و
fips_config(5) مراجعه
کنید.
(پیشفرض:
خالی).
secure_messaging name {
block_contents }
گزینههای
پیکربندی
برای نمایه
پیامرسانی
امن (secure messaging) با
نام
name:
module_name = filename;
نام
ماژول
پیامرسانی
امن خارجی
(پیشفرض:
libsmm-local.so).
module_path = filename;
دایرکتوری
حاوی ماژول
پیامرسانی
امن خارجی
(پیشفرض:
/usr/lib).
در صورتی
که این
مقدار
پیکربندی
در ویندوز
یافت نشود،
کلید
رجیستری Software\OpenSC
Project\OpenSC\SmDir بررسی
میشود.
module_data = value;
دادههای
مشخص برای
تنظیم
مقداردهی
اولیه
ماژول.
mode = value;
حالت
پیامرسانی
امن.
پارامترهای
شناختهشده:
•transmit: در
این حالت
روال
امنسازی
یک APDU توسط
روال عمومی
ارسال APDU در OpenSC
فراخوانی
میشود. در
این حالت
همه APDUها،
بهجز
مواردی که
توسط روال
ویژه کارت
فیلتر
شدهاند،
امنسازی
میشوند.
•acl: در این
حالت APDUها
تنها در
صورت نیاز
بر اساس ACLهای
دستور در
حال اجرا
امنسازی
میشوند.
flags = value;
فلگهای
مختص به نوع
پیامرسانی
امن.
kmc = hexstring;
مقدار
پیشفرض KMC
متعلق به GP Card Manager
برای
کارتهای
جاوای Oberthur.
ifd_serial = hexstring;
keyset[_aid]_num_enc
= value;
keyset[_aid]_num_mac =
value;
مقادیر
مجموعهکلید
(keyset) از
نمایههای IAM
کارتهای Gemalto
IAS/ECC همراه با
شناسه
اختیاری
برنامه (aid).
framework name {
block_contents }
گزینههای
پیکربندی
داخلی که در
آن
name یکی از
موارد زیر
است:
•pkcs15: بخش
“پیکربندی
چارچوب PKCS#15 (Configuration of
PKCS#15 Framework)” را
ببینید
pkcs11 { block_contents }
پارامترهای
ماژول PKCS11 در OpenSC.
برای
جزئیات،
بخش
“پیکربندی
PKCS#11 (Configuration of PKCS#11)” را
ببینید.
گزینههای
پیکربندی
برای تمامی
درایورهای
کارتخوان
(Configuration Options for all Reader Drivers)
max_send_size = num; max_recv_size
= num;
محدود
کردن
اندازههای
دستور و
پاسخ
(پیشفرض:
max_send_size = 255, max_recv_size = 256).
برخی
کارتخوانها
قابلیتهای
ارسال و
دریافت خود
را
بهدرستی
منتشر
نمیکنند.
گزینههای
max_send_size و max_recv_size امکان
تنظیم دستی
این
محدودیتها
را فراهم
میکنند،
برای مثال
جهت
فعالسازی
قابلیتهای
طول
گسترشیافته
(extended length).
enable_escape bool;
تشخیص
قابلیتهای
کارتخوان
با دستورات
گریز
(دستورات APDU
بستهبندیشده
با CLA=0xFF طبق
تعریف در
بخش ۳
استاندارد PC/SC
و BSI TR-03119، مانند
دریافت UID،
دستورات
گریزدار PIN و
نسخه
سفتافزار
کارتخوان،
پیشفرض: false)
پیکربندی
کارتخوانهای
CT-API (Configuration of CT-API Readers)
module filename { ports =
nums; }
بارگذاری
ماژول
مشخصشده CT-API
با تعداد
پورتهای
تعیینشده.
پیکربندی
کارتخوانهای
PC/SC (Configuration of PC/SC Readers)
connect_exclusive = bool;
اتصال به
کارتخوان
در حالت
انحصاری
(پیشفرض: false)؟
این گزینه
در
مینیدرایور
ویندوز
تاثیری
ندارد.
disconnect_action = action;
اقدام
لازم هنگام
قطع اتصال
از کارت (SCardDisconnect).
مقادیر
معتبر
عبارتند از
leave, reset, unpower
(پیشفرض: leave).
این گزینه
در
مینیدرایور
ویندوز
تاثیری
ندارد.
transaction_end_action = action;
اقدام
لازم در
پایان
تراکنش (SCardEndTransaction).
مقادیر
معتبر
عبارتند از
leave, reset, unpower
(پیشفرض: leave).
این گزینه
در
مینیدرایور
ویندوز
تاثیری
ندارد.
reconnect_action = action;
اقدام
لازم هنگام
اتصال مجدد
به کارت (SCardReconnect).
مقادیر
معتبر
عبارتند از
leave, reset, unpower
(پیشفرض: leave).
این گزینه
در
مینیدرایور
ویندوز
تاثیری
ندارد.
enable_pinpad = bool;
فعالسازی
صفحهکلید
پین (pinpad) در
صورت
شناسایی (PC/SC v2.0.2
بخش ۱۰،
پیشفرض: true)
fixed_pinlength = num;
برخی
کارتخوانهای
پینپد
تنها
میتوانند
یک طول دقیق
از PIN را
پردازش
کنند. fixed_pinlength
این مقدار
را تعیین
میکند تا OpenSC
فاصلهگذاری
را به این
طول گسترش
دهد
(پیشفرض: 0،
یعنی ثابت
نیست).
provider_library = filename;
استفاده
از
ارائهدهنده
مشخص PC/SC
(پیشفرض:
libpcsclite.so.1).
پیکربندی
کارتخوانهای
OpenCT (Configuration of OpenCT Readers)
readers = num;
کارتخوانهای
مجازی برای
تخصیص
(پیشفرض: 2).
disable_hw_pkcs1_padding = bool;
کارت MyEID
میتواند
دادهها (کد
هش) را بر
اساس
الگوریتم
هش
انتخابشده
(در حال حاضر
تنها برای SHA1)
بهطور
داخلی در
ساختار DigestInfo ASN.1
کپسولهسازی
کند. این
ساختار طبق
PKCS#1 v1.5، نوع بلوک
01h تا طول
مدولوس
کلید RSA
فاصلهگذاری
(pad) میشود.
اندازه DigestInfo
نباید از
۴۰٪ طول
مدولوس
کلید RSA فراتر
رود. اگر این
محدودیت
رضایتبخش
نباشد (برای
مثال شخصی
به RSA 1024 با SHA512
نیاز داشته
باشد)،
کاربر
میتواند
این ویژگی
را غیرفعال
کند. در این
حالت،
درایور
کارت تمام
اقدامات
لازم را پیش
از ارسال
دادهها (کد
هش) به کارت
انجام
خواهد داد.
فاصلهگذاری
PKCS#1 v1.5 در
سختافزار
میتواند
بهصورت
سراسری با
گزینه disable_hw_pkcs1_padding
غیرفعال
شود. هنگامی
که از گزینه
سراسری
برای
غیرفعالسازی
فاصلهگذاری
استفاده
شود،
فاصلهگذاری
غیرفعال
خواهد شد
حتی اگر
گزینه مختص
به MyEID آن را
خاموش
نکرده
باشد.
can = value;
کارت
شناسایی
آلمان نیاز
دارد که CAN قبل
از QES PIN
اعتبارسنجی
شود. با این
حال، این
بخش جزو
نمایه PKCS#15
کارت نیست.
بنابراین
برای
اعتبارسنجی
QES PIN در واقع به
هر دوی
آنها نیاز
داریم.
مقدار CAN ممکن
است در
اینجا داده
شود. اگر CAN در
اینجا داده
نشود، در خط
فرمان یا
روی
کارتخوان
(بسته به
قابلیتهای
کارتخوان)
درخواست
خواهد شد.
st_dv_certificate = filename;
st_certificate = filename; st_key =
filename;
قابلیت QES
تنها با یک
کارتخوان
کامفورت (CAT-K)
امکانپذیر
است که
دارای یک
کلید
رمزنگاری
برای احراز
هویت خود
بهعنوان
پایانه
امضا (ST)
میباشد. ما
معمولاً از
قابلیت
کارتخوان
برای امضای
دادهها
استفاده
خواهیم کرد.
با این حال،
در طول
فرایند
توسعه
میتوانید
گواهیها و
کلیدهای
نرمافزاری
را برای یک ST
مشخص کنید.
یک نمونه PKI
را میتوان
در
دادههای
نمونه برای
شبیهساز
کارت
شناسایی
آلمان[1]
یافت.
user_consent_enabled = bool;
پیکربندی
پیام هشدار
هنگام
انجام
عملیات
امضا با DNIe.
تنها در
صورت
کامپایل با
--enable-dnie-ui
استفاده
میشود.
user_consent_app = filename;
مشخص
کردن
برنامه pinentry
مورد
استفاده در
صورتی که
هشدار برای
نمایش با
استفاده از
pinentry پیکربندی
شده باشد
(پیشفرض: /usr/bin/pinentry).
تنها در
صورت
کامپایل با
--enable-dnie-ui
استفاده
میشود.
can = value;
مقدار CAN
(شماره
دسترسی به
کارت – عدد ۶
رقمی
چاپشده در
گوشه پایین
سمت راست
روی مدرک)
برای
برقراری
ارتباط با
کارت
الزامی است.
این مقدار
ممکن است
توسط متغیر
محیطی EDO_CAN
بازنویسی
شود. در حال
حاضر امکان
تنظیم آن به
هیچ روش
دیگری وجود
ندارد.
can = value;
مقدار CAN
(شماره
دسترسی به
کارت – عدد ۶
رقمی
چاپشده در
گوشه پایین
سمت راست
روی مدرک)
برای
برقراری
ارتباط با
کارت
الزامی است.
این مقدار
ممکن است
توسط متغیر
محیطی EOI_CAN
بازنویسی
شود. از آنجا
که CAN روی کارت
نیز ذخیره
شده است
(بهصورت
رمزگذاریشده)،
میتوان از
آن برای
برقراری
خودکار
ارتباط امن
استفاده
کرد، اما
فقط در
صورتی که به
کارت از
طریق رابط
تماسی
دسترسی
پیدا شود.
can = value;
مقدار CAN
(شماره
دسترسی به
کارت – عدد ۶
رقمی
چاپشده
روی کارت)
برای
برقراری
ارتباط با
کارت
الزامی است.
این مقدار
ممکن است
توسط متغیر
محیطی DTRUST_CAN
بازنویسی
شود. اگر در
اینجا مشخص
نشود،
مقدار CAN از
حافظه موقت
(کش) ویژه
کارت
خوانده
میشود،
روی
صفحهکلید
پین
کارتخوان
درخواست
میشود، یا
بهصورت
تعاملی و به
ترتیب زیر
دریافت
خواهد شد:
1.متغیر
محیطی DTRUST_CAN
2.گزینه
موجود در
این فایل
پیکربندی
3.حافظه
موقت ویژه
کارت در PKCS#15
4.صفحهکلید
پین یک
کارتخوان
با قابلیت PACE
can_use_cache = bool;
ذخیره
شماره CAN کارت
در حافظه
موقت پس از
ارائه آن
توسط کاربر
در
دایرکتوری
file_cache_dir. شماره CAN
ذخیرهشده
بعداً برای
جلوگیری از
درخواست
تعاملی CAN
استفاده
میشود. این
ویژگی
بهطور
پیشفرض
فعال است.
atrmask = hexstring;
این ماسک
پیش از
مقایسه با
مقدار مرجع ATR
در بالا،
بهصورت
منطقی با ATR
کارت AND
میشود.
استفاده از
این ماسک
امکان
شناسایی و
پیکربندی
چندین ATR را
بهعنوان
یک مدل کارت
مشابه
فراهم
میکند.
driver = name;
در صورت
فعال بودن،
تمام
تنظیمات
احتمالی
موجود در
فهرست
پیکربندی
داخلی
درایور
کارت را
بازنویسی
میکند.
name = name;
تنظیم
نام کارت
برای
درایورهای
کارتی که
این امکان
را
میدهند.
type = num;
امکان
تنظیم نوع
دقیق کارت
که بهصورت
داخلی توسط
درایور
کارت
استفاده
میشود.
مقادیر
مجاز را
میتوان در
کد منبع cards.h
یافت.
flags = value...;
فلگهای
کارت
بهصورت یک
مقدار
هگزادسیمال.
چند مقدار
مختلف با
یکدیگر OR
منطقی
میشوند.
بسته به
درایور
کارت، این
گزینه
امکان
تنظیم دقیق
قابلیتهای
درایور
کارت را
برای کارت
شما فراهم
میسازد.
بهصورت
اختیاری،
برخی
پارامترهای
شناختهشده
را میتوان
بهصورت
رشته مشخص
کرد:
•rng: منبع
تولید عدد
تصادفی روی
خود کارت
•keep_alive:
درخواست از
درایور
کارت برای
ارسال یک
دستور
«زنده
نگهداشتن»
قبل از هر
تراکنش،
جهت
اطمینان از
اینکه اپلت
مورد نظر
همچنان در
حالت
انتخاب
قرار دارد.
pkcs15emu = name;
هنگام
استفاده از
شبیهسازی
PKCS#15، تحمیل
درایور
شبیهسازی
برای
کارتهای
خاص. برای
درایورهای
خارجی
الزامی
است، اما
برای
درایورهای
توکار نیز
قابل
استفاده
میباشد.
force_protocol = value;
تحمیل
انتخاب
پروتکل
برای
کارتهای
خاص.
پارامترهای
شناختهشده:
•t0
•t1
•raw
read_only = bool;
علامتگذاری
کارت
بهعنوان
فقطخواندنی
در
رابطهای
PKCS#11/Minidriver/BaseCSP
(پیشفرض: false).
md_supports_X509_enrollment =
bool;
مشخص
کردن
پشتیبانی
از ثبتنام X509
در رابط Minidriver/BaseCSP
(پیشفرض: false).
md_guid_as_id = bool;
استفاده
از GUID
تولیدشده
برای کلید
بهعنوان
شناسه (id) در
ساختار PKCS#15
(پیشفرض: false،
یعنی تولید
خودکار)
md_guid_as_label = bool;
استفاده
از GUID
تولیدشده
برای کلید
بهعنوان
برچسب (label) در
ساختار PKCS#15
(پیشفرض: false،
یعنی بدون
برچسب).
md_supports_container_key_gen =
bool;
کارت
امکان
تولید
جفتکلید
روی خود
کارت را
میدهد
(پیشفرض: false).
md_supports_container_key_import =
bool;
کارت
امکان وارد
کردن
کلیدهای
خصوصی را
میدهد
(پیشفرض: false).
md_pinpad_dlg_title = value;
عنوان
پنجره کادر
گفتگوی
پینپد
(پیشفرض: "Windows
Security").
md_pinpad_dlg_icon = filename;
نام فایل
آیکون برای
کادر
گفتگوی
پینپد؛ از
"" برای حالت
بدون آیکون
استفاده
کنید
(پیشفرض:
آیکون کارت
هوشمند
توکار).
md_pinpad_dlg_main = value;
دستورالعمل
اصلی کادر
گفتگوی
پینپد
(پیشفرض: "OpenSC Smart
Card Provider").
md_pinpad_dlg_content_user =
value;
محتوای
کادر
گفتگوی
پینپد
برای نقش "user"
(پیشفرض: "Please enter
your PIN on the PIN pad.").
md_pinpad_dlg_content_user_sign =
value;
محتوای
کادر
گفتگوی
پینپد
برای نقش
"user+signature"
(پیشفرض: "Please enter
your digital signature PIN on the PIN pad.").
md_pinpad_dlg_content_admin =
value;
محتوای
کادر
گفتگوی
پینپد
برای نقش "admin"
(پیشفرض: "Please enter
your PIN to unblock the user PIN on the PIN pad.")
md_pinpad_dlg_expanded = value;
اطلاعات
گسترشیافته
کادر
گفتگوی
پینپد
(پیشفرض: "This window
will be closed automatically after the PIN has been submitted on the PIN pad
(timeout typically after 30 seconds).")
md_pinpad_dlg_enable_cancel =
bool;
اجازه
دادن به
کاربر برای
لغو کادر
گفتگوی
پینپد
(پیشفرض: false).
اگر این
مقدار روی true
تنظیم شود،
کاربر باید
روی "OK" کلیک
کند تا
اعتبارسنجی
PIN روی پینپد
شروع شود.
کاربر
میتواند
با فعال یا
غیرفعال
کردن جعبه
انتخاب در
کادر
گفتگو،
رفتار
پیشفرض را
برگزیند.
این تنظیم
بر اساس
مسیر کامل
برنامهای
(
program_path) که از OpenSC
استفاده
میکند
ذخیره
میشود.
کلید
رجیستری
HKCU\Software\OpenSC
Project\OpenSC\md_pinpad_dlg_enable_cancel\program_path
این تنظیم
را با یک DWORD
تنظیمشده
روی 1 (فعال)
یا 0
(غیرفعال)
بازنویسی
میکند.
md_pinpad_dlg_timeout = num;
زمان بر
حسب ثانیه
برای
پیشروی
نوار
پیشرفت
کادر
گفتگوی
پینپد.
مقدار 0 نوار
پیشرفت را
حذف میکند
(پیشفرض: 30).
notify_card_inserted = value;
notify_card_inserted_text = value;
عنوان و
متن اعلان
هنگام وارد
شدن کارت
(پیشفرض: "Smart card
detected"، ATR کارت).
notify_card_removed = value;
notify_card_removed_text = value;
عنوان و
متن اعلان
هنگام خارج
شدن کارت
(پیشفرض: "Smart card
removed"، نام
کارتخوان
هوشمند).
notify_pin_good = value;
notify_pin_good_text = value;
عنوان و
متن اعلان
هنگام
تایید PIN
(پیشفرض: "PIN
verified", "Smart card is unlocked").
notify_pin_bad = value;
notify_pin_bad_text = value;
عنوان و
متن اعلان
هنگام
نادرست
بودن PIN
(پیشفرض: "PIN not
verified", "Smart card is locked").
use_file_caching = value;
تعیین
اینکه آیا
فایلهای
کارت (مانند
گواهیها)
روی دیسک در
file_cache_dir ذخیره
موقت (کش)
شوند یا خیر.
پارامترهای
ممکن:
•yes: ذخیره
موقت تمام
فایلها
(عمومی و
خصوصی).
•public: ذخیره
موقت تنها
فایلهای
عمومی.
•no:
غیرفعال
بودن ذخیره
موقت
فایلها.
(پیشفرض: public
برای
درایورهای
کارت زیر atrust-acos
(درایور
غیرفعالشده)،
belpic, cac1, cac, coolkey, dnie, edo, esteid2018, esteid2025, flex
(درایور
غیرفعالشده)،
cyberflex (درایور
غیرفعالشده)،
gemsafeV1, idprime, itacns, jpki, MaskTech, mcrd
(درایور
غیرفعالشده)،
npa, nqapplet, tcos, dtrust و در
غیر این
صورت no).
اگر
ذخیرهسازی
موقت توسط
یک فرایند
سیستمی
انجام شود،
ممکن است
فایلهای
کششده از
حساب
کاربری
غیرقابلدسترس
شوند. اگر
میخواهید
اطلاعات
کششده را
به اشتراک
بگذارید،
از یک مکان
خواندنی و
نوشتنی
بهصورت
سراسری
استفاده
کنید. توجه
داشته
باشید که
فایلهای
کششده
ممکن است
حاوی
دادههای
شخصی مانند
نام و نشانی
ایمیل
باشند.
file_cache_dir = filename;
محل
ذخیره موقت
فایلهای
کارت.
مقادیر
پیشفرض
عبارتند از:
•$XDG_CACHE_HOME/opensc/
(اگر $XDG_CACHE_HOME
تعریف شده
باشد)
•$HOME/.cache/opensc/
(یونیکس)
•$USERPROFILE\.eid-cache\
(ویندوز)
اگر
ذخیرهسازی
موقت توسط
یک فرایند
سیستمی
انجام شود،
ممکن است
فایلهای
کششده از
حساب
کاربری
غیرقابلدسترس
شوند. اگر
میخواهید
اطلاعات
کششده را
به اشتراک
بگذارید،
از یک مکان
خواندنی و
نوشتنی
بهصورت
سراسری
استفاده
کنید. توجه
داشته
باشید که
فایلهای
کششده
ممکن است
حاوی
دادههای
شخصی مانند
نام و نشانی
ایمیل
باشند.
درایور
کارت PIV-II از
فهرست
اشیای
پیشینه
کلیدها و
گواهیهای
بازنشستهشده
در صورتی که
در
دایرکتوری
کش فایل
قابل
خواندن
باشند
پشتیبانی
میکند. اگر
نشانی (URL) شیء
مشخصشده
بهصورت
"http://"DNS name"/"ASCII-HEX
OffCardKeyHistoryFile باشد،
آنگاه برای
نام فایل
OffCardKeyHistoryFile در
دایرکتوری
کش جستجو
میکند.
use_pin_caching = bool;
استفاده
از
ذخیرهسازی
موقت (کش) PIN
(پیشفرض: true)؟
pin_cache_counter = num;
چندین
بار
استفاده از
یک PIN از حافظه
موقت پیش از
اعتبارسنجی
مجدد آن
(پیشفرض: 10)؟
pin_cache_ignore_user_consent =
bool;
برنامههای
قدیمیتر PKCS#11
که از CKA_ALWAYS_AUTHENTICATE
پشتیبانی
نمیکنند
ممکن است
نیاز به
فعال کردن
این گزینه
داشته
باشند تا
امضاها با
برخی
کارتها
کار کنند
(پیشفرض: false).
توصیه
میشود
گزینه
ذخیره موقت
PIN را نیز با
استفاده از
use_pin_caching فعال
کنید تا OpenSC
بتواند در
زمان نیاز PIN
را در
اختیار
کارت قرار
دهد.
pin_protected_certificate = value;
نحوه
مدیریت یک
گواهی
محافظتشده
با PIN.
پارامترهای
شناختهشده:
•protect: گواهی
همچنان
محافظتشده
با PIN باقی
میماند.
•declassify:
اجازه
خواندن
گواهی بدون
اجبار به
اعتبارسنجی
PIN داده
میشود.
•ignore:
نادیده
گرفتن
گواهیهای
محافظتشده
با PIN.
(پیشفرض:
protect.
enable_pkcs15_emulation = bool;
فعالسازی
شبیهسازی
pkcs15 (پیشفرض: true).
try_emulation_first = bool;
اولویت
دادن به کد
شبیهسازی
pkcs15 پیش از
پردازش
عادی pkcs15
(پیشفرض: no).
برخی
کارتها
فقط در حالت
شبیهسازی
کار
میکنند و
به این
گزینه
وابسته
نیستند.
enable_builtin_emulation = bool;
فعالسازی
شبیهسازهای
توکار
(پیشفرض: true).
builtin_emulators = emulators;
فهرست
شبیهسازهای
توکار pkcs15 جهت
بررسی
(پیشفرض: internal)
مقدار
ویژه internal
تمامی
شبیهسازهای
غیرفعالنشده
توکار pkcs15 را
بررسی
میکند.
مقدار
ویژه old
تمامی
شبیهسازهای
غیرفعالشده
pkcs15 را بررسی
میکند.
pkcs11_enable_InitToken = bool;
فعالسازی
مقداردهی
اولیه و
شناسایی
کارت
(پیشفرض: false).
emulate name {
block_contents }
گزینههای
پیکربندی
برای یک
شبیهساز PKCS#15
که در آن
name
یک نام
کوتاه برای
درایور
کارت خارجی
است.
module = filename;
برای
شبیهسازهای
pkcs15 که از یک
کتابخانه
اشتراکی/DLL
خارجی
بارگذاری
میشوند،
باید مسیر
ماژول را
مشخص کرده و
نمونه card_atr را
در بالا
بهدرستی
سفارشی
کنید.
function = name;
دریافت
نام تابع
مقداردهی
اولیه
شبیهساز
(پیشفرض:
sc_pkcs15_init_func_ex)
application hexstring {
block_contents }
پیکربندی
برنامه روی
کارت که در
آن
hexstring شناسه
برنامه (AID)
است.
type = name;
نوع
برنامه که
در آن
name یکی
از موارد
زیر است:
•generic
•protected
برای
تمایز بین
برنامه
دسترسی
مشترک و
برنامهای
که در آن
احراز هویت
برای انجام
برخی
عملیاتها
با
رویههای
مشترک به
دست
نمیآید
(مانند
ایجاد شیء
محافظتشده
با
پیامرسانی
امن)
استفاده
میشود.
توسط ماژول
PKCS#11 که برای
ارائه
تعداد
محدودی از
اسلاتها
پیکربندی
شده
استفاده
میگردد
(مثلاً
پیکربندیشده
برای ارائه
تنها اسلات
User PIN،
اسلاتهای
User و Sign PINs، و
غیره).
model = name;
disable = bool;
عدم
نمایش
برنامه در
چارچوب PKCS#15
(پیشفرض: false)
user_pin = name;
نام شیء User
PIN که
بهعنوان PIN
اصلی
استفاده
خواهد شد.
sign_pin = name;
نام شیء PIN
که برای
امضا
استفاده
خواهد شد.
max_virtual_slots = num;
حداکثر
تعداد
اسلاتهای
مجازی
(پیشفرض: 16).
اگر
اسلاتهای
بیشتری
نسبت به
مقدار
تعریفشده
در اینجا
وجود داشته
باشد،
اسلاتهای
باقیمانده
از دید PKCS#11
پنهان
خواهند شد.
slots_per_card = num;
حداکثر
تعداد
اسلاتهای PIN
به ازای هر
کارت
هوشمند
(پیشفرض: 4).
اگر کارت
تعداد PINهای
کمتری نسبت
به مقدار
تعریفشده
در اینجا
داشته
باشد،
اسلاتهای
باقیمانده
خالی
خواهند بود.
برای
فایرفاکس،
کروم و
کرومیوم،
مقدار slots_per_card
روی 1 تنظیم
میشود تا
از درخواست
PINهای
نامرتبط
جلوگیری
شود.
معمولاً
این کار در
عمل کلیدها
و PINهای امضا
را غیرفعال
میکند.
lock_login = bool;
بهطور
پیشفرض،
ماژول PKCS#11 در OpenSC
پس از اینکه
از طریق C_Login
احراز هویت
کردید،
کارت شما را
قفل
نمیکند
(پیشفرض: false).
بنابراین
کاربران یا
برنامههای
دیگر از
اتصال به
کارت و
انجام
عملیات
رمزنگاری
منع
نمیشوند
(که ممکن است
به دلیل
احراز هویت
قبلی شما در
کارت
امکانپذیر
باشد). این
تنظیم
چندان امن
نیست.
همچنین
اگر کارت
شما قفل
نشود، ممکن
است به دلیل
محدودیتهای
چارچوب OpenSC که
هنوز در
محیط
چندنخی
بهطور
کامل
آزمایش
نشده است،
با مشکلاتی
روبرو
شوید.
در صورتی
که قفل کردن
کارت را
برگزینید،
تنظیمات
شما امنتر
خواهد بود.
با این وجود
این رفتار
یک نقض
شناختهشده
از مشخصات PKCS#11
محسوب
میشود.
اکنون
هنگامی که
یک برنامه
با C_Login
استفاده از
کارت شما را
آغاز کند،
هیچ برنامه
دیگری
نمیتواند
از آن
استفاده
نماید تا
زمانی که
برنامه اول
کارش پایان
یابد و C_Logout یا
C_Finalize را
فراخوانی
کند. در مورد
بسیاری از
برنامههای
PKCS#11 این اتفاق
تا زمان
خروج از
برنامه رخ
نمیدهد.
بنابراین
استفاده
همزمان از
چندین
برنامه که
از کارت
هوشمند
آگاهی
دارند
غیرممکن
است؛ برای
مثال
نمیتوانید
همزمان Firefox و
Thunderbird را اجرا
کنید اگر هر
دو برای
استفاده از
کارت
هوشمند شما
پیکربندی
شده باشند.
atomic = bool;
بهطور
پیشفرض،
تعامل با
ماژول PKCS#11 در OpenSC
ممکن است
وضعیت توکن
را تغییر
دهد، مانند
اینکه آیا
کاربری
وارد شده
است یا خیر
(پیشفرض: false).
بنابراین
سایر
کاربران یا
برنامهها
ممکن است
ناخواسته
وضعیت توکن
را تغییر
داده یا از
آن استفاده
کنند.
برنامههای
دیگر ممکن
است با
سوءاستفاده
از یک ورود
فعال، امضا
ایجاد کنند
یا بدون جلب
توجه خارج
شوند.
با
فعالسازی
این تنظیم،
وضعیت ورود
توکن
ردیابی و
ذخیره موقت
(کش) میشود
(شامل PIN). پیش
از هر
تراکنش،
وضعیت ورود
بازیابی
میشود. پس
از هر
تراکنش،
خروج انجام
میگیرد.
این تنظیم
بهطور
پیشفرض
گزینه lock_login را
نیز فعال
میکند تا
دسترسی
سایر
برنامهها
در طول
تراکنشهای
اتمیک قطع
شود.
لطفاً
توجه داشته
باشید که
هرگونه
پینپد
باید
غیرفعال
شود (به enable_pinpad
مراجعه
کنید)، زیرا
کاربر
مجبور
خواهد بود
برای هر
تراکنش PIN
خود را وارد
کند.
init_sloppy = bool;
با
غیرفعال
بودن این
تنظیم،
ماژول PKCS#11 در OpenSC
اسلاتهای
موجود را
زمانی
مقداردهی
اولیه
میکند که
برنامه C_GetSlotList
را
فراخوانی
کند. با فعال
بودن این
تنظیم،
اسلاتها
هنگام
فراخوانی C_GetSlotInfo
نیز
مقداردهی
اولیه
خواهند شد
(پیشفرض: true).
این تنظیم
یک راهکار
جایگزین
برای Java است
که در صورت
پیکربندی
با slot ایستا
بهجای slotListIndex،
تابع C_GetSlotList را
فراخوانی
نمیکند.
user_pin_unblock_style = mode;
سبک رفع
مسدودی User PIN با
حالت
mode که
یکی از
موارد زیر
است:
•none
(پیشفرض):
رفع مسدودی PIN
از طریق API در PKCS#11
امکانپذیر
نیست
•set_pin_in_unlogged_session:
تابع C_SetPIN در
نشست بدون
ورود: مقدار PUK
بهعنوان
آرگومان OldPin
در
فراخوانی C_SetPIN
ارسال
میشود.
•set_pin_in_specific_context:
تابع C_SetPIN در
نشست
واردشده با
CKU_SPECIFIC_CONTEXT: مقدار PUK
بهعنوان
آرگومان OldPin
در
فراخوانی C_SetPIN
ارسال
میشود.
•init_pin_in_so_session:
تابع C_InitPIN در
نشست
واردشده با
CKU_SO: رفع
مسدودی پین
کاربر ('UNBLOCK') با SOPIN
محافظت
میشود. (PUK == SOPIN).
create_puk_slot = bool;
ایجاد
اسلات برای
رفع مسدودی PIN
با استفاده
از PUK
(پیشفرض: false).
به این
ترتیب
میتوان از API
در PKCS#11 برای
ورود با PUK و
تغییر یک PIN
استفاده
کرد. ممکن
است با برخی
برنامهها
مانند Firefox و Thunderbird
مشکلاتی
ایجاد کند.
create_slots_for_pins = mode...;
نامهای
نمادین
PINهایی که
اسلاتها
برای آنها
ایجاد
میشوند که
در آن
mode
فهرستی از
موارد زیر
است:
•all
(پیشفرض):
تمام PINهای
غیر SO-PIN و غیر
رفعمسدودی
•user: اولین
PIN عمومی یا
اولین PIN
محلی
•sign: دومین
PIN (اولین
محلی،
دومین
عمومی یا
دومین
محلی)
کارت
میتواند
شامل بیش از
یک PIN یا بیش
از یک
برنامه روی
کارت همراه
با PINهای
ویژه خود
باشد.
بهطور
معمول،
برای
دسترسی به
همه آنها
با رابط
برنامهنویسی
PKCS#11 باید برای
هر کدام یک
اسلات
ایجاد شود.
اسلاتهای
متعدد
میتواند
برای برخی
برنامههای
پرکاربرد
مانند Firefox
آزاردهنده
باشد. این
پارامتر
پیکربندی
امکان
انتخاب
PIN(هایی) را
فراهم
میکند که
اسلات PKCS#11
برای آنها
ساخته
خواهد شد.
تنها PINهای
مقداردهیشده،
غیر از SO-PIN و
غیر از
رفعمسدودی
با یک نام
نمادین
مرتبط
میشوند.
برای
اینکه
ماژول،
رفتار
ماژول opensc-onepin را
شبیهسازی
کند، گزینه
زیر
استفاده
میشود: create_slots_for_pins =
"user";