O Proton Authenticator é uma aplicação de autenticação de dois fatores (2FA) de código aberto que gera códigos de palavra-passe única baseados no tempo (TOTP) no seu dispositivo, permitindo-lhe aceder a serviços online com uma camada extra de segurança. Utiliza a mesma encriptação bem testada que protege o resto do ecossistema Proton. O Proton Authenticator é único na medida em que foi concebido de raiz para estar disponível em quase todas as plataformas, preservando a sua privacidade e dando-lhe total propriedade sobre os seus dados.
Ao contrário de outras aplicações de autenticação, o Proton Authenticator protege os seus dados com encriptação de ponto a ponto, mesmo quando ativa a sincronização de dispositivos.
Isto significa que o Proton Authenticator impede qualquer pessoa, incluindo a própria Proton, de saber em que serviços online tem contas. Esta informação, tal como os seus e-mails ou histórico de navegação, pode revelar muito sobre si, e protegê-la é essencial para manter a sua privacidade.
A encriptação de ponto a ponto do Proton Authenticator garante que todas as operações criptográficas, incluindo a geração de chaves e encriptação de dados, são realizadas localmente no seu dispositivo. Isto significa que os seus dados não encriptados não podem ser acedidos pela Proton nem partilhados com terceiros. Os servidores da Proton nunca têm acesso aos seus dados não encriptados, incluindo a palavra-passe da sua Proton Account.
Modelo de encriptação
O Proton Authenticator adota uma abordagem abrangente para garantir a máxima segurança e privacidade para todos os dados do utilizador. Todas as operações criptográficas ocorrem localmente no seu dispositivo e quaisquer dados transmitidos para o servidor são sempre encriptados. A Proton nunca tem acesso às chaves de texto simples necessárias para desencriptar os dados do utilizador, tornando impossível para nós desencriptar dados armazenados, mesmo se solicitados por terceiros.
O Proton Authenticator utiliza a mesma encriptação avançada que usamos para autenticação no Proton Mail. Isto inclui a utilização de uma versão reforçada do protocolo Secure Remote Password (SRP) que oferece garantias de segurança mais fortes contra ataques man-in-the-middle (MITM). A nossa implementação significa que mesmo um atacante que consiga ler, modificar, atrasar, destruir, repetir ou fabricar mensagens arbitrariamente entre a Proton e um utilizador de forma indetetável está limitado a verificar apenas uma tentativa de palavra-passe por tentativa de início de sessão, o equivalente a tentar iniciar sessão diretamente. Desta forma, mesmo se a Proton for comprometida e agir maliciosamente, a informação equivalente à palavra-passe nunca é revelada.
Leia mais sobre a encriptação de autenticação da Proton
Encriptação de dados
O Proton Authenticator permite-lhe armazenar de forma segura os seus códigos 2FA, mesmo se não tiver uma Proton Account. Isto significa que o processo inicial de encriptação deve ser feito inteiramente no seu dispositivo local. Depois, se decidir que quer usar a sua Proton Account para sincronizar os seus códigos entre dispositivos, podemos usar as chaves criptográficas armazenadas nos servidores da Proton para realizar a sincronização.
A encriptação da Proton começa com o servidor da Proton a fornecer a versão encriptada da chave raiz que a aplicação de autenticação usa para encriptar os dados do utilizador. Cada utilizador Proton tem uma Chave de Utilizador assimétrica, e a Proton encripta esta Chave de Utilizador no seu dispositivo da seguinte forma:
- Contas que usam uma palavra-passe de conta única: A Proton encripta a Chave de Utilizador com um hash bcrypt da palavra-passe da conta e o sal da conta.
- Contas que usam a nossa funcionalidade de várias palavras-passe de conta: A Proton encripta a Chave de Utilizador com um hash bcrypt da palavra-passe da chave e o sal da conta.
O Proton Authenticator usa bcrypt e um sal de conta para criar um hash da sua palavra-passe como uma camada extra de proteção contra ataques de força bruta. Mesmo se um ator malicioso obtivesse acesso à base de dados da Proton, as chaves da sua conta estariam seguras contra ataques de força bruta.
Assim que ativar a sincronização, o Proton Authenticator gera uma Chave de Autenticador aleatória de 32 bytes. Esta chave é encriptada e assinada com a sua Chave de Utilizador, garantindo que apenas você a pode desencriptar — ninguém (nem mesmo a Proton) pode ler ou criar uma nova Chave de Autenticador. Assim que tiver acesso à Chave de Autenticador, todas as entradas no Proton Authenticator são encriptadas usando AES-GCM de 256 bits.

Como o Proton Authenticator não requer uma Proton Account, também precisamos de um esquema de encriptação separado que armazene os seus dados com segurança quando estes apenas existem no seu dispositivo. No final, a forma mais fácil de implementar isto é tratando a Proton Account como um fornecedor de chaves separado. No final, parece-se com o seguinte:

Para o armazenamento local de chaves no seu dispositivo, dependemos dos fornecedores de armazenamento seguro de chaves de cada sistema:
- Android: Armazenamos a chave de forma segura no Android Keystore(nova janela), que é depois usada para encriptar uma Chave Aleatória Local que armazenamos no sistema de ficheiros protegido da aplicação. Essa chave é usada para encriptar simetricamente todas as entradas do Proton Authenticator no seu dispositivo.
- iOS/iPadOS/macOS: Geramos uma Chave Aleatória Local e armazenamo-la no serviço Keychain(nova janela). Essa chave é usada para encriptar simetricamente todas as entradas do Proton Authenticator no seu dispositivo.
- Windows: Geramos uma Chave Aleatória Local e armazenamo-la no Windows Credential Manager(nova janela). Essa chave é usada para encriptar simetricamente todas as entradas do Proton Authenticator no seu dispositivo. Se a ligação ao WCM estiver indisponível, permitimos que o utilizador encripte a sua Chave Aleatória Local com uma palavra-passe.
- Linux: Geramos uma Chave Aleatória Local e armazenamo-la no Serviço Secreto DBUS disponível. Essa chave é usada para encriptar simetricamente todas as entradas do Proton Authenticator no seu dispositivo. Se nenhum serviço secreto DBUS estiver configurado, permitimos que o utilizador encripte a sua Chave Aleatória Local com uma palavra-passe.
Encriptação da cópia de segurança
Um dos principais pontos fortes do Proton Authenticator é que controla sempre os seus dados. Isto inclui permitir-lhe fazer periodicamente cópias de segurança dos seus códigos para o seu dispositivo local e definir uma palavra-passe que encripta estes dados sensíveis.
Para implementar esta cópia de segurança local segura, usamos a palavra-passe que forneceu para derivar uma chave de encriptação segura usando Argon2 como uma KDF (Função de Derivação de Chave). Uma KDF é usada para gerar chaves criptográficas a partir de entradas secretas, como palavras-passe introduzidas pelo utilizador, e o seu principal objetivo é melhorar a segurança tornando mais difícil e demorado para os atacantes decifrarem palavras-passe. Usando esta chave de encriptação gerada a partir da sua palavra-passe, serializamos todas as suas entradas e encriptamo-las para garantir que os seus dados permanecem encriptados de forma segura, mesmo se a cópia de segurança for alvo de uma fuga. E ao usar tecnologias bem conhecidas e abertas, é capaz de desencriptar os seus dados sem usar o Proton Authenticator, permitindo-lhe manter o controlo mesmo se decidir mudar para outra aplicação de autenticação.
Segurança através de transparência
Como todos os serviços Proton, o Proton Authenticator é de código aberto. Qualquer pessoa pode consultar o nosso código-fonte para verificar o nosso modelo de segurança. Tal como acontece com os nossos outros serviços, o Proton Authenticator também será submetido a auditorias de segurança independentes regulares, e partilharemos estes relatórios de auditoria publicamente assim que estiverem disponíveis.
Finalmente, para investigadores de segurança interessados, o Proton Authenticator é elegível para o programa de recompensas por deteção de erros da Proton que oferece prémios de até 100 000 $ pela descoberta de erros no software da Proton.






