A Revolut lança passkeys de forma discreta. Saiba mais sobre o impacto na segurança bancária, na experiência do utilizador e nas áreas a melhorar na nossa análise completa.
Vincent
Created: July 15, 2025
Updated: July 16, 2025
See the original blog version in English here.
Want to learn how top banks deploy passkeys? Get our 80-page Banking Passkeys Report (incl. ROI insights). Trusted by JPMC, UBS & QNB.
Get ReportNo setor da banca digital, a necessidade de uma segurança robusta sem sacrificar a experiência do utilizador levou a soluções inovadoras. Entre estas, as passkeys destacam-se como o novo padrão para a autenticação de utilizador. A Revolut, um neobanco líder sediado em Londres, começou recentemente e de forma discreta a implementar passkeys tanto para contas Pessoais como Business. Este movimento estratégico não só vai ao encontro da crescente procura por experiências digitais mais seguras e convenientes, como também posiciona a Revolut como pioneira na adoção de passkeys pelo setor bancário.
Com o lançamento das passkeys, a Revolut segue a tendência dos gigantes da tecnologia, com a Coinbase, o WhatsApp, a Nintendo e a Uber a liderar a onda das passkeys. No setor financeiro, a Revolut é um dos primeiros bancos, se não o maior até agora, a implementar passkeys.
Recent Articles
♟️
Passkeys para Provedores de Pagamento: Como Construir um SDK de Terceiros
♟️
Mastercard Identity Check: Tudo o que Emissores e Comerciantes Precisam Saber
♟️
Autenticação no PCI DSS 4.0: Passkeys
♟️
Cenário das Passkeys de Pagamento: 4 Modelos Essenciais de Integração
♟️
Servidor de Controle de Acesso EMV 3DS: Passkeys, FIDO e SPC
Aviso: Esperamos que, nas próximas semanas, as passkeys sejam implementadas gradualmente em maior escala e que os erros sejam corrigidos. Atualizaremos o artigo em conformidade. A versão atual é de 7 de fevereiro de 2024.
As passkeys representam a próxima fase da autenticação sem palavra-passe, oferecendo aos utilizadores uma forma simples e segura de aceder às suas contas. Ao contrário das palavras-passe tradicionais, as passkeys eliminam a necessidade de memorizar combinações complexas, baseando-se em criptografia assimétrica com chaves únicas para cada utilizador e dispositivo. Este método não só aumenta a segurança, reduzindo o risco de ataques de phishing e violações de dados, como também simplifica o processo de login, uma vez que os utilizadores apenas precisam de usar o Face ID, Touch ID ou Windows Hello, melhorando assim a experiência geral do utilizador.
A Revolut está a seguir uma introdução faseada das passkeys e também não está a lançar as funcionalidades em simultâneo para as contas Business e Pessoais. As principais diferenças que detetámos durante a nossa investigação estão descritas na tabela seguinte:
Funcionalidade | Revolut Pessoal | Revolut Business |
---|---|---|
Botão de login com passkey visível na página de login | Não | Sim |
Pop-up promocional de passkey após login bem-sucedido num novo dispositivo | Sim, mas sem sucesso em todos os dispositivos | Sim, em todos os dispositivos, mas a criação de passkey só teve sucesso no Windows 11 |
Definições de passkey disponíveis nas definições de segurança da conta | Sim, no entanto, não há botão para criar uma passkey | Não |
Suporte de passkeys nas aplicações nativas iOS / Android | Não | Não |
Os seguintes aspetos devem ser mencionados positivamente na integração de passkeys da Revolut:
Embora o passo arrojado da Revolut em direção à integração de passkeys seja louvável, o lançamento não foi isento de falhas.
A seguir, aprofundamos as contas Revolut Pessoal e Business e como as passkeys estão a ser implementadas em dispositivos e plataformas selecionados.
Começamos a análise das passkeys da Revolut Business com um olhar mais atento à aplicação web antes de analisar as aplicações nativas.
Para manter a concisão, a seguir destacamos apenas certas combinações de plataforma, dispositivo e navegador.
Note que o pop-up de passkey da Revolut só aparece uma vez, após o login bem-sucedido com os métodos de autenticação existentes. Para acionar o pop-up novamente, precisa de eliminar os cookies da Revolut ou aceder ao site em modo Anónimo / Privado.
Ao aceder à página de login da Revolut Business, notará imediatamente uma nova opção de login proeminente, situada abaixo do campo de e-mail e acima dos logins sociais do Google / Apple, com o rótulo: Continuar com passkey.
O pop-up promocional de passkeys tem o seguinte aspeto:
Curiosamente, para a Revolut Business, embora o identificador principal do utilizador seja o endereço de e-mail, as passkeys estão associadas ao número de telemóvel, provavelmente porque as contas Revolut Pessoais são criadas primeiro com um número de telemóvel.
Agora que criou com sucesso uma passkey no Windows 11 e no Chrome, pode fazer logout e clicar em Continuar com passkey na página de login. Subsequentemente, a interface do navegador para lidar com a autenticação com passkey aparecerá:
Em contraste com o procedimento de login atual da Revolut Business, onde precisa de fornecer uma palavra-passe e confirmar a sua identidade através de uma notificação push na aplicação nativa ou de um link mágico por e-mail como segundo fator, não é necessário nenhum método de autenticação adicional para logins com passkey, uma vez que as passkeys servem inerentemente como 2FA. Isto representa uma melhoria significativa na experiência do utilizador, especialmente em dispositivos desktop, pois elimina a necessidade de mudar de contexto ou usar um segundo dispositivo.
No Android 14 e no Chrome 121, o botão de login Continuar com passkey é muito proeminente.
No iOS 17.3 e no Safari, o botão de login Continuar com passkey também é muito proeminente.
As aplicações nativas para iOS e Android da Revolut Business ainda não suportam passkeys. Assim, não há opção de Passkey na secção de Segurança e privacidade da aplicação iOS (ver captura de ecrã) ou Android:
Uma das diferenças iniciais a notar é que a Revolut Pessoal utiliza o número de telemóvel como o identificador principal do utilizador. Em vez de uma palavra-passe, a autenticação é gerida através de um código de acesso de 6 a 12 dígitos, enquanto a Revolut Business utiliza um código de acesso de 4 dígitos e faz uso da palavra-passe no processo de login padrão.
Para manter a concisão, a seguir destacamos apenas certas combinações de plataforma, dispositivo e navegador.
O seguinte pop-up promocional de passkey é exibido na primeira vez que faz login (ou após eliminar os seus cookies / estar em modo de Navegação Privada):
Por alguma razão, após clicar em Adicionar passkey no ecrã anterior, fomos diretamente encaminhados para a página de login, sem ter a oportunidade de iniciar a cerimónia de passkey com o Touch ID. Ao investigar o problema, encontrámos a chamada de API correspondente (https://sso.revolut.com/api/challenges/webauthn) no separador de rede das ferramentas de desenvolvimento do Safari. No entanto, esta chamada de API retornou um código de estado HTTP 403, indicando que a funcionalidade aparentemente ainda não foi totalmente implementada.
Ao contrário da conta Revolut Business, as definições da conta na Revolut Pessoal têm uma secção para passkeys:
O seguinte pop-up promocional de passkey é exibido na primeira vez que faz login (ou após eliminar os seus cookies / estar em modo de Navegação Privada):
As aplicações nativas para iOS e Android da Revolut Pessoal ainda não suportam passkeys. No entanto, tanto a aplicação iOS como a aplicação Android (ver capturas de ecrã abaixo) têm uma secção de definições de segurança para passkeys:
Abaixo, aprofundamos alguns aspetos técnicos.
Examinámos os detalhes da implementação técnica. Principalmente, cada vez que a página de login é carregada, um client_id é enviado para o backend, que depois retorna diferentes opções de autenticação com base no tipo de conta:
Curiosamente, a opção de passkey para contas Revolut Pessoais foi preparada, mas ainda não está ativada (ver captura de ecrã abaixo), indicando que um lançamento pode ser iminente e implementado rapidamente, ativando também um botão "Continuar com passkey" para contas Pessoais.
A decisão de exibir as opções de login baseia-se no client_id. Por exemplo: https://sso.revolut.com/signin?client_id=o3r08ao16zvdlf2y5fde Para fins experimentais, alterámos o client_id para um valor aleatório, o que revelou todas as opções de login (incluindo a possibilidade de alternar entre número de telemóvel e e-mail como identificador de login) no Windows 11 com o Chrome.
Durante a cerimónia de login, analisámos as PublicKeyCredentialRequestOptions. Notavelmente, allowCredentials não foi definido, enquanto o relying party ID foi estabelecido como "sso.revolut.com". Definir userVerification como "preferred" é uma escolha prudente do ponto de vista da segurança.
publicKeyCredentialRequestOptions.json{ "allowCredentials": [], "challenge": "WHAxZnJDaDB1VnNXMmlOQW1hVndqdTYzSzF3emR3b3gtRFRCWHVxRjJYRQ", "rpId": "sso.revolut.com", "userVerification": "preferred" }
Também analisámos como poderia ser um lançamento para as aplicações nativas iOS e Android e, para isso, usámos o relying party ID de sso.revolut.com e acrescentámos os caminhos para o ficheiro assetlinks.json (Android) e apple-app-site-association (iOS) para ver que informações estes ficheiros já poderiam conter sobre o lançamento de passkeys.
A tentativa de aceder a https://sso.revolut.com/.well-known/assetlinks.json resulta num erro 404 do nginx, sugerindo o uso de um proxy reverso para a gestão de ficheiros. Usando o domínio https://app.revolut.com, localizámos o assetlinks.json em https://app.revolut.com/.well-known/assetlinks.json, que forneceu informações interessantes para a Revolut Pessoal:
assetlinks.json[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.revolut", "sha256_cert_fingerprints": [ "9C:9B:E0:71:35:E9:72:78:02:82:C2:E5:D2:7D:A0:6E:CB:8E:E3:AD:FC:75:30:39:17:DD:F6:6D:6F:AA:EF:A4", "11:F2:5B:D6:30:60:CE:B4:EF:EC:48:7C:C8:1F:6D:3D:D0:3A:75:C3:E9:D2:C5:32:3D:69:55:9D:C1:7F:6A:23" ] } }, { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.revolut.test", "sha256_cert_fingerprints": [ "90:EC:5D:75:11:4E:67:B7:F1:3F:C0:D0:57:85:9B:78:0D:A0:BA:49:E2:22:4C:60:42:7E:D2:EA:00:84:D1:B7" ] } } ]
Através de https://well-known.dev, também descobrimos o ficheiro de associação para a Revolut Business em https://business.revolut.com/.well-known/assetlinks.json:
assetlinks.json[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.revolut.business", "sha256_cert_fingerprints": [ "9C:9B:E0:71:35:E9:72:78:02:82:C2:E5:D2:7D:A0:6E:CB:8E:E3:AD:FC:75:30:39:17:DD:F6:6D:6F:AA:EF:A4", "9F:07:80:54:0F:3A:C9:6F:D7:26:02:8A:37:C5:CD:48:DB:A3:67:EE:2D:93:B3:9D:DE:51:BC:F2:2E:7F:B1:88", "F8:F5:95:3A:C3:85:DB:0D:85:C3:56:E9:9B:37:BD:CA:4D:EE:B0:D2:52:C6:2A:36:4F:BA:C8:3B:C6:AF:3A:C2" ] } } ]
Uma vez que nem o ficheiro assetlinks.json para a Revolut Pessoal nem o da Revolut Business estão localizados no caminho designado pelo ID do relying party para associar a aplicação nativa Android à aplicação web, é intrigante considerar que alterações são necessárias para permitir que as passkeys funcionem tanto na web como nas aplicações nativas Android.
O ficheiro apple-app-site-association para a Revolut Pessoal está acessível em https://revolut.com/.well-known/apple-app-site-association, sem detalhes ainda adicionados sobre credenciais web:
apple-app-site-association{ "applinks": { "apps": [], "details": [ { "appID": "QUZEZSEARC.com.revolut.revolut", "paths": ["/app/*"] }, { "appID": "QUZEZSEARC.com.revolut.test", "paths": ["/app/*"] } ] } }
Em contraste, o ficheiro apple-app-site-association da Revolut Business contém informações mais abrangentes, nomeadamente sobre credenciais web. Isto indica que a aplicação iOS QUZEZSEARC.com.revolut.business está configurada para partilhar credenciais com a aplicação web da Revolut Business. Está acessível em https://business.revolut.com/.well-known/apple-app-site-association.
{ "applinks": { "apps": [], "details": [ { "appID": "QUZEZSEARC.com.revolut.business", "paths": [ "/", "/accept-payments/in-person", "/accept-payments/online-requests", "/accept-payments/web-integrations", "/accounts", "/accounts/connect-external", "/accounts/connect-external/*", "/accounts/new", "/accounts/transactions", "/account-transactions/*", "/action/confirm", "/add-card-to-wallet", "/advances", "/advances/manual-repayment", "/app/*", "/application", "/approvals/requests", "/article/*", "/articles/*", "/bug-report", "/card-reader/order", "/cards", "/cards/*", "/cards/*/sca-counters-exceed", "/cards/*/sca-counters-warn", "/cards/*/security", "/cards/*/settings", "/cards/*/transactions", "/cashback", "/catalogue/manage", "/challenges/*", "/consumer-tickets/*", "/crypto", "/e-commerce", "/exchange", "/expense-documents/*", "/expenses", "/expenses/*", "/faq", "/faq/*", "/favourites", "/form", "/form/*", "/help-centre", "/help-centre/topic/*", "/hub/integrations", "/insurance", "/invoices", "/invoices/*", "/marketplace", "/merchant", "/merchant/*", "/new-card-acceptance-pricing", "/offboarding", "/open-onboarding-application-next-step", "/orders", "/pay-in-store/order/*", "/payments", "/payments/scheduled", "/payments/transfers", "/plan/subscriptions", "/points", "/pricing-plans", "/qr-code-sign-in/*", "/referrals", "/referrals/invite-contacts", "/referrals/invitee-details/*", "/request-info", "/request-info/merchant", "/requests", "/requests/request", "/reset-password", "/rewards", "/sales/revolut-me", "/statements", "/savings", "/send", "/settings/accounts-and-documents", "/settings/business-profile", "/settings/manage-devices", "/settings/merchant-profile", "/settings/merchant-profile/branding", "/settings/notifications", "/settings/personal-profile", "/settings/trusted-merchants", "/settings/vat-number", "/signup/invite", "/stories/*", "/story/*", "/subscriptions", "/team", "/team/approvals", "/team/member/add", "/team/roles", "/tip/settings", "/topup", "/transactions", "/transactions/*/add-expense-info", "/transactions/*/add-info-flow", "/transactions/*/chargeback-status", "/transfers", "/treasury", "/upgrade", "/vouchers" ] } ] }, "webcredentials": { "apps": ["QUZEZSEARC.com.revolut.business"] } }
Tal como no Android, continua a ser intrigante como a partilha de passkeys entre plataformas, entre as aplicações nativas e web, pode ser implementada, dado que o ID do relying party para a aplicação web (sso.revolut.com) não tem os ficheiros de associação nos locais esperados.
Em conclusão, o lançamento de passkeys pela Revolut é um passo significativo para revolucionar a autenticação de utilizador no setor bancário. Ao adotar passkeys, a Revolut não só melhora a segurança, afastando-se das palavras-passe tradicionais, como também melhora significativamente a UX através de um processo de login mais simples. Apesar de enfrentar desafios no lançamento inicial, incluindo inconsistências entre dispositivos e a ausência de suporte em aplicações nativas, os esforços da Revolut sublinham um compromisso com a inovação digital e o design centrado no utilizador.
A análise técnica revela que, embora as bases para uma integração de passkeys sem falhas estejam lançadas, existem áreas prontas para melhorias. Melhorar a comunicação, garantir a consistência entre plataformas e expandir o suporte para incluir aplicações móveis nativas são os próximos passos críticos. Abordar estas áreas não só refinará a implementação da Revolut, mas também estabelecerá um padrão para a indústria, incentivando outras instituições financeiras a adotar passkeys em breve (veja também o nosso artigo de blog sobre a conformidade das passkeys com a PSD2).
Next Step: Ready to implement passkeys at your bank? Our 80-page Banking Passkeys Report is available. Book a 15-minute briefing and get the report for free.
Get the Report
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents