Wickr-Crypto-C是C中Wickr安全消息协议的实现,该协议为所有Wickr产品提供了安全通信的平台。
可以在此处找到一份描述协议详细信息及其安全模型详细信息的白皮书。白皮书的降价版本也可以在Wiki中找到。
请注意
该加密lib仅用于公众审查,以供教育,学术和代码审核目的(*这不是开源许可,在此处提供了更多许可)。我们坚信开源运动的价值,并期待与社区在该项目和其他未来项目(包括GNU许可下)合作。
请将此存储库的问题跟踪器限制在白皮书中所述的协议实现中的代码级错误。总是欢迎拉动请求!
有关协议本身的任何问题(即加密设计思想,建议,高级概念批评)都可以通过[email protected]。
有关所有其他安全问题,请在此处联系Wickr的Bug Bounty程序。
从这个加密货币自由开始,威克尔将向其客户,合作伙伴和更大的社区开放源代码,这就是为什么:
透明度:对我们而言,与Wickr专业客户分享Wickr Crypto的设计方式很重要
安全:虽然Wickr不是对等加密的短暂消息传递的新工具,但该协议代表Wickr产品中的新一代加密。我们有信心,GitHub社区将对我们如何进一步发展协议有想法和建设性建议,以使其更加强大,以防止新兴攻击(当然可以修复一两个错误)
团队:核心加密团队长期以来一直是打开源代码的强有力的内部拥护者,他们终于占了上风。除了开玩笑之外,我们认为,除了所有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 ../
可以使用MSVC Generator配置Windows构建,如下
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
Windows构建不能使用下面记录的标准make命令生成。相反,它依赖于视觉工作室的命令,如下所示:
msbuild WickrCryptoC.sln /p:Configuration=Release
运行测试从构建目录调用以下内容
ctest
要将库安装到配置的安装前缀
msbuild INSTALL.vcxproj /p:Configuration=Release
Linux构建可以使用标准CMake Flow配置,并具有一些选项
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
目前,CMAKE项目已在ARMEABI-V7A,ARMEABI和X86 ABIS上进行了测试。 CMAKE目前尚未直接支持Android的测试,尽管可以通过ADB手动将测试目标编译并上传到设备
默认的Android API级别为18个在root Directory中的工具链Android.cmake文件中定义的18个。当前不建议修改此事
要配置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,ARMV7和ARM64脂肪库生成脂肪库,为该设备创建
为了配置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选项 | 描述 | 目标 |
|---|---|---|
| FIPS | 告诉CMAKE在FIPS模式下构建AWS_LC。 | 全部 |
| cmake_build_type | 发布或调试构建 | 全部 |
| cmake_install_prefix | make install时安装标头和构建库的位置称为 | 全部 |
| cmake_toolchain_file | 告诉CMAKE针对Android NDK交叉编译工具链 | Android / iOS |
| cmake_android_arch_abi | 为此构建的ABI。支持的值是Armeabi,Armeabi-V7a,x86 | 安卓 |
| cmake_android_ndk | NDK安装的根目录的位置 | 安卓 |
| ios_platform | 设置为ARMV7,ARMV7,ARM64构建或X86_64的OS 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
版权所有©2012-2017 Wickr Inc.保留所有权利。
该代码仅用于教育,学术和代码审查目的。该代码的商业用途明确禁止。有关其他详细信息,请参阅许可证。
该代码可用“原样”,并且没有任何明示或暗示的保证,可用于健身,适销性,不侵权或其他方式。它不是在贸易中提供的,而是在自愿的基础上代表作者出于持有人的利益而自愿提供,也没有用于消费者使用或本许可条款之外的任何其他用途。任何访问代码的人都应该具有必要的专业知识来保护其系统和设备,并仅访问和使用代码仅用于审核目的。被许可人承担访问和使用代码的风险。特别是,由于被许可人访问和/或在被许可人系统上使用代码而可能发生的任何干扰或不良影响,作者对可能发生的任何干扰或不利影响不承担任何责任。
此分布包括加密软件。您目前居住的国家可能对加密软件的进口,拥有,使用和/或重新出口对另一个国家/地区有限制。在使用任何加密软件之前,请查看有关进口,拥有,使用和重新出口加密软件的法律,法规和政策,以查看是否允许使用。有关更多信息,请参见http://www.wassenaar.org/。
美国政府工商部工业与安全局(BIS)将该软件归类为出口商品控制编号(ECCN)5D002.C.1,其中包括使用或执行具有非对称算法的加密功能的信息安全软件。此分配的形式和方式使其有资格在许可证中的导出ENG技术软件无限制(TSU)异常(请参阅BIS Export Administration Arigulation,第740.13节)有关对象代码和源代码。