Signing a message with a private key proves control of an address without sending anything to a server. The proof is clean, and almost everything built around it is not.
The signature proves control at one instant
A site sends a challenge, the wallet signs it, and the site verifies the signature against the claimed address. No password is stored and nothing can be leaked from a database.
The challenge must be unique and short-lived, otherwise a captured signature could be replayed later against the same site.
It must also name the site it is for, since a signature produced for one application would otherwise authenticate the holder to another.
Sessions have to be reinvented
A signature says something about a moment, not about the following hour. Requiring a fresh signature for every action makes an application unusable.
So applications issue a conventional session token after verifying the signature, which quietly reintroduces the server-side state the design was meant to remove.
Session delegation schemes let a wallet authorise a temporary key with limited scope, which is closer to the intent but adds machinery most sites skip.
Readable messages fight blind signing
Early login prompts showed users a wall of hexadecimal. Approving something unreadable is a habit that transfers directly to approving a malicious transaction.
Structured message formats display fields in plain language, so a login prompt looks different from a transfer request.
The benefit is behavioural rather than cryptographic. It makes the dangerous case look unusual, which is the only defence against habitual approval.
Key rotation has no clean answer
With a password, changing the credential leaves the account intact. With a wallet, the key is the account, so rotating it means becoming a different user.
Applications that link off-chain records to an address have to offer an explicit migration, which requires proving control of both the old address and the new one.
Where the address also holds assets or a naming record, migration becomes a coordinated move across several systems rather than a single settings change.
Smart accounts change the assumptions
Accounts controlled by contract logic rather than a single key can authorise several signers, rotate them, and set spending rules, which restores recovery and rotation.
Verifying their signatures requires a contract call rather than a local check, so applications must handle both styles rather than one.
The result is a login system that is genuinely more capable than a password once implemented properly, and noticeably rougher wherever it has not been.