Tudo bem.
Então, aqui estamos de volta à nossa configuração.
E, desta vez, não estamos falando do smartphone.
Portanto, um navegador da Web que está fazendo solicitações HTTPS, estamos falando de um aplicativo que
está fazendo uma solicitação HBS e pode haver um pouco de diferença.
É também por isso que escolhi o título apimentado Certificate Pinning Better than HBS.
E voltaremos a esse assunto mais adiante.
Por enquanto, vamos dar uma olhada neste aqui.
Então, temos o nosso smartphone e o smartphone agora é um APK do explorador de aplicativos, e esse aplicativo deseja
executar uma solicitação de HBS.
Portanto, no back-end, esse exemplo ponto com agora está apresentando o certificado se um cliente se conectar
a ele.
Tudo bem, já vimos que isso não é problema algum.
Simplesmente apresentamos nosso certificado e também instalamos o certificado no smartphone.
Com isso, estaremos prontos para inspecionar, analisar e manipular esse tráfego agora mesmo.
Certo.
Bem, vamos ver.
Portanto, o aplicativo quer fazer essa solicitação agora mesmo, e o aplicativo nos diz simplesmente que não.
E eu quero dizer, espere, o quê?
Por quê?
Portanto, estamos voltando a esse aplicativo aqui.
Ei, você nem mesmo tentou procurar o certificado que estou apresentando a você agora, e o aplicativo simplesmente
responde.
Você, mesmo que tenha instalado sorrateiramente seu certificado nos smartphones ou no armazenamento do
usuário ou do sistema.
Eu nem mesmo confiarei em você neste momento, portanto, saia do meu caminho.
Na última parte, quero dizer, deveria ter sido uma voz um pouco mais grave, mas acho que entendemos o objetivo
desse aplicativo.
Este aplicativo está nos dizendo: saia do meu caminho neste aplicativo para que ele não confie no armazenamento do sistema
ou no armazenamento do usuário.
Com relação aos certificados, podemos pensar nisso como o aplicativo mais paranoico que estamos enfrentando
no momento.
Tudo bem.
Está bem.
Então, como esse aplicativo está verificando se está conectado.
Sim, no sistema falso ou no sistema real?
Bem, há duas opções para o desenvolvedor no momento para conseguir isso aqui.
A primeira é que o desenvolvedor simplesmente inclui o certificado no próprio aplicativo.
Portanto, dentro dos ativos, do armazenamento bruto ou de qualquer outra coisa, o desenvolvedor quer colocar isso neste
momento.
Portanto, se esse certificado foi incluído no aplicativo, o desenvolvedor está fazendo uma solicitação de serviço
da Web em sua solicitação e ele prova se esse certificado correspondente ao ponto de extremidade corresponde a esse certificado aqui,
pois há alguns recursos importantes no certificado que podem ser verificados e que não podem ser falsificados
por um invasor.
Portanto, essa é a primeira abordagem, como o desenvolvedor pode verificar se o endpoint é realmente o servidor do
desenvolvedor.
Não é algo sorrateiro como um atacante aqui, OC.
A segunda abordagem diz respeito a algumas partes do certificado que não podem ser falsificadas por um invasor.
Por exemplo, a assinatura que está sendo gerada de forma complexa.
Há muitas coisas envolvidas para fazer isso e há muitas coisas criptográficas que verificam se essa
assinatura aqui não pode ser falsificada por um invasor.
Portanto, um invasor não pode ter seu próprio certificado e a mesma assinatura.
Esse tipo de ataque é chamado de colisão de hash.
E, sim, foi comprovado no passado que isso foi bem-sucedido, mas apenas teoricamente e somente
para algoritmos fracos, como SHA um ou NDI cinco.
O desenvolvedor escolheu um algoritmo adequado.
Então, isso não pode ser feito agora.
Talvez isso seja possível daqui a 1015 anos, quando tivermos alguns computadores quânticos sofisticados, mas não agora.
Portanto, o desenvolvedor pode confiar na assinatura.
Se esse valor estiver representado no certificado, ele é o certificado do desenvolvedor.
Portanto, essa é a segunda abordagem, como o desenvolvedor pode verificar se esse é o endpoint correspondente.
E agora vamos voltar à pergunta picante.
Essa abordagem não é melhor do que o HTTPS?
Ou seja, mesmo que o invasor consiga colocar o próprio certificado no armazenamento do sistema, o aplicativo
não o aceita.
Então, pelo menos parece estar mais seguro agora, não é?
Bem, não quero me aprofundar muito nessa questão, mas temos que considerar algumas coisas.
A instalação de um certificado em um smartphone aqui exige o envolvimento de várias tarefas.
Isso é algo que não acontece de repente.
Portanto, há muitas barreiras em nosso caminho para realizar essa tarefa, e agora podemos argumentar que também temos
as mesmas barreiras em relação à fixação de certificados para que um invasor possa contornar a fixação de certificados.
E você também verá como podemos fazer isso mais tarde.
E isso significa que não importa se você deseja corrigir a fixação de certificados em um aplicativo aqui ou instalar um
certificado no smartphone, há alguns conceitos de segurança realmente fortes em nosso caminho que precisam
ser contornados e o esforço pode ser o mesmo.
Mas, para ser sincero, meu ponto de vista é o seguinte: a fixação de certificados não enfraquece a segurança
do seu aplicativo e, portanto, também não faz mal implementá-la.
Isso também não significa que agora está sendo mais seguro do que uma conexão HTTPS normal, mas, no geral, eu recomendaria
a implementação de uma fixação de certificado.
Esse é o meu ponto de vista.
Mas é claro que essa deve ser a visão correta.
Então, no final, quero dizer, ele diminui.
Se você puder representar esse tópico com sua opinião de forma lógica para o cliente, então, quero dizer, está tudo
bem com relação a isso.
Portanto, se você tiver alguma dúvida em relação a esse tópico, escreva-me uma mensagem.
Ficarei muito feliz em discutir isso com você.
Tudo bem.
Ok, legal.
Então, agora vimos o que é a fixação de certificado e vimos que a simples instalação do nosso certificado no smartphone
não resolve esse problema no momento.
Portanto, vamos dar uma olhada em como podemos contornar isso.
Tudo bem.
Está bem.
E o bom desse caso é que, se você falar sobre ele, já descobrimos qual é a solução.
Então, como podemos contornar essa fixação de certificado aqui?
Agora, vamos recapitular um pouco isso.
O aplicativo não confia no sistema ou no armazenamento do usuário do certificado interno.
O armazenamento desse smartphone é um fracasso absoluto.
Portanto, o desenvolvedor precisa adicionar seu próprio certificado ao aplicativo do smartphone,
como este aqui.
O que o desenvolvedor precisa fazer é codificar a impressão digital do certificado correto em seu próprio aplicativo.
Portanto, o desvio para este é, suponho, a substituição desses valores.
Com certeza.
E é exatamente isso que queremos fazer.
Portanto, descompilamos esse aplicativo.
E, primeiro, temos que descobrir como a fixação do certificado está sendo estabelecida.
Se não for um certificado, poderemos localizar o certificado diretamente no diretório de ativos ou de todos os diretórios.
E, se for a impressão digital, também veremos como podemos chegar a esse ponto rapidamente, revertendo esse aplicativo
para determinadas palavras-chave.
Não importa o que seja, ele deve ser incluído no código do aplicativo.
Portanto, nossa abordagem é simplesmente descompilar, reverter e, em seguida, corrigir esse código de aplicativo.
E sabe de uma coisa?
Agora somos especialistas em sorrisos.
Portanto, isso não é absolutamente nenhum problema para nós no momento.
Legal, não é?
Portanto, eu sugeriria que terminássemos essa parte da teoria aqui.
E no próximo vídeo, teremos alguns exercícios práticos.
Apresentarei a você esses dois tipos de certificados, pinturas.
Escrevi alguns aplicativos realmente incríveis relacionados a esse.
Está bem.
Eles têm um pouco de falta de interface do usuário, mas com relação à implementação, é exatamente isso que você
enfrenta aqui fora.
Portanto, no mundo real, essas são duas aplicações do mundo real e, por isso, estou ansioso
para vê-lo no próximo vídeo.