Un día, un informático compra una cafetera y piensa: 'por favor, que la cafetera use passkeys'.
It sounds funny, but there's deep truth in this joke: we're tired of passwords. Password breaches have become endemic. Millions of credentials leak every year, and users face the impossible task of managing dozens of unique passwords across hundreds of accounts.
Passkeys represent the evolution we've been waiting for. Instead of typing a shared secret (a password), users authenticate using a cryptographic key pair: a private key that never leaves their device, and a public key stored on your servers.
A Unique Access Key
When a user registers with a passkey, here's what happens:
- The browser initiates the WebAuthn API, which communicates with the passkey provider (iOS Keychain, Windows Hello, password managers, etc.)
- The provider generates a public-private key pair. The private key stays on the user's device—it never travels across the network.
- Your server receives only the public key, which it stores in the database. This public key is useless without the corresponding private key.
- On future logins, the browser issues a cryptographic challenge, the user proves they possess the private key (via biometric or PIN), and authentication succeeds—all without ever transmitting a password.
The Four Pillars of Passkey Registration
Passkey registration involves four essential layers working in perfect synchronization:
1. Backend (Server)
- Verifies the user's account identity and eligibility
- Generates a cryptographic challenge (a random string) to prevent replay attacks
- Stores the public key returned by the browser
- Manages the association between the user account and their passkey
2. Frontend (User Interface)
- Initiates the passkey registration process
- Communicates with the browser's WebAuthn API
- Sends the server's challenge to the browser
- Receives the attestation (proof that a genuine passkey was created) and forwards it to the backend
3. Web Browser
- Acts as the intermediary between the frontend and the passkey provider
- Handles the WebAuthn API, which is now standardized across modern browsers
- Ensures the passkey provider is invoked securely
- Validates the origin (preventing cross-site passkey attacks)
4. Passkey Provider
- Generates the key pair: a private key (stored securely on the device) and a public key (sent to your server)
- Protects the private key with device-level security: biometric recognition, PIN, or hardware authentication
- Manages syncing across the user's devices (iOS Keychain syncs across Apple devices, Windows Hello syncs across Windows devices, password managers sync across all platforms)
- Never exposes the private key to any application or website
Key Steps in the Registration Process
User Verification
Before issuing a passkey, the user must authenticate with an existing method (login + 2FA). This ensures only legitimate account holders create passkeys.
Secure Communication
The backend sends a cryptographic challenge to the browser. The passkey provider signs this challenge with the private key. Your server verifies the signature using the public key—proof that the private key exists and belongs to the legitimate passkey provider.
Compatibility
The WebAuthn API is now supported across all major browsers (Chrome, Firefox, Safari, Edge). But not all users have passkeys enabled on their devices yet. Your registration flow must gracefully fall back to traditional authentication methods.
Provider Request
The frontend calls navigator.credentials.create(), which triggers a system dialog. On iOS, this opens the Keychain UI. On Windows, this opens Windows Hello. On Android with a password manager, it opens the manager's interface. The user confirms their identity (biometric or PIN), and the passkey is created.
Eliminates Passwords, Reduces Friction
The passkey approach eliminates the entire password ecosystem. No more:
- Password breaches exposing millions of credentials at once
- Users reusing passwords across sites, creating cascading breaches
- Phishing attacks that trick users into revealing their password
- Weak passwords, password managers acting as single points of failure
Instead, each site gets a unique public-private key pair. Even if your server is breached, attackers gain only public keys—which are cryptographically useless without the private key locked inside the user's device.
And from the user's perspective, authentication becomes faster: no password to remember, just biometric recognition or a PIN they already use to unlock their phone.
El programador suspira: 'Ya no recordar suscripciones, contraseñas de apps y credenciales WiFi...'.
Need to strengthen your web security? Our technical team can help you design the perfect protection strategy for your use case.
Get started