YKPERSONALIZE(1) YubiKey Personalization Tool M YKPERSONALIZE(1)

ykpersonalize - شخصی‌سازی توکن‌های OTP در YubiKey

ykpersonalize [-Nkey] [-1 | -2] [-sfile] [-ifile] [-fformat] [-axxx] [-cxxx] [-ooption] [-y] [-v] [-d] [-h] [-n] [-t] [-u] [-x] [-z] [-m] [-S] [-V] [-Dxxx_]

تنظیم کلید AES، شناسه کاربری (user ID) و سایر تنظیمات در یک YubiKey. برای دریافت توضیحات کامل پیرامون مفهوم تمامی پارامترها، به دفترچه راهنمای مرجع مراجعه کنید: راهنمای YubiKey (https://www.yubico.com/wp-content/uploads/2015/03/YubiKeyManual_v3.4.pdf)

-Nkey

استفاده از n-امین YubiKey یافت‌شده.

-1

تغییر پیکربندی نخست. این حالت پیش‌فرض بوده و معمولاً برای تولید OTP واقعی استفاده می‌شود. در این پیکربندی، پرچم گزینه‌ی -oappend-cr به‌طور پیش‌فرض تنظیم شده است.

-2

تغییر پیکربندی دوم. این گزینه فقط برای YubiKey II است و معمولاً برای تولید کلید ایستا (static key) استفاده می‌شود. در این پیکربندی، پرچم‌های گزینه‌ی -oappend-cr، -ostatic-ticket، -ostrong-pw1، -ostrong-pw2 و -oman-update به‌طور پیش‌فرض تنظیم شده‌اند.

-z

حذف پیکربندی در اسلات (slot) انتخاب‌شده.

-sfile

ذخیره پیکربندی در فایل به‌جای کلید (اگر فایل - باشد، به stdout ارسال می‌شود).

-ifile

خواندن پیکربندی از فایل (اگر فایل - باشد، از stdin خوانده می‌شود). وارد کردن پیکربندی فقط برای قالب ycfg معتبر است.

-fformat

قالبی که باید با -s و -i استفاده شود. گزینه‌های معتبر عبارتند از ycfg و legacy.

-a[xxx]

کلید مخفی AES به‌صورت یک مقدار هگز ۳۲ نویسه‌ای (یا ۴۰ نویسه‌ای برای OATH-HOTP/HMAC CHAL-RESP) (نه modhex) (در صورت عدم تعیین، کلید از stdin درخواست می‌شود). اگر از -a استفاده نشود، یک کلید تصادفی تولید خواهد شد.

-c[xxx]

یک مقدار هگز ۱۲ نویسه‌ای (نه modhex) برای استفاده به‌عنوان کد دسترسی جهت برنامه‌ریزی. نکته: این گزینه کد دسترسی را تنظیم نمی‌کند؛ این کار از طریق -oaccess= انجام می‌شود. اگر هیچ آرگومانی داده نشود، کد از طریق stdin درخواست خواهد شد.

-ooption

تغییر گزینه پیکربندی. آرگومان‌های ممکن برای گزینه عبارتند از:

fixed=fffffffffff

شناسه عمومی (public identity) به صورت modhex برای YubiKey، به طول ۰ تا ۳۲ نویسه (کدگذاری تا ۱۶ بایت). همچنین امکان تعیین شناسه به‌صورت هگز وجود دارد، کافی است پیشوند ’h:’ را به ابتدای مقدار بیفزایید. این بخش ثابت (fixed) با فشردن دکمه روی YubiKey پیش از OTP ارسال می‌شود. برای نمونه می‌تواند به‌عنوان یک شناسه برای کاربر استفاده شود.

uid[=uuuuuu]

بخش uid از OTP تولیدشده، که به آن شناسه خصوصی (private identity) نیز گفته می‌شود، در قالب هگز. باید ۱۲ نویسه باشد. این uid شامل ۶ بایت داده ایستا است که در هر OTP (به‌صورت رمزنگاری‌شده) گنجانده می‌شود و برای اعتبارسنجی اینکه OTP واقعاً با کلید AES مشترک میان YubiKey و سرویس اعتبارسنجی رمز شده است به‌کار می‌رود. از آنجا که این مقدار تنها برای دارندگان کلید AES قابل خواندن است، نمی‌توان از آن برای شناسایی YubiKey استفاده کرد. اگر آرگومانی ارائه نشود، uid از stdin درخواست می‌شود.

access[=fffffffffff]

کد دسترسی جدید به صورت هگز برای تنظیم. باید ۱۲ نویسه باشد. در صورت تنظیم یک کد دسترسی، برای برنامه‌ریزی‌های بعدی YubiKey الزامی خواهد بود. اگر آرگومانی ارائه نشود، کد از طریق stdin درخواست می‌شود.

oath-imf=xxx

تنظیم OATH Initial Moving Factor. این مقدار شمارنده اولیه برای YubiKey است. این مقدار باید عددی بین 0 و 1048560 و بخش‌پذیر بر 16 باشد.

ticket-flag

تنظیم/پاک‌کردن پرچم بلیت (ticket flag)، به بخش Ticket Flags مراجعه کنید.

configuration-flag

تنظیم/پاک‌کردن پرچم پیکربندی (configuration flag)، به بخش Configuration flags مراجعه کنید.

-y

اعمال همیشگی تغییرات بدون درخواست تأیید.

-d

اجرای آزمایشی (dry-run)، اجرا بدون نوشتن روی YubiKey.

-v

ارائه جزئیات بیشتر (حالت پرگو).

-h

نمایش راهنما.

-V

نمایش نسخه.

-n URI

برنامه‌ریزی URI برای NFC NDEF.

-t text

برنامه‌ریزی متن NFC NDEF.

-m mode

تنظیم پیکربندی دستگاه برای YubiKey. این مقدار در قالب mode:cr_timeout:autoeject_timeout تجزیه می‌شود که در آن mode یکی از موارد زیر است:

0

تنها دستگاه OTP.

1

تنها دستگاه CCID.

2

دستگاه ترکیبی OTP/CCID.

3

تنها دستگاه U2F.

4

دستگاه ترکیبی OTP/U2F.

5

دستگاه ترکیبی U2F/CCID.

6

دستگاه ترکیبی OTP/U2F/CCID. برای تنظیم MODE_FLAG_EJECT مقدار 80 را بیفزایید، برای نمونه: 81

cr_timeout مهلت زمانی برحسب ثانیه برای انتظار YubiKey جهت فشردن کلید برای پاسخ به چالش (challenge response) است (پیش‌فرض 15 است)

autoeject_timeout مهلت زمانی برحسب ثانیه پیش از خارج‌شدن خودکار کارت در حالت 81 است

حذف حالت OTP همچنین ارتباط بین ykpersonalize و YubiKey را غیرفعال می‌کند. تغییرات بعدی حالت باید با ykneomgr (برای حالت CCID) یا u2f-host (برای حالت U2F) انجام شود.

-S0605...

تنظیم scanmap برای استفاده با YubiKey. این مقدار باید 45 بایت یکتا در قالب 90 نویسه باشد. برای بازنشانی به مقدار پیش‌فرض YubiKey، آرگومان را خالی بگذارید. نقشه اسکن (scanmap) باید به این ترتیب فرستاده شود:
cbdefghijklnrtuvCBDEFGHIJKLNRTUV0123456789!\t\r

مقدار scanmap پیش‌فرض در YubiKey به این صورت است:

06050708090a0b0c0d0e0f111517181986858788898a8b8c8d8e8f9195979899271e1f202122232425269e2b28

یک مثال برای چیدمان ساده‌شده Dvorak ایالات متحده (U.S.):

0c110b071c180d0a0619130f120e09378c918b879c988d8a8699938f928e89b7271e1f202122232425269e2b28

یا برای یک صفحه‌کلید فرانسوی azerty (ارقام تبدیل‌شده/shifted هستند):

06050708090a0b0c0d0e0f111517181986858788898a8b8c8d8e8f9195979899a79e9fa0a1a2a3a4a5a6382b28

یا برای یک صفحه‌کلید فرانسوی BÉPO (چیدمان Dvorak فرانسوی):

0b140c0938363707130512330f0d16188b948c89b8b6b787938592b38f8d9698a79e9fa0a1a2a3a4a5a69c2b28

و یک مثال برای ترکی (به جای i معمولی، دارای ı بدون نقطه است):

06050708090a0b340d0e0f111517181986858788898a8b8c8d8e8f9195979899271e1f202122232425269e2b28

توجه داشته باشید که پیش از به‌کارگیری این مقادیر، باید هرگونه فاصله خالی (whitespace) موجود در این مثال‌ها را حذف کنید.

-D0403...

تنظیم deviceinfo برای استفاده با این YubiKey.

-u

به‌روزرسانی پیکربندی موجود، به‌جای بازنویسی آن. این کار فقط در صورتی ممکن است که اسلات به‌صورت قابل به‌روزرسانی (updatable) پیکربندی شده باشد.

-x

جابه‌جایی اسلات‌های پیکربندی ۱ و ۲ در داخل YubiKey. این کار فقط در صورتی ممکن است که هر دو اسلات به‌صورت قابل به‌روزرسانی (updatable) پیکربندی شده باشند.

tab-first

ارسال یک نویسهٔ تب (tab) به عنوان نخستین نویسه. این گزینه معمولاً برای رفتن به فیلد ورودی بعدی استفاده می‌شود.

append-tab1

ارسال یک نویسهٔ تب (tab) میان بخش ثابت و بخش گذرواژهٔ یک‌بارمصرف. این گزینه زمانی کاربرد دارد که بخش ثابت برابر با نام کاربری باشد و دو فیلد ورودی داشته باشید که با تب میان آن‌ها جابه‌جا می‌شوید.

append-tab2

ارسال یک نویسهٔ تب (tab) به عنوان آخرین نویسه.

append-delay1

افزودن نیم ثانیه تاخیر پیش از ارسال بخش گذرواژهٔ یک‌بارمصرف. این گزینه تنها برای سفت‌افزارهای 1.x و 2.x معتبر است.

append-delay2

افزودن نیم ثانیه تاخیر پس از ارسال بخش گذرواژهٔ یک‌بارمصرف. این گزینه تنها برای سفت‌افزارهای 1.x و 2.x معتبر است.

append-cr

افزودن یک carriage return (نویسهٔ بازگشت به ابتدای سطر یا Enter) پس از ارسال بخش گذرواژهٔ یک‌بارمصرف.

protect-cfg2

هنگامی که روی پیکربندی ۱ نوشته شود، به‌روزرسانی‌های بعدی پیکربندی ۲ را مسدود می‌کند. هنگامی که روی پیکربندی ۲ نوشته شود، از فعال شدن بیت قفل (lock bit) روی پیکربندی ۱ جلوگیری می‌کند.

oath-hotp

تنظیم حالت OATH-HOTP به‌جای حالت YubiKey. در این حالت، توکن بر اساس استاندارد OATH-HOTP عمل می‌کند.

chal-resp

تنظیم حالت چالش-پاسخ (challenge-response).

send-ref

ارسال یک رشتهٔ مرجع شامل تمام ۱۶ نویسهٔ modhex پیش از بخش ثابت. در هنگام ترکیب با -ostrong-pw2 این گزینه یک ! پیش از باقی رشته ارسال می‌کند.

pacing-10ms

افزودن ۱۰ میلی‌ثانیه تاخیر میان فشردن کلیدها.

pacing-20ms

افزودن ۲۰ میلی‌ثانیه تاخیر میان فشردن کلیدها.

static-ticket

تولید یک رشتهٔ ثابت به عنوان خروجی به‌جای گذرواژهٔ یک‌بارمصرف. این گذرواژه همچنان بر پایهٔ کلید AES است و باید حدس زدن آن دشوار و به‌خاطر سپردنش غیرممکن باشد.

ticket-first

ارسال گذرواژه یک‌بارمصرف پیش از بخش ثابت.

allow-hidtrig

اجازه به راه‌اندازی از طریق HID/صفحه‌کلید با دو بار فشردن کلید caps-، num یا scroll-lock. به دلایل امنیتی توصیه نمی‌شود.

short-ticket

محدود کردن طول رشته ایستا به حداکثر ۱۶ رقم. این پرچم تنها همراه با گزینه -ostatic-ticket معنادار است. زمانی که -oshort-ticket بدون -ostatic-ticket استفاده شود، YubiKey را در «حالت اسکن‌کد» برنامه‌ریزی می‌کند؛ در این حالت کلید محتویات fixed، uid و key را به عنوان کدهای اسکن خام صفحه‌کلید ارسال می‌کند. برای نمونه، با استفاده از رشته ثابت h:8b080f0f122c9a12150f079e در این حالت، عبارت Hello World! روی یک صفحه‌کلید qwerty ارسال خواهد شد. این حالت کدهای اسکن خام را ارسال می‌کند، بنابراین خروجی میان چیدمان‌های گوناگون صفحه‌کلید متفاوت خواهد بود.

strong-pw1

بزرگ کردن دو حرف نخست رشته خروجی. این مورد برای سازگاری با سامانه‌های قدیمی است که استفاده از هر دو نویسه کوچک و بزرگ را در گذرواژه اجباری می‌کنند، و هیچ امنیتی اضافه نمی‌کند.

strong-pw2

جایگزین کردن هشت نویسه نخست الفبای modhex با شماره‌های ۰ تا ۷. همانند -ostrong-pw1، این گزینه نیز برای پشتیبانی از سامانه‌های قدیمی در نظر گرفته شده است.

man-update

فعال‌سازی به‌روزرسانی گذرواژه ایستا توسط کاربر. تنها با گزینه -ostatic-ticket معنادار است. این گزینه فقط برای میان‌افزار 2.x معتبر است.

oath-hotp8

تولید یک HOTP هشت‌رقمی به جای شش‌رقمی.

oath-fixed-modhex1

ارسال نخستین بایت بخش ثابت به صورت modhex.

oath-fixed-modhex2

ارسال دو بایت نخست بخش ثابت به صورت modhex.

oath-fixed-modhex

ارسال بخش ثابت به صورت modhex.

oath-id=m:OOTTUUUUUUUU

پیکربندی شناسه توکن OATH با مقدار ارائه‌شده. برای جزئیات به توضیحات این گزینه در بخش 2.2 مراجعه کنید، اما توجه داشته باشید که کلید YubiKey 2.1 نمی‌تواند شماره سریال خود را گزارش کند و بنابراین باید مقدار شناسه توکن مشخص شود.

chal-yubico

حالت چالش-پاسخ Yubico OTP.

chal-hmac

تولید پاسخ‌های چالش HMAC-SHA1.

hmac-lt64

محاسبه HMAC روی ورودی کمتر از ۶۴ بایت. هر مقداری که در آخرین بایت چالش باشد به عنوان نشانگر پایان ورودی (با ردیابی به عقب از انتهای بار مفید) استفاده می‌شود.

chal-btn-trig

کلید YubiKey پیش از پاسخ به چالش، منتظر می‌ماند تا کاربر کلید را (ظرف ۱۵ ثانیه) فشار دهد.

serial-btn-visible

اگر دکمه هنگام روشن شدن فشرده شود، YubiKey شماره سریال خود را ارسال می‌کند. این گزینه تنها برای سری میان‌افزارهای 2.x معتبر است.

serial-usb-visible

کلید YubiKey شماره سریال خود را در فیلد iSerial مربوط به USB مشخص می‌کند. این گزینه در میان‌افزارهای 3.0 و 3.1 در دسترس نیست.

serial-api-visible

کلید YubiKey اجازه می‌دهد تا شماره سریال آن با استفاده از یک فراخوانی API خوانده شود.

oath-id[=m:OOTTUUUUUUUU]

پیکربندی شناسه توکن OATH با مقدار ارائه‌شده، یا در صورت استفاده بدون مقدار، به‌کارگیری شناسه استاندارد توکن YubiKey.

شناسه استاندارد توکن OATH برای Yubico YubiKey عبارت است از: (modhex) OO=ub، TT=he، و (ده‌دهی) UUUUUUUU=شماره سریال.

دلیل استفاده از شماره سریال ده‌دهی، آسان کردن تطبیق دادن شماره سریال پشت YubiKey با یک ورودی در فهرستی از توکن‌های مرتبط برای انسان است. سایر کدگذاری‌ها را می‌توان با استفاده از گزینه‌های مناسب oath-fixed-modhex انجام داد.

توجه داشته باشید که YubiKey باید به گونه‌ای برنامه‌ریزی شده باشد که اجازه خواندن شماره سریال خود را بدهد، در غیر این صورت ساخت خودکار شناسه توکن امکان‌پذیر نخواهد بود.

برای جزئیات بیشتر به بخش «5.3.4 - OATH-HOTP Token Identifier» از راهنمای YubiKey به نشانی http://yubico.com/files/YubiKey_manual-2.0.pdf مراجعه کنید..SS "سفت‌افزار YubiKey 2.3 و بالاتر"

use-numeric-keypad

ارسال اسکن‌کدها برای فشردن کلیدهای صفحه‌کلید عددی هنگام ارسال ارقام - به کار با برخی چیدمان‌های صفحه‌کلید کمک می‌کند. این گزینه فقط برای سری سفت‌افزارهای 2.x معتبر است.

fast-trig

راه‌اندازی سریع‌تر هنگامی که فقط پیکربندی ۱ موجود باشد. این گزینه در نسخه‌های سفت‌افزار 3.0 و بالاتر همواره فعال است.

allow-update

اجازه به‌روزرسانی (یا جابه‌جایی) پارامترهای مشخصی را در یک پیکربندی در آینده می‌دهد.

dormant

یک پیکربندی ذخیره‌شده در YubiKey را پنهان/آشکار می‌کند.

led-inv

رفتار LED روی YubiKey را معکوس می‌کند.

هنگام استفاده از حالت OATH-HOTP، یک کلید HMAC به اندازه ۱۶۰ بیت (۲۰ بایت، ۴۰ نویسه هگزادسیمال) می‌تواند با -a ارائه شود.

در حالت CHAL-RESP، توکن هنگام فشردن دکمه هیچ فشرده‌شدن کلیدی (keypress) تولید نخواهد کرد (اگرچه کاملاً امکان‌پذیر است که یک اسلات دارای پیکربندی تولیدکننده فشرده‌شدن کلید باشد و دیگری در حالت چالش-پاسخ قرار گیرد). در عوض، باید از برنامه‌ای با توانایی ارسال گزارش‌های ویژگی USB HID به توکن، برای ارسال چالش به آن و خواندن پاسخ استفاده شود.

روش Modhex شیوه‌ای برای نوشتن ارقام هگزادسیمال است که در آن “ارقام” به‌گونه‌ای انتخاب شده‌اند که در بیشتر چیدمان‌های صفحه‌کلید در یک موقعیت قرار گیرند. برای تبدیل از هگزادسیمال به modhex، می‌توانید استفاده کنید از:

tr "[0123456789abcdef]" "[cbdefghijklnrtuv]"

برای تبدیل در جهت معکوس، استفاده کنید از:

tr "[cbdefghijklnrtuv]" "[0123456789abcdef]"

برنامه‌ریزی برای YubiCloud:

ouid=`dd if=/dev/urandom 2>/dev/null | tr -d '[:upper:]' | tr -cd '[:xdigit:]' | fold -w12 | head -1`
ofixed=ff`dd if=/dev/urandom 2>/dev/null | tr -d '[:upper:]' | tr -cd '[:xdigit:]' | fold -w10 | head -1`
ykpersonalize -1 -ouid=h:$ouid -ofixed=h:$ofixed

این دستور یک کلید را با یک uid تصادفی ۶ بایتی و یک رشته ثابت ۱۲ نویسه‌ای که با vv آغاز می‌شود برنامه‌ریزی می‌کند. این مورد برای بارگذاری در YubiCloud در نشانی https://upload.yubico.com مناسب است.

باگ‌های ykpersonalize را در سامانه پیگیری مسائل گزارش دهید: https://github.com/Yubico/yubikey-personalization/issues

صفحه اصلی ykpersonalize در نشانی https://developers.yubico.com/yubikey-personalization

می‌توان YubiKeyها را از Yubico تهیه کرد: http://www.yubico.com

Version 1.20.0 ykpersonalize