stoken(1) General Commands Manual stoken(1)

stoken - توکن نرم‌افزاری برای احراز هویت رمزنگاری‌شده

stoken [tokencode] [--stdin] [--force] [--next] [opts]

stoken import {--file=file | --token=token_string} [--force] [opts]

stoken setpin [opts]

stoken setpass [opts]

stoken show [--seed] [opts]

stoken export [{--blocks | --iphone | --android | --v3 | --sdtid | --qr=file.png | --show-qr}] [opts]

stoken issue [--template=file]

stoken help

stoken version

برنامه stoken یک توکن نرم‌افزاری سازگار با توکن‌های ۱۲۸ بیتی (AES) از نوع RSA SecurID است. رابط خط فرمان امکاناتی را برای درون‌ریزی توکن‌های جدید، نمایش کد توکن (tokencode) جاری، رمزگذاری دانه (seed) با یک گذرواژه مشخص‌شده توسط کاربر، ذخیره PIN کاربر در کنار توکن، و مشاهده یا برون‌ریزی داده‌های توکن فراهم می‌کند.

از stoken import برای رمزگشایی رشته توکن و نوشتن آن در ~/.stokenrc استفاده کنید. بسته به گزینه‌هایی که مدیر سیستم شما برای ساخت توکن به کار برده است، این دستور ممکن است شناسه دستگاه (device ID) یا گذرواژه را درخواست کند. رشته توکن را می‌توان در خط فرمان مشخص کرد یا آن را از یک فایل متنی خواند.

برنامه stoken انواع زیر از رشته‌های توکن را به‌طور خودکار تشخیص می‌دهد:

286510182209303756117707012447003320623006...
29658-21098-45467-64675-65731-01441-11337...
رشته‌های کاملاً عددی (۸۱ رقمی) «ctf» (فرمت توکن فشرده‌شده)، همراه با خط تیره یا بدون آن. این رشته‌ها ممکن است همان‌طور که هستند ارائه شده باشند یا از یک فایل sdtid توسط برنامه TokenConverter متعلق به RSA مشتق شده باشند.
رشته‌های توکن سازگار با iPhone.
127.0.0.1/securid/ctf?ctfData=250494932146245277466...">
127.0.0.1/securid/ctf?ctfData=AwAAfBc3QSopPxxjLGnxf...">
رشته‌های توکن سازگار با Android.
<?xml version=...
فایل‌های XML با فرمت sdtid متعلق به RSA. این فایل‌ها باید از طریق یک فایل درون‌ریزی شوند: stoken import --file=FILE.SDTID.

توکن‌هایی که به‌صورت کدهای QR ارائه می‌شوند را می‌توان با اجرای دستور zbarimg(1) روی فایل تصویر، مجدداً به URIهای استاندارد تبدیل کرد.

شناسه دستگاه (device ID)، در صورت استفاده، در منوی «about» برنامه توکن نرم‌افزاری RSA روی گوشی قابل مشاهده است. رشته‌های عددی ctf و توکن‌های گوشی‌های هوشمند که مقید به یک شناسه دستگاه هستند، حاوی دانه‌ای (seed) می‌باشند که با استفاده از شناسه دستگاه رمزگذاری شده است؛ بنابراین این شناسه باید پیش از اینکه stoken بتواند توکن را با موفقیت درون‌ریزی کند ارائه شود. فایل‌های sdtid بدون اطلاع از شناسه دستگاه نیز قابل درون‌ریزی هستند، به شرطی که گذرواژه (در صورت وجود) مشخص باشد.

به‌طور پیش‌فرض، دستور stoken import از بازنویسی روی توکن موجود در ~/.stokenrc خودداری خواهد کرد. گزینه --force این بررسی را نادیده می‌گیرد.

دستور stoken import به‌طور معمول یک گذرواژه جدید درخواست می‌کند که برای رمزگذاری دانه (seed) قبل از ذخیره آن در ~/.stokenrc به کار می‌رود. با وارد کردن یک گذرواژه خالی یا مشخص کردن --new-password='' در خط فرمان می‌توان از این مرحله عبور کرد. توصیه می‌شود برای این منظور یک عبارت عبور (passphrase) طولانی‌تر و غیرقابل حدس انتخاب شود.

پس از درون‌ریزی توکن، اجرای stoken بدون هیچ آرگومانی هر گذرواژه یا PIN لازم را درخواست کرده و سپس کد توکن (tokencode) جاری را نمایش می‌دهد.

کدهای توکن از داده‌های خام (رمزگشایی‌شده) دانه، زمان جاری روز و PIN محاسبه می‌شوند. اگر یک دانه روی چند دستگاه نصب شده باشد، همگی باید کدهای توکن یکسانی تولید کنند. در غیر این صورت، تنظیمات منطقه زمانی (timezone) را دوباره بررسی کرده و استفاده از NTP را برای همگام‌سازی زمان سیستم با یک منبع معتبر در نظر بگیرید.

دستور stoken setpin می‌تواند برای ذخیره PIN در ~/.stokenrc استفاده شود. همه توکن‌ها نیازمند PIN نیستند؛ این مورد می‌تواند هنگام تولید توکن‌های جدید توسط مدیر SecurID پیکربندی شود. تنظیم یک PIN خالی، مقدار PIN را از ~/.stokenrc حذف می‌کند تا هر بار که نیاز باشد از کاربر پرسیده شود. برای جزئیات بیشتر بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در ادامه را ببینید.

دستور stoken setpass دانه (seed) و PIN (در صورت وجود) را در ~/.stokenrc با گذرواژه یا عبارت عبور انتخابی کاربر رمزگذاری می‌کند. اگر یک گذرواژه خالی وارد شود، گذرواژه حذف خواهد شد. برای جزئیات بیشتر بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در ادامه را ببینید..SH "مشاهده توکن‌ها (VIEWING TOKENS)"

دستور stoken show اطلاعات مربوط به توکن فعلی را، که معمولاً از ~/.stokenrc خوانده می‌شود، نمایش می‌دهد. گزینهٔ --seed بایت‌های سید (seed) رمزگذاری‌شده و رمزگشایی‌شده را نمایش می‌دهد (که باید به عنوان داده‌های حساس با آن‌ها برخورد شود، زیرا می‌توان از آن‌ها برای استخراج کدهای توکن استفاده کرد).

دستور stoken export توکن فعلی را به قالبی مناسب برای درون‌ریزی در دستگاهی دیگر تبدیل می‌کند.

دستور stoken issue یک توکن نرم‌افزاری جدید در قالب XML sdtid تولید می‌کند. می‌توان یک فایل الگو، که خود در قالب sdtid است، ارائه داد تا برخی یا تمام فیلدهای خوانا برای انسان را بازنویسی (override) کند. این کار امکان تعیین شماره‌های سریال مناسب، تاریخ‌های انقضا، نام‌های کاربری و غیره را فراهم می‌سازد. اگر فیلدهای Secret ،Seed یا MAC در فایل الگو وجود داشته باشند، نادیده گرفته خواهند شد.

استفاده از یک فایل پیکربندی جایگزین برای .stokenrc. این گزینه معمولاً برای پشتیبانی از چند توکن روی یک حساب کاربری یونیکس (UNIX) استفاده می‌شود. توجه داشته باشید که فایل .stokenrc داده‌های اضافی (مانند PIN) را ذخیره می‌کند، بنابراین نمی‌تواند توسط stoken --file به عنوان یک رشته توکن «خام» پردازش شود.
استفاده از گذرواژه‌ای که از طریق خط فرمان ارائه شده است، به جای درخواست از کاربر. به نکات بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در زیر مراجعه کنید.
استفاده از PIN ارائه شده از طریق خط فرمان، به جای درخواست از کاربر. به نکات بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در زیر مراجعه کنید. اگر PIN خود را در ~/.stokenrc ذخیره می‌کنید، توجه داشته باشید که هنگام فعال‌سازی یک توکن نرم‌افزاری جدید برای نخستین بار، اغلب --pin=0000 لازم است.
استفاده از شناسه دستگاه (device ID) ارائه شده از طریق خط فرمان برای رمزگشایی توکن. یک توکن می‌تواند به یک کلاس GUID دستگاه (یعنی نوع خاصی از دستگاه، مانند "iPhone" یا "Android")، یک شناسه دستگاه یکتا (یک دستگاه خاص)، یا هیچ‌چیز پیوند (bind) داده شود. stoken تلاش خواهد کرد تطابق با کلاس GUID را به‌طور خودکار تشخیص دهد، اما در موارد نادری این کار به دلیل تداخل درهم‌سازی (hash collisions) منجر به نتایج مثبت کاذب می‌شود. در این موارد، شناسه دستگاه متصل باید در خط فرمان مشخص شود تا تشخیص خودکار بازنویسی گردد.

ارائهٔ گذرواژهٔ رمزگذاری از طریق خط فرمان برای عملیاتی که یک رشته توکن یا فایل .stokenrc را می‌نویسند: import، export، setpass و issue. به نکات بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در زیر مراجعه کنید.
اگر توکن در فایل .stokenrc با یک گذرواژه محافظت شده باشد، هنگام برون‌بری توکن همان گذرواژه حفظ می‌شود. به طور پیش‌فرض، عملیات export توکن را با گذرواژه رمزگذاری نمی‌کند؛ توجه داشته باشید که ممکن است وارد کردن همهٔ گذرواژه‌های ممکن در دستگاه‌هایی با قابلیت‌های ورودی متن محدود (مانند تلفن‌های ساده/غیر هوشمند) امکان‌پذیر نباشد.
ارائهٔ یک PIN جدید از طریق خط فرمان برای عملیات setpin. به نکات بخش ملاحظات امنیتی (SECURITY CONSIDERATIONS) در زیر مراجعه کنید.
همراه با دستورهای export یا issue برای رمزگذاری توکن جدید با یک شناسه دستگاه خاص به کار می‌رود. این گزینه صرفاً برای اهداف آزمایشی استفاده می‌شود.
همراه با دستور export برای انتخاب قالب خروجی استفاده می‌شود. به مثال‌های بخش کاربرد پایه‌ای (BASIC USAGE) مراجعه کنید. به‌طور پیش‌فرض، دستور export یک رشتهٔ قالب‌بندی‌نشدهٔ ۸۱ رقمی را در خروجی استاندارد چاپ می‌کند.
این گزینه‌ها هم‌معنی و معادل یکدیگرند. هر دو، توکن را در قالب XML sdtid متعلق به RSA در خروجی استاندارد برون‌بری می‌کنند.
کدگذاری توکن به صورت یک کد QR و نوشتن آن در فایل file.png. این گزینه نیازمند نصب بودن برنامهٔ qrencode است.
کدگذاری توکن به صورت یک کد QR و نمایش فوری آن روی صفحه نمایش. این گزینه نیازمند نصب بودن برنامهٔ qrencode است. اگر متغیر محیطی QR_VIEWER تنظیم شده باشد، stoken از آن برنامه به عنوان نمایش‌دهندهٔ ترجیحی استفاده خواهد کرد. در غیر این صورت تلاش می‌کند چند نمایش‌دهندهٔ تصویر متداول در لینوکس را اجرا کند، و در صورتی که هیچ‌یک از آن‌ها موجود نباشند، منصرف می‌شود.
همراه با دستورهای export یا issue برای بازنویسی (override) فیلدها در خروجی XML استفاده می‌شود. فایل الگو باید شبیه به هر فایل استاندارد sdtid باشد، اما همهٔ فیلدها اختیاری هستند و در صورت حذف، مقادیر معقول و پیش‌فرضی به آن‌ها اختصاص می‌یابد. این قابلیت می‌تواند برای وادار کردن خروجی XML به استفاده از شماره سریال، نام کاربری، تاریخ انقضا و غیره خاص به کار رود. مجموع‌های مقابله‌ای (checksums) صحیح MAC بر روی مقادیر ارائه‌شده (مجدداً) محاسبه خواهند شد. برای اطلاعات بیشتر به دایرکتوری examples در توزیع کد منبع مراجعه کنید..SH "سایر گزینه‌ها (OTHER OPTIONS)"
به جای تولید یک tokencode بر اساس زمان فعلی روز، زمان مشخصی را اجباری می‌کند، یا زمان فعلی را بر اساس یک آفست مثبت یا منفی (تعیین‌شده به ثانیه) تنظیم می‌کند. این گزینه صرفاً برای اهداف آزمایشی استفاده می‌شود.
به جای tokencode فعلی، tokencode بعدی را تولید می‌کند. برای یک توکن ۶۰ ثانیه‌ای، این گزینه معادل --use-time=+60 است.
هنگام تولید یک tokencode که نیازمند گذرواژه یا PIN است، گذرواژه یا PIN را به صورت یک خط تکی از ورودی استاندارد می‌خواند. این گزینه برای این در نظر گرفته شده که به برنامه‌های خارجی اجازه دهد تا stoken را برای تولید گذرواژه‌های یک‌بارمصرف بدون دخالت کاربر فراخوانی کنند؛ به بخش NON-INTERACTIVE USE در زیر مراجعه کنید.
بررسی‌های تاریخ انقضای توکن (برای tokencode) یا بررسی‌های رونویسی توکن (برای import) را نادیده می‌گیرد.
در صورتی که به هرگونه ورودی کاربر نیاز باشد، با یک کد خروج خطا عملیات را متوقف می‌کند. برای عملکرد خودکار و آزمایش در نظر گرفته شده است.
یک رشته ctf، یک URI متعلق به Android/iPhone یا یک توکن XML با قالب sdtid را به جای پیکربندی .stokenrc از file می‌خواند. بیشتر دستورات stoken این پرچم را می‌پذیرند، اما انتظار می‌رود که کاربر معمولی توکن خود را در ~/.stokenrc ذخیره کند، نه اینکه آن را در هر بار فراخوانی به صورت دستی ارائه دهد. معمولاً --file و --token فقط برای دستور import استفاده می‌شوند.
به جای فایل .stokenrc از یک توکن در خط فرمان استفاده می‌کند. یادداشت‌های بالا درباره‌ی --file را ببینید.
یک توکن تصادفی را در لحظه تولید می‌کند. صرفاً برای آزمایش یا نمایش استفاده می‌شود. این توکن‌ها نباید برای احراز هویت واقعی به کار گرفته شوند.
نمایش اطلاعات پایه‌ای استفاده.
نمایش اطلاعات نسخه.

توکن‌های نرم‌افزاری بر خلاف توکن‌های سخت‌افزاری به سادگی تکثیر می‌شوند. سیستم‌هایی که سید (seed) توکن نرم‌افزاری را ذخیره می‌کنند باید با دقت محافظت شوند تا از افشای غیرمجاز جلوگیری گردد. استفاده از رمزنگاری تمام دیسک، مانند TrueCrypt، برای لپ‌تاپ‌ها و دیگر دستگاه‌های قابل‌حملی که به آسانی گم یا دزدیده می‌شوند، اکیداً توصیه می‌شود.

برنامه stoken به کاربران اجازه می‌دهد PIN خود را در ~/.stokenrc ذخیره کنند تا تولید خودکار (اسکریپت‌پذیر) کدهای توکن امکان‌پذیر شود، اما خطرات این روش باید به دقت در برابر مزایای آن سنجیده شود.

استفاده از دستور setpass برای رمزنگاری سید و PIN در ~/.stokenrc درجاتی از محافظت در برابر دسترسی غیرمجاز فراهم می‌کند، اما لزوماً تمام بردارهای حمله احتمالی را پوشش نمی‌دهد. میزبانی که از قبل به خطر افتاده است (مثلاً در حال اجرای یک keylogger است) محافظت کافی برای سیدهای ذخیره‌شده بر روی خود فراهم نخواهد کرد.

گذرواژه‌های رمزنگاری stoken می‌توانند تا ۴۰ نویسه طول داشته باشند. یک عبارت عبور طولانی‌تر که از چندین کلمه‌ی تصادفی تشکیل شده باشد، در مقایسه با یک گذرواژه کوتاه‌تر، می‌تواند محافظت بیشتری در برابر حملات جستجوی فراگیر (brute-force) فراهم کند.

وارد کردن گذرواژه یا PIN در خط فرمان عموماً در سیستم‌های چندکاربره ناامن است، زیرا سایر کاربران ممکن است بتوانند آرگومان‌های خط فرمان را در ps یا ابزارهای مشابه مشاهده کنند. خط فرمان همچنین ممکن است در فایل‌های تاریخچه‌ی پوسته ذخیره شود.

کدگذاری توکن‌های QR ممکن است داده‌های سید را از طریق ps افشا کند، و گزینه --show-qr فایل‌های موقت PNG را در /tmp می‌نویسد.

برنامه stoken تلاش می‌کند تا صفحه‌های حافظه را قفل کند تا از انتقال آن‌ها به دیسک (swap out) جلوگیری شود، اما داده‌های محرمانه را از حافظه‌ی فرایند پاکسازی نمی‌کند..SH "استفاده غیرتعاملی (NON-INTERACTIVE USE)"

سایر برنامه‌ها، مانند کلاینت‌های VPN، ممکن است بخواهند برای تولید گذرواژه‌های یک‌بارمصرف، stoken را به‌صورت غیرتعاملی فراخوانی کنند. بسته به سطح امنیت (و/یا راحتی) مورد نیاز، سه حالت استفاده پشتیبانی می‌شود:

کاربر stoken را طوری پیکربندی می‌کند که بلافاصله پس از فراخوانی و بدون هیچ اعلانی، یک tokencode را چاپ کند؛ این کار با استفاده از setpin برای ذخیرهٔ PIN در ~/.stokenrc و استفاده از setpass برای تنظیم یک گذرواژهٔ خالی انجام می‌شود. سپس برنامهٔ دیگر می‌تواند stoken --batch را فراخوانی کرده و tokencode را از طریق یک لوله (pipe) از خروجی استاندارد بخواند.

این روش هیچ امنیتی را برای seed فراهم نمی‌کند، اما ممکن است در برنامه‌هایی که احراز هویت (مجدد) در آن‌ها مکرر است یا به عملکرد خودکار و بدون نظارت نیاز دارند، مفید باشد.

کاربر stoken را به‌گونه‌ای پیکربندی می‌کند که داده‌های محرمانهٔ ~/.stokenrc را با استفاده از setpass توسط یک گذرواژه رمزگذاری کند، سپس PIN را با setpin ذخیره می‌کند. هم PIN و هم seed با آن گذرواژه رمزگذاری خواهند شد. برنامهٔ دیگر گذرواژه را از کاربر درخواست کرده، سپس stoken --stdin را صدا می‌زند، گذرواژه را از طریق یک لوله به ورودی استاندارد stoken می‌نویسد و tokencode را از خروجی استاندارد stoken بازمی‌خواند.

مشابه بالا، اما با استفاده از setpass یک گذرواژهٔ خالی تنظیم کنید، PIN را در ~/.stokenrc ذخیره نکنید، و PIN را از طریق ورودی استاندارد به stoken --stdin ارسال نمایید.

پشتیبانی از sdtid هنوز جدید است و ممکن است در مواجهه با ورودی‌های غیرمنتظره دچار مشکل شود. به‌عنوان یک راهکار موقت می‌توانید بررسی‌های صحت‌سنجی در sdtid_decrypt() را غیرفعال (کامنت) کنید تا ببینید آیا مشکل برطرف می‌شود یا خیر.

قابلیت‌های در حال توسعه عبارتند از: seedهای توکن سخت‌افزاری (و دستور stoken split که برای کار با آن‌ها نیاز است)، و پشتیبانی از میزبان‌های غیرلینوکسی.

وصله‌ها (patches) همیشه مورد استقبال قرار می‌گیرند.

stoken-gui(1).

~/.stokenrc
فایل پیکربندی پیش‌فرض.

Kevin Cernekee <cernekee@gmail.com>

2012-09-09