I read RFC 2945 and 5054 describing SRP, but there was no mention of registration.
How should user registration happen in SRP? Is there a standard or paper describing it?
I read RFC 2945 and 5054 describing SRP, but there was no mention of registration.
How should user registration happen in SRP? Is there a standard or paper describing it?
As mentioned in the comments this is a standard problem not unique to SRP and not really about the cryptography of SRP. So this question would probably be better posted on 'security.stackexchange.com' as it is more of a generic problem.
Fundamentally setting a shared secret like a regular password or a password verifier over a public network has its challenges. For most applications the standard techniques used to reset a regular password can be reused in the setting of the password verifier.
The diagram on this page in the context of a javascript SRP library shows how the user is registered onto a websites secured using SRP. The user keys in the password into the browser and javascript generates the verifier and transmits it to the webserver. You don't want people to run an offline dictionary attack against the verifier so it is a form of shared secret. This means you want to protected it like you would protect them setting/registering/resetting a traditional password (e.g. use https and aes encrypt it within the database).
The only choices you have is whether the salt of the user is generated by the client or the server. It makes sense for the server to do this as it can ensure that the salt has high entropy and is unique to the user.