Wickr-Crypto-C -это реализация протокола безопасного обмена сообщениями Wickr в C, который предоставляет платформу для безопасной связи для всех продуктов Wickr.
Белая статья, описывающая детали протокола и его модель безопасности, можно найти здесь. Версия белой бумаги также можно найти в вики.
Пожалуйста, обрати внимание
Этот Crypto LIB выпускается для публичного обзора только для образовательных, академических целей и аудита кода (*Это не лицензия с открытым исходным кодом, больше на лицензию здесь). Мы твердо верим в ценность движения с открытым исходным кодом и с нетерпением ждем сотрудничества с сообществом в этом и других будущих проектах, в том числе по лицензии GNU.
Пожалуйста, сохраните трекер этого репо, ограниченным ошибками на уровне кода, обнаруженными в реализации протокола, как описано в белом документе. Запросы на вытягивание всегда приветствуются!
Любые вопросы, касающиеся самого протокола (то есть: идеи крипто-дизайна, предложения, концептуальная критика высокого уровня) можно направить по адресу [email protected].
For all other security issues, please contact Wickr's bug bounty program here.
Начиная с этой крипто -либера, Wickr открывает свой исходный код своим клиентам, партнерам и большему сообществу - вот почему:
Прозрачность: для нас важно поделиться с профессиональными клиентами Wickr, как крипто Wickr разработан таким образом, чтобы легко просмотреть
Безопасность: Хотя Wickr не является новым инструментом для одноранговых зашифрованных эфемерных сообщений, этот протокол представляет собой криптографию нового поколения в продуктах Wickr. Мы уверены, что сообщество GitHub будет иметь идеи и конструктивные предложения о том, как мы можем дополнительно развивать наш протокол, чтобы укрепить его против возникающих атак (и, конечно, исправить одну или две ошибки)
Команда: Основная крипто -команда долгое время была сильным внутренним сторонником открытия исходного кода, и они наконец преобладали ☺. Помимо шутки, мы считаем, что это хорошее время в развитии Wickr как компании, чтобы поделиться основным криптографией с общественностью в дополнение к регулярным внешним аудитам безопасности, которые проходят все продукты Wickr
Верная реализация протокола Wickr обеспечивает конфиденциальность содержания сообщений в транзите и в хранилище. Он способствует следующим возможностям:
Структура, которая представляет набор криптографических функций, которые может использовать библиотека. Целью его дизайна является разоблачение примитивов безопасности организованным и общим способом. Это позволяет реализации протокола не быть связанной с одной зависимостью, такой как OpenSSL. Он также предназначен для того, чтобы быть простым в использовании, и для предоставления интерфейса высокого уровня, который обеспечивает лучшие практики.
Текущая реализация Crypto Engine по умолчанию основана в основном за пределами интерфейса EVP от OpenSSL 1.1.0
Низкий уровень реализация кодирования и декодирования зашифрованных пакетов сообщений
Интерфейс высокого уровня для управления конечной точкой, которая может отправлять и получать зашифрованные пакеты сообщений. Именно так клиентские приложения Front End интегрируются с крипто -библиотекой.
Государственная машина, которая поможет с шифрованием непрерывных потоков данных. Это используется для кодировки / декодирования данных в живом голосе / видеопотоке между пользователями по телефону 1: 1 или конференции. Он высечен ключом, который договорился до протокола обмена сообщениями. Каждый поток данных в определенном вызове имеет свой собственный объект Stream_cipher для удержания его состояния.
Библиотека построена с Cmake на всех платформах. В настоящее время поддерживаются iOS, Android, Windows, MacOS и Linux. См. Конкретные инструкции по платформе и параметры Cmake ниже для получения дополнительной информации
Следующая сборка может быть настроена:
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 , задокументированной ниже. Вместо этого он полагается на команды Visual Studio напрямую следующим образом:
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 вручную
Уровень Api Api по умолчанию составляет 18, как определено в файле Toolchain-android.cmake в корневом каталоге. Изменение этого в настоящее время не рекомендуется
Чтобы настроить 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, ARMV7S и ARM64 FAT BIBITORS созданы для устройства
Чтобы настроить 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 | Описание | Цель |
|---|---|---|
| Фипс | Сообщает Cmake создать AWS_LC в режиме FIPS. | Все |
| Cmake_build_type | Выпуск или отладочная сборка | Все |
| Cmake_install_prefix | Место для установки заголовков и строительных библиотек при make install называется | Все |
| Cmake_toolchain_file | Сообщает Cmake нацеливаться на набор инструментов Android NDK Cross Compile | Android / iOS |
| Cmake_android_arch_abi | ABI нацелен на эту сборку. Поддерживаемые значения-Armeabi, Armeabi-V7a, x86 | Android |
| Cmake_android_ndk | Расположение корневого каталога установки NDK | Android |
| Ios_platform | Установить ОС для ARMV7, ARMV7S, ARM64 Сборки или симулятор для x86, x86_64 | ios |
| Ios_deployment_target | Минимальная цель для сборки iOS (рекомендуется 9,0+) | ios |
| Build_tests | Сообщает Cmake о покупке тестов (по умолчанию) | Все |
Примечание: для сборки Windows см. Раздел Windows
Чтобы построить библиотеку
make
Чтобы установить библиотеку в настроенный префикс установки
make install
Чтобы запустить комплексную тестовую цель (MacOS, Windows, Linux). Требуется -DBUILD_TESTS=ON при настройке сборки.
make test
Copyright © 2012-2017 Wickr Inc. Все права защищены.
Этот код выпускается только для образовательных, академических целей и обзора кода. Коммерческое использование кода прямо запрещено. Для получения дополнительной информации см. Лицензию.
Код доступен «как есть» и без каких-либо явных или подразумеваемых гарантий в отношении пригодности, торговой точки зрения, не-инфративных или иных. Он не предоставляется в торговле, но на добровольной основе от имени автора в течение всей пользы лицензиата и не предоставляется для использования потребителями или любого другого использования вне условий настоящей лицензии. Любой доступ к коду должен иметь необходимую экспертизу для обеспечения своей системы и устройств, а также для доступа и использования кода только в целях просмотра. Лицензиат несет риск доступа и использования кода. В частности, автор не несет ответственности за какие -либо помехи или неблагоприятные эффекты, которые могут возникнуть в результате получения лицензиата и/или использования кода в системе лицензиата.
Это распределение включает в себя криптографическое программное обеспечение. Страна, в которой вы в настоящее время проживаете, может иметь ограничения на импорт, владение, использование и/или реэкспорт в другую страну, программного обеспечения для шифрования. Перед использованием какого-либо программного обеспечения для шифрования, пожалуйста, проверьте законы, правила и политики вашей страны, касающиеся импорта, владения, использования и реэкспорта программного обеспечения для шифрования, чтобы увидеть, разрешено ли это. См. Http://www.wassenaar.org/ для получения дополнительной информации.
Министерство торговли правительства США, Бюро промышленности и безопасности (BIS), классифицировало это программное обеспечение как экспортный номер контроля товаров (ECCN) 5D002.c.1, который включает в себя программное обеспечение для информационной безопасности или выполнение криптографических функций с асимметричными алгоритмами. Форма и способ этого распределения дают ему право на экспорт в соответствии с исключением лицензии ENC Technology Technology Software Unserricted (TSU) исключения (см. Правила администрирования экспорта BIS, раздел 740.13) как для объектного кода, так и для исходного кода.