In order to setup an authenticated shared secret key between two clients, I am faced with the choice between two possibilities:
- A: Let users set a (low-entropy) shared password and then perform some password-authenticated key exchange that is resilient to low-entropy secrets (as described here, for example).
- B: Generate a high-entropy shared key and use it directly as a shared key.
Are there any advantages to A, especially when users must communicate the password/key through a separate channel in both cases?
N.B. The resulting shared key is used only once per client (Alice -> Bob and Bob -> Alice) and subsequently destroyed.