OPENSSL-ENC(1ssl)

الاسم
openssl-enc - روتينات التعمية المتناظرة

موجز
openssl enc|تعمية [-تعمية] [-help] [-list] [-ciphers] [-in اسم_الملف] [-out اسم_الملف] [-pass معطى] [-e] [-d] [-a] [-base64] [-A] [-k كلمة_السر] [-kfile اسم_الملف] [-K مفتاح] [-iv IV] [-S ملح] [-salt] [-nosalt] [-z] [-md ملخص] [-iter عدد] [-pbkdf2] [-saltlen حجم] [-p] [-P] [-bufsize رقم] [-nopad] [-v] [-debug] [-none] [-skeymgmt skeymgmt] [-skeyopt خيار:قيمة] [-engine معرف] [-rand ملفات] [-writerand ملف] [-provider اسم] [-provider-path مسار] [-provparam [اسم:]مفتاح=قيمة] [-propquery propq]

openssl تعمية [...]

الوصف
تسمح أوامر التعمية المتناظرة بتعمية البيانات أو فك تعميتها باستخدام خوارزميات تعمية كتلية أو انسيابية متنوعة باستخدام مفاتيح مبنية على كلمات سر أو مقدمة صراحة. يمكن أيضًا تنفيذ ترميز أو فك ترميز Base64 إما بمفرده أو بالإضافة إلى التعمية أو فك التعمية.

الخيارات

-تعمية
    خوارزمية التعمية المراد استخدامها.

-help
    اطبع رسالة الاستخدام.

-list
    اسرد جميع خوارزميات التعمية المدعومة.

-ciphers
    اسم مستعار لـ -list لعرض جميع خوارزميات التعمية المدعومة.

-in اسم_الملف
    اسم ملف المدخلات، المدخلات القياسية مبدئيًا.

-out اسم_الملف
    اسم ملف المخرجات، المخرجات القياسية مبدئيًا.

-pass معطى
    مصدر كلمة السر. لمزيد من المعلومات حول تنسيق المعطى انظر openssl-passphrase-options(1).

-e  عمِّ البيانات المدخلة: هذا هو الخيار المبدئي.

-d  فك تعمية البيانات المدخلة.

-a  عالج البيانات بترميز Base64. هذا يعني أنه إذا كانت التعمية جارية، فسيتم ترميز البيانات بـ base64 بعد التعمية. وإذا ضُبط فك التعمية، فسيتم فك ترميز البيانات المدخلة من base64 قبل فك تعميتها.

    عند عدم توفير الخيار -A، يُدرج سطر جديد بعد كل 64 محرفًا عند الترميز، ويُتوقع وجود سطر جديد ضمن أول 1024 بايت من المدخلات عند فك الترميز.

-base64
    مثل -a

-A  إذا ضُبط الخيار -a، فإن ترميز base64 ينتج مخرجات بدون أي محرف سطر جديد، وفك ترميز base64 لا يتطلب أي أسطر جديدة. لذا قد يكون من المفيد استخدام الخيار -A عند فك ترميز مدخلات مجهولة.

-k كلمة_السر
    كلمة السر التي سيُشتق منها المفتاح. هذا من أجل التوافق مع إصدارات OpenSSL السابقة. حل محلها معامل -pass.

-kfile اسم_الملف
    اقرأ كلمة السر التي سيُشتق منها المفتاح من السطر الأول من اسم_الملف. هذا من أجل التوافق مع إصدارات OpenSSL السابقة. حل محلها معامل -pass.

-md مجموع
    استخدم الملخص المحدد لإنشاء المفتاح من عبارة المرور. خوارزمية المبدئية هي sha-256.

-iter عدد
    استخدم عددًا معينًا من التكرارات على كلمة السر في اشتقاق مفتاح التعمية. تزيد القيم العالية من الوقت المطلوب للهجوم بالقوة الغاشمة على الملف الناتج. يُمكن هذا الخيار استخدام خوارزمية PBKDF2 لاشتقاق المفتاح.

-pbkdf2
    استخدم خوارزمية PBKDF2 مع عدد تكرار مبدئي يبلغ 10000 ما لم يُحدد خلاف ذلك عبر خيار سطر الأوامر -iter.

-saltlen
    اضبط طول الملح المراد استخدامه عند استخدام خيار -pbkdf2. لأسباب تتعلق بالتوافق، القيمة المبدئية هي 8 بايتات. القيمة القصوى حاليًا هي 16 بايتًا. إذا لم يُستخدم الخيار -pbkdf2، فسيتم تجاهل هذا الخيار واستخدام طول ملح ثابت قدره 8. يجب أيضًا استخدام طول الملح المستخدم عند التعمية عند فك التعمية.

-nosalt
    لا تستخدم الملح في روتينات اشتقاق المفاتيح. ينبغي ألا يُستخدم هذا الخيار إلا لأغراض الاختبار أو التوافق مع النسخ القديمة جدًا من OpenSSL.

-salt
    استخدم الملح (يُولد عشوائيًا أو يُوفر عبر الخيار -S) عند التعمية، هذا هو الخيار المبدئي.

-S ملح
    المتح الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة من أرقام ست عشرية. إذا استُخدم هذا الخيار أثناء التعمية، فستكون هناك حاجة إلى القيمة ذاتها مرة أخرى أثناء فك التعمية. قد يُقص هذا الملح أو يُحشى بالأصفار لمطابقة طول الملح (انظر -saltlen).

-K مفتاح
    المفتاح الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة تتكون فقط من أرقام ست عشرية. إذا حُدد المفتاح فقط، فيجب بالإضافة إلى ذلك تحديد IV باستخدام الخيار -iv. عندما يتم تحديد كل من المفتاح وكلمة السر، سيُستخدم المفتاح المعطى مع الخيار -K وسيُؤخذ الـ IV المولد من كلمة السر. ليس من المنطقي تحديد كل من المفتاح وكلمة السر.

-iv IV
    الـ IV الفعلي المراد استخدامه: يجب أن يُتمثل كسلسلة تتكون فقط من أرقام ست عشرية. عندما يُحدد المفتاح فقط باستخدام الخيار -K، يجب تعريف IV صراحة. عندما تُحدد كلمة سر باستخدام أحد الخيارات الأخرى، يُولد الـ IV من كلمة السر هذه.

-p  اطبع المفتاح و الـ IV المستخدمين.

-P  اطبع المفتاح و الـ IV المستخدمين ثم اخرج فورًا: لا تقم بأي تعمية أو فك تعمية.

-bufsize رقم
    اضبط حجم المخزن المؤقت للإدخال والإخراج.

-nopad
    عطّل حشوة الكتل القياسية.

-v  طباعة مسهبة؛ اعرض بعض الإحصائيات حول الإدخال والإخراج وأحجام المخازن المؤقتة.

-debug
    نقّح الـ BIOs المستخدمة للإدخال والإخراج.

-z  اضغط أو فك ضغط البيانات المعماة باستخدام zlib بعد التعمية أو قبل فك التعمية. هذا الخيار موجود فقط إذا كان OpenSSL قد صُرف مع خيار zlib أو zlib-dynamic.

-none
    استخدم تعمية NULL (لا تعمية ولا فك تعمية للمدخلات).

-skeymgmt skeymgmt
    قد يدعم بعض المزودين كائنات المفاتيح المتناظرة غير الشفافة. لاستخدامها، نحتاج لمعرفة اسم EVP_SKEYMGMT المراد استخدامه. إذا لم يُحدد، سيُستخدم اسم خوارزمية التعمية.

    لمعرفة اسم إدارة المفاتيح المتناظرة المناسبة، يرجى الرجوع إلى مخرجات الأمر "openssl list -skey-managers".

-skeyopt خيار:قيمة
    للحصول على مفتاح متناظر غير شفاف موجود أو لتوليد مفتاح جديد، تُحدد خيارات المفتاح كـ opt:value. لا يمكن استخدام هذه الخيارات مع أي خيارات تلمح لمفتاح خام بشكل مباشر أو غير مباشر.

-rand ملفات، -writerand ملف
    انظر "خيارات الحالة العشوائية" في openssl(1) لمزيد من التفاصيل.

-provider اسم
-provider-path مسار
-provparam [الاسم:]مفتاح=قيمة
-propquery propq
    انظر "خيارات المزود" في openssl(1)، و provider(7)، و property(7).

-engine معرف
    انظر "خيارات المحرك" في openssl(1). هذا الخيار مهجور.

ملاحظات
يمكن استدعاء البرنامج إما كـ "openssl تعمية" أو "openssl enc -تعمية". الشكل الأول لا يعمل مع خوارزميات التعمية التي توفرها المحركات، لأن هذا الشكل يُعالج قبل قراءة ملف الإعداد وقبل تحميل أي محركات. استخدم أمر openssl-list(1) للحصول على قائمة بخوارزميات التعمية المدعومة.

المحركات التي توفر خوارزميات تعمية جديدة تمامًا (مثل محرك ccgost الذي يوفر خوارزمية gost89) ينبغي ضبطها في ملف الإعداد. المحركات المحددة في سطر الأوامر باستخدام خيار -engine يمكن استخدامها فقط للتطبيقات المدعومة عتاديًا لخوارزميات التعمية المدعومة من قبل لب OpenSSL أو محرك آخر محدد في ملف الإعداد.

عندما يسرد أمر enc خوارزميات التعمية المدعومة، تُسرد أيضًا خوارزميات التعمية التي توفرها المحركات المحددة في ملفات الإعداد.

سيُطلب إدخال كلمة سر لاشتقاق المفتاح و الـ IV إذا لزم الأمر.

ينبغي دائمًا استخدام خيار -salt إذا كان المفتاح يُشتق من كلمة سر، ما لم ترد التوافق مع إصدارات OpenSSL السابقة.

بدون خيار -salt، من الممكن إجراء هجمات قاموس فعالة على كلمة السر ومهاجمة البيانات المعماة بخوارزمية تعمية انسيابية. والسبب في ذلك هو أنه بدون الملح، تولد نفس كلمة السر دائمًا نفس مفتاح التعمية.

عندما يُولد الملح عشوائيًا (وهذا يعني عند التعمية باستخدام عبارة مرور دون إعطاء ملح صريح باستخدام الخيار -S)، تُحجز البايتات الأولى من البيانات المعماة لتخزين الملح لفك التعمية لاحقًا.

بعض خوارزميات التعمية لا تملك مفاتيح كبيرة وأخرى لها تبعات أمنية إذا لم تُستخدم بشكل صحيح. يُنصح المبتدئ باستخدام خوارزمية تعمية كتلية قوية، مثل AES، في وضع CBC.

تستخدم جميع خوارزميات التعمية الكتلية عادةً حشوة PKCS#7، المعروفة أيضًا باسم حشوة الكتل القياسية. يسمح هذا بإجراء فحص أولي لسلامة البيانات أو كلمة السر. ومع ذلك، وبما أن فرصة اجتياز البيانات العشوائية للاختبار أكبر من 1 من 256، فإنه ليس اختبارًا جيدًا جدًا.

إذا عُطلت الحشوة، فيجب أن تكون البيانات المدخلة من مضاعفات طول كتلة خوارزمية التعمية.

جميع خوارزميات RC2 تملك نفس طول المفتاح وطول المفتاح الفعال.

تستخدم خوارزميات Blowfish و RC5 مفتاحًا بطول 128 بت.

يرجى ملاحظة أن OpenSSL 3.0 غير تأثير الخيار -S. أي قيمة ملح صريحة تُحدد عبر هذا الخيار لم تعد تُلحق ببداية النص المعمى عند التعمية، ويجب توفيرها صراحة مرة أخرى عند فك التعمية. وبالعكس، عندما يُستخدم الخيار -S أثناء فك التعمية، يُتوقع ألا يحتوي النص المعمى على قيمة ملح في بدايته.

عند استخدام OpenSSL 3.0 أو أحدث لفك تعمية بيانات عُميت بملح صريح تحت OpenSSL 1.1.1 لا تستخدم الخيار -S، حيث سيُقرأ الملح حينها من النص المعمى. لتوليد نص معمى يمكن فك تعميته بـ OpenSSL 1.1.1 لا تستخدم الخيار -S، حيث سيُولد الملح حينها عشوائيًا ويُلحق ببداية المخرجات.

خوارزميات التعمية المدعومة
لاحظ أن بعض خوارزميات التعمية هذه يمكن تعطيلها وقت التصريف وبعضها متاح فقط إذا ضُبط محرك مناسب في ملف الإعداد. المخرجات عند استدعاء هذا الأمر مع خيار -list (أي "openssl enc -list") هي قائمة بخوارزميات التعمية المدعومة من قبل نسختك من OpenSSL، بما في ذلك تلك التي توفرها المحركات المضبوطة.

لا يدعم هذا الأمر أوضاع التعمية المستوثقة مثل CCM و GCM، ولن يدعم مثل هذه الأوضاع في المستقبل. وذلك بسبب الاضطرار للبدء بانسياب المخرجات (على سبيل المثال، إلى المخرجات القياسية عندما لا يُستخدم -out) قبل أن يمكن التحقق من وسم الاستيثاق. عندما يُستخدم هذا الأمر في أنبوب، لن يتمكن الطرف المتلقي من التراجع عند فشل الاستيثاق. أوضاع AEAD المستخدمة حاليًا بشكل شائع تعاني أيضًا من فشل ذريع في السرية و/أو السلامة عند إعادة استخدام المفتاح/iv/المنوع (nonce)، وبما أن openssl enc يلقي بعبء إدارة المفتاح/iv/المنوع بالكامل على المستخدم، فإن خطر تعريض أوضاع AEAD كبير جدًا بحيث لا يمكن السماح به. تؤثر قضايا إدارة المفتاح/iv/المنوع هذه أيضًا على الأوضاع الأخرى المعروضة حاليًا في هذا الأمر، لكن أوضاع الفشل تكون أقل حدة في هذه الحالات، ولا يمكن إزالة هذه الوظيفة في فرع إصدار مستقر. للتعمية الكبيرة للبيانات، سواء باستخدام أوضاع التعمية المستوثقة أو أوضاع أخرى، يُنصح بـ openssl-cms(1)، حيث إنه يوفر تنسيق بيانات قياسيًا ويؤدي إدارة المفتاح/iv/المنوع المطلوبة.

عند استخدام enc مع أوضاع غلاف المفاتيح (key wrapping)، لا يمكن انسياب البيانات المدخلة، مما يعني أنها يجب أن تُعالج في تمريرة واحدة. وبالتالي، يجب أن يكون حجم البيانات المدخلة أقل من حجم المخزن المؤقت (-bufsize معطى، المبدئي هو 8*1024 بايت). تتطلب خوارزميات '*-wrap' أن تكون المدخلات من مضاعفات الـ 8 بايت، لعدم وجود حشوة. تسمح خوارزميات '*-wrap-pad' بأي طول للمدخلات. في كلتا الحالتين، لا حاجة لـ IV. انظر المثال أدناه.

 base64             Base 64

 bf-cbc             Blowfish في وضع CBC
 bf                 اسم مستعار لـ bf-cbc
 blowfish           اسم مستعار لـ bf-cbc
 bf-cfb             Blowfish في وضع CFB
 bf-ecb             Blowfish في وضع ECB
 bf-ofb             Blowfish في وضع OFB

 cast-cbc           CAST في وضع CBC
 cast               اسم مستعار لـ cast-cbc
 cast5-cbc          CAST5 في وضع CBC
 cast5-cfb          CAST5 في وضع CFB
 cast5-ecb          CAST5 في وضع ECB
 cast5-ofb          CAST5 في وضع OFB

 chacha20           خوارزمية ChaCha20

 des-cbc            DES في وضع CBC
 des                اسم مستعار لـ des-cbc
 des-cfb            DES في وضع CFB
 des-ofb            DES في وضع OFB
 des-ecb            DES في وضع ECB

 des-ede-cbc        Two key triple DES EDE في وضع CBC
 des-ede            Two key triple DES EDE في وضع ECB
 des-ede-cfb        Two key triple DES EDE في وضع CFB
 des-ede-ofb        Two key triple DES EDE في وضع OFB

 des-ede3-cbc       Three key triple DES EDE في وضع CBC
 des-ede3           Three key triple DES EDE في وضع ECB
 des3               اسم مستعار لـ des-ede3-cbc
 des-ede3-cfb       Three key triple DES EDE في وضع CFB
 des-ede3-ofb       Three key triple DES EDE في وضع OFB

 desx               خوارزمية DESX.

 gost89             GOST 28147-89 في وضع CFB (يوفرها محرك ccgost)
 gost89-cnt         GOST 28147-89 في وضع CNT (يوفرها محرك ccgost)

 idea-cbc           خوارزمية IDEA في وضع CBC
 idea               نفس idea-cbc
 idea-cfb           IDEA في وضع CFB
 idea-ecb           IDEA في وضع ECB
 idea-ofb           IDEA في وضع OFB

 rc2-cbc            128 بت RC2 في وضع CBC
 rc2                اسم مستعار لـ rc2-cbc
 rc2-cfb            128 بت RC2 في وضع CFB
 rc2-ecb            128 بت RC2 في وضع ECB
 rc2-ofb            128 بت RC2 في وضع OFB
 rc2-64-cbc         64 بت RC2 في وضع CBC
 rc2-40-cbc         40 بت RC2 في وضع CBC

 rc4                128 بت RC4
 rc4-64             64 بت RC4
 rc4-40             40 بت RC4

 rc5-cbc            تعمية RC5 في وضع CBC
 rc5                اسم مستعار لـ rc5-cbc
 rc5-cfb            تعمية RC5 في وضع CFB
 rc5-ecb            تعمية RC5 في وضع ECB
 rc5-ofb            تعمية RC5 في وضع OFB

 seed-cbc           تعمية SEED في وضع CBC
 seed               اسم مستعار لـ seed-cbc
 seed-cfb           تعمية SEED في وضع CFB
 seed-ecb           تعمية SEED في وضع ECB
 seed-ofb           تعمية SEED في وضع OFB

 sm4-cbc            تعمية SM4 في وضع CBC
 sm4                اسم مستعار لـ sm4-cbc
 sm4-cfb            تعمية SM4 في وضع CFB
 sm4-ctr            تعمية SM4 في وضع CTR
 sm4-ecb            تعمية SM4 في وضع ECB
 sm4-ofb            تعمية SM4 في وضع OFB

 aes-[128|192|256]-cbc  128/192/256 بت AES في وضع CBC
 aes[128|192|256]       اسم مستعار لـ aes-[128|192|256]-cbc
 aes-[128|192|256]-cfb  128/192/256 بت AES في وضع 128 بت CFB
 aes-[128|192|256]-cfb1 128/192/256 بت AES في وضع 1 بت CFB
 aes-[128|192|256]-cfb8 128/192/256 بت AES في وضع 8 بت CFB
 aes-[128|192|256]-ctr  128/192/256 بت AES في وضع CTR
 aes-[128|192|256]-ecb  128/192/256 بت AES في وضع ECB
 aes-[128|192|256]-ofb  128/192/256 بت AES في وضع OFB

 aes-[128|192|256]-wrap     غلاف المفاتيح باستخدام 128/192/256 بت AES
 aes-[128|192|256]-wrap-pad غلاف المفاتيح مع حشوة باستخدام 128/192/256 بت AES

 aria-[128|192|256]-cbc  128/192/256 بت ARIA في وضع CBC
 aria[128|192|256]       اسم مستعار لـ aria-[128|192|256]-cbc
 aria-[128|192|256]-cfb  128/192/256 بت ARIA في وضع 128 بت CFB
 aria-[128|192|256]-cfb1 128/192/256 بت ARIA في وضع 1 بت CFB
 aria-[128|192|256]-cfb8 128/192/256 بت ARIA في وضع 8 بت CFB
 aria-[128|192|256]-ctr  128/192/256 بت ARIA في وضع CTR
 aria-[128|192|256]-ecb  128/192/256 بت ARIA في وضع ECB
 aria-[128|192|256]-ofb  128/192/256 بت ARIA في وضع OFB

 camellia-[128|192|256]-cbc  128/192/256 بت Camellia في وضع CBC
 camellia[128|192|256]       اسم مستعار لـ camellia-[128|192|256]-cbc
 camellia-[128|192|256]-cfb  128/192/256 بت Camellia في وضع 128 بت CFB
 camellia-[128|192|256]-cfb1 128/192/256 بت Camellia في وضع 1 بت CFB
 camellia-[128|192|256]-cfb8 128/192/256 بت Camellia في وضع 8 بت CFB
 camellia-[128|192|256]-ctr  128/192/256 بت Camellia في وضع CTR
 camellia-[128|192|256]-ecb  128/192/256 بت Camellia في وضع ECB
 camellia-[128|192|256]-ofb  128/192/256 بت Camellia في وضع OFB

أمثلة
فقط رمز ملفًا ثنائيًا بـ base64:

 openssl base64 -in file.bin -out file.b64

فك ترميز الملف ذاته

 openssl base64 -d -in file.b64 -out file.bin

عمِّ ملفًا باستخدام AES-128 مستخدمًا كلمة سر يُطلب إدخالها واشتقاق مفتاح PBKDF2:

 openssl enc -aes128 -pbkdf2 -in file.txt -out file.aes128

فك تعمية ملف باستخدام كلمة سر مقدمة:

 openssl enc -aes128 -pbkdf2 -d -in file.aes128 -out file.txt \
    -pass pass:<كلمة_السر>

عمِّ ملفًا ثم رمزه بـ base64 (ليمكن إرساله عبر البريد مثلاً) باستخدام AES-256 في وضع CTR واشتقاق مفتاح PBKDF2:

 openssl enc -aes-256-ctr -pbkdf2 -a -in file.txt -out file.aes256

فك ترميز base64 لملف ثم فك تعميته باستخدام كلمة سر مقدمة في ملف:

 openssl enc -aes-256-ctr -pbkdf2 -d -a -in file.aes256 -out file.txt \
    -pass file:<ملف_كلمة_السر>

غلاف مفاتيح AES:

 openssl enc -e -a -id-aes128-wrap-pad -K 000102030405060708090A0B0C0D0E0F -in file.bin
أو
 openssl aes128-wrap-pad -e -a -K 000102030405060708090A0B0C0D0E0F -in file.bin

العلل
الخيار -A عند استخدامه مع ملفات كبيرة لا يعمل بشكل صحيح. من ناحية أخرى، عند فك ترميز base64 بدون الخيار -A، إذا لم تتضمن أول 1024 بايت من المدخلات محرف سطر جديد، فسيتم تجاهل أول سطرين من المدخلات.

أمر openssl enc يدعم فقط عددًا ثابتًا من الخوارزميات مع معاملات معينة. لذا إذا كنت تريد، على سبيل المثال، استخدام RC2 بمفتاح 76 بت أو RC4 بمفتاح 84 بت فلا يمكنك استخدام هذا البرنامج.

انظر أيضًا
openssl-list(1)، و EVP_SKEY(3)

التاريخ
غُيّر الملخص المبدئي من MD5 إلى SHA256 في OpenSSL 1.1.0.

أُضيف الخيار -list في OpenSSL 1.1.1e.

هُجر الخياران -ciphers و -engine في OpenSSL 3.0.

أُضيف الخيار -saltlen في OpenSSL 3.2.

أُضيف الخياران -skeymgmt و -skeyopt في OpenSSL 3.5.

حقوق النسخ
حقوق النشر 2000-2025 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.