Wickr-Crypto-C เป็นการดำเนินการของ Wickr Secure Messaging Protocol ใน C ซึ่งเป็นแพลตฟอร์มสำหรับการสื่อสารที่ปลอดภัยในผลิตภัณฑ์ Wickr ทั้งหมด
กระดาษสีขาวที่อธิบายรายละเอียดของโปรโตคอลและรูปแบบความปลอดภัยสามารถดูได้ที่นี่ ยังสามารถพบกระดาษสีขาวรุ่น Markdown ในวิกิ
โปรดทราบ
Crypto LIB นี้ได้รับการเผยแพร่เพื่อตรวจสอบสาธารณะเพื่อวัตถุประสงค์ด้านการศึกษาการศึกษาและการตรวจสอบรหัสเท่านั้น (*นี่ไม่ใช่ใบอนุญาตโอเพ่นซอร์สและเพิ่มเติมเกี่ยวกับใบอนุญาตที่นี่) เราเชื่อมั่นในคุณค่าของขบวนการโอเพ่นซอร์สและรอคอยที่จะร่วมมือกับชุมชนในโครงการนี้และโครงการในอนาคตอื่น ๆ รวมถึงภายใต้ใบอนุญาต GNU
โปรดเก็บปัญหาการติดตามปัญหาของ repo นี้ จำกัด อยู่ที่ข้อบกพร่องระดับรหัสที่พบในการใช้งานโปรโตคอลตามที่อธิบายไว้ในกระดาษสีขาว ยินดีต้อนรับคำขอดึงเสมอ!
คำถามใด ๆ เกี่ยวกับโปรโตคอลเอง (เช่น: แนวคิดการออกแบบ crypto, คำแนะนำ, การวิจารณ์แนวความคิดระดับสูง) สามารถกำกับได้ที่ [email protected]
สำหรับปัญหาด้านความปลอดภัยอื่น ๆ โปรดติดต่อโปรแกรม Bug Bounty ของ Wickr ที่นี่
เริ่มต้นด้วย crypto lib นี้ Wickr กำลังเปิดซอร์สโค้ดให้กับลูกค้าคู่ค้าและชุมชนขนาดใหญ่ - นี่คือเหตุผล:
ความโปร่งใส: เป็นสิ่งสำคัญสำหรับเราที่จะแบ่งปันกับลูกค้า Wickr มืออาชีพว่า Wickr crypto ได้รับการออกแบบในแบบที่ง่ายต่อการตรวจสอบ
ความปลอดภัย: ในขณะที่ Wickr ไม่ใช่เครื่องมือใหม่สำหรับการส่งข้อความชั่วคราวที่เข้ารหัสแบบเพียร์ทูเพียร์ เรามั่นใจว่าชุมชน GitHub จะมีความคิดและคำแนะนำที่สร้างสรรค์เกี่ยวกับวิธีที่เราสามารถพัฒนาโปรโตคอลของเราต่อไปเพื่อให้แข็งแกร่งขึ้นต่อการโจมตีที่เกิดขึ้นใหม่ (และแน่นอนแก้ไขข้อผิดพลาดหนึ่งหรือสอง)
ทีม: ทีม Core Crypto เป็นผู้สนับสนุนภายในที่แข็งแกร่งสำหรับการเปิดซอร์สโค้ดมานานแล้วและในที่สุดพวกเขาก็ได้รับชัยชนะ☺ การล้อเล่นกันเราเชื่อว่ามันเป็นเวลาที่ดีในการพัฒนาของ Wickr ในฐานะ บริษัท ที่จะแบ่งปัน crypto หลักกับสาธารณชนนอกเหนือจากการตรวจสอบความปลอดภัยภายนอกปกติที่ผลิตภัณฑ์ Wickr ทั้งหมดได้รับ
การใช้งานโปรโตคอล Wickr อย่างซื่อสัตย์ช่วยให้การรักษาความลับของเนื้อหาข้อความในการขนส่งและในการจัดเก็บ มันเพิ่มพลังความสามารถต่อไปนี้:
โครงสร้างที่แสดงถึงชุดของฟังก์ชั่นการเข้ารหัสที่ห้องสมุดสามารถใช้ประโยชน์ได้ เป้าหมายของการออกแบบคือการเปิดเผยความปลอดภัยดั้งเดิมในวิธีที่จัดระเบียบและทั่วไป สิ่งนี้ช่วยให้การใช้งานโปรโตคอลไม่ผูกพันกับการพึ่งพาเพียงครั้งเดียวเช่น OpenSSL นอกจากนี้ยังได้รับการออกแบบให้ใช้งานง่ายและเพื่อให้อินเทอร์เฟซระดับสูงที่บังคับใช้แนวทางปฏิบัติที่ดีที่สุด
การใช้งานเริ่มต้นเริ่มต้นของเอ็นจิ้น crypto นั้นส่วนใหญ่อยู่นอกอินเตอร์เฟส EVP จาก OpenSSL 1.1.0
การใช้งานระดับต่ำของการเข้ารหัสและถอดรหัสแพ็กเก็ตข้อความที่เข้ารหัส
อินเทอร์เฟซระดับสูงสำหรับการจัดการจุดสิ้นสุดที่สามารถส่งและรับแพ็คเก็ตข้อความที่เข้ารหัส นี่คือวิธีที่แอปไคลเอนต์ส่วนหน้ารวมกับไลบรารี crypto
เครื่องรัฐเพื่อช่วยในการเข้ารหัสของกระแสข้อมูลอย่างต่อเนื่อง สิ่งนี้ใช้สำหรับการเข้ารหัส / ถอดรหัสข้อมูลภายในสตรีมเสียง / วิดีโอสดระหว่างผู้ใช้ใน 1: 1 หรือการประชุมทางโทรศัพท์ มันเป็นเมล็ดที่มีกุญแจที่เจรจาก่อนหน้านี้โดยโปรโตคอลการส่งข้อความ กระแสข้อมูลแต่ละรายการภายในการโทรเฉพาะมีวัตถุ Stream_Cipher ของตัวเองเพื่อให้สถานะของมันอยู่
ห้องสมุดถูกสร้างขึ้นด้วย CMake ในทุกแพลตฟอร์ม ปัจจุบันรองรับ iOS, Android, Windows, MacOS และ Linux ดูคำแนะนำเฉพาะแพลตฟอร์มและตัวเลือก CMake ด้านล่างสำหรับข้อมูลเพิ่มเติม
MacOS Build สามารถกำหนดค่าได้ดังนี้:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Windows Build สามารถกำหนดค่าได้โดยใช้เครื่องกำเนิด 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 Build สามารถกำหนดค่าได้โดยใช้โฟลว์ 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 API เริ่มต้นคือ 18 ตามที่กำหนดไว้ในไฟล์ Toolchain-Android.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 ../
Toolchain ที่ให้ไว้สามารถรองรับการจำลองและอุปกรณ์สร้างสำหรับ iOS> 9.0 เป็นไลบรารีไขมัน Libraries X86 + X86_64 FAT ถูกสร้างขึ้นสำหรับเครื่องจำลองและ 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 Compile Toolchain | Android / iOS |
| cmake_android_arch_abi | ABI เพื่อกำหนดเป้าหมายสำหรับงานสร้างนี้ ค่าที่รองรับคือ Armeabi, Armeabi-V7A, x86 | Android |
| cmake_android_ndk | ตำแหน่งของไดเรกทอรีรากของการติดตั้ง NDK | Android |
| ios_platform | ตั้งค่าเป็น OS สำหรับ ARMV7, ARMV7S, ARM64 Builds หรือ Simulator สำหรับ X86, X86_64 Builds | iOS |
| ios_deployment_target | เป้าหมายขั้นต่ำสำหรับการสร้าง iOS (recomended 9.0+) | iOS |
| build_tests | บอกให้ CMake ทำการทดสอบ (ปิดโดยค่าเริ่มต้น) | ทั้งหมด |
หมายเหตุ: สำหรับการสร้าง Windows ดูส่วน Windows
เพื่อสร้างห้องสมุด
make
ในการติดตั้งไลบรารีไปยังคำนำหน้าการติดตั้งที่กำหนดค่า
make install
ในการเรียกใช้เป้าหมายการทดสอบแบบรวม (MacOS, Windows, Linux) ต้องการ -DBUILD_TESTS=ON เมื่อกำหนดค่าการสร้าง
make test
ลิขสิทธิ์© 2012-2017 Wickr Inc. สงวนลิขสิทธิ์
รหัสนี้กำลังได้รับการเผยแพร่เพื่อวัตถุประสงค์ทางการศึกษาการศึกษาและการตรวจสอบรหัสเท่านั้น การใช้รหัสเชิงพาณิชย์เป็นสิ่งต้องห้ามอย่างชัดแจ้ง สำหรับรายละเอียดเพิ่มเติมโปรดดูใบอนุญาต
รหัสนี้มีให้ "ตามที่เป็นจริง" และไม่มีการรับประกันโดยชัดแจ้งหรือโดยนัยเกี่ยวกับการออกกำลังกาย, การค้า, การไม่ละเมิดหรืออื่น ๆ มันไม่ได้ถูกจัดเตรียมไว้ในการค้า แต่บนพื้นฐานความสมัครใจในนามของส่วนของผู้เขียนเพื่อประโยชน์ของผู้รับใบอนุญาตและไม่ได้มีให้สำหรับการใช้งานของผู้บริโภคหรือการใช้งานอื่น ๆ นอกข้อกำหนดของใบอนุญาตนี้ ใครก็ตามที่เข้าถึงรหัสควรมีความเชี่ยวชาญที่จำเป็นในการรักษาความปลอดภัยระบบและอุปกรณ์ของพวกเขาและเพื่อเข้าถึงและใช้รหัสเพื่อวัตถุประสงค์ในการตรวจสอบเท่านั้น ผู้รับใบอนุญาตมีความเสี่ยงในการเข้าถึงและใช้รหัส โดยเฉพาะอย่างยิ่งผู้เขียนไม่รับผิดชอบต่อการรบกวนใด ๆ ที่มีผลข้างเคียงหรือผลข้างเคียงที่อาจเกิดขึ้นอันเป็นผลมาจากการเข้าถึงผู้รับใบอนุญาตและ/หรือใช้รหัสในระบบของผู้รับใบอนุญาต
การกระจายนี้รวมถึงซอฟต์แวร์เข้ารหัสลับ ประเทศที่คุณอาศัยอยู่ในปัจจุบันอาจมีข้อ จำกัด เกี่ยวกับการนำเข้าการครอบครองการใช้และ/หรือส่งออกไปยังประเทศอื่นของซอฟต์แวร์การเข้ารหัสอีกครั้ง ก่อนที่จะใช้ซอฟต์แวร์การเข้ารหัสใด ๆ โปรดตรวจสอบกฎหมายกฎระเบียบและนโยบายของประเทศของคุณเกี่ยวกับการนำเข้าการครอบครองการใช้และการส่งออกซอฟต์แวร์การเข้ารหัสอีกครั้งเพื่อดูว่าได้รับอนุญาตหรือไม่ ดู http://www.wassenaar.org/ สำหรับข้อมูลเพิ่มเติม
กระทรวงพาณิชย์ของรัฐบาลสหรัฐสำนักอุตสาหกรรมและความปลอดภัย (BIS) ได้จัดประเภทซอฟต์แวร์นี้เป็นหมายเลขควบคุมสินค้าส่งออก (ECCN) 5D002.C.1 ซึ่งรวมถึงซอฟต์แวร์ความปลอดภัยของข้อมูลโดยใช้หรือดำเนินการฟังก์ชั่นการเข้ารหัสด้วยอัลกอริทึมแบบอสมมาตร แบบฟอร์มและลักษณะของการแจกแจงนี้ทำให้มีสิทธิ์ได้รับการส่งออกภายใต้ข้อยกเว้นเทคโนโลยีการยกเว้นสิทธิ์การใช้งานซอฟต์แวร์ ENC เทคโนโลยีที่ไม่ จำกัด (TSU) (ดูกฎระเบียบการบริหารการส่งออก BIS มาตรา 740.13) สำหรับรหัสวัตถุและซอร์สโค้ด