Crypto++ | |
---|---|
Típusú | Könyvtár |
Fejlesztő | Crypto++ projekt, Wei Dai 2015 óta |
Beírva | C++ |
Operációs rendszer | Cross-platform |
Első kiadás | 1995 |
legújabb verzió |
|
Engedély | Boost szoftverlicenc (korábban Crypto++ licenc ) |
Weboldal | cryptopp.com |
A Crypto++ (más néven CryptoPP , libcrypto ++ és libcryptopp ) egy ingyenes és nyílt forráskódú C++ kriptográfiai algoritmusok és sémák könyvtára, amelyet Wei Dai kínai számítógépes mérnök írt [2] . Az 1995-ben kiadott könyvtár teljes mértékben támogatja a 32 bites és 64 bites architektúrákat számos jelentős operációs rendszerhez és platformhoz, mint például Android ( STLport használatával ), Apple (Mac OS X és iOS), BSD , Cygwin , IBM AIX és S /390 , Linux , MinGW , Solaris , Windows , Windows Phone és Windows RT . A projekt támogatja a fordítást is különféle C++03, C++11 és C++17 futási környezetekből származó könyvtárak használatával; és sok más fordító és IDE , köztük a Borland Turbo C++ , a Borland C++ Builder , a Clang , a CodeWarrior Pro , a GCC (az Apple GCC-jét használva), az Intel C++ Compiler (ICC) , a Microsoft Visual C/C++ [3] [4] [5] .
A Crypto++ általában teljes kriptográfiai megvalósítást biztosít. Például az ISO / NESSIE / IETF által jóváhagyott Camellia blokk titkosítás , gyakorlatilag az AES -hez hasonló , a Whirlpool hash funkció , amelyet a fenti szervezetek is jóváhagytak, hasonlóan az SHA -hoz ; mindkettő benne van ebben a könyvtárban [6] [7] .
Érdemes hozzátenni, hogy a Crypto++ könyvtár néha javasolt és újabb algoritmusokat tesz elérhetővé a kriptográfiai közösség számára. Például a VMAC , a Universal Hash-Based Message Authentication Code az Internet Engineering Councilhoz való benyújtásakor került hozzáadásra ; Az RFC 5639 -ben 2009 márciusában internetes piszkozatként javasolt Brainpool görbéket ugyanabban a hónapban adták hozzá a Crypto++ 5.6.0-hoz [8] [9] .
Primitív vagy művelet | Algoritmusok vagy megvalósítások |
---|---|
Álvéletlen számgenerátorok | LCG , KDF2 , Blum Blum Shub , ANSI X9.17 , Mersenne Twister , RDRAND és RDSEED |
Gyors adatfolyam titkosítás | ChaCha8/12/20 , HC-128 és HC-256 , Panama , Nyúl , Salsa20 , SOSEMANUK , XSalsa20 |
AES és AES jelöltek | Rijndael ( AES válogatás ), RC6 , MARS , Twofish , Serpent , CAST-256 |
Egyéb blokk titkosítások | ARIA , Blowfish , Camellia , CHAM , HIGHT , IDEA , Kalyna (128/256/512 ), LEA , RC5 , SEED , SHACAL-2 , Simon és Speck ( 64/128 ), SIMECK , Skipjack , SM4 , TEA , Threefish 256/512/1024), XTEA |
Blokk titkosítási módszerek | EKB , CBC , CTS , CFB , OFB , CTR |
Hitelesített titkosítási módok | CCM , GCM , EAX |
Blokk rejtjelezési sémák | PKCS#5 , PKCS#7 , nullák , egy és nullák , W3C padding |
Üzenet hitelesítési kódok | VMAC , HMAC , CMAC , CBC-MAC , DMAC , kétsávos MAC |
Kriptográfiai hash függvény | BLAKE2 (BLAKE2b és BLAKE2s), Keccak , SHA-1 , SHA-2 (SHA-224, SHA-256, SHA-384 és SHA-512), SHA3 , Tiger , WHIRLPOOL , RIPEMD (RIPEMD-128, RIPEMD-160) , RIPEMD-256 és RIPEMD-320) |
Jelszóérzékeny KDF | PBKDF1 és PBKDF2 a PKCS #5 -ből , PBKDF a PKCS #12-ből B. függelék |
Nyilvános kulcsú kriptográfia | RSA , DSA , ElGamal , Nyberg-Rueppel (NR), Rabin-Williams (RW), LUC , LUCELG , DLIES ( DHAES változatok ), ESIGN , curve25519 |
Nyilvános kulcsú rendszerek populációs sémái | PKCS#1 v2.0, OAEP , PSS , PSSR , IEEE P1363 EMSA2 és EMSA5 |
Elliptikus görbe kriptográfia | ECDSA , ECNR , ECIES , ECDH , ECMQV |
A könyvtár primitíveket is elérhetővé tesz számelméleti műveletekhez, mint például prímszámok generálása és tesztelése, véges mező aritmetika, beleértve a GF(p) és GF(2 n ); műveletek polinomokon [4] .
A FIPS 140-2 terminológiája szerint a Crypto++ könyvtár több chipből álló önálló modulnak minősül. A könyvtár 32 bites és 64 bites verziói megfelelnek a FIPS 140-2 1. szintű fizikai biztonsági és operációs rendszer követelményeinek.A Crypto++ könyvtár csak jóváhagyott kriptográfiai algoritmusokat tartalmaz. A Crypto++ termékben implementált nem jóváhagyott algoritmusok nem szerepelnek a FIPS validált DLL csomagban [10] .
A modulban lévő összes kulcs importálható magába a modulba, vagy belsőleg generálható egy véletlenszám-generátor ( PRNG ) segítségével. Maga a modul ezeket a kulcsokat csak a RAM -ban tárolja, állandó memóriában nem tárolja [10] .
A modul FIPS -kompatibilis kulcsokat állít elő egy jóváhagyott véletlenszám-generátor segítségével, a következő sorrendben:
A CMVP a következő kulcscsere-módszereket teszi lehetővé: RSA Key Transport és Diffie-Hellman Protocol .
A Crypto++ nem szab korlátozást az RSA és DH kulcsok hosszára vonatkozóan, ezek megfelelő hosszát úgy választják meg, hogy a szimmetrikus kulcsokat védjék a csere során.
Ezenkívül a CMVP a következő minimális kulcsméretre vonatkozó követelményekkel rendelkezik:
A modul nem tárolja és nem archiválja a kulcsokat állandó adathordozón [10] .
2007-ben, az ECRYPT tanulmány során nyolc kriptográfiai könyvtár munkáját elemezték, Ashraf Abushareh és Chris Kai megállapították, hogy a "Crypto++ 5.1" vezet a kriptográfiai primitívek és sémák támogatásában, de a leglassabb a vizsgált könyvtárak közül [4 ] .
2008-ban a Timo Bingmann által hét nyílt forráskódú biztonsági könyvtár segítségével 15 blokkos titkosításhoz végzett sebességtesztek azt mutatták, hogy a Crypto++ 5.5.2 volt a leghatékonyabb könyvtár két blokkrejtjelhez, és megegyezik a könyvtárak átlagos teljesítményével a többi részen. blokk titkosítások [11 ] .
A Crypto++ tartalmaz egy, a parancssorból elérhető automatizált benchmark szolgáltatást is (cryptest.exe b), melynek eredményei a Crypto++ 5.6.0 Benchmarks-ban [12] láthatók .
A 32 bites és 64 bites x86 architektúrákhoz elérhető sok más kriptográfiai könyvtárhoz hasonlóan a Crypto++ is tartalmaz felépítési rutinokat az AES -hez az AES-NI használatával . Az AES-NI-vel az AES teljesítménye nagymértékben javul: a 128 bites AES/GCM átviteli sebessége körülbelül 28,0 ciklusról bájtonként 3,5 ciklusra nő [13] [14] .
A Crypto++ 1.0 1995 júniusában jelent meg. A könyvtár architektúrája megváltozott az 5.0-s verzióban [15] [16] . 2009 márciusa óta tíz verzió jelent meg az 5.0 [17] architektúrával .
Változat | kiadás dátuma |
---|---|
Crypto++ 5.6.0 | 2009. március 15 |
Crypto++ 5.6.1 | 2010. augusztus 9 |
Crypto++ 5.6.2 | 2013. február 20 |
Crypto++ 5.6.3 | 2015. november 20 |
Crypto++ 5.6.4 | 2016. szeptember 11 |
Crypto++ 5.6.5 | 2016. október 11 |
Crypto++ 6.0.0 | 2018. január 22 |
Crypto++ 6.1.0 | 2018. február 22 |
Crypto++ 7.0.0 | 2018. április 8 |
Crypto++ 8.0.0 | 2018. december 28 |
Crypto++ 8.1.0 | 2019. február 11 |
Crypto++ 8.2.0 | 2019. április 28 |
A Theo Lawrence of Crypto++ összes korábbi, 1995-ig visszanyúló kiadásának listája megtalálható a felhasználói csoportok archívumában [18] .
A Crypto++ három 1. szintű tanúsítványt kapott a FIPS 140-2-től [10] .
Változat | Bizonyítvány | Dátumok |
---|---|---|
Crypto++ 5.0.4 | 343. bizonyítvány [5] | 2003-09-05, 2005-10-28 |
Crypto++ 5.2.3 | 562-es bizonyítvány [5] | 2005-07-29, 2005-08-24, 2005-10-28 |
Crypto++ 5.3.0 | 819. bizonyítvány [5] | 2007-08-13, 2007-08-17 |
A Crypto++-t 2016-ban a CMVP felvette a Történeti érvényesítési listára .
Az 5.6.1-es verziótól kezdve a Crypto++ csak nyilvános fájlokból és egyetlen nyílt forráskódú licencből áll a szerzői joghoz [19] .
A Crypto++ licence kissé szokatlan a nyílt forráskódú projektek között. Különbséget teszünk a könyvtár mint összeállítás (vagyis gyűjtemény), amely a Wei Dai szerzői joga alá tartozik, és a benne lévő egyedi fájlok között, amelyek nyilvánosak . A könyvtárat összeállításként szerzői jog védi annak érdekében, hogy bizonyos felelősségkizárásokat (garancia, export és szabadalmak tekintetében) helyezzen el a licencben, és hogy a forráskód formájában terjesztett Crypto++ forráskód formájában terjesztve a forrásmegjelöléseket és a nyilvános tulajdonra vonatkozó nyilatkozatokat érintetlenül hagyja. Az a tény, hogy az egyes fájlok nyilvánosak, azt jelenti, hogy törvényesen elhelyezhet kódszegmenseket, teljes fájlokat vagy kis fájlkészleteket (a méltányos használat által meghatározott korlátig) saját projektjébe, és bármit megtehet velük anélkül, hogy aggódnia kellene szerzői jog.
30px
Crypto++ webhely