I am trying to create a web form, where the user can login without creating/entering a password.

Assume the following pre-requisites are met:

  1. The user and server have pre-generated a public/private key pair (on curve ed25519).
  2. The user and server both know each others public keys.

A simple protocol might look like this:

  1. The server generates some random text.
  2. User signs this text and posts the signed data to the server. (Assume this is done via a normal HTTP POST request on a SSL connection).
  3. The server verifies the signature, and grants access if the signature is verified.

Is this protocol secure? If not, what is a good secure protocol which guarantees similar security as using a password?

  • 2
    So, basically, re-invent client-side certificates? – Ljm Dullaart Jul 4 at 11:59
  • @LjmDullaart Yes, however the user also uses the certificate(private key) for signing other things necessary in the app. – teknas Jul 4 at 12:20
  • Why would it be vulnerable to replay attacks? Does the server issue the same challenge document each time? – nobody Jul 4 at 12:25
  • @nobody Is the scheme secure then if the server always generates random data? I have edited the question to phrase this better. – teknas Jul 4 at 12:38
  • The scheme you provided doesn't prevent impersonating the client, the client can be used as a signing oracle. – gkpln3 Jul 4 at 17:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.