Crypto++

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. december 20-án felülvizsgált verziótól ; az ellenőrzéshez 31 szerkesztés szükséges .
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] .

Algoritmusok

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] .

Crypto++ algoritmusok és megvalósításaik
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] .

Kriptográfiai kulcskezelés

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] .

Kulcsgenerálás [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:

Kulcscsere [10]

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:

Kulcstár

A modul nem tárolja és nem archiválja a kulcsokat állandó adathordozón [10] .

Teljesítmény

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] .

Verziókiadások

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 .

A Crypto++ kiadása az 5.6-os verzió óta
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] .

FIPS ratifikációk

A Crypto++ három 1. szintű tanúsítványt kapott a FIPS 140-2-től [10] .

A FIPS által ratifikált Crypto++ modulok
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 .

Licenc

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

Lásd még

Jegyzetek

  1. https://cryptopp.com/release870.html
  2. J. Kelsey, B. Schneier, D. Wagner, C. Hall. Kriptanalitikus támadások álvéletlen számgenerátorok ellen  // Gyors szoftvertitkosítás, 5. nemzetközi eljárás. - 1998. - S. 8 . Az eredetiből archiválva : 2014. december 30.
  3. Yinglian Xie David O'Hallaron Michael K. Reiter. A magánélet védelme a kulcsérték-kereső rendszerekben  // 2006 22. éves számítógép-biztonsági alkalmazások konferencia (ACSAC'06): konferencia. - Miami Beach, FL, USA, 2006. - 17. o . — ISBN 0-7695-2716-7 . — ISSN 1063-9527 . - doi : 10.1109/ACSAC.2006.43 . Archiválva az eredetiből 2019. június 17-én.
  4. ↑ 1 2 3 Ashraf Abusharekh Kris Gaj. SZOFTVERKÖNYVTÁROK ÖSSZEHASONLÍTÓ ELEMZÉSE NYILVÁNOS KULCSKRIPTOGRÁFIÁHOZ (nem elérhető hivatkozás) P.10,11,15,29. George Mason Egyetem Elektromos és Számítástechnikai Tanszék (2007). Letöltve: 2019. december 24. Az eredetiből archiválva : 2019. december 24. 
  5. ↑ 1 2 3 4 Jeffrey Walton. Crypto++: Múltbeli ellenőrzések és jövőbeli útmutatások, 4., 5., 7. o. (2017). Letöltve: 2019. december 24. Az eredetiből archiválva : 2019. december 24.
  6. Arsi Hartikainen. Whirlpool hashing függvény P. 16. Lappeenranta University of Technology (2005). Letöltve: 2020. február 4. Az eredetiből archiválva : 2020. február 4..
  7. Japán első 128 bites „Camellia” blokkrejtje, amelyet új szabványos titkosítási algoritmusként hagytak jóvá az interneten , PHYS.ORG  (2005. július 20.). Az eredetiből archiválva : 2019. december 19. Letöltve: 2020. február 5.
  8. M. Lochter. Elliptikus görbe kriptográfia (ECC) Brainpool szabvány  //  IETF : RFC. - 2010. - 4. o . — ISSN 2070-1721 . Archiválva az eredetiből: 2020. február 15.
  9. Crypto++ 5.6.0 kiadási megjegyzések . Crypto++ weboldal . Letöltve: 2010. augusztus 8. Az eredetiből archiválva : 2021. február 24.
  10. ↑ 1 2 3 4 5 6 Wei Dai. BIZTONSÁGI POLITIKA . Crypto++ P. 2,9,10. NIST (2007-8-7). Letöltve: 2020. február 1. Az eredetiből archiválva : 2019. december 19.
  11. Timo Bingmann. A nyílt forráskódú kriptográfiai könyvtárak és fordítói jelzők gyorstesztje és  összehasonlítása // Panthema.net. - 2008. - S. 1 . Az eredetiből archiválva : 2020. január 22.
  12. Crypto++ 5.6.0 referenciaértékei . Crypto++ webhely (2009). Letöltve: 2010. augusztus 10. Az eredetiből archiválva : 2008. október 15..
  13. A MIPS végtelenségének téves észlelése és hogyan lehet gyors AES-hívásokat kapni? . Crypto++ felhasználói csoport (2010). Letöltve: 2010. augusztus 11. Az eredetiből archiválva : 2012. november 9..
  14. Crypto++ 5.6.0 Pentium 4 benchmarks . Crypto++ webhely (2002). Letöltve: 2010. augusztus 10. Az eredetiből archiválva : 2010. szeptember 19..
  15. Közlemény. Crypto++ 5.0 béta elérhető (2002) . Crypto++ levelezőlista . Letöltve: 2010. augusztus 9. Az eredetiből archiválva : 2012. november 9..
  16. Közlemény. Crypto++ 5.0 frissítés . Crypto++ levelezőlista (2002). Letöltve: 2010. augusztus 9. Az eredetiből archiválva : 2012. november 9..
  17. Crypto++ Announcements List (2010) . sourceforge.net. Letöltve: 2010. augusztus 14. Az eredetiből archiválva : 2011. június 23.
  18. L. Theo. Az előző verziók megjelenési dátumai . Crypto++ levelezőlista (2002). Letöltve: 2010. augusztus 9. Az eredetiből archiválva : 2012. november 9..
  19. Összeállítás szerzői joga a Crypto++-hoz (2003) . Crypto++ weboldal . Letöltve: 2010. augusztus 15. Az eredetiből archiválva : 2010. július 26..

Linkek

Irodalom