| PKCS15-INITPKCS15-(1) | OpenSC ToolsOpenSC Tools | PKCS15-INITPKCS15-(1) |
نام (NAME)
pkcs15-init - ابزار شخصیسازی کارت هوشمند
خلاصه دستور (SYNOPSIS)
pkcs15-init [OPTIONS]
توضیحات (DESCRIPTION)
ابزار pkcs15-init میتواند برای ایجاد ساختار PKCS #15 بر روی یک کارت هوشمند و افزودن اشیاء کلید یا گواهی استفاده شود. جزئیات ساختاری که ایجاد خواهد شد از طریق پروفایلها کنترل میشود.
پروفایل پیشفرضی که استفاده میشود pkcs15 است. پروفایلهای جایگزین را میتوان از طریق گزینهٔ -p مشخص کرد.
استفاده از PIN (PIN USAGE)
ابزار pkcs15-init میتواند برای ایجاد ساختار PKCS #15 روی کارت هوشمند شما، ساخت PINها و نصب کلیدها و گواهیها روی کارت استفاده شود. این فرایند شخصیسازی (personalization) نیز نامیده میشود.
یک کارت OpenSC میتواند دارای یک PIN مسئول امنیت (Security Officer) و صفر یا چند PIN کاربر باشد. واژهٔ PIN مخفف شماره شناسایی شخصی (Personal Identification Number) است و یک کد امنیتی محرمانه است که پیش از مجاز شدن به انجام برخی عملیاتها، مانند استفاده از یکی از کلیدهای RSA ذخیرهشده برای امضای سند یا تغییر خود کارت، باید آن را به کارت ارائه دهید.
معمولاً PINها دنبالهای از ارقام دهدهی هستند، اما برخی کارتها نویسههای اسکی (ASCII) دلخواه را نیز میپذیرند. با این حال توجه داشته باشید که استفاده از نویسههایی غیر از ارقام، کارت را روی کارتخوانهای دارای پد شماره (PIN pad reader) غیرقابل استفاده میکند، زیرا آنها معمولاً فقط کلیدهایی برای ورود ارقام دارند.
کد PIN مسئول امنیت (SO) خاص است؛ این کد برای محافظت از اطلاعات فراداده روی کارت، مانند خود ساختار PKCS #15 استفاده میشود. تنظیم SO PIN اختیاری است، زیرا در بدترین حالت ممکن اگر فردی کارت شما را پیدا کند، میتواند ساختار آن را به هم بریزد. برای استخراج هر یک از کلیدهای محرمانهٔ ذخیرهشده روی کارت، یک مهاجم همچنان به PIN کاربر شما نیاز خواهد داشت (حداقل در پروفایلهای پیشفرض OpenSC). با این حال، ساخت پروفایلهای کارتی که به مسئول امنیت اجازه دهد PINهای کاربر را بازنویسی کند، امکانپذیر است.
برای هر PIN، میتوانید یک PUK (که PIN رفع انسداد یا unblock PIN نیز نامیده میشود) مشخص کنید. از PUK میتوان برای بازنویسی یا باز کردن قفل PIN در صورتی که دفعات متوالی زیادی مقدار اشتباه وارد شده باشد، استفاده کرد.
در برخی از کارتها که از شبیهسازی PKCS#15 استفاده میکنند، ویژگیهای اشیاء خصوصی محافظت میشوند و بدون احراز هویت (معمولاً با PIN کاربر) قابل تجزیه و تحلیل نیستند. این احراز هویت باید بلافاصله پس از اتصال کارت (card binding) انجام شود. در چنین مواردی باید از گزینهٔ --verify-pin استفاده شود.
حالتهای عملیاتی (MODES OF OPERATION)
آمادهسازی (Initialization)
این نخستین گام در شخصیسازی کارت است و فایلهای پایه را بر روی کارت ایجاد میکند. برای ایجاد ساختار اولیهٔ PKCS #15، ابزار را به این صورت اجرا کنید:
pkcs15-init --create-pkcs15
سپس PIN و PUK مسئول امنیت از شما درخواست خواهد شد. فشردن سادهٔ کلید return در اعلان SO PIN، از نصب PIN مسئول امنیت صرفنظر میکند.
اگر کارت پشتیبانی کند، باید پیش از ایجاد ساختار PKCS#15، محتویات کارت را با دستور زیر پاک کنید: pkcs15-init --erase-card
نصب PIN کاربر (User PIN Installation)
پیش از نصب هرگونه اشیاء کاربری مانند کلیدهای خصوصی، حداقل به یک PIN برای محافظت از این اشیاء نیاز دارید. شما میتوانید این کار را با دستور زیر انجام دهید:
pkcs15-init --store-pin --id " nn
که در آن nn یک شناسهٔ PKCS #15 در نمادگذاری هگزادسیمال است. مقادیر متداول 01، 02 و غیره هستند.
وارد کردن دستور بالا، PIN و PUK کاربر را از شما درخواست خواهد کرد. اگر مایل به نصب PIN رفع انسداد نیستید، کافی است در اعلان PUK کلید return را فشار دهید.
برای تنظیم یک برچسب (label) برای این شیء PIN (که میتواند توسط برنامهها برای نمایش یک اعلان معنادار به کاربر استفاده شود)، از گزینهٔ خط فرمان --label استفاده کنید.
تولید کلید (Key generation)
ابزار pkcs15-init به شما امکان میدهد کلید جدیدی تولید کرده و آن را روی کارت ذخیره کنید. شما میتوانید این کار را با استفاده از دستور زیر انجام دهید:
pkcs15-init --generate-key "keyspec" --auth-id "nn"
که در آن keyspec الگوریتم و پارامترهای کلید مورد نظر را توصیف میکند. برای نمونه، rsa:2048 یک کلید RSA با مدول ۲۰۴۸ بیتی تولید میکند؛ مقدار پیشفرض 3072 است. در صورتی که در حال تولید یک کلید EC هستید، منحنی باید مشخص شود، برای نمونه ec:prime256v1. منحنیهای زیر به پارامتر نیازی ندارند: برای منحنیهای Edwards 25519 از یکی از نامهای معادل Ed25519 (ترجیحی)، ed25519 یا edwards25519 و برای منحنی 448 از: Ed448 استفاده کنید. برای منحنیهای Montgomery 25519 از یکی از این نامهای معادل استفاده کنید: X25519 (ترجیحی)، cv25519 یا curve25519 و برای منحنی 448 از: X448 استفاده کنید. برای کلیدهای متقارن، طول کلید بر حسب بایت مشخص میشود، برای نمونه AES:32 یا DES3:24.
مقدار nn شناسهٔ PIN کاربری است که پیشتر نصب شده است، مانند 01.
علاوه بر ذخیرهٔ بخش خصوصی کلید بر روی کارت، pkcs15-init بخش عمومی کلید را نیز به عنوان یک شیء کلید عمومی PKCS #15 ذخیره خواهد کرد.
بارگذاری کلید خصوصی (Private Key Upload)
میتوانید از یک کلید خصوصی که با روشهای دیگری تولید شده است استفاده کرده و آن را بر روی کارت بارگذاری کنید. برای نمونه، جهت بارگذاری کلید خصوصی موجود در فایلی به نام okir.pem که در قالب PEM است، از دستور زیر استفاده میشود:
pkcs15-init --store-private-key okir.pem --id 45 --auth-id 01
علاوه بر ذخیرهٔ بخش خصوصی کلید بر روی کارت، pkcs15-init بخش عمومی کلید را نیز به عنوان یک شیء کلید عمومی PKCS #15 ذخیره خواهد کرد.
توجه داشته باشید که استفاده از گزینهٔ --id در دستورات pkcs15-init برای تولید یا وارد کردن یک کلید جدید، منسوخ شده است. روش بهتر این است که اجازه دهید میانافزار شناسه را از روی محتوای دادههای کلید استخراج کند (مانند SHA1(modulus) برای RSA و غیره). این کار امکان برقراری ارتباط آسان بین اشیاء «مرتبط» (کلیدهای خصوصی/عمومی و گواهیها) را فراهم میکند.
علاوه بر قالب فایل کلید PEM، ابزار pkcs15-init از کلیدهای با کدگذاری DER و فایلهای PKCS #12 نیز پشتیبانی میکند. مورد اخیر، همان قالب فایلی است که توسط نرمافزارهایی چون Netscape Navigator هنگام صدور گواهیها به یک فایل استفاده میشود. یک فایل PKCS #12 معمولاً حاوی گواهی X.509 متناظر با کلید خصوصی است. در چنین حالتی، pkcs15-init به جای بخش کلید عمومی، گواهی را ذخیره خواهد کرد..SS "بارگذاری کلید عمومی (Public Key Upload)"
شما همچنین میتوانید با استفاده از گزینهٔ --store-public-key که یک نام فایل را به عنوان آرگومان میگیرد، کلیدهای عمومی را بهصورت جداگانه روی کارت بارگذاری کنید. این فایل باید حاوی کلید عمومی باشد. اگر قالب فایل کلید را با استفاده از گزینهٔ --format مشخص نکنید، pkcs15-init قالب PEM را فرض خواهد کرد. تنها قالب پشتیبانیشدهٔ دیگر برای فایل کلید عمومی DER است.
از آنجا که کلیدهای عمومی متناظر همواره هنگام تولید یک کلید جدید یا بارگذاری یک کلید خصوصی بهطور خودکار بارگذاری میشوند، احتمالاً به ندرت از این گزینه استفاده خواهید کرد.
بارگذاری گواهی (Certificate Upload)
شما میتوانید با استفاده از گزینهٔ --store-certificate که یک نام فایل را به عنوان آرگومان میگیرد، گواهیها را روی کارت بارگذاری کنید. این فایل باید حاوی یک گواهی X.509 با کدگذاری PEM باشد.
بارگذاری بستههای PKCS #12 (Uploading PKCS #12 bags)
امروزه اغلب مرورگرها هنگامی که از آنها میخواهید کلید و گواهی شما را در یک فایل صادر کنند، از فایلهایی با قالب PKCS #12 استفاده میکنند. pkcs15-init قادر است این فایلها را تجزیه کرده و محتویات آنها را در یک عملیات واحد روی کارت ذخیره کند. عملکرد این دستور دقیقاً مانند ذخیرهٔ یک کلید خصوصی است، با این تفاوت که باید قالب فایل را مشخص کنید:
pkcs15-init --store-private-key okir.p12 --format pkcs12 --auth-id 01
این دستور کلید خصوصی موجود در فایل okir.p12 را نصب کرده و با PIN ارجاع داده شده توسط شناسهٔ احراز هویت 01 از آن محافظت میکند. همچنین هرگونه گواهی X.509 موجود در فایل را که معمولاً شامل گواهی کاربر همراه با کلید و همچنین گواهی CA است، ذخیره خواهد کرد.
بارگذاری کلید محرمانه (Secret Key Upload)
میتوانید از یک کلید محرمانه که با روشهای دیگر تولید شده استفاده کرده و آن را روی کارت بارگذاری کنید. برای نمونه، برای بارگذاری یک کلید محرمانهٔ AES تولیدشده توسط مولد تصادفی سیستم، میتوانید از دستور زیر استفاده کنید:
pkcs15-init --store-secret-key /dev/urandom --secret-key-algorithm aes:256 --auth-id 01
بهطور پیشفرض یک شناسهٔ تصادفی برای کلید محرمانه تولید میشود. در صورت نیاز میتوانید یک شناسه را با --id مشخص کنید.
گزینهها (OPTIONS)
--version,
--card-profile name, -c name
--create-pkcs15, -C
--serial SERIAL
--erase-card, -E
--erase-application AID
--generate-key keyspec, -G keyspec
--pin pin, --puk puk, --so-pin sopin, --so-puk sopuk
توجه داشته باشید که در اکثر سیستمهای عامل، هر کاربری میتواند با استفاده از ابزارهایی مانند ps(1) خط فرمان هر فرایندی در سیستم را مشاهده کند. بنابراین، در یک سیستم ناامن بهتر است کدها را از طریق یک متغیر محیطی ارسال کنید.
--no-so-pin,
--profile name, -p name
نام نمایه میتواند با یک یا چند گزینهٔ نمایه ترکیب شود که رفتار نمایه را کمی تغییر میدهند. برای نمونه، نمایهٔ پیشفرض OpenSC از گزینهٔ openpin پشتیبانی میکند که در طول مقداردهی اولیهٔ کارت، یک PIN تکی نصب مینماید. این PIN سپس هم به عنوان SO PIN و هم به عنوان PIN کاربر برای تمام کلیدهای ذخیرهشده روی کارت استفاده میشود.
نام نمایه و گزینهها با یک نویسهٔ + از هم جدا میشوند، مانند pkcs15+onepin.
--secret-key-algorithm keyspec,
--store-certificate filename, -X filename
--store-pin, -P
--store-public-key filename
--store-private-key filename, -S filename
--store-secret-key filename,
همچنین میتوانید شناسهٔ کلید را همراه با این دستور، با استفاده از گزینهٔ --id مشخص کنید، در غیر این صورت یک شناسهٔ تصادفی تولید میشود. برای کارتهای چندبرنامهای، برنامهٔ PKCS#15 هدف را میتوان با مقدار هگزادسیمال AID در گزینهٔ aid مشخص کرد.
--store-data filename, -W filename
--update-certificate filename, -U filename
هنگام بهروزرسانی گواهیهای رمزگشایی رایانامه توجه ویژهای داشته باشید، زیرا گم شدن یا فقدان گواهیها میتواند پیامهای رایانامه را غیرقابل خواندن کند!
--delete-objects arg, -D arg
هنگامی که data مشخص شود، یک ---application-id نیز باید مشخص شود، در سایر موارد باید یک --id مشخص گردد.
هنگامی که chain مشخص شود، زنجیرهٔ گواهی که با گواهی دارای شناسهٔ مشخصشده آغاز میشود حذف خواهد شد، تا جایی که به یک گواهی CA برسد که گواهی دیگری را روی کارت تصدیق کرده باشد. --change-attributes arg, -A arg
pkcs15-init -A cert --id 45 -a 1 --label Jim
--use-default-transport-keys, -T
--sanity-check
--reader arg, -r arg
--verbose, -v
--wait, -w
--use-pinpad
--auth-id filename, -a filename
--puk-id ID
--label LABEL
--puk-label LABEL
--public-key-label LABEL
--cert-label LABEL
--application-name arg
--aid AID
--output-file filename -o filename,
--passphrase PASSPHRASE
--authority
--key-usage arg -u arg,
نام مستعار sign معادل است با digitalSignature,keyCertSign,cRLSign
نام مستعار decrypt معادل است با keyEncipherment,dataEncipherment
--finalize -F,
--update-last-update
--ignore-ca-certificates
--update-existing
--extractable
--user-consent arg
--insecure
--md-container-guid GUID
--help -h,
نویسندگان (AUTHORS)
pkcs15-init توسط Olaf Kirch <okir@suse.de> نوشته شده است.
| 06/02/2026 | openscopensc |