Crypto ++ - Crypto++

Crypto ++
Crypto ++ - logo.png
Desenvolvedor (s) originalmente Wei Dai , o projeto Crypto ++ desde 2015
lançamento inicial 1995
Versão estável
8.6 / 24 de setembro de 2021 ; 0 dias atrás ( 2021-09-24 )
Repositório
Escrito em C ++
Sistema operacional Plataforma cruzada
Modelo Biblioteca de segurança
Licença Boost Software License (anteriormente Licença Crypto ++ ) / arquivos individuais para o domínio público
Local na rede Internet www .cryptopp .com

Crypto ++ (também conhecido como CryptoPP , libcrypto ++ e libcryptopp ) é uma biblioteca de classes C ++ gratuita e de código aberto de algoritmos e esquemas criptográficos escritos por Wei Dai . Crypto ++ tem sido amplamente utilizado na academia, projetos de estudantes, projetos de código aberto e não comerciais, bem como empresas. Lançada em 1995, a biblioteca oferece suporte total às arquiteturas de 32 e 64 bits para muitos dos principais sistemas operacionais e plataformas, incluindo Android (usando STLport ), Apple (Mac OS X e iOS), BSD , Cygwin , IBM AIX e S / 390 , Linux , MinGW , Solaris , Windows , Windows Phone e Windows RT . O projeto também oferece suporte à compilação usando as bibliotecas de tempo de execução C ++ 03, C ++ 11, C ++ 14 e C ++ 17; e uma variedade de compiladores e IDEs , incluindo Borland Turbo C ++ , Borland C ++ Builder , Clang , CodeWarrior Pro , GCC (incluindo GCC da Apple), Intel C ++ Compiler (ICC) , Microsoft Visual C / C ++ e Sun Studio .

Crypto ++ 1.0 foi lançado em junho de 1995, mas o download não está mais disponível. O lançamento do Crypto ++ 1.0 foi retirado devido à RSA Data Security, Inc reivindicar direitos autorais sobre o algoritmo RSA . Todas as outras versões da biblioteca estão disponíveis para download.

Algoritmos

O Crypto ++ normalmente fornece implementações criptográficas completas e geralmente inclui esquemas menos populares e usados ​​com menos frequência. Por exemplo, Camellia é uma cifra de bloco aprovada por ISO / NESSIE / IETF aproximadamente equivalente a AES , e Whirlpool é uma função hash aprovada por ISO / NESSIE / IETF aproximadamente equivalente a SHA ; ambos estão incluídos na biblioteca.

Além disso, a biblioteca Crypto ++ às vezes disponibiliza algoritmos e implementações propostos e inovadores para estudo pela comunidade criptográfica. Por exemplo, VMAC , um código de autenticação de mensagem baseado em hash universal , foi adicionado à biblioteca durante seu envio para a Internet Engineering Task Force (CFRG Working Group) ; e as curvas Brainpool, propostas em março de 2009 como um Internet Draft no RFC 5639, foram adicionadas ao Crypto ++ 5.6.0 no mesmo mês.

Algoritmos e implementações Crypto ++
Primitivo ou Operação Algoritmos ou Implementações
Geradores de números pseudoaleatórios LCG , KDF2 , Blum Blum Shub , ANSI X9.17 , Mersenne Twister , RDRAND e RDSEED
Cifras de fluxo de alta velocidade ChaCha8 / 12/20 , ChaCah20 (versão IETF), HC-128 e HC-256 , Panama , Rabbit , Salsa20 , SOSEMANUK , XSalsa20
AES e AES candidatos Rijndael ( seleção AES ), RC6 , MARS , Twofish , Serpent , CAST-256
Outras cifras de bloco ARIA , Blowfish , Camellia , CHAM , HIGHT, IDEA , Kalyna (128/256/512), LEA , RC5 , Triple-DES (2 e 3 teclas), SEED , SHACAL-2 , Simon (64/128), Speck (64/128), SIMECK, Skipjack , SM4 , TEA , Threefish (256/512/1024), XTEA
Bloquear modos de operação de cifra ECB , CBC , CTS , CFB , OFB , CTR , XTS
Modos de criptografia autenticados CCM , GCM , EAX , ChaCha20Poly1305
Esquemas de preenchimento de cifras de bloco PKCS # 5 , PKCS # 7 , Zeros , Um e zeros , Preenchimento W3C
Códigos de autenticação de mensagem VMAC , HMAC , CMAC , CBC-MAC , DMAC , Two-Track-MAC
Função hash criptográfica BLAKE2 (BLAKE2b e BLAKE2s), Keccak , SHA-1 , SHA-2 (SHA-224/256/384/512), SHA3 , LSH (256/512) , Tiger , WHIRLPOOL , RIPEMD (128/160/256/320 )
Funções de derivação de chave baseadas em senha PBKDF1 e PBKDF2 de PKCS # 5 , PBKDF de PKCS # 12 apêndice B , Krawczyk e Eronen's HKDF
Criptografia de chave pública RSA , DSA , ElGamal , Nyberg-Rueppel (NR), Rabin-Williams (RW), LUC , LUCELG , DLIES (variantes de DHAES ), ESIGN , curva 25519
Esquemas de preenchimento para sistemas de chave pública PKCS # 1 v2.0, OAEP , PSS , PSSR , IEEE P1363 EMSA2 e EMSA5
Esquemas de acordos chave Diffie – Hellman (DH), Unified Diffie – Hellman (DH2), Menezes – Qu – Vanstone (MQV), MQV com hash (HMQV), MQV com hash total (FHMQV), LUCDIF , XTR-DH , x25519
Criptografia de curva elíptica ECDSA , ECNR , ECIES , ECDH , ECMQV , Ed25519
Compartilhamento secreto Esquema de compartilhamento de segredo de Shamir , algoritmo de dispersão de informações de Rabin (IDA)

A biblioteca também disponibiliza primitivas para operações teóricas numéricas, como inteiros de multiprecisão rápidos; geração e verificação de números primos; aritmética de campos finitos, incluindo GF (p) e GF (2 n ); curvas elípticas; e operações polinomiais.

Além disso, a biblioteca retém uma coleção de algoritmos inseguros ou obsoletos para compatibilidade com versões anteriores e valor histórico: MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL 3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2, MAIS SEGURO, DE 3 VIAS, GOST, SHARK, CAST-128 e Square.

atuação

Em um documento do workshop ECRYPT de 2007 com foco em implementações de chave pública de oito bibliotecas , Ashraf Abusharekh e Kris Kaj descobriram que "Crypto ++ 5.1 [sic] lidera em termos de suporte para primitivos e esquemas criptográficos, mas é a mais lenta de todas as bibliotecas investigadas."

Em 2008, testes de velocidade realizados por Timo Bingmann usando sete bibliotecas de segurança de código aberto com 15 cifras de bloco , Crypto ++ 5.5.2 foi a biblioteca de melhor desempenho em duas cifras de bloco e não ficou abaixo do desempenho médio da biblioteca nas demais cifras de bloco .

Crypto ++ também inclui um recurso de auto-benchmarking, disponível na linha de comando ( cryptest.exe b ), cujos resultados estão disponíveis em Crypto ++ 5.6.0 Benchmarks .

Assim como muitas outras bibliotecas criptográficas disponíveis para arquiteturas x86 de 32 e 64 bits , Crypto ++ inclui rotinas de montagem para AES usando AES-NI . Com o AES-NI, o desempenho do AES melhora drasticamente: o rendimento do AES / GCM de 128 bits aumenta de aproximadamente 28,0 ciclos por byte para 3,5 ciclos por byte.

Lançamentos de versão

Crypto ++ 1.0 foi lançado em junho de 1995. Desde seu lançamento inicial, a biblioteca teve quase duas dezenas de revisões, incluindo uma mudança arquitetônica na versão 5.0. Houve dez lançamentos usando a arquitetura da versão 5.0 desde março de 2009.

Lançamentos de Crypto ++ desde a versão 6.0
Versão Data de lançamento
Crypto ++ 6.0.0 22 de janeiro de 2018
Crypto ++ 6.1.0 22 de fevereiro de 2018
Crypto ++ 7.0.0 8 de abril de 2018
Crypto ++ 8.0.0 28 de dezembro de 2018
Crypto ++ 8.1.0 11 de fevereiro de 2019
Crypto ++ 8.2.0 28 de abril de 2019
Crypto ++ 8.3.0 20 de dezembro de 2020
Crypto ++ 8.4.0 2 de janeiro de 2021
Crypto ++ 8.5.0 7 de março de 2021
Crypto ++ 8.6.0 24 de setembro de 2021

A compilação de versões anteriores do Crypto ++ de Lawrence Teo, datando de 1995, pode ser encontrada nos arquivos do grupo de usuários.

Validações FIPS

Crypto ++ recebeu três validações de módulo do Federal Information Processing Standard (FIPS) 140-2 Nível 1 sem problemas de pós-validação.

Módulos Crypto ++ validados por FIPS
Versão Certificado datas
Crypto ++ 5.0.4 Certificado 343 05/09/2003, 28/10/2005
Crypto ++ 5.2.3 Certificado 562 29/07/2005, 24/08/2005, 28/10/2005
Crypto ++ 5.3.0 Certificado 819 13/08/2007, 17/08/2007

Crypto ++ foi movido para a Lista de Validação Histórica do CMVP em 2016. A mudança significa que a biblioteca não é mais validada.

Licenciamento

A partir da versão 5.6.1, Crypto ++ consiste apenas em arquivos de domínio público , com direitos autorais de compilação e uma única licença de código aberto para os direitos autorais de compilação:

A Licença do Crypto ++ é um tanto incomum entre os projetos de código aberto. É feita uma distinção entre a biblioteca como uma compilação (ou seja, coleção), que é protegida por direitos autorais por Wei Dai , e os arquivos individuais nela, que são de domínio público . A biblioteca é protegida por copyright como uma compilação para colocar certas isenções de responsabilidade (em relação à garantia, exportação e patentes) na licença e para manter as atribuições e declarações de domínio público intactas quando Crypto ++ é distribuído na forma de código-fonte. O fato de arquivos individuais serem de domínio público significa que legalmente você pode colocar segmentos de código, arquivos inteiros ou pequenos conjuntos de arquivos (até o limite definido pelo uso justo) em seu próprio projeto e fazer o que quiser com eles, sem se preocupar com o direito autoral.

Veja também

Referências

links externos