Privacy Power-Up: Actualização de links de pinos de HTTP para HTTPS

Engenharia de Interesses
>

>

Engenharia de Interesses

>

19 de Novembro, 2019 – 4 min leia-se

Maria de Angelis | Summer 2019 Pinterest Engineer Intern

HTTPS deve estar em todo o lado. Seu site provavelmente roda sobre HTTPS, dando aos seus usuários uma conexão segura e criptografada, mas e quanto a todos os links de saída? Você pode garantir que todos eles usam HTTPS? Neste post, descrevemos as etapas que tomamos para atualizar os links Pin de HTTP para HTTPS, aproveitando a tecnologia Smarter Encryption da DuckDuckGo.

Por que HTTPS?

Embora o Pinterest seja executado inteiramente em HTTPS, não é o destino final para a maioria dos usuários. Como um lugar para os Pinners descobrirem e fazerem o que gostam, o Pinterest é a rampa de lançamento para chegar a outros sites. Como tal, temos a responsabilidade de redirecionar Pinners para sites HTTPS sempre que possível, incluindo a atualização de links de saída de Pins de HTTP para HTTPS quando possível e maximizando a porcentagem de tráfego através de HTTPS.

A razão pela qual qualquer tráfego HTTP existe é simplesmente porque muitos Pins foram criados dessa forma. Quando um Pinner clica em um link Pin, ele será enviado para o site HTTP se o conteúdo tiver sido criado com uma URL HTTP. No entanto, se o site suportar HTTPS, nós queremos enviar o usuário para a versão HTTPS. Decidimos fazer uma atualização online para HTTPS para que pudéssemos maximizar o resultado em todas as superfícies do Pinterest.

Após fazer melhorias, cerca de 80% do tráfego de saída é agora através de HTTPS, um aumento de mais de 30%.

A fim de garantir que esta mudança não interferisse em métricas importantes, fizemos um experimento para liberar estas mudanças para 1% dos usuários e compará-las a um grupo de controle equivalente. Descobrimos que não houve alteração nas métricas de benchmark Pinterest, por isso vamos continuar a lançar o experimento para mais usuários Pinterest.

>

>

>

Figure 1: Os Pinos desta placa Pinterest são codificados por cores pelo protocolo dos seus links. Os links HTTPS são verdes e os links HTTP são vermelhos. Quando a experiência é ativada na segunda figura, a maioria dos Pins vermelhos se tornam verdes porque seus links podem ser atualizados para HTTPS.

Smarter Encryption by DuckDuckGo

Para trabalhar da forma mais eficiente possível, integramos a tecnologia Smarter Encryption da DuckDuckGo, que usa automaticamente conexões criptografadas a websites quando disponíveis. DuckDuckGo foi o ajuste perfeito para nós porque eles mantêm uma lista abrangente de sites atualizáveis, gerada pela comparação das versões HTTP e HTTPS de um site, e adicionando um site à lista de atualização HTTPS se as duas versões forem idênticas. Nós podemos então regularmente puxar e ingerir sua lista.

Pinterest Architecture

Quando um usuário percorre o feed home do Pinterest, um pedido para buscar Pins é feito na camada API, que então chama o serviço Apache Thrift PinAndBoardService, que posteriormente busca Pins no banco de dados MySQL.

Figure 2: Uma representação simplificada da arquitetura de busca de Pins. A camada API faz uma requisição ao PinAndBoardService que então vai buscar o Pin do cache ou MySQL.

>

Overview

>

Para implementar a conversão do link do Pin, nós:

    >

  1. Trigger se deve ou não executar o experimento na camada API.
  2. Se o experimento estiver habilitado, chame um endpoint recém adicionado no PinAndBoardService na camada da API.
  3. No novo endpoint PinAndBoardService, verifique se a URL de um Pin começa com HTTP quando ele é baixado do banco de dados ou cache, neste caso ele deve ser atualizado para HTTPS, se possível.
  4. Cheque se um Pin pode ser atualizado para HTTPS removendo o domínio da URL e verifique se o domínio está contido em uma lista de domínios seguros fornecida pelo Smarter Encryption.
  5. Realize a conversão e atualize o link para que todos os serviços downstream recebam a versão segura.
  6. Nós escolhemos executar a conversão do link no PinAndBoardService ao invés de diretamente no banco de dados MySQL por várias razões:
  7. Se nós atualizássemos um link HTTP para HTTPS na camada MySQL e mais tarde nesse domínio não suportaria mais HTTPS, o link Pin quebraria e nós não seríamos capazes de rastrear a mudança já que o link teria sido permanentemente modificado. Para resolver este problema, poderíamos ter armazenado tanto o antigo como o novo link no MySQL, mas isso teria sido menos eficiente em termos de espaço do que a abordagem actual.
  8. Embora tenhamos de fazer a conversão sempre que um Pin é obtido da base de dados (independentemente de já ter sido actualizado), podemos geralmente evitar o fetching redundante porque os Pins estão altamente armazenados em cache.

Passos seguintes

A medida que avançamos, estamos explorando permanentemente a atualização de Pins para proteger links HTTPS na criação, um grande passo para o uso universal de HTTPS e aumento da segurança para todos os usuários em nossa plataforma. Estamos também a seguir os links que não podemos actualizar actualmente para potencialmente contribuir para a encriptação mais inteligente do DuckDuckGo, a fim de melhorar a experiência do utilizador para todos os utilizadores.

Acknowledgements

Muito obrigado a Emanuele Cesena (o meu fantástico mentor interno) e ao resto da equipa de Segurança do Pinterest! Também um grande obrigado ao CoreService, Storage &Caching, e equipas API por fornecerem suporte e DuckDuckGo por fornecerem acesso antecipado à sua tecnologia Smarter Encryption.

Deixe uma resposta

O seu endereço de email não será publicado.