Wickr-Crypto-C هو تطبيق لبروتوكول الرسائل الآمنة لـ Wickr في C ، والذي يوفر منصة للاتصالات الآمنة في جميع منتجات Wickr.
يمكن العثور على ورقة بيضاء تصف تفاصيل البروتوكول ونموذج الأمان الخاص بها هنا. يمكن أيضًا العثور على نسخة تخفيض من الورق الأبيض في الويكي.
يرجى الملاحظة
يتم إصدار Crypto Lib للمراجعة العامة لأغراض التدقيق التعليمية والأكاديمية والرمز فقط (*هذا ليس ترخيصًا مفتوح المصدر ، المزيد على الترخيص هنا). نحن نؤمن اعتقادا راسخا بقيمة حركة المصادر المفتوحة ونتطلع إلى التعاون مع المجتمع في هذا المشروع وغيرها من المشاريع المستقبلية ، بما في ذلك بموجب ترخيص GNU.
يرجى الاحتفاظ بمسألة تعقب هذا الريبو يقتصر على أخطاء مستوى التعليمات البرمجية الموجودة في تنفيذ البروتوكول كما هو موضح في الورقة البيضاء. طلبات السحب دائما موضع ترحيب!
يمكن توجيه أي أسئلة بخصوص البروتوكول نفسه (أي: أفكار تصميم التشفير والاقتراحات والنقد المفاهيمي رفيع المستوى) إلى [email protected].
لجميع مشكلات الأمن الأخرى ، يرجى الاتصال ببرنامج Wickr's Bug Bounty هنا.
بدءًا من هذا التشفير ، تفتح Wickr رمز المصدر لعملائها وشركائها والمجتمع الأكبر - ولهذا السبب:
الشفافية: من المهم بالنسبة لنا أن نشارك مع عملاء Wickr Professional كيف تم تصميم Wickr Crypto بطريقة سهلة المراجعة
الأمن: في حين أن Wickr ليس أداة جديدة للرسائل الزواحرة المشفرة من نظير إلى نظير ، فإن هذا البروتوكول يمثل تشفيرًا جديدًا في منتجات Wickr. نحن واثقون من أن مجتمع Github سيكون لديه أفكار واقتراحات بناءة حول كيفية تطوير بروتوكولنا بشكل أكبر لجعله أقوى ضد الهجمات الناشئة (وبالطبع إصلاح خطأ أو اثنين)
الفريق: لطالما كان فريق Corepto Core مدافعًا داخليًا قويًا لفتح رمز المصدر ، وقد سادوا أخيرًا ☺. جانبا ، نعتقد أنه وقت مناسب في تطوير ويكر كشركة لمشاركة التشفير الأساسي مع الجمهور بالإضافة إلى عمليات التدقيق الأمنية الخارجية العادية التي تخضع لها جميع منتجات Wickr
يتيح التنفيذ المؤمن لبروتوكول WICHR سرية محتوى الرسائل في العبور وفي التخزين. يقوم بتشغيل القدرات التالية:
الهيكل الذي يمثل مجموعة من وظائف التشفير التي يمكن للمكتبة استخدامها. الهدف من تصميمه هو تعريض بدايات الأمن بطريقة منظمة وعامة. يسمح ذلك بتنفيذ البروتوكول حتى لا يكون مرتبطًا باعتماد واحد مثل OpenSSL. كما أنه مصمم ليكون سهل الاستخدام ، وتوفير واجهة عالية المستوى تفرض أفضل الممارسات.
يستند التنفيذ الافتراضي الحالي لمحرك التشفير في المقام الأول خارج واجهة EVP من OpenSSL 1.1.0
تنفيذ منخفض المستوى لتشفير وفك تشفير حزم الرسائل المشفرة
واجهة عالية المستوى لإدارة نقطة النهاية التي يمكنها إرسال واستقبال حزم الرسائل المشفرة. هذه هي الطريقة التي تتكامل بها تطبيقات عميل الواجهة الأمامية مع مكتبة التشفير.
آلة الحالة للمساعدة في تشفير تدفقات البيانات المستمرة. يتم استخدام هذا لترميز / فك تشفير البيانات ضمن دفق صوت / فيديو مباشر بين المستخدمين في مكالمة 1: 1 أو مؤتمر. إنه مصنوع من مفتاح تم التفاوض عليه قبل بروتوكول المراسلة. يحتوي كل دفق من البيانات في مكالمة معينة على كائن Stream_Cipher الخاص به لعقد حالتها.
تم تصميم المكتبة مع cmake على جميع المنصات. حاليًا يتم دعم iOS و Android و Windows و MacOS و Linux. راجع تعليمات محددة من النظام الأساسي وخيارات cmake أدناه لمزيد من المعلومات
يمكن تكوين بناء MacOS يتبع:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
يمكن تكوين إنشاء Windows باستخدام مولد MSVC على النحو التالي
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
لا يمكن إنشاء بناء Windows مع الأمر القياسي make الموثق أدناه. بدلاً من ذلك ، يعتمد على أوامر Visual Studio مباشرة على النحو التالي:
msbuild WickrCryptoC.sln /p:Configuration=Release
لتشغيل الاختبارات ، اتصل بما يلي من دليل الإنشاء
ctest
لتثبيت المكتبة على بادئة التثبيت التي تم تكوينها
msbuild INSTALL.vcxproj /p:Configuration=Release
يمكن تكوين إنشاء Linux باستخدام تدفق Cmake القياسي مع بعض الخيارات
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
حاليًا ، تم اختبار مشروع CMake على Armeabi-V7a و Armeabi و X86 Abis. لا يتم دعم اختبارات Android حاليًا مباشرة بواسطة CMake ، على الرغم من أنه يمكن تجميع هدف الاختبار وتحميله على جهاز عبر ADB يدويًا
مستوى واجهة برمجة تطبيقات Android الافتراضية هو 18 كما هو محدد في ملف toolchain--shlroid.cmake في دليل الجذر. تعديل هذا حاليا لا يوصي
لتكوين Cmake لبناء هدف Android NDK ، يمكنك القيام بما يلي:
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-Android.cmake
-DCMAKE_ANDROID_NDK=USER_NDK_LOCATION
-DCMAKE_ANDROID_ARCH_ABI=OUTPUT_ARCH_AB
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
يمكن لمخطوط الأدوات المقدمة دعم محاكاة وإنشاءات الأجهزة لنظام التشغيل iOS> 9.0 كمكتبات سمينة. x86 + x86_64 يتم إنشاء مكتبات الدهون للمحاكاة و Armv7 و Armv7s و Arm64 Fat Libraries للجهاز
لتكوين Cmake لبناء هدف iOS SDK ، يمكنك القيام بما يلي:
cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain-iOS.cmake
-DCMAKE_BUILD_TYPE=Release
-DIOS_PLATFORM=OS|SIMULATOR
-DIOS_DEPLOYMENT_TARGET=9.0
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
| خيار Cmake | وصف | هدف |
|---|---|---|
| فايبس | يخبر Cmake ببناء AWS_LC في وضع FIPS. | الجميع |
| cmake_build_type | إصدار أو تصحيح التصحيح | الجميع |
| cmake_install_prefix | موقع تثبيت الرؤوس والمكتبات المصممة عند استدعاء make install | الجميع |
| cmake_toolchain_file | يخبر Cmake لاستهداف نظام أدوات Android NDK Cross Cross | Android / iOS |
| cmake_android_arch_abi | أبي لاستهداف هذا البناء. القيم المدعومة هي Armeabi ، Armeabi-V7a ، x86 | Android |
| cmake_android_ndk | موقع دليل الجذر لتثبيت NDK | Android |
| iOS_Platform | تم تعيينه على OS لـ ARMV7 أو ARMV7S و ARM64 أو Simulator لـ X86 و X86_64 Builds | iOS |
| iOS_Deployment_Target | الحد الأدنى للهدف لبناء iOS (9.0+ يوصي) | iOS |
| build_tests | يخبر Cmake باختبارات BUID (إيقاف افتراضيًا) | الجميع |
ملاحظة: بالنسبة لإنشاءات Windows ، انظر قسم Windows
لبناء المكتبة
make
لتثبيت المكتبة على بادئة التثبيت التي تم تكوينها
make install
لتشغيل هدف الاختبار المجمل (MacOS ، Windows ، Linux). يتطلب -DBUILD_TESTS=ON عند تكوين الإنشاء.
make test
حقوق الطبع والنشر © 2012-2017 Wickr Inc. جميع الحقوق محفوظة.
يتم إصدار هذا الرمز لأغراض مراجعة التعليم والأكاديمية والرمز فقط. يُحظر صراحة الاستخدام التجاري للرمز. للحصول على تفاصيل إضافية ، يرجى الاطلاع على الترخيص.
يتم توفير الرمز "AS-IS" وبدون أي ضمانات صريحة أو ضمنية فيما يتعلق باللياقة ، أو القابلية للتسويق ، أو عدم التعبير أو غير ذلك. لا يتم توفيرها في التجارة ، ولكن على أساس تطوعي نيابة عن جزء المؤلف لصالح المرخص له ولا يتم توفيره لاستخدام المستهلك أو أي استخدام آخر خارج شروط هذا الترخيص. يجب أن يكون لدى أي شخص يصل إلى الكود الخبرة المطلوبة لتأمين نظامه وأجهزته والوصول إلى الكود واستخدامه لأغراض المراجعة فقط. يحمل المرخص له خطر الوصول إلى الرمز واستخدامه. على وجه الخصوص ، لا يتحمل المؤلف أي مسؤولية عن أي تدخل مع التأثير السلبي الذي قد يحدث نتيجة للوصول إلى المرخص له و/أو استخدام الرمز على نظام المرخص له.
يتضمن هذا التوزيع برامج تشفير. قد يكون للدولة التي تقيم فيها حاليًا قيود على استيراد وحيازة واستخدام و/أو إعادة التصدير إلى بلد آخر ، من برامج التشفير. قبل استخدام أي برنامج تشفير ، يرجى التحقق من قوانين ولوائح وسياسات بلدك المتعلقة ببرنامج الاستيراد وحيازة واستخدام وإعادة تصدير برامج التشفير ، لمعرفة ما إذا كان هذا مسموحًا. انظر http://www.wassenaar.org/ لمزيد من المعلومات.
قامت وزارة التجارة الحكومية الأمريكية ، مكتب الصناعة والأمن (BIS) ، بتصنيف هذا البرنامج على أنه رقم التحكم في سلعة التصدير (ECCN) 5D002.C.1 ، والذي يتضمن برنامج أمن المعلومات باستخدام أو تنفيذ وظائف تشفير مع خوارزميات غير متماثلة. يجعل نموذج وطريقة هذا التوزيع مؤهلاً للتصدير ضمن استثناء برنامج تكنولوجيا ENC الاستثناء للترخيص (TSU) (انظر لوائح إدارة تصدير BIS ، القسم 740.13) لكل من رمز الكائن ورمز المصدر.