| OPENSSL-KDF(1ssl) | OpenSSL | OPENSSL-KDF(1ssl) |
نام (NAME)
openssl-kdf - محاسبه توابع اشتقاق کلید
خلاصه دستور (SYNOPSIS)
openssl kdf [-help] [-cipher] [-digest] [-mac] [-kdfopt nm:v] [-keylen num] [-out filename] [-binary] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] kdf_name
توضیحات (DESCRIPTION)
توابع اشتقاق کلید یک کلید اشتقاقیافته را از یک کلید سری یا گذرواژه تولید میکنند.
گزینهها (OPTIONS)
- -help
- نمایش پیام راهنمای نحوه استفاده.
- -keylen num
- اندازه خروجی کلید اشتقاقیافته. این فیلد الزامی است.
- -out filename
- نام فایل خروجی، یا خروجی استاندارد به صورت پیشفرض.
- -binary
- تولید خروجی کلید اشتقاقیافته به صورت باینری. در صورت مشخص نشدن، به صورت پیشفرض از قالب متنی هگزادسیمال استفاده میشود.
- -cipher name
- مشخص کردن رمز (سایفر) مورد استفاده توسط KDF. همه الگوریتمهای KDF به رمز نیاز ندارند و استفاده از این گزینه در چنین مواردی خطاست.
- -digest name
- مشخص کردن دایجست (خلاصه پیام) مورد استفاده توسط KDF. همه الگوریتمهای KDF به دایجست نیاز ندارند و استفاده از این گزینه در چنین مواردی خطاست. برای مشاهده فهرست دایجستهای پشتیبانیشده، از "openssl list -digest-commands" استفاده کنید.
- -mac name
- مشخص کردن کد اصالتسنجی پیام (MAC) مورد استفاده توسط KDF. همه الگوریتمهای KDF به MAC نیاز ندارند و استفاده از این گزینه در چنین مواردی خطاست.
- -kdfopt nm:v
- ارسال گزینهها به الگوریتم KDF. فهرست کاملی از پارامترها را میتوان در بخش "PARAMETERS" در EVP_KDF(3) یافت. نامهای متداول پارامترهای مورد استفاده توسط EVP_KDF_CTX_set_params() عبارتند از:
- key:string
- کلید سری را به صورت یک رشته الفبایی-عددی مشخص میکند (تنها در صورتی استفاده شود که کلید فقط شامل نویسههای قابل چاپ باشد). طول رشته باید با هرگونه محدودیتهای الگوریتم KDF مطابقت داشته باشد. برای بیشتر الگوریتمهای KDF باید یک کلید مشخص شود.
- hexkey:string
- جایگزینی برای گزینه key: که در آن کلید سری به فرم هگزادسیمال (دو رقم هگز به ازای هر بایت) مشخص میشود.
- pass:string
- گذرواژه را به صورت یک رشته الفبایی-عددی مشخص میکند (تنها در صورتی استفاده شود که گذرواژه فقط شامل نویسههای قابل چاپ باشد). گذرواژه باید برای الگوریتمهای PBKDF2 و scrypt مشخص شود.
- hexpass:string
- جایگزینی برای گزینه pass: که در آن گذرواژه به فرم هگزادسیمال (دو رقم هگز به ازای هر بایت) مشخص میشود.
- salt:string
- یک نمک (salt) رمزنگاری غیرمحرمانه و یکتا را به صورت یک رشته الفبایی-عددی مشخص میکند (تنها در صورتی استفاده شود که فقط شامل نویسههای قابل چاپ باشد). طول آن باید با هرگونه محدودیتهای الگوریتم KDF مطابقت داشته باشد. پارامتر نمک (salt) برای چندین الگوریتم KDF مانند EVP_KDF-PBKDF2(7) الزامی است.
- hexsalt:string
- جایگزینی برای گزینه salt: که در آن نمک به فرم هگزادسیمال (دو رقم هگز به ازای هر بایت) مشخص میشود.
- info:string
- برخی پیادهسازیهای KDF، مانند EVP_KDF-HKDF(7)، یک پارامتر 'info' برای پیوند دادن ماده کلید اشتقاقیافته به اطلاعات خاص برنامه و زمینه دریافت میکنند. آرگومان info، fixed info، other info یا shared info را به صورت یک رشته الفبایی-عددی مشخص میکند (تنها در صورتی استفاده شود که فقط شامل نویسههای قابل چاپ باشد). طول آن باید با هرگونه محدودیتهای الگوریتم KDF مطابقت داشته باشد.
- hexinfo:string
- جایگزینی برای گزینه info: که در آن info به فرم هگزادسیمال (دو رقم هگز به ازای هر بایت) مشخص میشود.
- digest:string
- این گزینه با گزینه -digest یکسان است.
- cipher:string
- این گزینه با گزینه -cipher یکسان است.
- mac:string
- این گزینه با گزینه -mac یکسان است.
- -provider name
- -provider-path path
- -provparam [name:]key=value
- -propquery propq
- بخش "Provider Options" را در openssl(1)، provider(7) و property(7) ببینید.
- kdf_name
- نام یک الگوریتم KDF پشتیبانیشده مورد استفاده را مشخص میکند. نام الگوریتمهای پشتیبانیشده شامل TLS1-PRF، HKDF، SSKDF، PBKDF2، SSHKDF، X942KDF-ASN1، X942KDF-CONCAT، X963KDF و SCRYPT است.
مثالها (EXAMPLES)
استفاده از TLS1-PRF برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری و seed:
openssl kdf -keylen 16 -kdfopt digest:SHA2-256 -kdfopt key:secret \
-kdfopt seed:seed TLS1-PRF
استفاده از HKDF برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری، نمک (salt) و info:
openssl kdf -keylen 10 -kdfopt digest:SHA2-256 -kdfopt key:secret \
-kdfopt salt:salt -kdfopt info:label HKDF
استفاده از SSKDF همراه با KMAC برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری، نمک (salt) و info:
openssl kdf -keylen 64 -kdfopt mac:KMAC-128 -kdfopt maclen:20 \
-kdfopt hexkey:b74a149a161545 -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271ccd68a2 SSKDF
استفاده از SSKDF همراه با HMAC برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری، نمک (salt) و info:
openssl kdf -keylen 16 -kdfopt mac:HMAC -kdfopt digest:SHA2-256 \
-kdfopt hexkey:b74a149a -kdfopt hexinfo:348a37a2 \
-kdfopt hexsalt:3638271c SSKDF
استفاده از SSKDF همراه با Hash برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری، نمک (salt) و info:
openssl kdf -keylen 14 -kdfopt digest:SHA2-256 \
-kdfopt hexkey:6dbdc23f045488 \
-kdfopt hexinfo:a1b2c3d4 SSKDF
استفاده از SSHKDF برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک کلید سری، هش و session_id:
openssl kdf -keylen 16 -kdfopt digest:SHA2-256 \
-kdfopt hexkey:0102030405 \
-kdfopt hexxcghash:06090A \
-kdfopt hexsession_id:01020304 \
-kdfopt type:A SSHKDF
استفاده از PBKDF2 برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک گذرواژه و نمک (salt):
openssl kdf -keylen 32 -kdfopt digest:SHA256 -kdfopt pass:password \
-kdfopt salt:salt -kdfopt iter:2 PBKDF2
استفاده از scrypt برای ایجاد یک کلید اشتقاقیافته با کدگذاری هگزادسیمال از یک گذرواژه و نمک (salt):
openssl kdf -keylen 64 -kdfopt pass:password -kdfopt salt:NaCl \
-kdfopt n:1024 -kdfopt r:8 -kdfopt p:16 \
-kdfopt maxmem_bytes:10485760 SCRYPT
نکات (NOTES)
سازوکارهای KDF در دسترس، به گزینههای استفادهشده در زمان ساخت OpenSSL بستگی خواهند داشت.
همچنین ببینید (SEE ALSO)
openssl(1), openssl-pkeyutl(1), EVP_KDF(3), EVP_KDF-SCRYPT(7), EVP_KDF-TLS1_PRF(7), EVP_KDF-PBKDF2(7), EVP_KDF-HKDF(7), EVP_KDF-SS(7), EVP_KDF-SSHKDF(7), EVP_KDF-X942-ASN1(7), EVP_KDF-X942-CONCAT(7), EVP_KDF-X963(7)
تاریخچه (HISTORY)
در OpenSSL 3.0 اضافه شد.
حق نشر (COPYRIGHT)
کپیرایت ۲۰۱۹-۲۰۲۳ نویسندگان پروژه OpenSSL. کلیه حقوق محفوظ است.
تحت مجوز آپاچی نسخه ۲.۰ («مجوز») منتشر شده است. شما مجاز به استفاده از این فایل نیستید مگر با رعایت شرایط این مجوز. میتوانید نسخهای از این مجوز را در فایل LICENSE در توزیع کد منبع یا در https://www.openssl.org/source/license.html دریافت کنید.
| 2026-08-25 | 3.6.4 |