Крипто ++ - Crypto++

Крипто ++
Crypto ++ - logo.png
Разработчики) изначально Wei Dai , проект Crypto ++ с 2015 года
Первый выпуск 1995 г.
Стабильный выпуск
8.6 / 24 сентября 2021 г . ; 0 дней назад ( 2021-09-24 )
Репозиторий
Написано в C ++
Операционная система Кроссплатформенность
Тип Библиотека безопасности
Лицензия Повышение лицензии на программное обеспечение (ранее лицензия Crypto ++ ) / отдельные файлы в общественное достояние
Веб-сайт www .cryptopp .com

Crypto ++ (также известный как CryptoPP , libcrypto ++ , и libcryptopp ) является свободным и открытым исходным кодом C ++ , класс библиотеки из криптографических алгоритмов и схем , написанных Wei Dai . Crypto ++ широко используется в академических кругах, студенческих проектах, проектах с открытым исходным кодом и некоммерческих проектах, а также в бизнесе. Выпущенная в 1995 году, библиотека полностью поддерживает 32-битные и 64-битные архитектуры для многих основных операционных систем и платформ, включая Android (с использованием STLport ), Apple (Mac OS X и iOS), BSD , Cygwin , IBM AIX и S / 390. , Linux , MinGW , Solaris , Windows , Windows Phone и Windows RT . Проект также поддерживает компиляцию с использованием библиотек времени выполнения C ++ 03, C ++ 11, C ++ 14 и C ++ 17; и различные компиляторы и IDE , включая Borland Turbo C ++ , Borland C ++ Builder , Clang , CodeWarrior Pro , GCC (включая Apple GCC), Intel C ++ Compiler (ICC) , Microsoft Visual C / C ++ и Sun Studio .

Crypto ++ 1.0 был выпущен в июне 1995 года, но загрузка больше не доступна. Релиз Crypto ++ 1.0 был отозван из-за заявления RSA Data Security, Inc об авторских правах на алгоритм RSA . Все остальные версии библиотеки доступны для скачивания.

Алгоритмы

Crypto ++ обычно предоставляет полные криптографические реализации и часто включает менее популярные, менее часто используемые схемы. Например, Camellia - это одобренный ISO / NESSIE / IETF блочный шифр, примерно эквивалентный AES , а Whirlpool - одобренная ISO / NESSIE / IETF хеш-функция, примерно эквивалентная SHA ; оба включены в библиотеку.

Кроме того, библиотека Crypto ++ иногда делает предлагаемые и новейшие алгоритмы и реализации доступными для изучения криптографическим сообществом. Например, VMAC , универсальный код проверки подлинности сообщений на основе хэшей , был добавлен в библиотеку во время ее представления Инженерной группе Интернета (рабочая группа CFRG) ; и кривые Brainpool, предложенные в марте 2009 г. как Интернет-проект в RFC 5639, были добавлены в Crypto ++ 5.6.0 в том же месяце.

Алгоритмы и реализации Crypto ++
Примитив или операция Алгоритмы или реализации
Генераторы псевдослучайных чисел LCG , KDF2 , Blum Blum Shub , ANSI X9.17 , Mersenne Twister , RDRAND и RDSEED
Высокоскоростные поточные шифры ChaCha8 / 12/20 , ChaCah20 (версия IETF), HC-128 и HC-256 , Panama , Rabbit , Salsa20 , SOSEMANUK , XSalsa20
Кандидаты в AES и AES Rijndael ( выбор AES ), RC6 , MARS , Twofish , Serpent , CAST-256
Другие блочные шифры ARIA , Blowfish , Camellia , CHAM , HIGHT, IDEA , Kalyna (128/256/512), LEA , RC5 , Triple-DES (2- и 3-клавишные), SEED , SHACAL-2 , Simon (64/128), Speck (64/128), SIMECK, Skipjack , SM4 , TEA , Threefish (256/512/1024), XTEA
Режимы работы блочного шифра ЕЦБ , CBC , CTS , CFB , OFB , CTR , XTS
Режимы шифрования с аутентификацией CCM , GCM , EAX , ChaCha20Poly1305
Схемы заполнения блочных шифров PKCS # 5 , PKCS # 7 , нули , единица и нули , заполнение W3C
Коды аутентификации сообщений VMAC , HMAC , CMAC , CBC-MAC , DMAC , двухканальный MAC
Криптографическая хеш-функция BLAKE2 (BLAKE2b и BLAKE2s), Keccak , SHA-1 , SHA-2 (SHA-224/256/384/512), SHA3 , LSH (256/512) , Tiger , WHIRLPOOL , RIPEMD (128/160/256/320 )
Функции получения ключей на основе пароля PBKDF1 и PBKDF2 из PKCS # 5 , PBKDF из PKCS # 12, приложение B , HKDF Кравчика и Эронена
Криптография с открытым ключом RSA , DSA , ElGamal , Nyberg-Rueppel (NR), Рабин-Williams (RW), LUC , LUCELG , DLIES (варианты DHAES ), ESIGN , curve25519
Схемы заполнения для систем с открытым ключом PKCS # 1 v2.0, OAEP , PSS , PSSR , IEEE P1363 EMSA2 и EMSA5
Ключевые схемы договоренностей Диффи-Хеллмана (DH), Унифицированный Диффи-Хеллман (DH2), Менезес-Ку-Ванстон (MQV), Хешированный MQV (HMQV), Полностью хешированный MQV (FHMQV), LUCDIF , XTR-DH , x25519
Криптография на эллиптических кривых ECDSA , ECNR , ECIES , ECDH , ECMQV , Ed25519
Обмен секретами Секрет схема разделения Шамира , алгоритм информации рассредоточение Рабина (МАР)

Библиотека также предоставляет примитивы для теоретико-числовых операций, такие как быстрые целые числа с высокой точностью; генерация и проверка простых чисел; арифметика конечных полей, включая GF (p) и GF (2 n ); эллиптические кривые; и полиномиальные операции.

Кроме того, библиотека сохраняет набор небезопасных или устаревших алгоритмов для обратной совместимости и исторической ценности: MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL 3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2, БЕЗОПАСНЫЙ, 3-ХОДОВОЙ, ГОСТ, АКУЛА, КАСТ-128 и Квадрат.

Представление

В документе семинара ECRYPT 2007 года, посвященном реализации открытых ключей восьми библиотек , Ашраф Абушарех и Крис Кадж обнаружили, что «Crypto ++ 5.1 [sic] лидирует с точки зрения поддержки криптографических примитивов и схем, но является самой медленной из всех исследованных библиотек».

В 2008 году тесты скорости, проведенные Тимо Бингманном с использованием семи библиотек безопасности с открытым исходным кодом с 15 блочными шифрами , показали, что Crypto ++ 5.5.2 была самой производительной библиотекой при двух блочных шифрах и не уступала средней производительности библиотеки при остальных блочных шифрах. .

Crypto ++ также включает функцию автоматического тестирования производительности, доступную из командной строки ( cryptest.exe b ), результаты которой доступны в Crypto ++ 5.6.0 Benchmarks .

Как и многие другие криптографические библиотеки, доступные для 32-разрядных и 64-разрядных архитектур x86 , Crypto ++ включает процедуры сборки для AES с использованием AES-NI . С помощью AES-NI производительность AES значительно улучшается: пропускная способность 128-битного AES / GCM увеличивается примерно с 28,0 циклов на байт до 3,5 циклов на байт.

Версии релизов

Crypto ++ 1.0 был выпущен в июне 1995 года. С момента первого выпуска библиотека претерпела почти два десятка ревизий, включая архитектурные изменения в версии 5.0. С марта 2009 года было выпущено десять выпусков, использующих архитектуру версии 5.0.

Crypto ++ выпускается с версии 6.0
Версия Дата выхода
Крипто ++ 6.0.0 22 января 2018 г.
Крипто ++ 6.1.0 22 февраля 2018 г.
Крипто ++ 7.0.0 8 апреля 2018 г.
Крипто ++ 8.0.0 28 декабря 2018 г.
Крипто ++ 8.1.0 11 февраля 2019 г.,
Крипто ++ 8.2.0 28 апреля 2019 г.,
Крипто ++ 8.3.0 20 декабря 2020 г.
Крипто ++ 8.4.0 2 января 2021 г.
Крипто ++ 8.5.0 7 марта 2021 г.
Крипто ++ 8.6.0 24 сентября 2021 г.

Компиляцию предыдущих выпусков Crypto ++ 1995 года, составленную Лоуренсом Тео, можно найти в архивах групп пользователей.

Проверки FIPS

Crypto ++ получил три проверки модуля Федерального стандарта обработки информации (FIPS) 140-2 уровня 1 без каких-либо проблем после проверки.

Проверенные FIPS модули Crypto ++
Версия Сертификат Даты
Крипто ++ 5.0.4 Сертификат 343 2003-09-05, 2005-10-28
Крипто ++ 5.2.3 Сертификат 562 2005-07-29, 2005-08-24, 2005-10-28
Крипто ++ 5.3.0 Сертификат 819 2007-08-13, 2007-08-17

Crypto ++ был перемещен в список исторической проверки CMVP в 2016 году. Этот переход фактически означает, что библиотека больше не проверяется.

Лицензирование

Начиная с версии 5.6.1, Crypto ++ состоит только из файлов общественного достояния , с авторским правом на компиляцию и единой лицензией с открытым исходным кодом для авторского права на компиляцию:

Лицензия Crypto ++ несколько необычна среди проектов с открытым исходным кодом. Различают библиотеку как компиляцию (т. Е. Коллекцию), авторские права на которую принадлежат Wei Dai , и отдельные файлы в ней, которые являются общественным достоянием . Библиотека защищена авторским правом как компиляция, чтобы включить в лицензию определенные заявления об отказе от ответственности (в отношении гарантии, экспорта и патентов) и сохранить в неприкосновенности атрибуцию и декларации общественного достояния, когда Crypto ++ распространяется в форме исходного кода. Тот факт, что отдельные файлы являются общественным достоянием, означает, что по закону вы можете размещать сегменты кода, целые файлы или небольшие наборы файлов (до предела, установленного добросовестным использованием) в свой собственный проект и делать с ними все, что захотите, не беспокоясь о авторское право.

Смотрите также

использованная литература

внешние ссылки