MASTG-TEST-0209: Tamanhos de Chave Insuficientes
Visão Geral¶
Neste caso de teste, buscaremos o uso de tamanhos de chaves insuficientes em aplicativos iOS. Para isso, precisamos focar nas estruturas e bibliotecas criptográficas disponíveis no iOS e nos métodos utilizados para gerar chaves criptográficas.
- CommonCrypto: A função
CCCrypté usada para criptografia e descriptografia simétrica e especifica o tamanho ou comprimento da chave em seu quinto parâmetrokeyLength. - Security: A função
SecKeyCreateRandomKeyé usada para gerar uma chave aleatória utilizando certos atributos, incluindokSecAttrKeyTypeekSecAttrKeySizeInBits. A funçãoSecKeyGeneratePairestá obsoleta no iOS 16. - CryptoKit: As classes
AES.GCMeChaChaPolysão utilizadas para criptografia e descriptografia simétrica.
Como geralmente não se geram chaves diretamente no CryptoKit (a biblioteca faz isso automaticamente), focaremos nas bibliotecas CommonCrypto e Security neste teste.
Etapas¶
- Execute uma ferramenta de análise estática como radare2 para iOS no binário do aplicativo, ou utilize uma ferramenta de análise dinâmica como Frida para iOS, e busque por usos das funções criptográficas que geram chaves.
Observação¶
A saída deve conter o código desmontado das funções que utilizam CCCrypt ou outras funções criptográficas.
Avaliação¶
O caso de teste falha se for possível encontrar o uso de tamanhos de chaves insuficientes no código-fonte. Por exemplo, um tamanho de chave de 1024 bits é considerado insuficiente para criptografia RSA, e um tamanho de chave de 128 bits é considerado insuficiente para criptografia AES considerando ataques de computação quântica.
Demos¶
MASTG-DEMO-0011: Usos de Tamanho Insuficiente de Chave em SecKeyCreateRandomKey com r2