Estoy creando una aplicación de escritorio que requiere que el usuario conecte su billetera criptográfica para "iniciar sesión".
Aquí está mi flujo de trabajo actual:
El problema con esto es que cualquiera podría crear una conexión de socket a mi servidor y luego realizar la solicitud realizada en el paso 4 con la dirección de billetera que desee y la ID de socket de la conexión que realizó. Ser capaz de suplantar con éxito la billetera de otra persona.
¿Alguna solución para conectar de forma segura la aplicación de escritorio con la billetera criptográfica usando una extensión de billetera del navegador?
La solución en la que estoy pensando y definitivamente funcionaría (si es posible) es:
Usar una cadena conocida públicamente y cifrarla con la clave privada del usuario y enviarla es parte de la solicitud realizada en el paso 4. Luego, el backend podría descifrar los datos con la dirección pública de la billetera y asegurarse de que sea igual a la cadena original. De esta manera, se puede verificar que la dirección de la billetera pública enviada al servidor es, de hecho, propiedad del usuario.
Sin embargo, no creo que sea posible que la extensión de la billetera cifre los datos usando la clave privada de la billetera. Si hay una forma que sea compatible con las famosas extensiones de billetera, esa sería la solución perfecta.