file-certificatePinagem do SSL

O SSL Pinning, também conhecido como Certificate Pinning, é uma técnica de segurança implementada para assegurar que uma aplicação estabeleça conexões seguras somente com servidores previamente autorizados. Essa verificação é realizada durante a negociação SSL/TLS, validando o certificado digital ou, no caso do iOS, a chave pública associada ao certificado apresentado pelo servidor.

A pinagem de SSL atua como um mecanismo adicional de validação, garantindo que apenas o certificado legítimo ou sua chave pública previamente configurada seja aceita, independentemente das configurações de confiança do sistema operacional. Com isso, a técnica inibe tentativas de interceptação, captura ou modificação das requisições trocadas com o backend, reduzindo significativamente o risco de ataques do tipo Man-in-the Middle (MITM).

No ambiente iOS, o MAD utiliza Public Key Pinning, validando o hash da chave pública do certificado (SPKI – Subject Public Key Info) apresentado pelo servidor. Durante o estabelecimento da conexão, a chave pública recebida é comparada com os valores previamente configurados na aplicação. A comunicação só é considerada válida quando ocorre correspondência com um dos pins configurados.

Para que o mecanismo funcione corretamente, é necessário identificar previamente todos os domínios utilizados pelas APIs do aplicativo, listá-los e configurá-los explicitamente na política de pinagem, garantindo que todas as comunicações sensíveis estejam devidamente protegidas.

O Public Key Pinning é o método recomendado e padrão no iOS. Nesse modelo:

• É fixado o hash da chave pública (SPKI) do certificado. • Essa abordagem permite a renovação do certificado sem a necessidade de atualização do aplicativo, desde que o mesmo par de chaves pública e privada seja mantido.

Para configuração Public Key Pinning:

<key>ssl-pinning</key>
<true.>
    <dict>
        <key>*.example.comr</key>
        <string>4d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM>
    </dict>
<key>ssl-pinning-fallback<key>
<true/>

Atualizado