Monitoração de Senhas
A Monitoração de Senhas é um recurso que compara as senhas armazenadas nas chaves de Preenchimento Automático de Senha do usuário com uma lista continuamente atualizada e selecionada de senhas notoriamente expostas em vazamentos de diversas organizações on-line. Se o recurso estiver ativado, o protocolo de monitoração compara continuamente as chaves de Preenchimento Automático de Senha do usuário com a lista de seleções.
Como a monitoração funciona
O dispositivo do usuário verifica continuamente todas as entradas, umas contra as outras, nas senhas do usuário, fazendo consultas em um intervalo que independe das senhas do usuário ou dos padrões de uso do gerenciador de senhas. Isso ajuda a garantir que os estados de verificação permaneçam atualizados com a lista atual de seleções de senhas vazadas. Para ajudar a impedir o vazamento de informações relacionadas a quantas senhas únicas o usuário tem, os pedidos são feitos em lote e em paralelo. Um número fixo de senhas é verificado em paralelo a cada verificação e, caso o usuário tenha um número menor do que esse, senhas aleatórias são geradas e adicionadas às consultas para compensar tal diferença.
Como as senhas são correspondidas
A correspondência de senhas é feita em um processo de duas partes. As senhas vazadas mais comumente ficam contidas em uma lista local no dispositivo do usuário. Se houver uma ocorrência de senha nessa lista, o usuário é notificado imediatamente sem nenhuma interação externa. Isso é projetado para garantir que nenhuma informação seja vazada sobre as senhas que um usuário tenha e estejam sujeitas a um risco maior devido a uma violação de senhas.
Se a senha não constar da lista de senhas mais frequentes, ela é comparada às senhas vazadas com menor frequência.
Comparação das senhas do usuário com uma lista de seleções
A verificação da ocorrência de uma senha que não esteja na lista local envolve alguma interação com servidores da Apple. Para ajudar a garantir que senhas legítimas de usuários não sejam enviadas à Apple, uma forma de interseção do conjunto criptográfico privado é implantado para comparar as senhas do usuário com um grande conjunto de senhas vazadas. Isso é projetado para garantir que, no caso de senhas com menor risco de violação, poucas informações sejam compartilhadas com a Apple. No caso da senha de um usuário, essas informações limitam-se a um prefixo de 15 bits de um hash criptográfico. A remoção das senhas mais frequentemente vazadas desse processo interativo, com o uso da lista local das senhas mais comumente vazadas, reduz o delta da frequência relativa das senhas nos baldes de serviços da web, o que torna impraticável deduzir senhas de usuário a partir dessas pesquisas.
O protocolo subjacente particiona a lista de senhas selecionadas — no momento deste escrito esta lista contém aproximadamente 1,5 bilhão de senhas — em 215 baldes diferentes. O balde ao qual uma senha pertence é baseado nos primeiros 15 bits do valor do hash SHA256 da senha. Adicionalmente, cada senha vazada, ou pw, é associada a um ponto de curva elíptica na curva NIST P256: Ppw = ⍺·HSWU(pw), onde ⍺ é uma chave aleatória secreta conhecida somente pela Apple e HSWU é uma função oráculo aleatória que mapeia senhas a pontos de curva com base no método Shallue-van de Woestijne-Ulas. Essa transformação é projetada para ocultar computacionalmente os valores de senhas e ajuda a impedir o desvendamento de senhas recém-vazadas através da Monitoração de Senhas.
Para calcular a interseção do conjunto privado, o dispositivo do usuário usa λ, o prefixo de 15 bits do SHA256(upw), onde upw é uma das senhas do usuário, para determinar o balde ao qual a senha do usuário pertence. O dispositivo gera sua própria constante aleatória, β, e envia o ponto Pc = β·HSWU(upw) para o servidor, junto com um pedido do balde correspondente a λ. Aqui, β oculta informações sobre a senha do usuário e limita a λ as informações da senha expostas à Apple. Por fim, o servidor usa o ponto enviado pelo dispositivo, calcula ⍺Pc = ⍺β·HSWU(upw) e retorna o resultado junto com o balde de pontos apropriado — Bλ={ Ppw | SHA256(pw) começa com prefixo λ} — para o dispositivo.
As informações retornadas permitem que o dispositivo calcule B’λ={β·Ppw | Ppw∈Bλ} e certifica que a senha do usuário foi vazada se ⍺Pc ∈B'λ.