Crypto++
| Crypto++ | |
|---|---|
| | |
| Тип | Security library |
| Разработчики | проект Crypto++ ,Wei Dai с 2015 |
| Написана на | C++ |
| Операционная система | Cross-platform |
| Первый выпуск | 1995 |
| Последняя версия | 8.2 (28 апреля 2019) |
| Репозиторий | github.com/weidai11/cryp… |
| Лицензия | Boost Software License (ранее Crypto++ License) |
| Сайт | cryptopp.com |
Crypto++ (также известная как CryptoPP, libcrypto++ и libcryptopp) — это бесплатная с открытым исходным кодом библиотека C++ криптографических алгоритмов и схем, написанная китайским компьютерным инженером Вэй Даем. Crypto++ широко используется в научных кругах, студенческих проектах, открытом коде, в некоммерческих целях,а также в бизнесе.[1] Будучи выпущенной в 1995, библиотека полностью поддерживает 32-bit и 64-bit архитектуры для многих главных операционных систем и платформ, таких как, 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++17 ; и множество других компиляторов и IDE, включающих в себя Borland Turbo C++, Borland C++ Builder, Clang, CodeWarrior Pro, GCC (с использованием GCC от Apple), Intel C++ Compiler (ICC), Microsoft Visual C/C++.
Алгоритмы
[править | править код]Crypto++ обычно предоставляет полные криптографические реализации. Например, блочный шифр Camellia, утвержденный ISO/NESSIE/IETF, практически схожий с AES, хеш-функция Whirlpool, также подтвержденная вышеуказанными организациями, схожая с SHA; оба включены в данную библиотеку.[2]
Стоит добавить,что библиотека Crypto++ иногда делает предлагаемые и новейшие алгоритмы доступными для изучения криптографическим сообществом. Например, VMAC, универсальный хэш-базированный код аутентификации сообщений, был добавлен в ходе ее представления Инженерному совету Интернета; кривые Брэйнпула, предложенные в марте 2009 года в качестве интернет проекта в RFC 5639, были добавлены в Crypto++ 5.6.0 в этом же месяце.[3][4]
| Примитив или Операция | Алгоритмы или реализации |
|---|---|
| Генераторы псевдослучайных чисел | LCG, KDF2, Blum Blum Shub, ANSI X9.17, Mersenne Twister, RDRAND and RDSEED |
| Быстрые потоковые шифры | ChaCha8/12/20, HC-128 и HC-256, Panama, Rabbit, Salsa20, SOSEMANUK, XSalsa20 |
| AES and AES candidates | Rijndael (AES selection), RC6, MARS, Twofish, Serpent, CAST-256 |
| Другие блочные шифры | ARIA, Blowfish, Camellia, CHAM, HIGHT, IDEA, Kalyna (128/256/512), LEA, RC5,SEED, SHACAL-2, Simon и Speck (64/128), SIMECK, Skipjack, SM4, TEA, Threefish (256/512/1024), XTEA |
| Способы блочного шифрования | ECB, CBC, CTS, CFB, OFB, CTR |
| Режимы шифрования с проверкой подлинности | CCM, GCM, EAX |
| Схемы заполнения блочных шифров | PKCS#5, PKCS#7, Zeros, One and zeros, W3C Padding |
| Коды аутентификации сообщений | VMAC, HMAC, CMAC, CBC-MAC, DMAC, Two-Track-MAC |
| Криптографическая хеш-функция | BLAKE2 (BLAKE2b и BLAKE2s), Keccak, SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, и SHA-512), SHA3, Tiger, WHIRLPOOL, RIPEMD (RIPEMD-128, RIPEMD-160, RIPEMD-256, и RIPEMD-320) |
| Паролезависимый KDF | PBKDF1 и PBKDF2 от PKCS #5, PBKDF от PKCS #12 appendix B |
| Криптография с открытым ключом | RSA, DSA, ElGamal, Nyberg-Rueppel (NR), Rabin-Williams (RW), LUC, LUCELG, DLIES (варианты DHAES), ESIGN, curve25519 |
| Схемы заполнения для систем с открытым ключом | PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363 EMSA2 и EMSA5 |
| Криптография эллиптических кривых | ECDSA, ECNR, ECIES, ECDH, ECMQV |
Библиотека также делает доступными примитивы для теоретико-числовых операций, таких как генерация и проверка простых чисел, арифметика над конечным полем, включая GF(p) и GF(2n);операции над полиномами.
Кроме того, библиотека содержит коллекцию небезопасных или устаревших алгоритмов для обратной совместимости и исторической ценности: MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL 3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2, SAFER, 3-WAY, GOST, SHARK, CAST-128, и Square.
Производительность
[править | править код]В 2007 году на семинаре ECRYPT, посвященном реализации открытых ключей восьми библиотек, Ашраф Абушарех и Крис Кай обнаружили, что "Crypto ++ 5.1" лидирует в плане поддержки криптографических примитивов и схем, но является самой медленной из всех исследованных библиотек»[5]
В 2008 году тесты скорости, проведенные Тимо Бингманном с использованием семи библиотек безопасности с открытым исходным кодом с 15 блочными шифрами, Crypto ++ 5.5.2 были самой эффективной библиотекой с двумя блочными шифрами и не уступали средней производительности библиотек по остальным блочным шифрам.[6]
Crypto ++ также включает в себя функцию автоматического теста производительности, доступную из командной строки (cryptest.exe b), результаты которой можно увидеть в Crypto ++ 5.6.0 Benchmarks.[7]
Как и во многих других криптографических библиотеках, доступных для 32-разрядных и 64-разрядных архитектур x86, Crypto ++ включает в себя процедуры сборки для AES с использованием AES-NI. С AES-NI производительность AES значительно улучшается: пропускная способность 128-битного AES / GCM увеличивается с приблизительно 28,0 циклов на байт до 3,5 циклов на байт.[8][9][10]
Релизы версий
[править | править код]Crypto ++ 1.0 был выпущен в июне 1995 года. С момента своего первого релиза в библиотеке было выполнено около двух десятков ревизий, включая архитектурные изменения в версии 5.0.[11][12] С марта 2009 года было выпущено десять версий с использованием архитектуры 5.0.[13]
| Версия | Дата релиза |
|---|---|
| Crypto++ 5.6.0 | 15 марта 2009 |
| Crypto++ 5.6.1 | 9 августа 2010 |
| Crypto++ 5.6.2 | 20 февраля 2013 |
| Crypto++ 5.6.3 | 20 ноября 2015 |
| Crypto++ 5.6.4 | 11 сентября2016 |
| Crypto++ 5.6.5 | 11 октября 2016 |
| Crypto++ 6.0.0 | 22 января 2018 |
| Crypto++ 6.1.0 | 22 февраля 2018 |
| Crypto++ 7.0.0 | 8 апреля 2018 |
| Crypto++ 8.0.0 | 28 декабря 2018 |
| Crypto++ 8.1.0 | 11 февраля 2019 |
| Crypto++ 8.2.0 | 28 апреля 2019 |
Список всех предыдущих выпусков от Тео Лоуренса Crypto ++, начиная с 1995 года, можно найти в групповом архиве пользователей.[14]
Ратификации FIPS
[править | править код]Crypto++ получила три валидации 1 уровня от FIPS 140-2 для своих модулей без каких-либо последующих проблем.[15]
| Версия | Сертификат | Даты |
|---|---|---|
| Crypto++ 5.0.4 | Certificate 343[16] | 2003-09-05, 2005-10-28 |
| Crypto++ 5.2.3 | Certificate 562[17] | 2005-07-29, 2005-08-24, 2005-10-28 |
| Crypto++ 5.3.0 | Certificate 819[18] | 2007-08-13, 2007-08-17 |
Crypto++ была добавлена в Historical Validation List от CMVP в 2016.
Лицензия
[править | править код]Начиная с версии 5.6.1, Crypto ++ состоит только из общедоступных файлов и единой лицензией с открытым исходным кодом для авторских прав на компиляцию:[19]
The License of Crypto++ is somewhat unusual amongst open source projects. A distinction is made between the library as a compilation (i.e., collection), which is copyrighted by Wei Dai, and the individual files in it, which are public domain. The library is copyrighted as a compilation in order to place certain disclaimers (regarding warranty, export, and patents) in the license and to keep the attributions and public domain declarations intact when Crypto++ is distributed in source code form. The fact that individual files are public domain means that legally you can place code segments, entire files, or small sets of files (up to the limit set by fair use) into your own project and do anything you want with them without worrying about the copyright.
30px
Crypto++ Website
См. также
[править | править код]Примечания
[править | править код]- ↑ * J. Kelsey, B. Schneier, D. Wagner, C. Hall (1998). "Cryptanalytic Attacks on Pseudorandom Number Generators". Fast Software Encryption, 5th International Proceedings. http://www.schneier.com/paper-prngs.pdf. Retrieved 2010-08-10.
- C. Adjih, D. Raffo, P. Mühlethaler (2004). "OLSR: Distributed Key Management for Security" Архивировано 21 июля 2011 года.. Independent Research. http://www2.lifl.fr/SERAC/downloads/attacks-olsr-dkm.pdf . Retrieved 2010-08-10.
- X. Yinglian, M. K. Reiter, D. O'Hallaron (2006). "Protecting Privacy in Key-Value Search Systems". Computer Security Applications Conference (ACSAC). https://www.cs.cmu.edu/~ylxie/papers/report03.pdf. Retrieved 2010-08-10.
- T. Zidenberg (2010). "Optimizing Crypto++ library for P4" Архивировано 21 июля 2011 года.. Technion, Israel Institute of Technology Website. http://softlab-pro-web.technion.ac.il/projects/cryptoppopt/html/projectBook.html . Retrieved 2010-08-10.
- ↑ Japan's First 128-bit Block Cipher 'Camellia' Approved as a New Standard Encryption Algorithm in the Internet. physorg.com (2005). Дата обращения: 12 августа 2010.
- ↑ Elliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve Generation. RFC 5639. IETF (2010). Дата обращения: 8 августа 2010.
- ↑ Crypto++ 5.6.0 Release Notes. Crypto++ Website. Дата обращения: 8 августа 2010.
- ↑ Comparative Analysis of Software Libraries for Public Key Cryptography. ECRYPT Workshop on Software Performance Enhancement for Encryption and Decryption. Дата обращения: 12 августа 2010. (недоступная ссылка)
- ↑ T. Bingmann. Speedtest and Comparison of Open-Source Cryptography Libraries and Compiler Flags. Timo Bingmann Weblog (2006). Дата обращения: 10 августа 2010.
- ↑ Crypto++ 5.6.0 Benchmarks. Crypto++ Website (2009). Дата обращения: 10 августа 2010.
- ↑ AES-NI Performance Analyzed. Tom's Hardware (2010). Дата обращения: 10 августа 2010.
- ↑ Misdetection of MIPS endianness & How to get fast AES calls? Crypto++ user group (2010). Дата обращения: 11 августа 2010.
- ↑ Crypto++ 5.6.0 Pentium 4 Benchmarks. Crypto++ Website (2002). Дата обращения: 10 августа 2010.
- ↑ Announcement. Crypto++ 5.0 beta available(2002). Crypto++ Mailing List. Дата обращения: 9 августа 2010.
- ↑ Announcement. Crypto++ 5.0 update. Crypto++ Mailing List (2002). Дата обращения: 9 августа 2010.
- ↑ Crypto++ Announcements List(2010). Sourceforge.net. Дата обращения: 14 августа 2010.
- ↑ L. Teo. Release Dates of Previous Versions. Crypto++ Mailing List (2002). Дата обращения: 9 августа 2010.
- ↑ Crypto++TM Library Versions 5.3.0 [32-bit and 64-bit] Security Policy(2007). Cryptographic Module Validation Program (CMVP). Дата обращения: 8 августа 2010.
- ↑ Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules (2003). Cryptographic Module Validation Program (CMVP). Дата обращения: 8 августа 2010.
- ↑ Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules (2005). Cryptographic Module Validation Program (CMVP). Дата обращения: 8 августа 2010.
- ↑ Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules (2007). Cryptographic Module Validation Program (CMVP). Дата обращения: 8 августа 2010.
- ↑ Compilation Copyright for Crypto++(2003). Crypto++ Website. Дата обращения: 15 августа 2010.
Ссылки
[править | править код]- cryptopp.com — официальный сайт Crypto++
- Crypto++ GitHub project
- List of projects that use Crypto++
- Crypto++ users group