Wickr-Crypto-C é uma implementação do Protocolo de Mensagens Seguro Wickr em C, que fornece uma plataforma para comunicações seguras em todos os produtos Wickr.
Um white paper descrevendo detalhes do protocolo e seu modelo de segurança pode ser encontrado aqui. Uma versão em marcação do white paper também pode ser encontrada no wiki.
Observe
Esta criptografia LIB é divulgada para revisão pública para fins de auditoria educacional, acadêmica e de código apenas (*Esta não é uma licença de código aberto, mais sobre licença aqui). Acreditamos fortemente no valor do movimento de código aberto e estamos ansiosos para colaborar com a comunidade neste e em outros projetos futuros, inclusive sob a licença da GNU.
Mantenha o rastreador de problemas deste repo limitado aos bugs de nível de código encontrados na implementação do protocolo, conforme descrito no white paper. Os pedidos de puxão são sempre bem -vindos!
Quaisquer perguntas sobre o próprio protocolo (ou seja: idéias de design criptográfico, sugestões, crítica conceitual de alto nível) podem ser direcionadas para [email protected].
Para todos os outros problemas de segurança, entre em contato com o programa de recompensas de insetos da Wickr aqui.
Começando com esta criptografia Lib, a Wickr está abrindo seu código -fonte para seus clientes, parceiros e a comunidade maior - aqui é o porquê:
Transparência: é importante compartilharmos com os clientes profissionais da Wickr como a criptografia Wickr é projetada de uma maneira fácil de revisar
Segurança: Embora a Wickr não seja uma nova ferramenta para mensagens efêmeras criptografadas ponto a ponto, esse protocolo representa uma nova geração de criptografia nos produtos Wickr. Estamos confiantes de que a comunidade do GitHub terá idéias e sugestões construtivas sobre como podemos evoluir ainda mais nosso protocolo para torná -lo mais forte contra ataques emergentes (e, é claro, consertar um bug ou dois)
Equipe: A equipe principal de criptografia tem sido um forte defensor interno para abrir o código -fonte e finalmente prevaleceu ☺. Brincando à parte, acreditamos que é um bom momento no desenvolvimento da Wickr como empresa compartilhar a criptografia principal com o público, além das auditorias regulares de segurança externa que todos os produtos Wickr passam por
Uma implementação fiel do protocolo Wickr permite a confidencialidade do conteúdo da mensagem em trânsito e em armazenamento. Ele alimenta os seguintes recursos:
Uma estrutura que representa um conjunto de funções criptográficas que a biblioteca pode utilizar. O objetivo de seu design é expor as primitivas de segurança de maneira organizada e genérica. Isso permite que a implementação do protocolo não esteja vinculada a uma única dependência como o OpenSSL. Também foi projetado para ser fácil de usar e para fornecer uma interface de alto nível que aplique as melhores práticas.
A implementação padrão atual do motor criptográfica é baseada principalmente na interface EVP do OpenSSL 1.1.0
Implementação de baixo nível da codificação e decodificação de pacotes de mensagens criptografadas
Interface de alto nível para gerenciar um terminal que pode enviar e receber pacotes de mensagens criptografadas. É assim que os aplicativos do cliente front -end se integram à biblioteca criptográfica.
Uma máquina de estado para ajudar na criptografia de fluxos contínuos de dados. Isso é usado para codificar / decodificar dados em um fluxo de voz / vídeo ao vivo entre usuários em uma chamada de 1: 1 ou conferência. É semeado com uma chave que foi negociada antes do protocolo de mensagens. Cada fluxo de dados dentro de uma chamada específica tem seu próprio objeto Stream_cipher para manter seu estado.
A biblioteca é construída com CMake em todas as plataformas. Atualmente, iOS, Android, Windows, MacOS e Linux são suportados. Consulte Instruções específicas da plataforma e opções de cmake abaixo para obter mais informações
A construção do macOS pode ser configurada a seguir:
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
A construção do Windows pode ser configurada usando o gerador MSVC como segue
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION -G "Visual Studio 14 2015" ..
A compilação do Windows não pode ser gerada com o comando padrão make documentado abaixo. Em vez disso, depende dos comandos do Visual Studio diretamente da seguinte forma:
msbuild WickrCryptoC.sln /p:Configuration=Release
Para executar os testes, ligue o seguinte no diretório de compilação
ctest
Para instalar a biblioteca no prefixo de instalação configurado
msbuild INSTALL.vcxproj /p:Configuration=Release
A construção do Linux pode ser configurada usando o fluxo cmake padrão com algumas opções
mkdir build
cd build
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=USER_INSTALL_LOCATION ../
Atualmente, o projeto CMake foi testado em Armebi-V7a, Armebi e X86 ABIS. Os testes de execução do Android atualmente não são suportados diretamente pelo CMAKE, embora o alvo de teste possa ser compilado e enviado para um dispositivo via Adb manualmente
O nível padrão da API Android é 18, conforme definido no arquivo ToolChain-Android.cmake no diretório raiz. Modificar isso atualmente não está recomendado
Para configurar o CMake para a construção do alvo NDK do Android, você pode fazer o seguinte:
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 ../
Uma cadeia de ferramentas fornecida pode suportar o simulador e as compilações de dispositivos para iOS> 9.0 como bibliotecas de gordura. x86 + x86_64 As bibliotecas gordas são geradas para o simulador e as bibliotecas de gordura ARMV7, ARMV7s e ARM64 são criadas para o dispositivo
Para configurar o CMake para a construção do alvo do iOS SDK, você pode fazer o seguinte:
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 ../
| Opção cmake | Descrição | Alvo |
|---|---|---|
| FIPS | Diz ao cmake para criar aws_lc no modo fips. | Todos |
| Cmake_build_type | Liberação ou construção de depuração | Todos |
| Cmake_install_prefix | O local para instalar cabeçalhos e bibliotecas construídas quando make install é chamada | Todos |
| Cmake_toolchain_file | Diz a Cmake para atingir a cadeia de ferramentas Android NDK Cross Compile | Android / iOS |
| Cmake_android_arch_abi | O ABI para segmentar para esta construção. Os valores suportados são Armebi, Armebi-V7a, x86 | Android |
| Cmake_android_ndk | A localização do diretório raiz de uma instalação do NDK | Android |
| Ios_platform | Definido como OS para ARMV7, ARMV7S, ARM64 Builds ou simulador para x86, x86_64 construções | iOS |
| IOS_Deployment_target | O alvo mínimo para a compilação iOS (9,0+ foi recomendada) | iOS |
| Build_tests | Diga a CMake para os testes Buid (desligado por padrão) | Todos |
Nota: Para compilações do Windows, consulte a seção Windows
Para construir a biblioteca
make
Para instalar a biblioteca no prefixo de instalação configurado
make install
Para executar o alvo de teste em pacote (MacOS, Windows, Linux). Requer -DBUILD_TESTS=ON ao configurar a construção.
make test
Copyright © 2012-2017 Wickr Inc. Todos os direitos reservados.
Este código está sendo lançado apenas para fins educacionais, acadêmicos e de revisão de código. O uso comercial do código é expressamente proibido. Para detalhes adicionais, consulte a licença.
O código é disponibilizado "como está" e sem garantias expressas ou implícitas quanto à aptidão, comercialização, não violação ou de outra forma. Não está sendo fornecido no comércio, mas voluntário em nome da parte do autor para o benefício do licenciado e não é disponibilizado para uso do consumidor ou qualquer outro uso fora dos termos desta licença. Qualquer pessoa que acesse o código deve ter a experiência necessária para proteger seu sistema e dispositivos e acessar e usar o código apenas para fins de revisão. O licenciado assume o risco de acessar e usar o código. Em particular, o autor não se responsabiliza por qualquer interferência ou efeito adverso que possa ocorrer como resultado do licenciado acessando e/ou usando o código no sistema do licenciado.
Esta distribuição inclui software criptográfico. O país em que você reside atualmente pode ter restrições à importação, posse, uso e/ou reexportar para outro país, do software de criptografia. Antes de usar qualquer software de criptografia, verifique as leis, regulamentos e políticas do seu país relativas à importação, posse, uso e reexportação de software de criptografia, para ver se isso é permitido. Consulte http://www.wassenaar.org/ para obter mais informações.
O Departamento de Comércio do Governo dos EUA, Bureau of Industry and Security (BIS), classificou esse software como número de controle de commodities de exportação (ECCN) 5D002.C.1, que inclui software de segurança da informação usando ou executando funções criptográficas com algoritmos assimétricos. O formulário e a maneira dessa distribuição o tornam elegível para exportação sob a exceção da exceção da licença ENC Technology Software irrestrito (TSU) Exceção (consulte os regulamentos de administração de exportação do BIS, Seção 740.13) para o código do objeto e o código -fonte.