
لقطة من كود مصدر OpenSSL 1.0.1g لتحليل الثغرة CVE-2015-3195. تتضمن تنفيذ بروتوكول SSL/TLS، مكتبة تشفير عامة الغرض (عبارة عن التشفيرات، الخلاصات، المفتاح العام)، وأدوات سطر الأوامر لإدارة المفاتيح/الشهادات.
OpenSSL 1.0.1g 7 Apr 2014
حقوق النشر (c) 1998-2011 مشروع OpenSSL حقوق النشر (c) 1995-1998 إريك أ. يونغ، تيم ج. هدسون جميع الحقوق محفوظة.
مشروع OpenSSL هو جهد تعاوني لتطوير مجموعة أدوات قوية، تجارية، متكاملة، ومفتوحة المصدر تنفذ بروتوكولات طبقة المقابس الآمنة (SSL v2/v3) وأمان طبقة النقل (TLS v1) بالإضافة إلى مكتبة تشفير عامة كاملة القوة. يُدار المشروع بواسطة مجتمع عالمي من المتطوعين الذين يستخدمون الإنترنت للتواصل والتخطيط وتطوير مجموعة أدوات OpenSSL والوثائق المرتبطة بها.
يعتمد OpenSSL على مكتبة SSLeay الممتازة التي طورها إريك أ. يونغ وتيم ج. هدسون. يتم ترخيص مجموعة أدوات OpenSSL بموجب ترخيص مزدوج (ترخيص OpenSSL بالإضافة إلى ترخيص SSLeay)، مما يعني بشكل أساسي أنه يمكنك الحصول عليها واستخدامها لأغراض تجارية وغير تجارية طالما استوفيت شروط كلا الترخيصين.
تتضمن مجموعة أدوات OpenSSL:
libssl.a: تنفيذ SSLv2 و SSLv3 و TLSv1 والكود المطلوب لدعم كل من SSLv2 و SSLv3 و TLSv1 في خادم وعميل واحد.
libcrypto.a: التشفير العام وأمور X.509 v1/v3 اللازمة لـ SSL/TLS ولكنها ليست جزءًا منطقيًا منه. تتضمن إجراءات لما يلي:
التشفيرات
libdes - حزمة تشفير DES libdes من EAY والتي كانت متداولة على الإنترنت لعدة سنوات، ثم أعاد ترخيصها كجزء من SSLeay. تتضمن 15 'وضع/تنويع' من DES (إصدارات المفاتيح 1 و 2 و 3 من ecb و cbc و cfb و ofb؛ pcbc وشكل أكثر عمومية من cfb و ofb) بما في ذلك desx في وضع cbc، و crypt(3) سريع، وإجراءات لقراءة كلمات المرور من لوحة المفاتيح.
تشفير RC4،
تشفير RC2 - 4 أوضاع مختلفة، ecb و cbc و cfb و ofb.
تشفير Blowfish - 4 أوضاع مختلفة، ecb و cbc و cfb و ofb.
تشفير IDEA - 4 أوضاع مختلفة، ecb و cbc و cfb و ofb.
المستخلصات
خوارزميات مستخلص الرسائل MD5 و MD2، تطبيقات سريعة، خوارزميات مستخلص الرسائل SHA (SHA-0) و SHA-1، مستخلص الرسائل MDC2. تجزئة قائمة على DES شائعة في البطاقات الذكية.
المفتاح العام
تشفير/فك تشفير/توليد RSA. لا يوجد حد لعدد البتات.
تشفير/فك تشفير/توليد DSA. لا يوجد حد لعدد البتات.
تبادل المفاتيح/توليد المفاتيح Diffie-Hellman. لا يوجد حد لعدد البتات.
شهادات X.509v3
ترميز/فك ترميز X509 من/إلى ASN1 ثنائي وترميز ثنائي ASCII قائم على PEM يدعم التشفير بمفتاح خاص. برنامج لتوليد طلبات الشهادات RSA و DSA وتوليد شهادات RSA و DSA.
الأنظمة
إجراءات المغلف الرقمي العادية وترميز base64. وصول عالي المستوى إلى التشفيرات والمستخلصات بالاسم. يمكن تحميل تشفيرات جديدة في وقت التشغيل. نظام الإدخال/الإخراج BIO وهو تجريد بسيط غير محظور للإدخال/الإخراج. الطرق الحالية المدعومة هي واصفات الملفات، المقابس، قبول المقبس، اتصال المقبس، مخزن الذاكرة المؤقت، التخزين المؤقت، خادم/عميل SSL، مؤشر الملف، التشفير، المستخلص، اختبار عدم الحظر، والقيمة الفارغة.
هياكل البيانات
نظام تجزئة ينمو ديناميكيًا
مكدس بسيط.
محمل تكوين يستخدم تنسيقًا مشابهًا لملفات MS .ini.
openssl: أداة سطر أوامر يمكن استخدامها لـ: إنشاء معاملات المفاتيح RSA و DH و DSA إنشاء شهادات X.509 و CSRs و CRLs حساب مستخلصات الرسائل التشفير وفك التشفير باستخدام التشفيرات اختبارات عميل وخادم SSL/TLS معالجة البريد الإلكتروني الموقع أو المشفر بـ S/MIME
تمتلك شركات مختلفة براءات اختراع مختلفة لخوارزميات مختلفة في مواقع مختلفة حول العالم. أنت مسؤول عن ضمان أن استخدامك لأي خوارزميات قانوني عن طريق التحقق من وجود أي براءات اختراع في بلدك. يحتوي الملف على بعض براءات الاختراع التي نعرف عنها أو يشاع وجودها. هذه ليست قائمة نهائية.
تمتلك RSA Security براءات اختراع برمجية على خوارزمية RC5. إذا كنت تنوي استخدام هذا التشفير، يجب عليك الاتصال بـ RSA Security لشروط الترخيص. صفحتهم على الويب هي http://www.rsasecurity.com/.
RC4 هي علامة تجارية لـ RSA Security، لذا يجب استخدام هذا الملصق ربما فقط بإذن من RSA Security.
خوارزمية IDEA محمية ببراءة اختراع من قبل Ascom في النمسا، فرنسا، ألمانيا، إيطاليا، اليابان، هولندا، إسبانيا، السويد، سويسرا، المملكة المتحدة والولايات المتحدة. يجب الاتصال بهم إذا كان سيتم استخدام تلك الخوارزمية؛ صفحتهم على الويب هي http://www.ascom.ch/.
تمتلك NTT و Mitsubishi براءات اختراع وبراءات اختراع قيد الانتظار على خوارزمية Camellia، لكنها تسمح بالاستخدام دون رسوم دون الحاجة إلى اتفاقية ترخيص صريحة: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
لتثبيت هذه الحزمة تحت مشتق Unix، اقرأ ملف INSTALL. لمنصة Win32، اقرأ ملف INSTALL.W32. لأنظمة OpenVMS، اقرأ INSTALL.VMS.
اقرأ الوثائق في مجلد doc/. إنها تقريبية إلى حد ما، لكنها تسرد الوظائف؛ ربما ستحتاج إلى النظر إلى الكود لمعرفة كيفية استخدامها. انظر إلى البرامج النموذجية.
بالنسبة لبعض المنصات، هناك بعض المشاكل المعروفة التي قد تؤثر على المستخدم أو مؤلف التطبيق. نحاول جمعها في doc/PROBLEMS، مع أفكار حالية حول كيفية حلها في مستقبل OpenSSL.
انظر إلى موقع OpenSSL على الويب www.openssl.org للحصول على تفاصيل حول كيفية الحصول على الدعم الفني التجاري.
إذا واجهت أي مشاكل مع OpenSSL، فيرجى اتخاذ الخطوات التالية أولاً:
- تنزيل اللقطة الحالية من ftp://ftp.openssl.org/snapshot/ لمعرفة ما إذا كانت المشكلة قد تمت معالجتها بالفعل
- إزالة إصدارات ASM من المكتبات
- إزالة أعلام تحسين المترجم
إذا كنت ترغب في الإبلاغ عن خطأ، فيرجى تضمين المعلومات التالية في أي تقرير خطأ:
- على أنظمة Unix:
تقرير الاختبار الذاتي الناتج عن 'make report'
- على الأنظمة الأخرى:
إصدار OpenSSL: مخرجات 'openssl version -a'
اسم نظام التشغيل، الإصدار، منصة الأجهزة
تفاصيل المترجم (الاسم، الإصدار)
- تفاصيل التطبيق (الاسم، الإصدار)
- وصف المشكلة (الخطوات التي ستكرر المشكلة، إذا كانت معروفة)
- تتبع المكدس (إذا قام التطبيق بإلقاء core)
أبلغ عن الخطأ إلى مشروع OpenSSL عبر متتبع الطلبات (http://www.openssl.org/support/rt.html) عن طريق البريد إلى:
لاحظ أنه لا ينبغي استخدام متتبع الطلبات للمساعدة العامة أو استفسارات الدعم. مجرد أن شيئًا لا يعمل بالطريقة التي تتوقعها لا يعني أنه بالضرورة خطأ في OpenSSL.
لاحظ أن البريد إلى [email protected] يتم تسجيله في قاعدة بيانات متتبع الطلبات القابلة للقراءة العامة ويتم إعادة توجيهه إلى قائمة بريدية عامة. يمكن إرسال البريد السري إلى [email protected] (مفتاح PGP متاح من خوادم المفاتيح).
يتم تنسيق التطوير على القائمة البريدية openssl-dev (انظر http://www.openssl.org للحصول على معلومات حول الاشتراك). إذا كنت ترغب في تقديم تصحيح، أرسله إلى [email protected] مع السلسلة "[PATCH]" في الموضوع. يرجى التأكد من تضمين شرح نصي لما يفعله التصحيح.
إذا كنت غير متأكد مما إذا كانت الميزة ستكون مفيدة لمجتمع OpenSSL العام، فيرجى مناقشتها على القائمة البريدية openssl-dev أولاً. قد يكون شخص ما يعمل بالفعل على نفس الشيء أو قد يكون هناك سبب وجيه لعدم تنفيذ تلك الميزة.
يجب أن تكون التصحيحات حديثة قدر الإمكان، ويفضل أن تكون بالنسبة إلى Git الحالي أو آخر لقطة. يجب أن تتبع أسلوب الترميز الخاص بـ OpenSSL وتُجمع دون تحذيرات. يمكن استخدام بعض أهداف مطوري الفريق الأساسي لأغراض الاختبار، (debug-steve64, debug-geoff إلخ). يتم تجميع OpenSSL على العديد من المنصات المتنوعة: حاول التأكد من أنك تستخدم فقط الميزات المحمولة.
ملاحظة: لأسباب قانونية، يمكن قبول المساهمات من الولايات المتحدة فقط إذا تم إرسال إشعار TSU ونسخة من التصحيح إلى [email protected] (سابقًا BXA) مع نسخة إلى منسق طلب تشفير ENC؛ يرجى أخذ بعض الوقت لإلقاء نظرة على http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic] و http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (القسم 740.13(e) من EAR) للحصول على التفاصيل. إذا كان "كود مصدر التشفير الخاص بك كبيرًا جدًا بحيث لا يمكن استخدامه كمرفق بريد إلكتروني"، فإنهم سعداء باستلامه بالفاكس بدلاً من ذلك؛ آمل أن يكون لديك خطة اتصال بعيدة المدى رخيصة.
التنسيق المفضل لدينا للتغييرات هو مخرجات "diff -u". يمكنك إنشاؤه على النحو التالي: