Wickr-Crypto-C 는 C에서 Wickr Secure 메시징 프로토콜을 구현 한 것으로 모든 WICKR 제품에서 안전한 통신을위한 플랫폼을 제공합니다.
프로토콜과 보안 모델의 세부 사항을 설명하는 백서는 여기에서 찾을 수 있습니다. WIKI에서도 백서의 마크 다운 버전도 찾을 수 있습니다.
참고하십시오
이 암호화 LIB는 교육, 학업 및 코드 감사 목적에 대해서만 공개 검토를 위해 공개됩니다 (*오픈 소스 라이센스가 아니며 여기에서 라이센스가 더 큽니다). 우리는 오픈 소스 운동의 가치를 강력하게 믿으며 GNU 라이센스에 따라이 미래 프로젝트 및 기타 미래 프로젝트에 대해 커뮤니티와 협력하기를 기대하고 있습니다.
백서에 설명 된대로 프로토콜 구현에서 발견 된 코드 레벨 버그 로이 repo의 문제 추적기를 제한하십시오. 풀 요청은 항상 환영합니다!
프로토콜 자체 (즉, 암호화 디자인 아이디어, 제안, 높은 수준의 개념 비평)에 관한 질문은 [email protected]으로 지시 될 수 있습니다.
다른 모든 보안 문제는 여기에서 Wickr의 Bug Bounty 프로그램에 문의하십시오.
이 암호화 Lib부터 Wickr은 고객, 파트너 및 대규모 커뮤니티에 소스 코드를 열고 있습니다.
투명성 : Wickr 전문 고객과 공유하는 것이 중요합니다. Wickr Crypto는 검토하기 쉬운 방식으로 설계되었습니다.
보안 : WICKR은 피어 투 피어 암호화 된 임시 메시징을위한 새로운 도구는 아니지만이 프로토콜은 WICKR 제품의 새로운 세대 암호를 나타냅니다. 우리는 Github 커뮤니티가 신흥 공격에 대해 더 강력하게 만들기 위해 프로토콜을 더 발전시킬 수있는 방법에 대한 아이디어와 건설적인 제안을 할 것이라고 확신합니다 (물론 버그를 수정).
팀 : Core Crypto 팀은 오랫동안 소스 코드를 개설하기위한 강력한 내부 옹호자였으며 마침내 ☺ ☺를 우선했습니다. 농담을 제외하고, 우리는 Wickr의 개발에서 모든 Wickr 제품이 겪는 정기적 인 외부 보안 감사 외에도 핵심 암호화를 대중과 공유하는 것이 좋은시기라고 생각합니다.
WICKR 프로토콜의 충실한 구현은 전송 및 스토리지에서 메시지 컨텐츠의 기밀성을 가능하게합니다. 다음 기능을 강화합니다.
라이브러리가 활용할 수있는 일련의 암호화 기능 세트를 나타내는 구조. 설계의 목표는 보안 프리미티브를 체계적이고 일반적인 방식으로 노출시키는 것입니다. 이를 통해 프로토콜 구현은 OpenSSL과 같은 단일 종속성에 결합되지 않을 수 있습니다. 또한 사용하기 쉽고 모범 사례를 강화하는 높은 수준의 인터페이스를 제공하도록 설계되었습니다.
암호화 엔진의 현재 기본 구현은 주로 OpenSSL 1.1.0의 EVP 인터페이스를 기반으로합니다.
암호화 된 메시지 패킷의 인코딩 및 디코딩의 낮은 레벨 구현
암호화 된 메시지 패킷을 보내고받을 수있는 엔드 포인트를 관리하기위한 높은 레벨 인터페이스. 이것이 프론트 엔드 클라이언트 앱이 암호화 라이브러리와 통합하는 방식입니다.
연속 데이터 스트림의 암호화를 돕는 상태 기계. 이것은 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" ..
아래에 문서화 된 표준 make 명령으로 Windows 빌드를 생성 할 수 없습니다. 대신 그것은 다음과 같이 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 프로젝트는 ARMAIB-V7A, ARMEABI 및 X86 ABI에서 테스트되었습니다. Android에 대한 실행 테스트는 현재 CMAKE에서 직접 지원되지 않지만 테스트 대상을 수동으로 ADB를 통해 장치에 컴파일하고 업로드 할 수 있습니다.
기본 Android API 레벨은 Root 디렉토리의 Toolchain-Android.cmake 파일에 정의 된대로 18입니다. 이것을 수정하는 것은 현재 추천되지 않습니다
Android NDK 대상을 구축하기위한 CMAKE를 구성하려면 다음을 수행 할 수 있습니다.
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, ARMV7 및 ARM64 지방 라이브러리에 대해 생성됩니다.
iOS SDK 대상을 구축하기위한 CMAKE를 구성하려면 다음을 수행 할 수 있습니다.
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 옵션 | 설명 | 목표 |
|---|---|---|
| FIPS | CMAKE에 FIPS 모드에서 AWS_LC를 빌드하도록 지시합니다. | 모두 |
| cmake_build_type | 릴리스 또는 디버그 빌드 | 모두 |
| cmake_install_prefix | make install 때 헤더를 설치하고 라이브러리를 설치하는 위치가 호출됩니다. | 모두 |
| cmake_toolchain_file | CMAKE에 Android NDK Cross Compile Toolchain을 대상으로합니다. | 안드로이드 / iOS |
| cmake_android_arch_abi | 이 빌드를 목표로하는 ABI. 지원되는 값은 Armeabi, Armeabi-V7a, x86입니다 | 기계적 인조 인간 |
| cmake_android_ndk | NDK 설치의 루트 디렉토리의 위치 | 기계적 인조 인간 |
| ios_platform | ARMV7, ARMV7, ARM64 빌드 또는 X86, X86_64 빌드 용 OS로 설정 | 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
Copyright © 2012-2017 Wickr Inc. 모든 권리 보유.
이 코드는 교육, 학업 및 코드 검토 목적으로 만 출시됩니다. 코드의 상업적 사용은 명시 적으로 금지됩니다. 자세한 내용은 라이센스를 참조하십시오.
이 코드는 "AS-IS"를 사용할 수 있으며 체력, 상업성, 비 침해 또는 기타에 대한 명시 적 또는 묵시적 보증없이 제공됩니다. 라이센스 사용자의 혜택을 위해 저자의 일부를 대신하여 자발적으로 거래되는 것이 아니라 자발적으로 제공 되며이 라이센스의 조건 이외의 소비자 사용 또는 다른 용도로 사용할 수 없습니다. 코드에 액세스하는 사람은 누구나 시스템과 장치를 보호하고 검토 목적으로 만 코드에 액세스하고 사용하는 데 필요한 전문 지식이 있어야합니다. 라이센스 사용자는 코드에 액세스하고 사용할 위험이 있습니다. 특히, 저자는 라이센스 사용자가 라이센스 사용자의 시스템에 액세스 및/또는 코드를 사용하여 발생할 수있는 간섭 또는 부작용에 대해 책임을지지 않습니다.
이 배포에는 암호화 소프트웨어가 포함됩니다. 현재 거주하는 국가는 암호화 소프트웨어의 수입, 소유, 사용 및/또는 다른 국가로의 수출에 제한이있을 수 있습니다. 암호화 소프트웨어를 사용하기 전에 암호화 소프트웨어의 수입, 소유, 사용 및 재수출에 관한 국가의 법률, 규정 및 정책을 확인하여 허용되는지 확인하십시오. 자세한 내용은 http://www.wassenaar.org/을 참조하십시오.
미국 정부 상무부 (BIS)는이 소프트웨어를 ECCN (Export Commodity Control Number) 5D002.C.1로 분류했으며 여기에는 비대칭 알고리즘을 사용하여 암호화 기능을 사용하거나 수행하는 정보 보안 소프트웨어를 포함합니다. 이 배포의 양식과 방식은 라이센스 예외 기술 소프트웨어 (TSU) 예외 (객체 코드 및 소스 코드 모두에 대해 BIS 내보내기 관리 규정, 섹션 740.13 참조)에 따라 내보내기가 가능합니다.