O Projeto Paranoid
By Andre Smaira, in Tudo,
No último dia 24 de agosto (2022), funcionários da empresa Google anunciaram através dessa postagem, dos autores Pedro Barbosa, Engenheiro de Segurança da Google e Vice-Capitão do time de CTF Epic Leet Team (ELT), e Daniel Bleichenbacher, Engenheiro de Software da Google, seu novo projeto de criptografia chamado Paranoid (paranoia em tradução livre para o português).
Ela cita o repositório GitHub do projeto. É importante dizer que apesar de a biblioteca ter sido criada e ser mantida por membros do time de Segurança da Informação da Google, ele não é um produto oficial da Google.
Nesse artigo vamos verificar o que é e para que serve esse projeto através de uma tradução comentada da postagem acima citada.
O que é o Projeto Paranoid ?
Fonte: istockphoto.com
Paranoid é um projeto usado para detecção de vulnerabilidades conhecidas em artefatos criptográficos, como chaves públicas e assinaturas digitais. Isso é importante pois tais artefatos às vezes são gerados por implementações desconhecidas e/ou que não tenham código aberto para inspeção, as chamadas "caixas pretas" (ou do inglês black Boxes).
Black Box - Fonte: www.nsoftware.com
Em 2019, pensando na vunerabilidade ROCA, os autores da Paranoid se perguntaram se outras fraquezas não poderiam existir em artefatos gerados por caixas pretas e o que eles poderiam fazer para detectá-los e mitigá-los. Foi daí que surgiu a ideia de criar a Paranoid, uma biblioteca capaz de checar uma grande quantidade de artefatos criptográficos.
Ela foi criada baseando-se na literatura preexistente, que mostra que a geração de artefatos nem sempre é perfeita. A seguir temos quatro dessas referências:
Arjen K. Lenstra, James P. Hughes, Maxime Augier, Joppe W. Bos, Thorsten Kleinjung, and Christophe Wachter. (2012). Ron was wrong, Whit is right. Cryptology ePrint Archive, Paper 2012/064; Nadia Heninger, Zakir Durumeric, Eric Wustrow, and J. Alex Halderman. (2012). Mining Your Ps and Qs: Detection of Widespread Weak Keys in Network Devices. USENIX Associations; Daniel J. Bernstein, Yun-An Chang, Chen-Mou Cheng, Li-Ping Chou, Nadia Heninger, Tanja Lange, and Nicko van Someren. (2013). Factoring RSA keys from certified smart cards: Coppersmith in the wild. Cryptology ePrint Archive, Paper 2013/599; Joachim Breitner and Nadia Heninger. (2019). Biased Nonce Sense: Lattice Attacks against Weak ECDSA Signatures in Cryptocurrencies. Cryptology ePrint Archive, Paper 2019/023. Um exemplo mais recente, de 2022, é a CVE-2022-26320, encontrada por Hanno Böck, que evidencia ainda mais a necessidade de se detectar tais fraquezas. A Paranoid inclusive já encontrou de forma independente chaves fracas a partir do teste de Fermat. Os autores preveem que o projeto ainda tenha potencial para encontrar novas vulnerabilidades, já que estão generalizando as detecções ao máximo.
Chamada para contribuições
Fonte: opensource.guide
Abrindo o código da Paranoid, os autores objetivam aumentar sua transparência, permitindo que ela seja utilizada também por outros tipos de usuários como Autoridades de Certificação - CAs que precisam fazer checagens semelhantes) e, é claro, receber contribuição de pesquisadores externos. Então, estão fazendo uma chamada para tal, com a esperança de que ao encontrar uma nova vulnerabilidade, depois de reportá-la, incluam as checagens na Paranoid. Dessa forma, não só a Google, mas também o resto do mundo poderá responder de forma rápida às novas ameaças.
A biblioteca foi construída para ser leve computacionalmente falando, de forma que, mesmo trabalhando com números extremamente grandes, ainda faça sentido no contexto de produção do mundo real. Existem projetos com menos restrições para outros casos de aplicação, como o RsaCtfTool, geralmente usado em competições de segurança da informação do tipo CTF.
Os autores destacam que além de contribuições de novas checagens, também são muito bem-vindas eventuais melhorias nas checagens já existentes na biblioteca, cujo código está disponível no repositório do GitHub. Um dos exemplos que fornecidos é o das assinaturas ECDSA, cujos segredos são gerados por java.util.random, para as quais a biblioteca tem um modelo pré-computado capaz de detectar a vulnerabilidade na maioria dos casos dadas duas assinaturas secp256r1, mas que para curvas maiores como secp384r1, não foi possível pré-computar um modelo com efetividade tão significante.
Também foram implementadas checagens para chaves públicas RSA e EC, e fluxos de bits pseudo aleatórios, para o qual foram feitas algumas melhorias em relação ao teste NIST SP 800-22e incluídos alguns testes adicionais usando técnicas de redução de lattice.
Resultados preliminares
Resultados - Fonte: casadeimagem.com
Em caráter de teste, foram analisados artefatos criptográficos da Certificate Transparency (CT), que registra certificação de sites desde 2013 com o objetivo de torná-los transparentes e verificáveis, e cujo banco de dados possui mais de 7 bilhões de certificados.
No caso das checagens de chaves públicas EC e assinaturas ECDSA, não foram achados artefatos fracos no CT. Para as checagens de chaves públicas RSA com gravidades ALTA ou CRÍTICA, foram encontrados os seguintes resultados:
| Teste | CVEs relacionada | Gravidade | Número de artefatos afetados|
| CheckOpensslDenylist | CVE-2008-0166 | CRÍTICA | 3989 |
| CheckROCA | CVE-2017-15361 | ALTA | 2875 |
| CheckGCD | - | CRÍTICA | 1860 |
| CheckFermat | CVE-2022-26320 | CRÍTICA | 36 |
| CheckContinuedFractions | - | CRÍTICA | 16 |
| CheckBitPatterns | - | CRÍTICA | 6 |
| CheckPermutedBitPatterns | - | CRÍTICA | 6 |
| CheckKeypairDenylist | CVE-2021-41117 | CRÍTICA | 4 |
| CheckPollardpm1 | - | CRÍTICA | 1 |
Fonte: nakedsecurity.sophos.com
Alguns desses certificados já expiraram ou foram revogados. Os que ainda estão ativos (a maioria dos que falharam no CheckGCD), foram imediatamente reportados, de forma a manter a internet segura, conforme as políticas das Autoridades Certificadoras, como a do Let's Encrypt. Temos abaixo o trecho exemplo da Digicert:
> Certificate revocation and certificate problem reporting are an important part of online trust. Certificate revocation is used to prevent the use of certificates with compromised private keys, reduce the threat of malicious websites, and address system-wide attacks and vulnerabilities. As a member of the online community, you play an important role in helping maintain online trust by requesting certificate revocations when needed.
Ou em português:
> A revogação de certificados e a notificação de problemas em certificados são partes importantes da confiança na internet. A revogação de certificados é usada para evitar o uso de certificados com chaves privadas comprometidas, reduzir a ameaça de sites mal-intencionados e abordar ataques e vulnerabilidades. Como membro da comunidade web, você desempenha um papel importante ao ajudar a manter a confiança na internet solicitando revogações de certificados quando necessário.
Próximos passos
Próximos Passos - Fonte: sindipetro.org.br
Os autores planejam continuar analisando o CT, e, agora com ajuda de contribuição externa, criar novas checagens e otimizar as já existentes. Estão também acompanhando de perto o processo Post-Quantum Cryptography Standardization do NIST para novos algoritmos que possam fazer sentido a implementação de checagens.
Novas implementações de criptografia trazem a possibilidade de novas falhas, portanto é importante que a Paranoid seja capaz de detectá-las, evoluindo sempre.
- Read more...
-
- 2,178 views