Jelle
Your suggestions involving a configurable Time-Lock make sense.
You also mention TOTP-codes. Unfortunately those are not phishing-resistant, meaning users can still be tricked in typing those numbers on an incorrect website or share them. Perhaps it could be a fall-back recovery MFA method with a Time-Lock.
I would prefer to use a device-bound Passkey [1] for those operations in point 5. It will be phishing-resistant.
Social engineering attacks will try to set-up a second Passkey on a new device. If the user has 1 device with a device-bound passkey, the set-up must demand proximity of the new device. This will make it harder if not impossible to abuse remotely.
(Phone 1 accomplishes cross-device passkey authentication on device 2 with QR+bluetooth in proximity only.) [2]
If the fall-back method would be TOTP + Time-Lock, attackers would move to trick the user in sharing the TOTP. The time-lock will delay them, but they could call/text back after the time-lock has expired to continue the social engineering.
We need a method where there are no secrets to share (or that can be phished) or something that alerts the user or the system of the scam.
- An offline, secret-based method like TOTP might delay, but it is not a perfect fit.
- A device-bound Passkey is phishing-resistant; you cannot use it on the wrong website or share it, but whatever fallback method the system offers becomes the weakest link.
What about trusted IP? What if the fall-back method required the user's second device to be connected to a trusted network (home / work WiFi)? Attackers would have to trick the user into setting up a proxy app or get onto their (Guest) WiFi, which unfortunately is not undoable. We can combine elements now though.
The combi recipe could be:
- Privileged operations: Require device-bound Passkey authentication + Time-Delay/Lock if applicable.
- L---> Fall-back A: Syncable-Passkey auth + Time-Lock (+ Syncable Passkey auth again)
- L---> Fall-back B: TOTP + Trusted Internet Connection both devices + Time-Lock
- L---> Fall-back C: video-authentication MITM-resistant* + Time-Lock
* To prevent attackers attempting to trick a user in saying those video-auth numbers in a regular video-call while they forward that feed to bunq site trying to get in, the origin of the video feed's frames could be challenged & verified by bunq.
So even if the user is tricked, bunq can verify the frames' signatures (or file's) with the origin key and claim: this video was not made inside the user's bunq app which has it's own unique key pair.
Any video taken elsewhere, will not have correct digital signatures. [4] This means the video-authentication method must sign every frame when taking the video-auth video. (This doesn't require additional user interaction.)
This should mitigate social engineering attacks with relaying video of existing bunq users with activated bunq apps. For new users there is no money yet so no risk and for phone-was-lost/reset-users the re-onboarding procedure will be the new weakest link.
Re-onboarding procedure (device-bound Passkey & known video-auth-key-pair lost):
- Require syncable passkey auth + Time-Lock + Trusted Internet Connection
- Alt: Video-authentication + Time-Lock + Trusted Internet Connection
- Alt: Video-authentication + Time-Lock + iDIN
- Alt: Video-authentication + Time-Lock + Trusted Family member.
- Alt: Video-authentication + E-mail code + TOTP + Time-Lock
This list is difficult to make. Re-onboarding options 1-5 could be shared via social engineering. The hope remains that extra communication during the delay of the Time-Lock will warn the user. Signing video frames is not useful in this context because the key pair will be new and untrusted. Only option 1 is phishing-resistant and though it would require many steps to share a syncable Passkey, a user could be tricked to share it (which is why device-bound are better for privileged operations; not shareable). The Trusted Internet Connection IP would then be the last line of defence.
Perhaps during set-up weeks of account, bunq should offer the user the choice what they want their recovery method to be in case they loose their primary authenticator. (In this case an activated bunq app on phone or device-bound Passkey.) The more elaborate they set-up their account, the shorter the Time-Delays could be.
(The protection of the device-bound Passkeys for phones are biometrics of the phone; ideally the fallback PIN should not be available without another local Time-Lock. Whatever software protects the passkey may impose additional protections.)
[1]: https://passkeys.dev/docs/reference/terms/#device-bound-passkey , [3]
[2]: FIDO2, WebauthN, https://passkeys.dev/docs/reference/terms/#cross-device-authentication-cda
[3]: Example of device-bound Passkey on Phone in the wild: https://rebrand.ly/dbpk-3cd2ba and https://rebrand.ly/dbpk-cada1a
[4]: Perhaps useful: https://contentcredentials.org/ https://contentauthenticity.org/
(Ref: https://together.bunq.com/d/57992-suggestion-passkey-support/10 )