Wickr-Crypto-C ist eine Implementierung des Wickr Secure Messaging Protocol in C, das eine Plattform für sichere Kommunikation in allen Wickr-Produkten bietet.
Ein Weißbuch, das Details des Protokolls und des Sicherheitsmodells beschreibt, finden Sie hier. Eine Markdown -Version des Whitepapiers finden Sie auch im Wiki.
Bitte beachten Sie
Diese Krypto -Lib wird nur zur öffentlichen Überprüfung für Bildungs-, akademische und Code -Audit -Zwecke veröffentlicht (*Dies ist keine Open -Source -Lizenz, mehr zur Lizenz hier). Wir glauben fest an den Wert der Open -Source -Bewegung und freuen uns darauf, mit der Community in diesen und anderen zukünftigen Projekten zusammenzuarbeiten, einschließlich der GNU -Lizenz.
Bitte behalten Sie den Ausgabe -Tracker dieses Repo auf Code -Ebene -Fehler beschränkt, die in der Implementierung des Protokolls wie im White Paper beschrieben enthalten sind. Pull -Anfragen sind immer willkommen!
Alle Fragen zum Protokoll selbst (dh Crypto Design-Ideen, Vorschläge, hoher konzeptioneller Kritik) können unter [email protected] gerichtet werden.
Für alle anderen Sicherheitsprobleme wenden Sie sich hier an das Bug Bounty -Programm von Wickr.
Beginnend mit dieser Krypto -LIB öffnet Wickr seinen Quellcode für ihre Kunden, Partner und die größere Community - hier ist der Grund:
Transparenz: Es ist wichtig, dass wir uns mit den professionellen Wickr -Kunden teilen, wie die Wickr Crypto so konzipiert ist, dass sie leicht zu überprüfen ist
Sicherheit: Während Wickr kein neues Werkzeug für Peer-to-Peer-verschlüsselte kurzlebige Messaging ist, repräsentiert dieses Protokoll ein Krypto der neuen Generation in Wickr-Produkten. Wir sind zuversichtlich, dass die Github -Community Ideen und konstruktive Vorschläge haben wird, wie wir unser Protokoll weiterentwickeln können, um es gegen aufkommende Angriffe stärker zu machen (und natürlich ein oder zwei Fehler zu beheben).
Team: Das Core Crypto -Team ist seit langem ein starker interner Anwalt für die Öffnung des Quellcodees und sie haben sich endlich durchgesetzt. Abgesehen von Scherzen ist es der Meinung
Eine treue Implementierung des Wickr -Protokolls ermöglicht die Vertraulichkeit des Nachrichteninhalts während des Transports und im Speicher. Es versorgt die folgenden Funktionen:
Eine Struktur, die eine Reihe von kryptografischen Funktionen darstellt, die die Bibliothek verwenden kann. Das Ziel seines Designs ist es, Sicherheitsprimitive auf organisierte und allgemeine Weise zu enthüllen. Dies ermöglicht es, dass die Protokollimplementierung nicht an eine einzige Abhängigkeit wie OpenSSL gebunden ist. Es ist auch so konzipiert, dass es einfach zu bedienen ist und eine Schnittstelle auf hoher Ebene bereitstellt, die Best Practices erzwingt.
Die aktuelle Standardimplementierung von Crypto Engine basiert in erster Linie von der EVP -Schnittstelle von OpenSSL 1.1.0
Implementierung der Kodierung und Dekodierung verschlüsselter Nachrichtenpakete mit niedriger Ebene
High Level -Schnittstelle zum Verwalten eines Endpunkts, mit dem verschlüsselte Nachrichtenpakete gesendet und empfangen werden können. Auf diese Weise integrieren sich die Front -End -Client -Apps in die Krypto -Bibliothek.
Eine Zustandsmaschine, die bei der Verschlüsselung kontinuierlicher Datenströme hilft. Dies wird zum Codieren / Dekodieren von Daten innerhalb eines Live -Sprach- / Video -Streams zwischen den Benutzern auf einem Anruf von 1: 1 oder Konferenz verwendet. Es ist mit einem Schlüssel ausgesät, der zuvor vom Messaging -Protokoll ausgehandelt wurde. Jeder Datenstrom in einem bestimmten Aufruf hat ein eigenes Stream_Cipher -Objekt, um seinen Status zu halten.
Die Bibliothek ist auf allen Plattformen mit CMake gebaut. Derzeit werden iOS, Android, Windows, MacOS und Linux unterstützt. Weitere Informationen finden Sie im folgenden plattformspezifischen Anweisungen und CMake -Optionen
Der MacOS -Build kann konfiguriert werden:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Der Windows -Build kann mit dem MSVC -Generator wie folgt konfiguriert werden
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
Der Windows Build kann nicht mit dem unten dokumentierten make Standard erstellt werden. Stattdessen stützt es sich direkt wie folgt auf die Befehle von Visual Studio:
msbuild WickrCryptoC.sln /p:Configuration=Release
Um Tests auszuführen, rufen Sie Folgendes aus dem Build -Verzeichnis an
ctest
So installieren Sie die Bibliothek an dem konfigurierten Installationspräfix
msbuild INSTALL.vcxproj /p:Configuration=Release
Der Linux -Build kann mit dem Standard -CMake -Fluss mit wenigen Optionen konfiguriert werden
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Derzeit wurde das CMAKE-Projekt auf Armeabi-V7A, Armeabi und X86 ABIS getestet. Das Ausführen von Tests für Android wird derzeit nicht direkt von CMake unterstützt, obwohl das Testziel über ADB manuell kompiliert und auf ein Gerät hochgeladen werden kann
Die Standard-Android-API-Ebene ist 18 wie in der Toolchain-android.cmake-Datei im Stammverzeichnis definiert. Das Ändern dieser wird derzeit nicht empfohlen
So konfigurieren Sie CMake zum Erstellen des Android NDK -Ziels, Sie können Folgendes ausführen:
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 ../
Eine bereitgestellte Toolchain kann Simulator- und Geräte -Builds für iOS> 9.0 als fette Bibliotheken unterstützen. X86 + x86_64 Fettbibliotheken werden für den Simulator erzeugt und ARMV7, ARMV7S und ARM64 FAT Libraries werden für das Gerät erstellt
So konfigurieren Sie CMake zum Erstellen des iOS -SDK -Ziels, Sie können Folgendes ausführen:
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 -Option | Beschreibung | Ziel |
|---|---|---|
| FIPS | Fordert CMake an, AWS_LC im FIPS -Modus zu erstellen. | Alle |
| CMAKE_BUILD_TYPE | Release oder Debugug Build | Alle |
| Cmake_install_prefix | Der Standort für die Installation von Headern und bauten Bibliotheken, wenn make install aufgerufen wird | Alle |
| Cmake_toolchain_file | Fordert CMake an, den Android NDK Cross Compile Toolchain abzurichten | Android / iOS |
| CMake_android_arch_abi | Der ABI, um für diesen Build zu zielen. Unterstützte Werte sind Armeabi, Armeabi-V7A, x86 | Android |
| Cmake_android_ndk | Der Ort des Stammverzeichnisses einer NDK -Installation | Android |
| IOS_PLATFORM | Setzen Sie auf Betriebssystem für ARMV7, ARMV7S, ARM64 -Builds oder Simulator für x86, x86_64 Builds | iOS |
| IOS_Deployment_target | Das Mindestziel für den iOS -Build (9,0+ empfohlen) | iOS |
| Build_tests | Fordert CMake auf BUID -Tests an (standardmäßig aus) | Alle |
HINWEIS: Für Windows -Builds siehe Windows -Abschnitt
Um die Bibliothek zu bauen
make
So installieren Sie die Bibliothek an dem konfigurierten Installationspräfix
make install
Zum Ausführen des gebündelten Testziels (MacOS, Windows, Linux). Benötigt -DBUILD_TESTS=ON Beim Konfigurieren von Build.
make test
Copyright © 2012-2017 Wickr Inc. Alle Rechte vorbehalten.
Dieser Code wird nur für Zwecke von Bildungs-, Akademik- und Code -Überprüfungszwecken veröffentlicht. Die kommerzielle Verwendung des Codes ist ausdrücklich verboten. Weitere Informationen finden Sie in der Lizenz.
Der Code wird "as-is" und ohne ausdrückliche oder implizite Garantien für Fitness, Handelsfähigkeit, Nichtverletzung oder auf andere Weise verfügbar gemacht. Es wird nicht im Handel, sondern auf freiwilliger Basis für den Teil des Autors zum Nutzen des Lizenznehmers zur Verfügung gestellt und wird nicht für die Nutzung der Verbraucher oder eine andere Nutzung außerhalb der Bedingungen dieser Lizenz zur Verfügung gestellt. Jeder, der auf den Code zugreift, sollte über das erforderliche Know -how verfügen, um sein System und seine Geräte zu sichern und nur für Überprüfungszwecke auf den Code zuzugreifen und zu verwenden. Der Lizenznehmer trägt das Risiko des Zugriffs und der Verwendung des Codes. Insbesondere hat der Autor keine Haftung für Störungen oder nachteilige Effekte, die aufgrund des Lizenznehmers zugreifen und/oder die Verwendung des Codes auf dem System des Lizenznehmers zugänglich sind.
Diese Verteilung umfasst kryptografische Software. Das Land, in dem Sie derzeit wohnen, kann Einschränkungen für den Import, den Besitz, die Verwendung und/oder das Wiederieren von einem anderen Land der Verschlüsselungssoftware haben. Bevor Sie eine Verschlüsselungssoftware verwenden, überprüfen Sie bitte die Gesetze, Vorschriften und Richtlinien Ihres Landes in Bezug auf die Import, Besitz, Verwendung und Wiederbelebung der Verschlüsselungssoftware, um festzustellen, ob dies zulässig ist. Weitere Informationen finden Sie unter http://www.wassenaar.org/.
Das US -Handel der US -Regierung, Bureau of Industry and Security (BIS), hat diese Software als Export -Commodity Control Number (ECCN) 5D002.c.1 klassifiziert, die die Informationssicherheitssoftware unter Verwendung oder Durchführung von kryptografischen Funktionen mit asymmetrischen Algorithmen enthält. Die Form und Art und Weise dieser Verteilung können für den Exportieren der Lizenzausnahme -Enc -Technologie -Software (TSU) (siehe die BIS -Exportverwaltungsvorschriften, Abschnitt 740.13) für Objektcode als auch für den Quellcode in Anspruch genommen werden.