RNGD(8) System Manager's Manual RNGD(8)

rngd - بررسی و تزریق داده‌های تصادفی از دستگاه سخت‌افزاری به دستگاه تصادفی هسته

rngd [-b, --background] [-f, --foreground] [-d, --debug] [-l, --list] [-x, --exclude] [-n, --include] [-O, --option] [-i, --ignorefail] [-o, --random-device=file] [-p, --pid-file=file] [-r, --rng-device=file] [-s, --random-step=nnn] [-t, --test] [-W, --fill-watermark=nnn] [-R, --force-reseed=nnn] [-u, --use-slow-sources] [-D, --drop-privileges=user:group] [-q, --quiet] [-?, --help] [-v, --version]

این دیمون داده‌ها را از یک تولیدکننده اعداد تصادفی، پس از بررسی صحت و تصادفی بودن مناسب آن‌ها، به استخر آنتروپی اعداد تصادفی هسته تزریق می‌کند.

گزینه‌های -f یا --foreground می‌توانند استفاده شوند تا از چندشاخه شدن (fork) دستور rngd هنگام راه‌اندازی جلوگیری کنند. این کار معمولاً برای اشکال‌زدایی به کار می‌رود. گزینه‌های -b یا --background که به‌طور خودکار فرایند را به پس‌زمینه می‌برند، حالت پیش‌فرض هستند.

گزینه‌های -r یا --rng-device می‌توانند برای انتخاب یک منبع ورودی جایگزین به جای /dev/hwrng پیش‌فرض استفاده شوند. گزینه‌های -o یا --random-device می‌توانند برای انتخاب یک دستگاه خروجی آنتروپی جایگزین به جای /dev/random پیش‌فرض استفاده شوند. توجه داشته باشید که این دستگاه باید از API دستور ioctl دستگاه /dev/random هسته لینوکس پشتیبانی کند.

تبدیل شدن به دیمون در پس‌زمینه (پیش‌فرض).
اجرا در پیش‌زمینه و عدم تبدیل به دیمون (جلوگیری از fork).
فعال‌سازی پیام‌های اشکال‌زدایی.
فهرست کردن شناسه‌ها (اندیس‌ها) و نام‌های منابع آنتروپی در دسترس. در صورت یافتن و راه‌اندازی حداقل یک منبع، کد خروج ۰ خواهد بود و در غیر این صورت ۱ است.
غیرفعال کردن منابع آنتروپی بر اساس شناسه یا (نام کوتاه) گزارش‌شده از گزینه --list.
فعال کردن منابع آنتروپی بر اساس شناسه یا (نام کوتاه) گزارش‌شده از گزینه --list.
ارائه گزینه‌های پیکربندی خاص برای منابع آنتروپی منفرد، با قالب --option [index|shortname]:key:value برای اطلاع از شناسه‌ها و گزینه‌های ویژه هر منبع، بخش «منابع آنتروپی» در زیر را ببینید. توجه داشته باشید که تعیین -O [<index>|<shortname>] گزینه‌های موجود برای آن شناسه را در کنسول چاپ می‌کند.
فایلی که برای ثبت شناسه فرایند (PID) دیمون و انحصار متقابل استفاده می‌شود (پیش‌فرض: /var/run/rngd.pid).
نادیده گرفتن خطاهای مکرر آزمون‌های FIPS.
دستگاه هسته مورد استفاده برای خروجی اعداد تصادفی (پیش‌فرض: /dev/random).
دستگاه هسته مورد استفاده برای ورودی اعداد تصادفی (پیش‌فرض: /dev/hwrng).
تعداد بایت‌هایی که در هر نوبت در دستگاه تصادفی نوشته می‌شود (پیش‌فرض: ۶۴).
ورود به حالت آزمایشی. در این حالت (که مستلزم -f است)، تمام آنتروپی تولیدشده دور ریخته می‌شود و rngd میزان آنتروپی تولیدشده در هر ثانیه را گزارش می‌دهد.
تعداد بیت‌هایی که هنگام افزودن آنتروپی تصادفی در نظر گرفته می‌شوند؛ ۱ <= e <= ۸ (پیش‌فرض: ۸).
پس از شروع، آنتروپی را به random-device تزریق می‌کند تا زمانی که حداقل fill-watermark بیت آنتروپی در استخر آنتروپی آن موجود باشد. به‌طور پیش‌فرض، این مقدار روی ۷۵٪ اندازه استخر آنتروپی یا در صورتی که اندازه استخر قابل تعیین نباشد، روی ۲۰۴۸ بیت تنظیم می‌شود. تنظیم بسیار بالای این مقدار باعث تسلط rngd بر محتویات استخر آنتروپی خواهد شد. مقادیر اندک نیز هنگام کمبود آنتروپی به کارایی سیستم آسیب می‌رسانند. مقدار fill-watermark را فراتر از اندازه استخر آنتروپی (معمولاً ۲۵۶ بیت) تنظیم نکنید. مقدار ۰ برای این گزینه باعث می‌شود که هیچ خط‌نشانی تعیین نشود.
برای هسته‌های جدیدتری که از استخرهای آنتروپی غیرمسدودکننده (non-blocking) پشتیبانی می‌کنند، افزودن دوره‌ای آنتروپی تازه به عنوان یک رویداد بذردهی مجدد همچنان سودمند است. گزینه --force-reseed تعداد ثانیه‌های میان هر بار افزودن آنتروپی تازه به استخر آنتروپی هسته را تعیین می‌کند (پیش‌فرض: ۵ دقیقه).
منابع آنتروپی nist، jitter و pkcs11 در فراهم‌سازی آنتروپی کند در نظر گرفته می‌شوند. به‌طور پیش‌فرض، داده‌های آن‌ها تنها پس از ۱۰۰ بار عدم موفقیت تمام منابع دیگر در فراهم ساختن آنتروپی معتبر استفاده می‌شود. با این گزینه، rngd همواره سعی می‌کند از این منابع نیز آنتروپی جمع‌آوری نماید.
تنزل دسترسی‌ها به کاربر و گروه مشخص‌شده پس از راه‌اندازی اولیه. کاربر و گروه می‌توانند به صورت نام یا شناسه عددی مشخص شده و باید با دونقطه از یکدیگر جدا شوند. کاربر و گروه تعیین‌شده باید در سیستم وجود داشته باشند. حالت پیش‌فرض، عدم تنزل دسترسی‌ها است.
بی‌صدا کردن و سرکوب تمام پیام‌ها.
-?, --help
نمایش چکیده‌ای کوتاه از تمام گزینه‌های برنامه.
چاپ نسخه برنامه.

دستور rngd از چندین منبع آنتروپی تشکیل شده است که داده‌های آن‌ها تجمیع شده و به استخر آنتروپی هسته تزریق می‌شود. توجه داشته باشید که تمام منابع آنتروپی در همه سیستم‌ها در دسترس نیستند؛ اگر یک منبع آنتروپی روی سیستمی فعال شود که استفاده از آن مناسب (یا ممکن) نباشد، راه‌اندازی اولیه آن ممکن است با شکست مواجه گردد. شکست هر یک از منابع آنتروپی در حین راه‌اندازی برای rngd بحرانی و مرگبار نیست؛ تنها یک منبع آنتروپی برای کارکرد rngd کافی است. منابع آنتروپی زیر در حال حاضر در rngd تعریف شده‌اند:

تولیدکننده اعداد تصادفی سخت‌افزاری (Hardware RNG - hwrng)
منبع Hardware RNG یک منبع آنتروپی عمومی است که آنتروپی را از یک تولیدکننده سخت‌افزاری متصل به /dev/hwrng پیش‌فرض استخراج می‌کند.
ماژول امنیتی پلتفرم (TPM - tpm)
آنتروپی استخراج‌شده از دستگاه TPM روی برد. توجه داشته باشید که این منبع منسوخ شده است و به‌زودی حذف خواهد شد، زیرا دستگاه‌های TPM جدیدتر آنتروپی را از طریق /dev/hwrng ارائه می‌دهند که توسط منبع hwrng در بالا جمع‌آوری می‌شود.
دستورالعمل‌های RDRAND/RDSEED (rdrand)
آنتروپی استخراج‌شده از دستورالعمل‌های RDRAND و RDSEED (فقط در معماری x86).
گزینه‌ها (Options)

use_aes - مشخص می‌کند آیا از rdrand برای بذردهی به یک cprng جهت تولید آنتروپی استفاده شود، یا اینکه تمام آنتروپی مستقیماً از دستورالعمل rdrand گرفته شود (پیش‌فرض: ۰).

دستورالعمل DARN (darn)
آنتروپی استخراج‌شده از دستورالعمل DARN (فقط در معماری ppc64).
گزینه‌ها (Options)

use_aes - مشخص می‌کند آیا از دستورالعمل POWER darn مستقیماً برای پر کردن استخر آنتروپی استفاده شود، یا به عنوان بذر دوره‌ای برای یک cprng مبتنی بر aes به کار رود (پیش‌فرض: ۱).

دستورالعمل RNDR (rndr)
آنتروپی استخراج‌شده از دستورالعمل RNDR (فقط در معماری aarch64).
گزینه‌ها (Options)

use_aes - مشخص می‌کند آیا از دستورالعمل ARM rndr مستقیماً برای پر کردن استخر آنتروپی استفاده شود، یا به عنوان بذر دوره‌ای برای یک cprng مبتنی بر aes به کار رود (پیش‌فرض: ۰).

بیکن آنتروپی نیست (NIST Entropy Beacon - nist)
آنتروپی جمع‌آوری‌شده از بیکن آنتروپی شبکه NIST. توجه داشته باشید که این منبع آنتروپی به‌طور پیش‌فرض غیرفعال است، زیرا هرگز نباید برای مقاصد رمزنگاری یا هر کاربرد دیگری که در آن داده‌های تصادفی باید تنها توسط یک موجودیت شناخته شوند، استفاده شود.
بیکن آنتروپی کیوریپت (Qrypt Entropy Beacon - qrypt)
آنتروپی جمع‌آوری‌شده از بیکن آنتروپی Qrypt. توجه داشته باشید که این بیکن آنتروپی را از طریق یک اتصال TLS به کلاینت‌های دوردست ارائه می‌دهد؛ از این رو، این منبع نباید برای عملیات رمزنگاری استفاده شود مگر اینکه امنیت شبکه در برابر حملات مرد میانی (man-in-the-middle) و سایر حملات مبتنی بر شبکه تضمین شده باشد.
گزینه‌ها (Options)
tokenfile - مشخص کردن فایلی که حاوی توکن دسترسی به بیکن Qrypt است.

delay - تعیین حداکثر تأخیر (به ثانیه) که منبع در شرایط موقتی که مانع دریافت آنتروپی می‌شوند، پیش از تلاش مجدد منتظر خواهد ماند. حداکثر تأخیر پیش‌فرض ۸ ساعت است که به صورت نمایی با توان‌های دو از یک ثانیه رو به بالا افزایش می‌یابد.

نوسان زمانی پردازنده (JITTER - jitter)
آنتروپی جمع‌آوری‌شده از طریق سنجش واریانس زمانی عملیات‌ها روی پردازنده محلی.
گزینه‌ها (Options)
thread_count - تعیین تعداد رشته‌هایی (threads) که منبع آنتروپی jitter ایجاد می‌کند.

buffer_size - تعیین اندازه حافظه موقت (بافر) کش که هر رشته نگهداری می‌کند.

refill_thresh - تعیین حداقل خط‌نشان (watermark) برای کش که باعث می‌شود رشته مربوطه عملیات پر کردن مجدد را آغاز کند.

retry_count - در صورتی که تمام بافرهای آنتروپی خالی باشند، پیش از انصراف این تعداد بار تلاش مجدد انجام می‌شود. توجه داشته باشید که پر شدن مجدد یک بافر در jitterentropy ممکن است چند ثانیه طول بکشد، بنابراین تلاش مجدد پس از یک تأخیر نسبت به چرخش مداوم روی بافر خالی ترجیح دارد (پیش‌فرض: ۱).

retry_delay - میان هر تلاش مجدد برای retry_count بالا، به این تعداد ثانیه مکث می‌شود. همچنین می‌تواند مقدار ویژه -۱ باشد که نمایانگر خواب تطبیقی است، که در آن تأخیر هر تلاش مجدد برابر با نیمی از زمان اجرای ثبت‌شده در آخرین دور جمع‌آوری آنتروپی خواهد بود (پیش‌فرض: -۱).

force_soft_timer - در پلتفرم‌هایی با تایمر سخت‌افزاری که تفکیک‌پذیری آن برای نمونه‌برداری از جیتر بسیار درشت است، می‌توان به جای آن از یک حلقه تایمر نرم‌افزاری استفاده کرد. تشخیص و استفاده از این سازوکار خودکار است، اما این گزینه می‌تواند برای اهداف آزمایشی سودمند باشد.

کارت هوشمند و ماژول‌های امنیتی (PKCS11 - pkcs11)
آنتروپی جمع‌آوری‌شده از طریق موتور opensc openssl، که می‌تواند آنتروپی را از کارت‌خوان‌های هوشمند مختلف استخراج کند. برای جمع‌آوری آنتروپی کارت هوشمند، بسته‌ای از توزیع خود که حاوی کتابخانه انتهایی pkcs11 است را نصب کنید. این بسته برای فدورا opensc، برای دبیان/اوبونتو opensc-pkcs11 یا بسته دیگری است که حاوی opensc-pkcs11.so باشد.
گزینه‌ها (Options)
engine_path - تعیین مسیر بارگذاری DSO موتور pkcs11.

chunk_size - برخی از موتورهای pkcs11 محدودیت‌هایی در مقدار داده درخواستی در یک نوبت دارند؛ این گزینه امکان تقسیم درخواست به تکه‌های کوچک‌تر برای پاسخگویی را فراهم می‌کند.

رادیوی نرم‌افزاری (RTLSDR - rtlsdr)
آنتروپی جمع‌آوری‌شده از طریق کتابخانه رادیوی نرم‌افزاری rtl، که می‌تواند با استفاده از دانگل‌های رادیویی نرم‌افزاری USB مختلف که به نویزهای تصادفی رادیویی گوش می‌دهند، آنتروپی جمع‌آوری کند.
گزینه‌ها (Options)
devid - هنگامی که چندین دستگاه در دسترس باشند، شناسه عددی دستگاه مورد استفاده را تعیین می‌کند.

freq_min - حداقل محدوده فرکانسی برای پویش.

freq_max - حداکثر محدوده فرکانسی برای پویش.

sample_min - حداقل نرخ نمونه‌برداری رادیو.

sample_max - حداکثر نرخ نمونه‌برداری رادیو.

پایپ نام‌گذاری‌شده (Named pipe - namedpipe)
خواندن آنتروپی از یک لوله نام‌گذاری‌شده (یا همان FIFO). انتظار می‌رود برنامه دیگری، مثلاً درایوری که داده‌ها را از یک RNG سخت‌افزاری خارجی خوانده و آماده می‌کند، آنتروپی را به این پایپ نام‌گذاری‌شده تزریق کند. در صورت بسته شدن پایپ نام‌گذاری‌شده، rngd تلاش خواهد کرد دوباره آن را باز کند.
گزینه‌ها (Options)
path - مسیر لوله نام‌گذاری‌شده (الزامی).

timeout - حداکثر زمان (به ثانیه) که rngd منتظر می‌ماند تا یک بافر آزمایشی کامل FIPS از آنتروپی خوانده شود (پیش‌فرض: ۵).

Philipp Rumpf
Jeff Garzik - jgarzik@pobox.com
Matt Sottek
Brad Hill
Neil Horman - nhorman@tuxdriver.com

March 2001 rng-tools 6.17