Wickr-Crypto-C es una implementación del Protocolo de mensajería Secure WickR en C, que proporciona una plataforma para comunicaciones seguras en todos los productos WickR.
Aquí se puede encontrar un documento blanco que describe detalles del protocolo y su modelo de seguridad. También se puede encontrar una versión de Markdown del papel blanco en el wiki.
Tenga en cuenta
Este cripto Lib se publica para revisión pública para fines educativos, académicos y de auditoría de código (*Esta no es una licencia de código abierto, más sobre la licencia aquí). Creemos firmemente en el valor del movimiento de código abierto y esperamos colaborar con la comunidad en este y otros proyectos futuros, incluso bajo la licencia de GNU.
Mantenga el rastreador de problemas de este repositorio limitado a los errores de nivel de código que se encuentran en la implementación del protocolo como se describe en el documento blanco. ¡Las solicitudes de extracción son siempre bienvenidas!
Cualquier pregunta sobre el protocolo en sí (es decir: ideas de diseño de cifrado, sugerencias, crítica conceptual de alto nivel) se puede dirigir a [email protected].
Para todos los demás problemas de seguridad, comuníquese con el programa Bug Bounty de Wickr aquí.
Comenzando con este cripto liberal, Wickr está abriendo su código fuente a sus clientes, socios y la comunidad en general, aquí es por qué:
Transparencia: es importante para nosotros compartir con los clientes profesionales de WickR cómo se diseña el Wickr Crypto de una manera que es fácil de revisar
Seguridad: Si bien WickR no es una herramienta nueva para la mensajería efímera cifrada entre pares, este protocolo representa una criptografía de nueva generación en productos WickR. Estamos seguros de que la comunidad de Github tendrá ideas y sugerencias constructivas sobre cómo podemos evolucionar aún más nuestro protocolo para fortalecerlo contra los ataques emergentes (y, por supuesto, arreglar un error o dos)
Equipo: El equipo Core Crypto ha sido un gran defensor interno para abrir el código fuente, y finalmente han prevalecido ☺. Bromeando a un lado, creemos que es un buen momento en el desarrollo de Wickr como compañía compartir el criptográfico central con el público además de las auditorías de seguridad externos regulares que sufren todos los productos Wickr.
Una implementación fiel del protocolo WickR permite la confidencialidad del contenido de mensajes en tránsito y almacenamiento. Fuelve las siguientes capacidades:
Una estructura que representa un conjunto de funciones criptográficas que la biblioteca puede utilizar. El objetivo de su diseño es exponer primitivas de seguridad de manera organizada y genérica. Esto permite que la implementación del protocolo no esté vinculada a una sola dependencia, como OpenSSL. También está diseñado para ser fácil de usar y para proporcionar una interfaz de alto nivel que haga cumplir las mejores prácticas.
La implementación predeterminada actual de Crypto Engine se basa principalmente en la interfaz EVP de OpenSSL 1.1.0
Implementación de bajo nivel de la codificación y decodificación de paquetes de mensajes cifrados
Interfaz de alto nivel para administrar un punto final que puede enviar y recibir paquetes de mensajes cifrados. Esta es la forma en que se integran las aplicaciones del cliente front -end con la biblioteca criptográfica.
Una máquina de estado para ayudar con el cifrado de flujos continuos de datos. Esto se utiliza para codificar / decodificar datos dentro de una transmisión de voz / video en vivo entre los usuarios en una llamada de 1: 1 o conferencia. Se sembra con una clave que fue negociada anteriormente por el protocolo de mensajería. Cada flujo de datos dentro de una llamada particular tiene su propio objeto stream_cipher para mantener su estado.
La biblioteca está construida con Cmake en todas las plataformas. Actualmente son compatibles con iOS, Android, Windows, MacOS y Linux. Consulte las instrucciones específicas de la plataforma y las opciones de CMake a continuación para obtener más información
La compilación de macOS se puede configurar sigue:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
La compilación de Windows se puede configurar utilizando el generador MSVC de la siguiente manera
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
La compilación de Windows no se puede generar con el comando make estándar documentado a continuación. Instead it relies on the Visual Studio commands directly as follows:
msbuild WickrCryptoC.sln /p:Configuration=Release
Para ejecutar las pruebas, llame a lo siguiente desde el directorio de compilación
ctest
Para instalar la biblioteca en el prefijo de instalación configurado
msbuild INSTALL.vcxproj /p:Configuration=Release
La compilación de Linux se puede configurar utilizando el flujo CMake estándar con algunas opciones
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Actualmente, el Proyecto CMake ha sido probado en ArmeBi-V7A, Armeabi y X86 Abis. La ejecución de pruebas para Android actualmente no es compatible directamente por CMake, aunque el objetivo de prueba se puede compilar y cargar a un dispositivo a través de ADB manualmente
El nivel de API de Android predeterminado es 18 como se define en el archivo Toolchain-Android.cmake en el directorio raíz. Modificar esto actualmente no se recomienda
Para configurar CMake para construir el objetivo NDK de Android, puede hacer lo siguiente:
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 ../
Una cadena de herramientas proporcionada puede admitir compilaciones de simulador y dispositivo para iOS> 9.0 como bibliotecas de grasa. X86 + x86_64 Las bibliotecas de grasa se generan para el simulador y ARMV7, ARMV7 y las bibliotecas de grasa ARM64 se crean para el dispositivo
Para configurar CMake para construir el objetivo de iOS SDK, puede hacer lo siguiente:
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 ../
| Opción CMake | Descripción | Objetivo |
|---|---|---|
| Fips | Le dice a CMake que construya AWS_LC en modo FIPS. | Todo |
| Cmake_build_type | Lanzamiento o depuración de la construcción | Todo |
| Cmake_install_prefix | La ubicación para instalar encabezados y bibliotecas construidas cuando make install | Todo |
| Cmake_toolchain_file | Le dice a CMake que se dirige a la cadena de herramientas de compilación Cross Android NDK | Android / iOS |
| Cmake_android_arch_abi | El ABI se dirige a esta construcción. Los valores compatibles son Armeabi, Armeabi-V7A, x86 | Androide |
| Cmake_android_ndk | La ubicación del directorio raíz de una instalación NDK | Androide |
| IOS_platform | Establecer en OS para ARMV7, ARMV7S, BROM64 CONSTRUCTAS O SIMUSTULOR PARA X86, X86_64 CONSTRUCTAS | iOS |
| IOS_Deployment_Target | El objetivo mínimo para la construcción de iOS (9.0+ recomendado) | iOS |
| Build_tests | Le dice a CMake a las pruebas de BUID (apagado por defecto) | Todo |
Nota: Para las compilaciones de Windows, consulte la sección de Windows
Para construir la biblioteca
make
Para instalar la biblioteca en el prefijo de instalación configurado
make install
Para ejecutar el objetivo de prueba agrupado (MacOS, Windows, Linux). Requiere -DBUILD_TESTS=ON cuando se configura la compilación.
make test
Copyright © 2012-2017 Wickr Inc. Todos los derechos reservados.
Este código se está lanzando solo para fines educativos, académicos y de revisión del código. El uso comercial del código está expresamente prohibido. Para obtener detalles adicionales, consulte la licencia.
El código está disponible "as-es" y sin garantías expresas o implícitas en cuanto a la idoneidad, la comerciabilidad, la no infracción o de otra manera. No se proporciona en el comercio, sino en nombre voluntario en nombre de la parte del autor en beneficio del licenciatario y no está disponible para uso del consumidor o cualquier otro uso fuera de los términos de esta licencia. Cualquier persona que acceda al código debe tener la experiencia necesaria para asegurar su sistema y dispositivos y para acceder y usar el código solo para fines de revisión. El licenciatario tiene el riesgo de acceder y usar el código. En particular, el autor no tiene ninguna responsabilidad por ninguna interferencia o efecto adverso que pueda ocurrir como resultado del acceso al licenciatario y/o usar el código en el sistema del licenciatario.
Esta distribución incluye software criptográfico. El país en el que reside actualmente puede tener restricciones sobre la importación, posesión, uso y/o reexportar a otro país, del software de cifrado. Antes de usar cualquier software de cifrado, verifique las leyes, regulaciones y políticas de su país sobre la importación, posesión, uso y reexportación del software de cifrado, para ver si esto está permitido. Consulte http://www.wassenaar.org/ para obtener más información.
El Departamento de Comercio del Gobierno de los Estados Unidos, Oficina de Industria y Seguridad (BIS), ha clasificado este software como Número de control de productos de exportación (ECCN) 5D002.C.1, que incluye software de seguridad de la información que usa o realiza funciones criptográficas con algoritmos asimétricos. La forma y la forma de esta distribución lo hacen elegible para la exportación bajo la excepción de la excepción de la licencia ENC Software de tecnología (TSU) Excepción (consulte las Regulaciones de Administración de Exportación de BIS, Sección 740.13) para el código de objeto y el código fuente.