Wickr-Crypto-C adalah implementasi dari protokol pesan Secure Wickr di C, yang menyediakan platform untuk komunikasi yang aman di semua produk Wickr.
Buku putih yang menggambarkan detail protokol dan model keamanannya dapat ditemukan di sini. Versi penurunan harga kertas putih juga dapat ditemukan di wiki.
Harap dicatat
Lib crypto ini dirilis untuk ulasan publik untuk tujuan audit pendidikan, akademik, dan kode saja (*Ini bukan lisensi sumber terbuka, lebih lanjut tentang lisensi di sini). Kami sangat percaya pada nilai gerakan open source dan berharap untuk berkolaborasi dengan masyarakat tentang ini dan proyek masa depan lainnya, termasuk di bawah lisensi GNU.
Harap simpan masalah pelacak repo ini terbatas pada bug tingkat kode yang ditemukan dalam implementasi protokol seperti yang dijelaskan dalam buku putih. Permintaan tarik selalu diterima!
Setiap pertanyaan tentang protokol itu sendiri (yaitu: ide desain crypto, saran, kritik konseptual tingkat tinggi) dapat diarahkan di [email protected].
Untuk semua masalah keamanan lainnya, silakan hubungi Program Bugh Bounty Wickr di sini.
Dimulai dengan crypto lib ini, Wickr membuka kode sumbernya untuk pelanggan, mitra, dan komunitas yang lebih besar - inilah sebabnya:
Transparansi: Penting bagi kami untuk berbagi dengan pelanggan profesional Wickr bagaimana Wickr Crypto dirancang dengan cara yang mudah ditinjau
Keamanan: Walaupun Wickr bukan alat baru untuk pesan sesaat terenkripsi peer-to-peer, protokol ini mewakili kripto generasi baru dalam produk Wickr. Kami yakin bahwa komunitas GitHub akan memiliki ide dan saran konstruktif tentang bagaimana kami dapat lebih mengembangkan protokol kami untuk membuatnya lebih kuat terhadap serangan yang muncul (dan, tentu saja, memperbaiki satu atau dua bug)
Tim: Tim crypto inti telah lama menjadi advokat internal yang kuat untuk membuka kode sumber, dan mereka akhirnya menang. Di samping bercanda, kami percaya ini adalah waktu yang tepat dalam pengembangan Wickr sebagai perusahaan untuk berbagi crypto inti dengan publik selain audit keamanan eksternal reguler yang dialami semua produk Wickr
Implementasi Protokol Wickr yang setia memungkinkan kerahasiaan konten pesan dalam perjalanan dan dalam penyimpanan. Ini mendukung kemampuan berikut:
Sebuah struct yang mewakili satu set fungsi kriptografi yang dapat digunakan perpustakaan. Tujuan dari desainnya adalah mengekspos primitif keamanan dengan cara yang terorganisir dan generik. Hal ini memungkinkan implementasi protokol untuk tidak terikat pada ketergantungan tunggal seperti OpenSSL. Ini juga dirancang agar mudah digunakan, dan untuk menyediakan antarmuka tingkat tinggi yang menegakkan praktik terbaik.
Implementasi default mesin crypto saat ini didasarkan terutama di luar antarmuka EVP dari OpenSSL 1.1.0
Implementasi Level Rendah dari Pengkodean dan Penguraian Paket Pesan Terenkripsi
Antarmuka tingkat tinggi untuk mengelola titik akhir yang dapat mengirim dan menerima paket pesan terenkripsi. Ini adalah cara aplikasi klien ujung depan berintegrasi dengan perpustakaan crypto.
Mesin negara bagian untuk membantu enkripsi aliran data kontinu. Ini digunakan untuk data pengkodean / decoding dalam aliran suara / video langsung antara pengguna pada panggilan 1: 1 atau konferensi. Ini diunggulkan dengan kunci yang dinegosiasikan sebelumnya oleh protokol pesan. Setiap aliran data dalam panggilan tertentu memiliki objek stream_cipher sendiri untuk memegang statistiknya.
Perpustakaan dibangun dengan CMake di semua platform. Saat ini iOS, Android, Windows, MacOS, dan Linux didukung. Lihat Platform Instruksi Khusus dan Opsi CMake di bawah ini untuk informasi lebih lanjut
MacOS Build dapat dikonfigurasi berikut:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Windows build dapat dikonfigurasi menggunakan generator msvc sebagai berikut
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
Windows build tidak dapat dihasilkan dengan perintah make Standard yang didokumentasikan di bawah ini. Sebaliknya itu bergantung pada perintah Visual Studio secara langsung sebagai berikut:
msbuild WickrCryptoC.sln /p:Configuration=Release
Untuk menjalankan tes, hubungi yang berikut dari Direktori Bangun
ctest
Untuk menginstal pustaka ke awalan instal yang dikonfigurasi
msbuild INSTALL.vcxproj /p:Configuration=Release
Linux Build dapat dikonfigurasi menggunakan aliran CMake standar dengan beberapa opsi
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Saat ini, proyek CMAKE telah diuji pada ABIS Armeabi-V7A, Armeabi dan X86. Menjalankan tes untuk Android saat ini tidak secara langsung didukung oleh CMake, meskipun target uji dapat dikompilasi dan diunggah ke perangkat melalui ADB secara manual
Level API Android default adalah 18 sebagaimana didefinisikan dalam file toolchain-android.cmake di direktori root. Memodifikasi ini saat ini tidak direkomendasikan
Untuk mengonfigurasi CMake untuk membangun target Android NDK Anda dapat melakukan hal berikut:
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 yang disediakan dapat mendukung simulator dan perangkat build untuk iOS> 9.0 sebagai pustaka lemak. X86 + x86_64 Perpustakaan lemak dihasilkan untuk simulator dan pustaka ARMV7, ARMV7S, dan ARM64 dibuat untuk perangkat
Untuk mengonfigurasi cmake untuk membangun target iOS SDK Anda dapat melakukan hal berikut:
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 ../
| Opsi CMake | Keterangan | Target |
|---|---|---|
| Fips | Memberitahu CMake untuk membangun AWS_LC dalam mode FIPS. | Semua |
| Cmake_build_type | Rilis atau debug build | Semua |
| Cmake_install_prefix | Lokasi untuk menginstal header dan pustaka yang dibangun saat make install dipanggil | Semua |
| Cmake_toolchain_file | Memberitahu CMake untuk menargetkan toolchain Kompilasi Cross Android NDK | Android / iOS |
| Cmake_android_arch_abi | ABI untuk menargetkan bangunan ini. Nilai yang didukung adalah Armeabi, Armeabi-V7a, x86 | Android |
| Cmake_android_ndk | Lokasi direktori root dari instalasi NDK | Android |
| Ios_platform | Setel ke OS untuk ARMV7, ARMV7S, ARM64 Builds atau Simulator untuk X86, X86_64 Builds | iOS |
| Ios_deployment_target | Target minimum untuk build iOS (9.0+ direkomendasikan) | iOS |
| Build_tests | Memberitahu CMake to BUID Test (OFF Secara Default) | Semua |
Catatan: Untuk build windows lihat bagian Windows
Untuk membangun perpustakaan
make
Untuk menginstal pustaka ke awalan instal yang dikonfigurasi
make install
Untuk menjalankan target uji yang dibundel (macOS, windows, linux). Membutuhkan -DBUILD_TESTS=ON saat mengkonfigurasi build.
make test
Hak Cipta © 2012-2017 Wickr Inc. Semua hak dilindungi undang-undang.
Kode ini sedang dirilis hanya untuk tujuan pendidikan, akademik, dan tinjauan kode. Penggunaan kode komersial secara tegas dilarang. Untuk detail tambahan, silakan lihat lisensi.
Kode ini tersedia "apa adanya" dan tanpa jaminan tersirat atau tersirat mengenai kebugaran, dapat diperjualbelikan, non-pelanggaran atau sebaliknya. Ini tidak disediakan dalam perdagangan tetapi secara sukarela atas nama bagian penulis untuk kepentingan pemegang lisensi dan tidak tersedia untuk penggunaan konsumen atau penggunaan lain di luar ketentuan lisensi ini. Siapa pun yang mengakses kode harus memiliki keahlian yang diperlukan untuk mengamankan sistem dan perangkat mereka dan untuk mengakses dan menggunakan kode untuk tujuan ulasan saja. Lisensi menanggung risiko mengakses dan menggunakan kode. Secara khusus, penulis tidak bertanggung jawab atas gangguan apa pun dengan efek buruk yang dapat terjadi sebagai akibat dari pengacara pemegang lisensi dan/atau menggunakan kode pada sistem pemegang lisensi.
Distribusi ini termasuk perangkat lunak kriptografi. Negara tempat Anda tinggal saat ini mungkin memiliki batasan pada impor, kepemilikan, penggunaan, dan/atau diekspor kembali ke negara lain, dari perangkat lunak enkripsi. Sebelum menggunakan perangkat lunak enkripsi apa pun, silakan periksa undang-undang, peraturan, dan kebijakan negara Anda mengenai impor, kepemilikan, penggunaan, dan mengekspor kembali perangkat lunak enkripsi, untuk melihat apakah ini diizinkan. Lihat http://www.wassenaar.org/ untuk informasi lebih lanjut.
Departemen Perdagangan Pemerintah AS, Biro Industri dan Keamanan (BIS), telah mengklasifikasikan perangkat lunak ini sebagai Nomor Kontrol Komoditas Ekspor (ECCN) 5D002.C.1, yang mencakup perangkat lunak keamanan informasi menggunakan atau melakukan fungsi kriptografi dengan algoritma asimetris. Bentuk dan cara distribusi ini membuatnya memenuhi syarat untuk ekspor di bawah pengecualian Lisensi ENC Technology Software Unrestrict (TSU) (lihat Peraturan Administrasi Ekspor BIS, Bagian 740.13) untuk kode objek dan kode sumber.