WICKR-CRYPTO-Cは、すべてのWICKR製品で安全な通信のためのプラットフォームを提供するCでのWICKRセキュアメッセージプロトコルの実装です。
プロトコルとそのセキュリティモデルの詳細を説明するホワイトペーパーは、ここにあります。ホワイトペーパーのマークダウンバージョンもWikiにあります。
ご注意ください
このCrypto Libは、教育、学術、およびコード監査のみのために公開レビューのためにリリースされています(*これはオープンソースライセンスではなく、ここでライセンスに関するものです)。私たちは、オープンソースの動きの価値を強く信じており、GNUライセンスを含むこのおよびその他の将来のプロジェクトについてコミュニティと協力することを楽しみにしています。
ホワイトペーパーで説明されているように、プロトコルの実装で見つかったコードレベルのバグに制限されたこのレポの問題トラッカーを保管してください。プルリクエストはいつでも大歓迎です!
プロトコル自体(すなわち、暗号設計のアイデア、提案、高レベルの概念的批評)に関する質問は、[email protected]に送信できます。
他のすべてのセキュリティ問題については、こちらのWickrのバグバウンティプログラムにお問い合わせください。
このCrypto Libから始めて、Wickrはそのソースコードを顧客、パートナー、およびより大きなコミュニティに開きます。
透明性: Wickr Cryptoがレビューが簡単な方法でどのように設計されているかをWickrプロフェッショナル顧客と共有することが重要です
セキュリティ: Wickrはピアツーピア暗号化されたはかないメッセージングの新しいツールではありませんが、このプロトコルはWickr製品の新しい世代の暗号を表しています。 GitHubコミュニティは、プロトコルをさらに進化させて新たな攻撃に対して強くする方法について、アイデアと建設的な提案を持っていると確信しています(そして、もちろん、1つまたは2つのバグを修正します)
チーム:コアCryptoチームは、ソースコードを開くための強力な内部擁護者であり、最終的に☺を勝ちました。冗談を言って、私たちは、すべてのWickr製品が受ける定期的な外部セキュリティ監査に加えて、コア暗号を一般に共有する会社としてのWickrの開発において良い時期だと信じています
WICKRプロトコルの忠実な実装により、輸送および保管におけるメッセージコンテンツの機密性が可能になります。次の機能を促進します。
ライブラリが利用できる暗号化関数のセットを表す構造体。その設計の目標は、組織化された一般的な方法でセキュリティプリミティブを公開することです。これにより、プロトコルの実装は、OpenSSLなどの単一の依存関係に拘束されません。また、使いやすく、ベストプラクティスを強制する高レベルのインターフェイスを提供するように設計されています。
Cryptoエンジンの現在のデフォルト実装は、主にOpenSSL 1.1.0からEVPインターフェイスに基づいています
暗号化されたメッセージパケットのエンコードとデコードの低レベルの実装
暗号化されたメッセージパケットを送信および受信できるエンドポイントを管理するための高レベルインターフェイス。これは、フロントエンドのクライアントアプリがCryptoライブラリと統合する方法です。
データの連続ストリームの暗号化を支援する状態マシン。これは、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コマンドで生成することはできません。代わりに、次のように直接ビジュアルスタジオコマンドに依存しています。
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 APIレベルは、ルートディレクトリの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、ARMV7S、および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 | Android NDKクロスコンパイルツールチェーンをターゲットにするようにCmakeに伝えます | Android / iOS |
| cmake_android_arch_abi | このビルドをターゲットにするABI。サポートされた値は、Armeabi、Armeabi-V7a、x86です | アンドロイド |
| cmake_android_ndk | NDKインストールのルートディレクトリの場所 | アンドロイド |
| ios_platform | ARMV7、ARMV7S、ARM64ビルドまたはシミュレーターのOSに設定x86、x86_64ビルド | iOS |
| ios_deployment_target | iOSビルドの最小ターゲット(9.0+の推奨) | iOS |
| build_tests | CmakeにBuidテストを伝える(デフォルトでオフ) | 全て |
注: Windowsのビルドについては、Windowsセクションを参照してください
ライブラリを構築します
make
ライブラリを設定されたインストールプレフィックスにインストールします
make install
バンドルされたテストターゲット(MacOS、Windows、Linux)を実行します。 -DBUILD_TESTS=ON buildを構成するとき。
make test
Copyright©2012-2017 Wickr Inc. All Rights Reserved。
このコードは、教育、学術、およびコードレビューのためにのみリリースされています。コードの商業的使用は明示的に禁止されています。詳細については、ライセンスをご覧ください。
このコードは、「AS-IS」を利用可能になり、フィットネス、商品性、非侵害などに関する明示的または黙示的な保証なしで行われます。それは貿易ではなく、ライセンシーの利益のために著者の部分を代表して自発的に提供されており、このライセンスの条件以外での消費者使用やその他の使用には利用できません。コードにアクセスする人は、システムとデバイスを保護し、レビュー目的でのみコードにアクセスして使用するために必要な専門知識を持っている必要があります。ライセンシーは、コードにアクセスして使用するリスクがあります。特に、著者は、ライセンシーがライセンシーのシステムでコードにアクセスおよび/または使用した結果として発生する可能性のある干渉または悪影響について責任を負いません。
この分布には、暗号化ソフトウェアが含まれます。現在居住している国は、暗号化ソフトウェアの輸入、所有、使用、および/または再輸出を制限している場合があります。暗号化ソフトウェアを使用する前に、暗号化ソフトウェアの輸入、所有、使用、および再輸出に関する国の法律、規制、およびポリシーを確認して、これが許可されているかどうかを確認してください。詳細については、http://www.wassenaar.org/を参照してください。
米国政府商務省、産業セキュリティ局(BIS)は、このソフトウェアを、非対称アルゴリズムを使用して暗号化関数を使用または実行する情報セキュリティソフトウェアを含む輸出商品管理番号(ECCN)5D002.C.1に分類しました。この配布の形式と方法により、オブジェクトコードとソースコードの両方について、ライセンス例外ENCテクノロジーソフトウェア(TSU)例外(BISエクスポート管理規則、セクション740.13を参照)に基づくエクスポートの対象となります。